Rocketmq集群consumer消费(同组及不同组)

一 机器部署

1、机器组成

7台机器,均为16G内存

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

25155449_8t4q.jpg

 

2、运行环境配置

25155449_nCXe.jpg

3、刷盘方式

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

25155449_60Ze.jpg

 

25155450_kqvo.jpg

 

 

 

二 、同组consumer均衡消费queue

1、评测目的

   测试同一个consumerGroup组的所有consumer均衡消费同一个topic的所有queue。

  

2、评测指标

    master机器个数

    topic的队列数

    consumerGroup组的consumer个数

   

3、评测逻辑

  总队列数值 = master机器个数 * 指定topic的queue个数

    如果某个topic有4个队列, 存在6个consumer,在有两台master机器场景下,那么第一个、第二个Consumer消费2个队列,其余consumer消费1个队列。

  如果Consumer 超过队列数量,那么多余的Consumer将不能消费消息。

 

4、评测步骤

    (1)通过rocketmq管理控制台创建topic,并指定默认的队列个数。

    (2)配置一组具有相同consumerGroup名称的consumer,并启动consumer端。

    (3)配置producer端,并向指定的topic发送消息。

    (4)记录consumer端的消费记录,分析每个consumer消费的queueId和broker机器所在的IP

    (5)更新topic的queue个数,重复步骤2、3、4。

   

5、评测过程

    (1)第一组

    创建topic,更新默认的队列个数为4个

25155450_ZMrH.jpg

   

    启动producer端,发送20条消息,记录如下:

   

25155450_98A4.jpg

   

   

    6个consumer端的消费记录如下:

    第1个consumer:

25155450_5HZm.jpg

 

    第2个consumer:

25155450_5t2y.jpg

 

    第3个consumer:

25155450_eIMy.jpg

 

    第4个consumer:

25155450_lF8H.jpg

 

    第5个consumer:

25155450_ElXg.jpg

 

    第6个consumer:

25155450_GzY0.jpg

   

    分析得出结论:

总队列数量Consumer数量Reblance结果
(期望)
Reblance结果
(实际)
Master机器消费条数
Master1Master2
46C1:2C1:2206
C2:2C2:2206
C3:1C3:1012
C4:1C4:1012
C5:1C5:1012
C6:1C6:1012

 

 

 

(2)第二组

    创建topic,更新默认的队列个数为3个

25155450_0eOo.jpg

   

    启动producer端,发送20条消息,记录如下:

25155450_iN7D.jpg

   

   

    6个consumer端的消费记录如下:

    第1个consumer:

25155450_Rgee.jpg

 

    第2个consumer:

25155450_y513.jpg

 

    第3个consumer:

25155450_Z5FI.jpg

 

    第4个consumer:

25155451_pz72.jpg

 

    第5个consumer:

25155451_7Uco.jpg

    第6个consumer:

25155451_NrQx.jpg

   

    分析得出结论:

总队列数量Consumer数量Reblance结果
(期望)
Reblance结果
(实际)
Master机器消费条数
Master1Master2
36C1:1C1:1104
C2:1C2:1103
C3:1C3:1013
C4:1C4:1013
C5:1C5:1013
C6:1C6:1104

 

 

(2)第三组

    创建topic,更新默认的队列个数为2个

25155451_XMSi.jpg

   

    启动producer端,发送20条消息,记录如下:

25155451_remK.jpg

   

   

    6个consumer端的消费记录如下:

    第1个consumer:

25155451_BAMI.jpg

 

    第2个consumer:

25155451_UUr7.jpg

 

    第3个consumer:

25155451_N50t.jpg

 

    第4个consumer:

25155451_pnwX.jpg

 

    第5个consumer:

25155451_WgXU.jpg

   

    第6个consumer:

25155451_JLeN.jpg

   

    分析得出结论:

总队列数量Consumer数量Reblance结果
(期望)
Reblance结果
(实际)
Master机器消费条数
Master1Master2
26C1:1C1:1105
C2:1C2:1000
C3:1C3:1015
C4:1C4:1015
C5:1C5:1105
C6:1C6:1000

 

三个组的测试结果,的确达到了queue均匀消费。分析队列数量、Consumer数量、Replance结果如下表

总队列数量Consumer数量Reblance结果
46C1 - C2:2
C3 - C6:1
36C1 - C6:1
26C1 - C4:1
C5 - C6:0

 

 

 

三、不同组consumer消费相同topic

1、评测目的

   测试多个不相同的consumerGroup组的所有consumer消费同一个topic的消息。

  

2、评测指标

    consumerGroup组的名称以及instanceName实例

    topic消息的个数、顺序、queueId、msgId

   

3、评测逻辑

  位于不同consumerGroup组的 consumer端,可以同时消费相同topic的消息,所以只需要记录不同组的consumerGroup消费消息msgId的顺序即可。

  

4、评测步骤

    (1)创建两个不同consumerGroup组的consumer端。

    (2)配置producer端,并向指定的topic发送消息,记录消息的msgId、body等信息

    (3)对比分析消费记录。

   

5、评测过程

    创建不同comsumerGroup组,启动各自的consumer实例。

   

25155452_3sTc.jpg

   

   

25155452_Z0jj.jpg

   

    producer向指定topic发送消息,消息记录如下

   

25155452_A096.jpg

   

    consumer端消费记录如下

   

25155452_5mAI.jpg

 

25155452_MuUc.jpg

   

分析消费记录可知

    两组consumerGroup的consumer实例均消费了同一个topic的所有消息,包括消息的顺序、msgId、queueId等等都是完全一致的,测试结果与期望相符合。

 

 

四、评测结果

   

1、位于相同consumerGroup组的consumer端,在消费同一个topic的队列的数据,可以均衡消费queue。

注:queue的总数 = master机器台数 * topic的队列数

   

2、不同组的consumerGroup的consumer端,可以消费相同的topic消息,且消费消息的顺序、msgId、offset、body等参数完全一致。

   

3、剩余的功能点,本周暂未测试,留待后续深入研究。

    (1)支持动态切换topic、minOffset

    (2)当一个group下的consumer在消费过程中断服务,切换另外的group下的consumer开始消费,观察是否隔离

    (3)消息从哪里开始消费、消息回溯

    (4)重试队列、死信队列

 

4、已测试功能点

    (1)集群消费动态加入、删除、负载

    (2)广播消费

    (3)延迟消费(2分钟、1分钟、10秒)

    (4)Producer设置topic的queue数目

    (5)pull中拉取消息分页数目

    (6)一个consumer可订阅多个topic,可选择性的订阅topic的tag

    (7)当前消费数,最大消费数

    (8)消息堆积数量处理

    (9)一个group下平分一个topic的quene

    (10)不同组的group同时消费一个topic

转载于:https://my.oschina.net/tantexian/blog/703804

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值