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

一 机器部署

1、机器组成

7台机器,均为16G内存

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

 

2、运行环境配置

3、刷盘方式

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

 

 

 

 

二 、同组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个

   

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

   

   

   

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

    第1个consumer:

 

    第2个consumer:

 

    第3个consumer:

 

    第4个consumer:

 

    第5个consumer:

 

    第6个consumer:

   

    分析得出结论:

总队列数量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个

   

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

   

   

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

    第1个consumer:

 

    第2个consumer:

 

    第3个consumer:

 

    第4个consumer:

 

    第5个consumer:

    第6个consumer:

   

    分析得出结论:

总队列数量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个

   

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

   

   

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

    第1个consumer:

 

    第2个consumer:

 

    第3个consumer:

 

    第4个consumer:

 

    第5个consumer:

   

    第6个consumer:

   

    分析得出结论:

总队列数量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实例。

   

   

   

   

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

   

   

    consumer端消费记录如下

   

 

   

分析消费记录可知

    两组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

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
RocketMQ是一个开源的分布式消息队列系统,它采用了分布式集群架构来提供高可用性和可伸缩性。RocketMQ集群由多个角色成,包括NameServer注册服务器、Broker服务器、Producer生产者和Consumer消费者。 在RocketMQ集群架构中,NameServer注册服务器负责维护整个集群中所有Broker服务器的元数据信息,包括Topic的路由信息和消息消费进度等。NameServer可以以集群的方式部署,以提供高可用性和负载均衡。 Broker服务器是RocketMQ的核心件,负责存储和传递消息RocketMQ的Broker服务器可以分为Master主节点和Slave从节点,Master节点负责处理消息的读写请求,而Slave节点则负责进行数据复制和容灾备份。Master和Slave节点可以以多Master多Slave的方式部署,以提供高可用性和数据冗余。 Producer生产者负责将消息发送到Broker服务器,而Consumer消费者负责从Broker服务器订阅和消费消息。Producer和Consumer可以以集群的方式部署,以提供高吞吐量和负载均衡。 为了搭建RocketMQ集群,我们需要考虑以下几个方面: 1. 搭建NameServer集群:可以部署多个NameServer服务器以提供高可用性和负载均衡。 2. 搭建Broker集群:可以以多Master多Slave的方式部署Broker服务器,以提供高可用性和数据冗余。 3. 搭建Producer集群:可以部署多个Producer实例,以提供高吞吐量和负载均衡。 4. 搭建Consumer集群:可以部署多个Consumer实例,以提供高并发消费和负载均衡。 通过搭建RocketMQ集群,我们可以实现RocketMQ的高可用性和可伸缩性,提供稳定可靠的消息传递服务。在集群中,各个角色之间可以相互协作,实现消息的可靠传递和高效消费。同时,通过合理配置集群的参数和策略,可以进一步优化集群的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值