rocketMq - rebalance介绍

简介: 本章主要讲解Rebalance在consumer端的作用,如果要理解consumer的逻辑,就必须要知道在consumer端有Rebalance这个服务,没有Rebalance也就没有consumer的消息拉取。

本章主要讲解Rebalance在consumer端的作用,如果要理解consumer的逻辑,就必须要知道在consumer端有Rebalance这个服务,没有Rebalance也就没有consumer的消息拉取。

Rebalance过程介绍

    1、从namesrv获取messageQueue信息

    2、从broker获取consumer信息

    3、选择Rebalance策略

    4、三者结合实现Rebalance操作


Rebalance的平衡粒度

Rebalance是针对Topic+ConsumerGroup进行Rebalance的,在我们创建的comsumer过程中会订阅topic(包括%retry%consumerGroup),Rebalance就是要这些Topic下的所有messageQueue按照一定的规则分发给consumerGroup下的consumer进行消费。

img_fab15a3ceeb7c87bd42f72ffcf609f91.png
Rebalance平衡粒度

说明:参见RebalanceImpl类

    1、着重需要强调的概念,Rebalance是针对订阅的topic进行Rebalance,也就是假如consumer订阅了10个Topic,那么我们就需要对10个Topic里的每一个Topic进行Rebalance。


Rebalance的平衡过程

img_052fe254bc30221002a8f0b73a702a26.png
Rebalance平衡过程

说明:参见RebalanceImpl类

    1、Rebalance的过程需要3个要素,分别是Topic下的所有MessageQueue、consumerGroup下的所有consumer、Rebalance策略。这里的MessageQueue是指Topic在每个broker上的队列配置信息。

    2、获取MessageQueue信息,获取consumerGroup下的consumer信息,根据Rebalance策略进行Rebalance。

    3、更新Rebalance的结果进行消息的拉取。

    4、Rebalance更新consumer负责的messageQueue


img_59d3148476be61f15bd70071494567d5.png
consumer更新负责的MessageQueue

说明:参见RebalanceImpl类


Rebalance策略

img_8d6eeee1067a8aa56c9723f111e91be5.png
Rebalance可选策略

说明:参见RebalanceImpl类



img_3df231c6a3b1895b741b79d4786b02f5.png
Rebalance策略之一

说明:参见AllocateMessageQueueAveragely类

    1、举其中一种策略说明,这个策略是考虑当前consumerId的位置,consumer的数量,MessageQueue的数量,根据consumerId所处的位置决定分配多少消费队列。

    2、该过程会动态调整,也可能会不一致,因为依赖的数据来自broker会有不一致,但是最终肯定会一致,周期性的Rebalance的作用。


MessageQueue获取过程

img_cf5813136ea44ab6c01898c83d1f762b.png
MessageQueue的获取过程

说明:参见MQClientInstance类

    1、consumer端的MessageQueue是根据topic中的readQueueNums来计算的

    2、计算MessageQueue的TopicRouteData是从namesrv中获取的


Consumer获取过程

img_25c4cccf954238ef342e2c15dbec95d8.png
consumer获取过程

说明:参见MQClientInstance类


img_0087e7ae7016e9e26602a7bab9e4da38.png
consumer随机选择broker发起请求

参见:MQClientAPIImpl类


img_0a9f94a40ef8ab748647190a0a66810b.png
broker返回consumerIds列表

说明:参见ConsumerManageProcessor类

    1、获取consumer列表跟注册过程是对称的


Consumer注册过程

要知道consumer的获取必须知道consumer是怎么注册的,其实consumer会把注册信息发送给broker保存,当然由于没有强一致性的保证,会存在某些极端情况下broker上的配置不一致,但是由于这是一个周期性的任务,所以最终肯定会达到一致的。


img_6e8484552713a2a311a6be7ddb80c0ad.png
consumer启动时候发送心跳信息

说明:参见DefaultMQPushConsumerImpl类


img_a4f610221213ffdfb0cad0c8a5933aa6.png
向所有broker发送心跳信息注册consumer

说明:参见MQClientInstance类

    1、心跳信息包含client的注册信息

    2、同步给broker的信息是最终一致性的,非强一致性


img_608a6cf1795e2c0d758ac8882ff94771.png
consumer的注册过程

说明:参见ClientManageProcessor

    1、处理consumer心跳信息的入口


img_bab68554327c4833532ed93efd584876.png
更新consumer在broker的信息

说明:参见ConsumerManager类

    1、broker保存consumer元信息

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
消息中间件 安全 Kafka
Kafka、RabbitMQ、RocketMQ 消息中间件的对比 | 消息发送性能篇
消息中间件性能究竟哪家强? 带着这个疑问,我们消息队列测试小组对常见的三类消息产品(Kafka、RabbitMQ、RocketMQ)做了性能比较。
25619 6
|
4月前
|
消息中间件 RocketMQ
RocketMQ - 消费者Rebalance机制
RocketMQ - 消费者Rebalance机制
60 0
|
5月前
|
消息中间件 存储 Java
【RocketMQ 系列三】RocketMQ集群搭建(2m-2s-sync)
【RocketMQ 系列三】RocketMQ集群搭建(2m-2s-sync)
395 1
|
6月前
|
消息中间件 存储 缓存
消息队列之 MetaQ 和 Kafka 哪个更香!
本篇文章首先介绍了MetaQ消息队列,然后介绍了作者对MetaQ和Kafka这两个消息队列的理解。
|
7月前
|
消息中间件 Kafka
Kafka - 3.x Producer 生产者最佳实践
Kafka - 3.x Producer 生产者最佳实践
151 0
|
消息中间件 存储 缓存
消息队列之 MetaQ 和 Kafka 哪个更香!(4)
消息队列之 MetaQ 和 Kafka 哪个更香!
95 0
消息队列之 MetaQ 和 Kafka 哪个更香!(4)
|
消息中间件 存储 负载均衡
消息队列之 MetaQ 和 Kafka 哪个更香!(2)
消息队列之 MetaQ 和 Kafka 哪个更香!
99 0
消息队列之 MetaQ 和 Kafka 哪个更香!(2)
|
消息中间件 存储 Kafka
消息队列之 MetaQ 和 Kafka 哪个更香!(3)
消息队列之 MetaQ 和 Kafka 哪个更香!
87 0
消息队列之 MetaQ 和 Kafka 哪个更香!(3)
|
消息中间件 存储 缓存
RocketMQ 生产者那些事
这篇文章,我们从源码的角度探寻 RocketMQ Producer 的实现机制。
RocketMQ 生产者那些事
|
消息中间件 负载均衡 Kafka
kafka rebalance你真的了解吗
今天主要分享一下 kafka 的 rebalance,在 kafka 中,rebalance 是一个十分重要的概念,很多时候引发的一些问题可能都是由于 rebalance 引起的,rebalance 也就是再均衡,顾名思义,再均衡就是再次负载均衡,下面会对再均衡进行一个详细的描述。
497 3
下一篇
无影云桌面