文章目录
前言
consumer采用【poll模式】从broker中主动拉取数据,【poll模式】的不足之处,如果kafka没有数据,消费者可能会陷入循环当中,一直返回空数据。
一、消费原理
1.1 消费者组概念
Consumer Group:消费者组,是由多个消费者(Consumer)组成的,形成一个消费者组的前提条件是,所有消费者的groupid是相同的。
- 消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费。
- 消费者组之间互不影响,所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
- 如果向消费者组中添加更多的消费者,超过主题分区的数量,则有一部分消费者就会闲置,不会接收到任何消息。
1.2 消费者组初始化流程
- coordinator:辅助实现消费者组的初始化和分区的分配(协调者)。
- coordinator节点选择:groupid的hashcode值 % 50(_consumer_offs