RocketMQ消费者是如何负载均衡的
💡
原文中文,约1600字,阅读约需4分钟。
📝
内容提要
本文介绍了 RocketMQ 的两种消息模式:集群消费和广播消费。集群消费是最常用的消费模式,同一 Topic 下的一条消息只会被同一消费组中的一个消费者消费。负载均衡流程包括发送心跳、启动负载均衡服务等步骤。
🎯
关键要点
-
RocketMQ 支持两种消息模式:集群消费和广播消费。
-
集群消费模式下,同一 Topic 的消息只会被同一消费组中的一个消费者消费。
-
广播消费模式下,每条消息会推送给集群内所有消费者,确保每个消费者至少消费一次。
-
集群消费是最常用的消费模式,理解集群消费有助于掌握广播消费。
-
启动消费者需要配置消费组名、订阅主题和消息监听器。
-
消费端的负载均衡是将 Broker 端的多个队列分配给同一消费组中的不同消费者。
-
负载均衡在消费端启动时、定时任务每20秒触发、消费者上下线时进行。
-
负载均衡流程包括发送心跳和启动负载均衡服务。
-
消费者通过心跳包向 Broker 发送信息,Broker 将其维护在本地缓存中。
-
负载均衡服务根据消费模式进行不同的逻辑处理,主要处理集群模式。
-
负载均衡过程包括获取消息消费队列、查询消费者 Id 列表、排序和分配消息队列。
-
平均分配算法用于计算待拉取的消息队列,类似于分页算法。
-
processQueueTable 存储当前负载均衡的队列和消费快照,进行过滤比对操作。
-
根据比对结果更新 processQueueTable,创建拉取消息请求列表。
➡️