如何实现Rocketmq集群消费测试

小编给大家分享一下如何实现Rocketmq集群消费测试,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

成都创新互联公司专业为企业提供北辰网站建设、北辰做网站、北辰网站设计、北辰网站制作等企业网站建设、网页设计与制作、北辰企业网站模板建站服务,十载北辰做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

一 机器部署

1、机器组成

7台机器,均为16G内存

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

如何实现Rocketmq集群消费测试

2、运行环境配置

如何实现Rocketmq集群消费测试

3、刷盘方式

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

如何实现Rocketmq集群消费测试

如何实现Rocketmq集群消费测试

二 性能评测

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的发送记录:

如何实现Rocketmq集群消费测试

    consumer1的消费记录:

如何实现Rocketmq集群消费测试

    consumer2的消费记录:

如何实现Rocketmq集群消费测试

    consumer3的消费记录:

如何实现Rocketmq集群消费测试

    consumer4的消费记录:

如何实现Rocketmq集群消费测试

    consumer5的消费记录:

如何实现Rocketmq集群消费测试

    第二组,总发送条数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的发送记录:

如何实现Rocketmq集群消费测试

    consumer1的消费记录:

如何实现Rocketmq集群消费测试

    consumer2的消费记录:

如何实现Rocketmq集群消费测试

    consumer3的消费记录:

如何实现Rocketmq集群消费测试

    consumer4的消费记录:

如何实现Rocketmq集群消费测试

    consumer5的消费记录:

如何实现Rocketmq集群消费测试

    consumer6的消费记录:

如何实现Rocketmq集群消费测试

    consumer7的消费记录:

如何实现Rocketmq集群消费测试

    consumer8的消费记录:

如何实现Rocketmq集群消费测试

第三组,总发送条数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的发送记录:

如何实现Rocketmq集群消费测试

    consumer1的消费记录:

如何实现Rocketmq集群消费测试

    consumer2的消费记录:

如何实现Rocketmq集群消费测试

    consumer3的消费记录:

如何实现Rocketmq集群消费测试

    consumer4的消费记录:

如何实现Rocketmq集群消费测试

第四组,总发送条数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的发送记录:

如何实现Rocketmq集群消费测试

    consumer1的消费记录:

如何实现Rocketmq集群消费测试

    consumer2的消费记录:

如何实现Rocketmq集群消费测试

    consumer3的消费记录:

如何实现Rocketmq集群消费测试

    consumer4的消费记录:

如何实现Rocketmq集群消费测试

    consumer5的消费记录:

如何实现Rocketmq集群消费测试

    consumer6的消费记录:

如何实现Rocketmq集群消费测试

    consumer7的消费记录:

如何实现Rocketmq集群消费测试

    consumer8的消费记录:

如何实现Rocketmq集群消费测试

第五组,总发送条数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的发送记录:

如何实现Rocketmq集群消费测试

    consumer1的消费记录:

如何实现Rocketmq集群消费测试

    consumer2的消费记录:

如何实现Rocketmq集群消费测试

    consumer3的消费记录:

如何实现Rocketmq集群消费测试

    consumer4的消费记录:

如何实现Rocketmq集群消费测试

    consumer5的消费记录:

如何实现Rocketmq集群消费测试

    consumer6的消费记录:

如何实现Rocketmq集群消费测试

    consumer7的消费记录:

如何实现Rocketmq集群消费测试

二 评测结果

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

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

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

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

以上是“如何实现Rocketmq集群消费测试”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


网页名称:如何实现Rocketmq集群消费测试
链接分享:http://ybzwz.com/article/psicpp.html