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中的full GC需要STW,影响消费者消费的吞吐量,更为详细的,rebalance整个过程的弊端主要是以下几点
- STW,影响consumer端的TPS;
- rebalance的

本文详细介绍了Kafka Consumer Group的重平衡(Rebalance)过程,包括其概念、消费者如何确定协调者、Rebalance的弊端、触发条件及如何优化避免不必要的Rebalance。Rebalance对消费者吞吐量造成影响,可能导致STW并影响消费效率。通过理解Rebalance的工作原理,可以更好地管理和优化Kafka集群的性能。
1万+

被折叠的 条评论
为什么被折叠?



