共计 1039 个字符,预计需要花费 3 分钟才能阅读完成。
1. rebalance 的定义
再均衡:Reblance 是一种协定,规定了一个 Consumer Group 下所有 Consumer 如何达成统一,来调配订阅 Topic 的每个分区,尽量让每个消费者调配到绝对平均的分区,使 Consumer 的资源都能失去充分利用,避免有的 Consumer 比较忙,有的 Consumer 比拟闲。
2.Reblance 触发的机会
当 kafka 感知到存在让分区和消费者调配不平均的事件产生时,就会触发 Reblance
- 消费者组生产的分区个数发生变化。
- 消费者组生产的主题个数发生变化。
- 消费者组内的消费者个数发生变化。
3. 分区调配的策略
1.Range 调配策略是指依照分区号的范畴进行分区调配。kafka 默认应用 RangeAssignor。
2.RoundRobin 调配策略是指轮询每个分区,将分区一一调配给消费者
3.StickyAssignor 分区策略,又称为粘性调配,所谓的有粘性,是指每次 Rebalance 时,该策略会尽可能地保留之前的调配计划,尽量实现分区调配的最小变动,消费者连贯这些分区所在 Broker 的 TCP 连贯就能够持续应用。
协调者 (Coordinator) 是 broker 过程中的一个组件,每一个 broker 都会有一个 Coordinator,协调者的职责在于:服务 ConsumerGroup,实现整个 Reblance 的过程,提供 Consumer Group 位移的治理,以及组内成员的治理。
消费者会定时向协调者发送心跳,当协调者发现某个消费者长时间没有发送心跳,那么协调者就会认为这个消费者挂了,把这个消费者从消费者组中剔除进来,而后在其余 Consumer 的心跳申请中回复 reblance_need, 让每个消费者进行音讯生产,并开启 Reblance。当各个消费者收到 reblance_need 响应后,都会进行音讯生产,并向协调者发送 SyncGroup 申请,来询问调配给本人的分区信息
4.Reblance 产生的影响
1. 影响生产效率
因为产生 Reblance 时,所有消费者都会进行生产,比拟影响音讯生产效率
2. 可能会产生音讯反复生产
5. 缩小 Reblance
1.session.timeout.ms(查看整个消费者死亡超时工夫,默认 10s)
session.timeout.ms >= 3 * heartbeat.interval.ms(心跳查看超时工夫)
2.max.poll.interval.ms(消费者每次去 kafka 拉取数据最大距离)
在业务中,该参数能够设置的长一些,默认 5 分钟。