消费端的负载均衡

和kafka一样,消费端也会针对Message Queue做负载均衡,使得每个消费者能够合理的消费多个分区的消息。

消费端会通过RebalanceService线程,10秒钟做一次基于topic下的所有队列负载

消费端遍历自己的所有topic,依次调rebalanceByTopic 

根据topic获取此topic下的所有queue 

选择一台broker获取基于group的所有消费端(有心跳向所有broker注册客户端信息) 

选择队列分配策略实例AllocateMessageQueueStrategy执行分配算法

什么时候触发负载均衡

消费者启动之后

消费者数量发生变更

每10秒会触发检查一次rebalance 

分配算法

RocketMQ提供了6中分区的分配算法, 

(AllocateMessageQueueAveragely)平均分配算法(默认) 

(AllocateMessageQueueAveragelyByCircle)环状分配消息队列

(AllocateMessageQueueByConfig)按照配置来分配队列: 根据用户指定的配置来进行负载

(AllocateMessageQueueByMachineRoom)按照指定机房来配置队列

(AllocateMachineRoomNearby)按照就近机房来配置队列: 

(AllocateMessageQueueConsistentHash)一致性hash,根据消费者的cid进行

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值