RocketMQ负载均衡
Producer负载均衡
- 容错机制:开启容错机制后,会进行失败隔离和超时隔离,规避失败的Broker
- Broker选择:如果随机到了已经发送过的Broker会重新进行选择
Consumer负载均衡
- Consumer会定时向所有的Broker发送心跳,心跳数据包括消费组名称、订阅关系集合、消息的通信模式、消费者ID等,Broker接收到心跳包后会维护在ConsumerManager中,当Broker监听到Consumer变化之后,会通知Consumer进行ReBalance
- 在Consumer客户端,也会有一个定时任务,周期性进行Rebalance
Rebalance
Rebalance是一个由消费端平衡queue和consumer的过程,实现原理:
触发时机:
- 在Consuner启动或者停止的时候,此时消费者数量变化,Consumer会主动发起一次Rebalance
- 收到Broker的Rebalance通知时
- 消费者每执行定时任务,每20s触发一次Rebalance
- 向服务端获取TopicA最新的Queue列表和Consumer列表,根据这些信息重新分配消费关系
分配策略:
- rocket提供多个消费策略,消费机器不同但是内部代码相同,所以会选择相同的消费策略,保证不同的Consumer节点执行Rebalance后得到相同的分配结果
- Rebalance之后,消费者会对比消费关系是否变化,有新增的queue则加入pullRequests请求队列中,如果一个queue被移除将被标记drop在后续流程中将会从pullRequests请求队列剔除
Rebalance的缺点
暂停消费
- 当有新增的consumer时,原来的queue需要分一部分到新的consumer消费,在分配好之前这部分queue的消费会被暂停
重复消费
- 在切换分配关系的间隙,可能queue的原来consumer还未提交offset就切换到新的consumer了,此时会导致queue的消息被多个Consumer消费了,所以需要在业务上考虑幂等
顺序消息的Rebalance:
因为顺序消息为了严格保证顺序,是不能被多个Consumer消费的,所以顺序消息的Rebalance会直接在queue上加锁,上锁成功后才可以进行消费关系调整
这篇文章不错!
文字流畅如丝,语言优美动人,读来令人心旷神怡。
理论深度可再挖掘,以提升文章厚重感。
作者的布局谋篇匠心独运,让读者在阅读中享受到了思维的乐趣。
警惕陷入二元对立思维,可尝试中间路径。
学术术语使用精准,专业性突出。
对传统与现代的融合思考颇具启发性。
古典诗词化用自然,毫无斧凿痕迹。
对话设计自然,符合角色身份与情境。
建议增加田野调查素材,提升真实性。
这是一篇佳作,无论是从内容、语言还是结构上,都堪称完美。
文章中的实用建议和操作指南,让读者受益匪浅,值得珍藏。
情感真挚,直击人心,引发强烈共鸣。
作者以非凡的视角解读平凡,让文字焕发出别样的光彩。
哈哈哈,写的太好了https://www.lawjida.com/
《如此爹娘》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/70741.html
揭秘传奇世界:如何把握私服市场新机遇:https://501h.com/danzhiye/2024-09-25/37668.html
你的文章让我感受到了快乐,每天都要来看一看。 http://www.55baobei.com/UjhE32tSfS.html
哈哈哈,写的太好了https://www.cscnn.com/
看的我热血沸腾啊https://www.237fa.com/