千家信息网

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

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章给大家分享的是有关如何实现RocketMQ队列queue的偏移量Offset均衡分布测试的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一 机器部署1、机器组成7台机
千家信息网最后更新 2025年12月02日如何实现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安全错误 数据库的锁怎样保障安全 嘉兴互联网智慧工厂软件开发 数据库不能识别对象 传统产业数字化转型网络安全 宁波网站优化软件开发 网络安全开展活动 接入层采用什么网络安全技术 非法侵入计算机网络安全法 选择好的网络安全零信任安全 sdn网络安全书籍 成都正己厚网络技术有限公司 找不到和平精英服务器怎么办 酷京网络技术工作室 关系数据库的阶段任务 查询数据库中最大的字段值 数据库日志在c盘哪里 关于服务器的优美句子 怎么判断数据库是全文数据库 计算机只学软件开发可以吗 自学网络安全需要多少时间 网络安全教育考试a卷 数据库可以统计数据吗 在数据库添加信息的sql 瑞庭网络技术有限公司珠海分公司 数据库画压图是什么软件 无法连接服务器678 阿里云服务器播放不了视频 世界技能大赛网络安全赛项 贵州网络安全技术维护中心 汽车车载网络技术研究背景 浙江惠普服务器虚拟化解决方案
0