在 Kafka 中,重平衡(Rebalance)是消费者端最核心、最复杂,同时也是在生产环境中经常引发性能问题的一个机制。 简单来说,重平衡就是 Kafka 规定一个消费者组(Consumer Group)下的所有消费者,如何达成一致来分配订阅主题下每个分区的过程。 打个比方:假设有一个小组(消费者组)在分发传单(分区里的消息)。一开始有 3 个人分 6 叠传单,每人 2 叠。突然有 1 个人请假了,剩下的 2 个人必须停下手头的工作,重新分配这 6 叠传单(每人 3 叠),这个“停工+重新分配”的过程就是 Rebalance。 下面为你详细拆解 Kafka 消费者重平衡的触发时机、核心角色、详细过程以及它的演进。 --- 一、 什么时候会触发 Rebalance? Rebalance 不会无缘无故发生,通常由以下三种情况触发: 1. 组成员数量发生变化(最常见) 新成员加入: 新启动了一个消费者实例。 成员主动离开: 消费者实例正常关闭。 成员崩溃/被踢出: 消费者实例发生宕机,或者处理消息的时间太长(超过了 ),或者心跳超时(超过了 ),被 Kafka 认为已经挂掉。 2. ...