Rocketmq集群消费测试

一 机器部署

1、机器组成

7台机器,均为16G内存

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

25155339_lOYA.jpg

 

2、运行环境配置

25155339_otdt.jpg

3、刷盘方式

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

25155340_NDjM.jpg

 

25155340_uxBz.jpg

 

 

 

  

 

二 性能评测

1、评测目的

   测试consumer端的集群模式消费。

  

2、评测指标

    (1)topic关联的readQueueNums读队列数值

    (2)属于同一个consumerGroup的consumer个数

    (3)所有consumer消费消息的总条数

    (4)每个consumer消费消息,读取的队列Id

    (5)部署集群中的master机器台数

   

3、评测逻辑

  如果有 5 个队列,2 个 consumer,那么第一个 Consumer 消费 3 个队列,第二 consumer 消费 2 个队列。

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

    队列数量、Consumer数量、Replance结果如下表

队列数量Consumer数量Reblance结果
52C1:3
C2:2
63C1:3
C2:3
1020C1-C10:1
C11-C20:0
206C1:4
C2:4
C3-C4:3

   

4、评测过程

       (1)发送消息前,查看服务端的topic关联的队列个数。

       (2)producer端向topic名称为“clusterTopicTest”队列发送消息,定为20条,发送消息后并记录每条消息的msgId、queueId、offset等基本信息。

    (3)配置consumer端,日志记录每个consumer端的instanceName、消息的offset、所消费队列queueId、消息的body、消息msgId,以及每个consumer消费消息的总条数。

    (4)每次消费完之后,统计所有consumer端消费消息的总数,判断消息是否有丢失。

    (5)每次消费完之后,分析每个consumer消费队列的queueId,判断队列是否达到了负载均衡。

    (6)记topic的队列数为A,记consumer个数为B,做如下调整:

    第一组:保持A不变,增加B,使得A > B,然后重复步骤1-5。

    第二组:保持A不变,增加B,使得A = B,然后重复步骤1-5。

    第三组:保持A不变,增加B,使得A = 2 * B,然后重复步骤1-5。

    第三组:增加A,保持B不变,使得2 * A = B,然后重复步骤1-5。

    第五组:减少A,保持B不变,使得2 * A < B,然后重复步骤1-5。

    (7)注意:需要先启动所有consumer端,在启动producer端发送消息,这样才能在每个consumer端同时看到消息的消费情况,因为消息被消费的速率是很快的。

    (8)注意:master机器个数,每台master机器上指定topic的队列数,两数值相乘,才是最终的rocketmq做负载均衡的队列个数。 (步骤6的master机器个数为2)

   

    第一组,总发送条数20条

队列数量Consumer数量Reblance结果
(期望)
Reblance结果
(实际)
Master机器消费条数
Master1Master2
85C1:4C1:4408
C2:3C2:3123
C3:3C3:3033
C4:3C4:3303
C5:3C5:3033

    3个consumer消费消息总条数:8+3+3+3+3 = 20条

    2台master机器,每个topic有8个队列, 期望的队列个数 2*8=16个,实际的队列个数 4+3+3+3+3 = 16个,可以看出期望、实际的queue分布是相同的结果。

   

    producer的发送记录:

25155340_Pd4q.jpg

 

    consumer1的消费记录:

25155340_HfhF.jpg

 

    consumer2的消费记录:

25155340_YX6q.jpg

 

    consumer3的消费记录:

25155340_3PrX.jpg

 

    consumer4的消费记录:

25155340_2tiA.jpg

 

    consumer5的消费记录:

25155341_YSjO.jpg

   

   

    第二组,总发送条数20条

队列数量Consumer数量Reblance结果
(期望)
Reblance结果
(实际)
Master机器消费条数
Master1Master2
88C1:2C1:2204
C2:2C2:2022
C3:2C3:2022
C4:2C4:2022
C5:2C5:2022
C6:2C6:2204
C7:2C7:2202
C8:2C8:2202

    8个consumer消费消息总条数:8+3+3+3+3 = 20条

    2台master机器,每个topic有8个队列, 期望的队列个数 2*8=16个,实际的队列个数 2+2+2+2+2+2+2+2 = 16个,可以看出期望、实际的queue分布是相同的结果。

    8个consumer消费消息总条数:4+2+2+2+2+2+4+2+2 = 20条

 

    producer的发送记录:

25155341_FAVt.jpg

 

    consumer1的消费记录:

