Kafka之Consumer Group的重平衡Rebalance
1.何为Rebalance
Rebalance就是一个完整的Consumer Group中的consumer实例在Broker中协调者的帮助下,就如何消费订阅topic分区达成共识的过程。
整个Rebalance的过程类似于JAVA中full GC的过程,需要stop the world,在rebalance的过程中,消费者是无法进行消息消费的,十分影响消费者的吞吐量。
这里的协调者即coordinator,每个broker都有一个coordinate组件,并且伴随着broker启动而被创建,它主要负责接收consumer提交的消费位移,然后转交给broker,同时也负责consumer的注册、成员管理记录等元数据的管理操作。
2.consumer如何确定管理自己的cordinate在哪个broker
实际上这个问题就是确定consumer的提交的数据属于哪个位移topic的分区。
主要是分为以下两个步骤:
第 1 步:确定由位移主题的哪个分区来保存该 Group 数据:partitionId=Math.abs(groupId.hashCode() % offsetsTopicPartitionCount)。
第 2 步:找出该分区 Leader 副本所在的 Broker,该 Broker 即为对应的 Coordinator。
3.Rebalance的弊端
开始提到了rebalance有点类似于java中的fu