这篇文章讲的很详细很好:一文搞懂 kafka consumer 与 broker 交互机制与原理
- 跟任一broker通信确定组协调器(group coordinator)。
- 跟组协调器通信,请求加入消费者组,并获取组leader制定的分区分配方案(组leader由组协调器指定,通常是第一个加入消费者组的消费者)。
- 跟组协调器通信,获取分区的offset,如果没获取到则根据配置决定消费起点。
- 跟分区leader通信,长轮询拉取消息。
- 消费完消息后,向组协调器提交offset。
消费者加入消费者组后,会和组协调器建立心跳连接。
当消费者组内有新的消费者加入或有消费者离开,组协调器会触发rebalance,重新进行分区分配。分区分配方案仍然由组leader制定,并由组协调器广播给消费者组的所有消费者。
组协调器的rebalance状态是如何广播给消费者的呢?