一文讲透 RocketMQ 消费者是如何负载均衡的

科技资讯 投稿 5900 0 评论

一文讲透 RocketMQ 消费者是如何负载均衡的

集群消费( Clustering )和广播消费( Broadcasting )。

集群消费:同一 Topic 下的一条消息只会被同一消费组中的一个消费者消费。也就是说,消息被负载均衡到了同一个消费组的多个消费者实例上。

广播消费:当使用广播消费模式时,每条消息推送给集群内所有的消费者,保证消息至少被每个消费者消费一次。

集群消费是使用最普遍的消费模式,理解了集群消费,广播消费也就能顺理成章的掌握了。

消费组名、订阅主题消息监听器,最后调用 start 方法启动。

4 负载均衡

将 Broker 端中多个队列按照某种算法分配给同一个消费组中的不同消费者。

客户端独立进行计算,那么何时触发呢 ?

  • 消费端定时任务每隔 20 秒触发负载均衡;

负载均衡流程如下:

1、发送心跳

消息消费分组名称、订阅关系集合消息通信模式客户端实例编号等信息)。

2、启动负载均衡服务

(1 获取该主题下的消息消费队列集合;

(3 先对 Topic 下的消息消费队列、消费者 Id 排序,然后用消息队列分配策略算法(默认为:消息队列的平均分配算法),计算出待拉取的消息队列;

(4 分配到的消息队列集合与 processQueueTable 做一个过滤比对操作

标红的部分表示与分配到的消息队列集合互不包含,则需要将这些红色队列 Dropped 属性为 true , 然后从 processQueueTable 对象中移除。

黄色的部分表示这些队列需要添加到 processQueueTable 对象中,创建这些队列的消费快照。最后创建拉取消息请求列表,并将请求分发到消息拉取服务,进入拉取消息环节。

编程笔记 » 一文讲透 RocketMQ 消费者是如何负载均衡的

赞同 (26) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