25155341_Z8uC.jpg

 

    consumer2的消费记录:

25155341_gFmK.jpg

 

    consumer3的消费记录:

25155341_rHRJ.jpg

 

    consumer4的消费记录:

25155342_skE3.jpg

 

    consumer5的消费记录:

25155342_9M7Q.jpg

 

    consumer6的消费记录:

25155342_pW2Z.jpg

 

    consumer7的消费记录:

25155342_oz2F.jpg

 

    consumer8的消费记录:

25155342_q2uU.jpg

   

   

 

第三组,总发送条数20条

队列数量Consumer数量Reblance结果
(期望)
Reblance结果
(实际)
Master机器消费条数
Master1Master2
84C1:4C1:4408
C2:4C2:4404
C3:4C3:4044
C4:4C4:4044

    8个consumer消费消息总条数:8+3+3+3+3 = 20条

    2台master机器,每个topic有8个队列, 期望的队列个数 2*8=16个,实际的队列个数 4+4+4+4 = 16个,可以看出期望、实际的queue分布是相同的结果。

    8个consumer消费消息总条数:8+4+4+4 = 20条

 

    producer的发送记录:

25155342_FCGY.jpg

 

    consumer1的消费记录:

25155342_5NfR.jpg

 

    consumer2的消费记录:

25155342_MpHG.jpg

 

    consumer3的消费记录:

25155343_2rhN.jpg

 

    consumer4的消费记录:

25155343_G9mH.jpg

 

 

第四组,总发送条数20条

队列数量Consumer数量Reblance结果
(期望)
Reblance结果
(实际)
Master机器消费条数
Master1Master2
48C1:1C1:1103
C2:1C2:1103
C3:1C3:1012
C4:1C4:1012
C5:1C5:1012
C6:1C6:1012
C7:1C7:1103
C8:1C8:1103

    8个consumer消费消息总条数:8+3+3+3+3 = 20条

    2台master机器,每个topic有8个队列, 期望的队列个数 2*4=8个,实际的队列个数 1+1+1+1+1+1+1+1= 8个,可以看出期望、实际的queue分布是相同的结果。

    8个consumer消费消息总条数:3+3+2+2+2+2+3+3 = 20条

 

    producer的发送记录:

25155343_QyMC.jpg

 

    consumer1的消费记录:

25155344_bFlS.jpg

 

    consumer2的消费记录:

25155344_phgR.jpg

 

    consumer3的消费记录:

25155344_8jiJ.jpg

 

    consumer4的消费记录:

25155345_F5UA.jpg

 

    consumer5的消费记录:

25155344_bFlS.jpg

 

    consumer6的消费记录:

25155344_phgR.jpg

 

    consumer7的消费记录:

25155344_8jiJ.jpg

 

    consumer8的消费记录:

25155345_F5UA.jpg

 

 

第五组,总发送条数20条

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

    8个consumer消费消息总条数:8+3+3+3+3 = 20条

    2台master机器,每个topic有8个队列, 期望的队列个数 2*3=6个,实际的队列个数 1+1+1+1+1+1+0 = 6个,可以看出期望、实际的queue分布是相同的结果。

    8个consumer消费消息总条数:3+4+3+3+4+3+0 = 20条

   

    producer的发送记录:

25155343_QyMC.jpg

 

    consumer1的消费记录:

25155345_yL0l.jpg

 

    consumer2的消费记录:

25155345_2kCJ.jpg

   

    consumer3的消费记录:

25155345_ikYy.jpg

   

    consumer4的消费记录:

25155345_xqDZ.jpg

 

    consumer5的消费记录:

25155346_omrR.jpg

 

    consumer6的消费记录:

25155346_lt7d.jpg

   

    consumer7的消费记录:

25155346_dSHg.jpg

 

 

二 评测结果

    1、rocketmq集群消费模式,订阅消息的确达到了队列负载均衡,与这种负载均衡消费相关的因素有: master机器个数、 特定topic的queue个数,这两个数值相乘,才是rocketmq最终计算队列的总数。

    2、rocketmq的集群消费能力,保证消息准确性,完整性,所有被消费的消息总数与producer端发送的消息总数是一致的,不存在消息丢弃的情况。

    3、分析consumer消费日志,说明每条消息在相同consumerGroup组的不同consumer端中仅仅只会被消费一次。

    4、在集群消费模式下,如果consumer的总数,超过了队列总数,那么多余的consumer端将不能消费消息。

    

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值