1 什么是消费者组

组内的所有消费者协调在一起来消费订阅topic中的所有分区(partition)。

  • 一个消费组可以包含多个消费者, 同一个组内的消费者是竞争关系, 如果一条消息被消费者 C1 消费了,那同组的其他消费者就不会再收到这条消息。
  • 同一个消费可以被不同的组多次消费, 消费完的消息不会被立刻删除(默认删除时间delete.retention.ms=86400000)

2 消费者位置

消费者在消费的过程中需要记录自己消费了多少数据,即消费位置信息。
在Kafka中这个位置信息有个专门的术语:位移(offset)。

Kafka把__consumer_offsets作为一个特殊的存储元数据的Topic, 存储在broker中

key: ConsumerGroupID + Topic + 分区号 value: Offset