Kafka系列之:Kafka消费组中消费者再均衡的原理
一、GroupCoordinator和ConsumerCoordinator
- GroupCoordinator是kafka服务端中用于管理消费组的组件。
- 消费者客户端中的ConsumerCoordinator组件负责与GroupCoordinator进行交互。
GroupCoordinator和ConsumerCoordinator之间最重要的职责就是负责执行消费者再均衡的操作,包括前面提及的分区分配的工作也是在再均衡期间完成的。
一共有如下几种情形会触发再均衡的操作:
- 有新的消费者加入消费组
- 有消费者宕机下线。消费者并不一定需要真正下限,例如遇到长时间的GC、网络延迟导致消费者长时间未向GroupCoordinator发送心跳等情况时,GroupCoordinator会认为消费者已经下线。
- 有消费者主动退出消费组(发送LeaveGroupRequest请求)。比如客户端调用了unsubscrible()方法取消对某些主题的订阅。
- 消费组所对应的GroupCoorinator节点发生了变更。
- 消费组内所订阅的任一主题或者主题的分区数量发生变化。
二、再均衡操作阶段
1.第一阶段:FIND_COORDINATOR
- 消费者需要确定所属的消费组对应的GroupCoorinator所在的broker,并创建与该broker相互通信的网络连接。如果消费者已经保存了与消费组对应的GroupCoordinator节点的信息,并且与它之间的网络连接是正常的,那么就可以进入第二阶段。否则,就需要向集群中的某个节点发送FindCoordinatorRequest请求来查