kafka的rebalance机制

1.什么是rebalance

再平衡:Reblance是一种协议,规定了一个Consumer
Group下所有Consumer如何达成一致,来分配订阅Topic的每个分区,尽量让每个消费者分配到相对均匀的分区,使Consumer的资源都能得到充分利用,防止有些Consumer比较忙,有的Consumer比较闲。

2.Reblance触发的时机

当kafka感知到存在让分区和消费者分配不均匀的事情发生时,就会触发Reblance
1.消费者组消费的分区个数发生变化。
2.消费者组消费的主题个数发生变化。
3.消费者组内的消费者个数发生变化。

3.分区分配的策略

1.Range分配策略是指按照分区号的范围进行分区分配。
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(检查整个消费者死亡超时时间) session.timeout.ms >= 3 * heartbeat.interval.ms(心跳检查超时时间)
2.max.poll.interval.ms(消费者每次去kafka拉取数据最大间隔) 在业务中,该参数可以设置的长一些,但是也不要违背了该参数的初衷(kafka对消费者的一种优胜劣汰的优化机制,poll的慢导致消息堆积)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值