千家信息网

如何实现RocketMQ队列queue的偏移量Offset均衡分布测试

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家分享的是有关如何实现RocketMQ队列queue的偏移量Offset均衡分布测试的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一 机器部署1、机器组成7台机
千家信息网最后更新 2026年11月03日如何实现RocketMQ队列queue的偏移量Offset均衡分布测试

这篇文章给大家分享的是有关如何实现RocketMQ队列queue的偏移量Offset均衡分布测试的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一 机器部署

1、机器组成

7台机器,均为16G内存

每台服务器均有4个CPU,2核

2、运行环境配置

3、刷盘方式

每台机器master机器均采用异步刷盘方式

二 性能评测

1、评测目的

测试queue接受消息负载均衡

2、评测指标

每个queue的接受消息后,其偏移量offset大致相同

3、评测逻辑

创建topic,并配置该topic下的queue数量(3,5,8,16),发送消息后打印该条消息对应的offset,比对消息offset增加量

4、评测过程

(1)在master机器上创建名称为"topicQueueOffsetTest"

(2)控制台创建的topic配置文件保存在store目录, 查看/root/store/config/topic.json文件,即可找到该topic的原始数据

(3)client端开启5个线程,发送不同数量的消息,发送消息后记录消息在各队列queue的offset

queue配置的是默认值8, 发送的消息条数 5*50=250条消息

queue配置的是默认值8, 发送的消息条数 5*400=2000条消息

客户端设置queue队列数为12,再次发送的消息条数 5*400=2000条消息,并记录消息的offset,关键代码如下

此处日志显示的 queueNum=12,是指的client端的producer获取的queue个数,但此时后续的日志显示,server端的queueID依然是0-7,总共8个,两种queue的个数并不相等。

说明在producer发送消息时,对于此前已运行的borker服务器,修改配置文件的defaultTopicQueueNums属性的值不起作用,需要重启服务才能使得 已运行的topic的queue个数真正生效。

有两种方式,可动态更改topic以及topic相关的属性,

第一种、编辑 master机器的/root/store/config/topic.json文件,找到topic名称为"topicQueueOffsetCheck"的数据,更新其readQueueNums、writeQueueNums两个属性,并重启master集群和slave集群

第二种方式:在rocketmq控制台动态更新topic相关数据(此方式更改后,会自动同步topic数据到其他master、其他slave,可以不用重启master、slave服务),此处我采用的是第二种方式更新。

更新server端的queue为12,再次发送2000条消息,发现新旧两种队列的消息offset基本已达到均衡。

queueId为0-7的队列,消息较多,各个队列的消息offset几乎相同,消息负载平衡;

queueId为8-11的队列,消息较少,是为新增的4个队列,这四个队列之间的offset也基本达到了平衡。

纵观这12个队列保存的消息, queueId=0的队列,上一次的offset偏移量为508,本次offset=594,差值594-508=86,其余quereId的消息差异量也基本在83左右。说明 动态更新queueNums,水平扩容之后, queue队列在接受到消息后任能够均衡存储消息。

从此例分析出:queue收到的消息均衡分布,指的是每个queue每次收到消息的增加量能达到均衡;并不是指扩容后新增的queue队列的offset需要从0增加到原有队列的offset,而原有queue需等待直至所有queue的消息偏移量offset均达到同一水平的情况。

保持queueNums=12不变,增大线程个数和次数,发送6*3000=18000条消息,再次记录消息offset,最终结果如下,所有queue的"接受消息"的新增偏移量,均能达到平衡。

保持queueNums=12不变,增大线程个数和次数,发送6*4000=24000条消息,记录保存消息的brokerName、queueId。

分析日志,可得出结论,消息的确均衡分布到了 broker-master1、broker-master2两台机器的各个队列。

二 评测结果

1、客户端发送的消息,服务器集群收到消息后,能均衡分布到集群的每台多台master机器,且每台机器的每个queue接受到的消息也是均衡分布。

2、动态增加queueNums个数,水平扩容之后,新增的、原来的queue接受到的消息数也能达到均衡分布。

3、服务端创建topic时会设置默认的queueNums数值,该数值的优先级高于创建producer所设置的defaultQueueNums。

4、对于已在运行的topic,若需动态更新topic的相关属性,推荐使用rocketmq的控制台,通过控制台动态更新。

感谢各位的阅读!关于"如何实现RocketMQ队列queue的偏移量Offset均衡分布测试"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

消息 队列 均衡 机器 更新 偏移 个数 动态 方式 服务 评测 配置 属性 控制台 数据 文件 集群 控制 运行 测试 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡豆 互联网与科技 为想互联网科技怎么样 以房互联网科技 杭州互联网科技公司 美国互联网前沿科技 天速互联网络科技有限公司 知域互联网科技有限公司大骗子 速维有品互联网信息科技(苏州)有限公司 佛山市拉法互联网科技有限公司 阿里互联网科技企业 皮皮虾互联网科技有限公司 广州百诚互联网科技有限公司官网 本届互联网大会上的黑科技 新氧科技和美国互联网有关系吗 抖集互联网科技技术咨询 艺电能源互联网科技有限公司招聘 互联网科技手抄报图片 黑龙江互联网科技公司 恒生互联网科技趋势 咖啡豆 重生之互联网科技帝国 互联网与科技金融数据 卓越科技(互联网 ) 居家互联网科技有限公司 电子科技大学互联网创业大赛 浙南科技城互联网大厦建设工程 互联网金融科技名词解释 广东工业互联网大赛深圳学泰科技 西安有哪些互联网高科技企业
0