深入浅出理解kafka原理系列之:生产者和消费者,消息的偏移量和顺序消费原理
一、kafka生产者和消费者
1.生产者
./kafka-console-consumer.sh --bootstrap-server bigdata1:9092 --topic test
2.消费者
打开一个消费消息的客户端,向kafka服务器的某个主题消费消息
方式一:从当前主题中的最后一条消息的offset(偏移量位置)+1开始消费
./kafka-console-consumer.sh --bootstrap-server bigdata1:9092 --topic test
方式二:从当前主题中第一条消息开始消费
./kafka-console-consumer.sh --bootstrap-server bigdata1:9092 --topic test --from-begin
- kafka集群有多个broker,每个broker中有多个partition。一个partition只能被一个消费者组里的某一个消费者消费,从而保证消费顺序。
- 一个消费者可以消费多个partition。
- kafka只在partition的范围内保证消息消费的局部顺序性,不能在同一个topic中的多个partition中保证总的消费顺序性。
- partition的数量决定了消费组中消费者的数量,建议同一个消费组中消费者的数量不要超过partition的数量,否则多的消费者消费不到消息。
- 如果消费者挂了,那么会触发rebalance机制,会让其他消费者来消费该分区
二、消息的偏移量和顺序消费原理
- 生产者将消息发送给broker,broker会将消息保存在本地的日志文件中
/usr/local/kafka/data/kafka-logs/主题-分区/00000000.log
- 消息的保存是有序的,通过offset偏移量来描述消息的有序性
- 消费者消费消息时也是通过offset来描述当前要消费的那条消息的位置