一、一些概念
主题类似与数据库表或文件夹的概念,主题可分为多个分区,一个分区就是一个提交日志,消息以追加的方式写入分区,读取数据按照先入先出方式顺序读取(只能保证单个分区消息顺序读取)。
1.通过分区实现数据的冗余和伸缩性。
2.分区可分布在不同服务器上,一个主题可横跨多个服务器。
生产者:创建消息,发布到特定的主题上。默认情况是均衡的发布到当前主题的所有分区。可通过消息键和分区器指定写入某个分区。
消费者:读取消息,按照消息生成的顺序读取,通过检查消息的偏移量区分已读消息。偏移量:一个不断递增的整数值,单个分区内是唯一的,读取消息后会把每个分区最后读取的偏移量存储到zookeeper或kafka,关闭或重启后读取状态不会丢失。每个分区只能有一个消费者。
消费者组:多个消费者组成消费者组,增加消费速度,一个消费者组订阅同一个topic,每个消费者接受这个topic的一部分分区消息。
broker:一个独立的kafka服务器成为broker。broker接受消息,为消息设置偏移量同时提交消息到磁盘,他为消费者提供服务,响应读取分区请求,返回已提交到磁盘的消息,消息保留策略:1.保存一定的时间后过期删除;2.保留到一定的字节数,超过后删除(可用消息总量一定小于配置参数指定的大小)。
集群:多个broker组成集群。每个集群会有一个leader管理整个集群的broker;一个分区可分配给多个broker,分区复制,为消息提供的消息的冗余,一个broker失效,其他broker可继续接管。
二、配置参数
三、常用命令
##kafka服务启动:
bin/kafka-server-start.sh -daemon ../config/server.properties
## 创建主题(4个分区,2个副本)
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 4 --topic test
## 查询集群描述
bin/kafka-topics.sh --describe --zookeeper
## topic列表查询
bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --list
## topic列表查询(支持0.9版本+)
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
## 新消费者列表查询(支持0.9版本+)
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --list
## 新消费者列表查询(支持0.10版本+)
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
## 显示某个消费组的消费详情(仅支持offset存储在zookeeper上的)
bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper localhost:2181 --group test
## 显示某个消费组的消费详情(0.9版本 - 0.10.1.0 之前)
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --describe --group test-consumer-group
## 显示某个消费组的消费详情(0.10.1.0版本+)
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
## 生产者
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
## 消费者
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test
## 新生产者(支持0.9版本+)
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test --producer.config config/producer.properties
## 新消费者(支持0.9版本+)
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --new-consumer --from-beginning --consumer.config config/consumer.properties
## 高级点的用法
bin/kafka-simple-consumer-shell.sh --brist localhost:9092 --topic test --partition 0 --offset 1234 --max-messages 10