Kafka Consumer
Reblance
消费者组的重平衡就组内的消费者,对消费那些主题分区达成一致的过程,Kafka会尽量保证分配的均匀。
consumer group 的rebalance 本质上是一组协议,它规定了一个conusmer group 是如何达成一致来订阅分配
topic的所有分区的。只有consumer group有rebalance ,standalone consumer是没有rebalance的,standalone
consumer 只是通过coordinator获取到消费的位移。
1.Rebalance 什么时候触发
- 组内成员发生变化
- 订阅主题分区数发生变化
- 订阅主题发生变化
2和3一般都会是运维的操作,我们只需要关注第一种rebalance的场景就可以了。真实场景下,rebalance 的触发场景经常就是第一种,consumer正常情况下也是会触发rebalance 这种场景就是,处理消息的逻辑时间太久,超过了我们设置的最大的处理消息时间,这个时候根据自己的业务评估,设置合理的处理消息最大事件,避免不必要的rebalance。
Rebalance 分区分配
consume 默认提供三种分区策略 range策略、 策略和sticky策略。如右图所示rang 策略不会去管之前的分区策略,只会重新分成几个区域后进行分配,round-robin也是直接轮询到消费者组的consuner上。sticky则不同假设第三台机器挂掉前两台机器的分配策略不变,仅仅把挂掉的那台机器消费的分区负载到存活的consumer上即