kafka的基本概念和安装步骤

介绍

Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。

基本的消息系统术语

Kafka将消息以topic为单位进行归纳。

将向Kafka topic发布消息的程序成为producers.

将预订topics并消费消息的程序成为consumer.

Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker.

producers通过网络将消息发送到Kafka集群,集群向消费者提供消息

topic和logs

一个topic是一组消息的归纳, 对每个topic, kafuka对它的日志进行了分区

每个分区都由一系列有序的、不可变的消息组成,这些消息被连续的追加到分区中。分区中的每个消息都有一个连续的序列号叫做offset,用来在分区中唯一的标识这个消息。

在一个可配置的时间内, kafuka集群保留所有发布的消息, 不管这些消息有没有被消费, 比如, 如果消息的保存策略被设置为2天, 那么在一个消息被发布的两天时间内, 它都是可以被消费的. 之后它将被丢弃以释放空间.

kafuka的性能是和数据量无关的常量级的, 所以保留太多的数据并不是问题

实际上每个consumer唯一需要维护的数据是消息在日志中的位置, 也就是offset, 这个offset有consumer来维护; 一般情况下随着consumer不断的读取消息, 这个offset的值不断增加, 但其实consumer可以以任意的顺序读取消息, 比如它可以把offset设置为一个旧的值来重读之前的消息

分布式

每个分区在kafuka集群的若干服务中都有副本, 这样有些持有副本的服务可以共同处理数据和请求, 副本数量是可以配置的, 副本使kafuka具备了容错能力

每个分区都由一个服务器作为leader, 零或若干服务器作为follwers, leader负责处理消息的读和写, follwer则去复制leader, 如果leader down了, follwer中的一台则会自动成为leader, 集群中的每个服务都会同事扮演两个角色: 作为它所持有的一部分分区的leader, 同事作为其他分区的follwers, 这样集群就会有较好的负载均衡

producers

producer将消息发布到它指定的topic中, 并负责决定发布到哪个分区

consumers

本质上kafuka只支持topic, 每个consumer属于一个consumer group, 反过来说, 每个group可以有多个consumer, 发送到topic的消息, 只会被订阅此topic的每个group中的consumer消费

如果所有的consumer都具有相同的group, 这种情况和

kafka安装

下载kafka/zookeeper

解压

1
2
tar zxf kafka_2.11-0.11.0.3.tgz
tar zxf zookeeper-3.4.13.tar.gz

进入zookeeper, 复制zoo.cfg

1
2
cd zookeeper-3.4.13
cp conf/zoo_sample.cfg conf/zoo.cfg

启动zookeeper

1
bin/zkServer.sh start

进入kafka

1
2
..
cd kafka_2.11-0.11.0.3

编辑config中的server.properties

修改

1
vi config/server.properties

listeners为当前的host加端口

1
listeners=PLAINTEXT://192.168.1.120:9092

启动kafka, 并使其在后台运行

1
bin/kafka-server-start.sh config/server.properties &

此时两个服务就启动好了, 使用telnet测试一下

1
2
telnet 192.168.1.120 9092
telnet 192.168.1.120 2181

启动测试producer服务

1
bin/kafka-console-producer.sh --broker-list 192.168.1.120:9092 --topic test

我们再开启另一个端口, 启动consumer测试服务

1
bin/kafka-console-consumer.sh --zookeeper 192.168.1.120:2181 --topic test

此时我们通过producer中发送的任意请求, 都可以在consumer的测试服务中获取到对应信息

文章目录
  1. 1. 介绍
  2. 2. 基本的消息系统术语
  3. 3. topic和logs
  4. 4. 分布式
  5. 5. producers
  6. 6. consumers
  7. 7. kafka安装
|