1. 消息队列RocketMQ性能测试案例

1.1 RocketMQ测试分析

客户场景,信息共享交换平台:
1.交换平台需支持每秒万级别数据传输
2.实现跨路段、跨部门、跨行业、跨区域信息即时共享,做到高可靠、低延迟

客户现场展示场景设计思路:
1.针对性的编写一套JAVA代码来支撑本次MQ性能POC验证。
2.选择合适规格的单台ECS,在单个TOPIC下运行多线程代码实现和MQ的订阅发送,统计1分钟内订阅和发送的数据交换TPS情况。
3.考虑POC也要符合客户实际生产场景中MQ使用逻辑,ECS应运行4个独立的JAR包,两对JAR包交叉经过MQ进行数据交换。
4.消息体内的内容应打印到屏幕,通过消息轨迹验证消息的被消费情况。
5.验证结果:客户指定场景下8线程异步,1分钟TPS在10K以上。

1.2 创建资源

本章节详细描述如何创建消息队列 RocketMQ 版的资源。

1.2.1 创建RocketMQ实例

1.登录Apsara Stack控制台。
2.在左侧导航栏中单击中间件产品 > 消息队列访问管理控制台界面。

3.在消息队列页面,选择区域与部门后,单击MQ,进入MQ控制台。

4.单击左侧导航栏概览后,在概览页面中,单击创建实例。
5.在创建实例对话框,选择实例类型,并输入实例名和描述,然后单击确认。

说明: 创建完实例后,单击左侧导航栏实例详情,可以查看创建实例的Topic数上限、消息发送TPS上限、消息订阅TPS上限和TCP协议接入地址等。

1.2.2 创建 Topic

Topic 是消息队列 RocketMQ 版里对消息的一级归类,例如可以创建 Topic_Trade 这一 Topic 来识别交易类消息,消息生产者将消息发送到 Topic_Trade,而消息消费者则通过订阅该 Topic 来获取和消费消息。
创建Topic要注意一下几点:

  • Topic 不能跨实例使用,例如在实例 A 中创建的 Topic A 不能在实例 B 中使用。
  • Topic 名称必须在同一实例中是唯一的。
  • 您可创建不同的 Topic 来发送不同类型的消息,例如用 Topic A 发送普通消息,Topic B 发送事务消息,Topic C 发送定时/延时消息。

1.在控制台左侧导航栏,单击 Topic 管理。
2.在 Topic 管理页面上方选择刚创建的实例,单击创建 Topic 按钮。

3.在创建 Topic 对话框中的 Topic 一栏,输入 Topic 名称,选择该 Topic 对应的消息类型,输入该 Topic 的备注内容,然后单击确定。

1.2.3 创建 Group ID

创建完实例和 Topic 后,您需要为消息的消费者(或生产者)创建客户端 ID ,即 Group ID 作为标识。

  • Group ID 必须在同一实例中是唯一的。
  • Group ID 和 Topic 的关系是 N:N,即一个消费者可以订阅多个 Topic,同一个 Topic 也可以被多个消费者订阅;一个生产者可以向多个 Topic 发送消息,同一个 Topic 也可以接收来自多个生产者的消息。

1.在控制台左侧导航栏,单击 Group 管理。
2.在 Group 管理页面上方选择刚创建的实例,然后选择TCP协议 > 创建Group ID 。本文以 TCP 协议为例。

3.在创建 Group ID 对话框中,输入 Group ID 和描述,然后单击确认。

1.3 场景落地

1.准备p1,c1,p2,c2双发送双订阅应用小程序,p1、p2小程序参考“第二章节”生产者异步发送消息代码,c1、c2小程序参考“第二章节”消费者集群订阅消息代码
p1-8081.jar
c1-8083.jar
p2-8082.jar
c2-8084.jar
2.通过Xshell连接到专有云ops1环境,把准备的4个jar包上传至一台16c32gECS服务器上

3.同时在该目录下编写启动4个jar包的start.sh脚本:
#!/bin/bash
nohup java -jar p1-8081.jar &
nohup java -jar p2-8081.jar &
nohup java -jar c1-8081.jar &
nohup java -jar c2-8081.jar &
4.编写停用4个jar包的stop.sh脚本:

5.编写请求消息队列2个发送和2个订阅接口的curl脚本:
#!/bin/bash
curl http://192.168.0.150:8081/echo-sync-final-send
curl http://192.168.0.150:8082/echo-sync-final-send
curl http://192.168.0.150:8083/echo-final-mq
curl http://192.168.0.150:8084/echo-final-mq
6../start.sh执行启动4个jar包,通过tail -f nohup.out查看启动日志,每个jar包启动完成日志如下:

7.通过ps -ef | grep jar确认4个jar是否在ECS服务器运行,有如下图则表示4个应用小程序运行正常:

8../curl.sh执行请求2个消息发送和2个消息订阅接口,请求之后我们查看一下程序后台日志发现代码打印的消息发送和消息订阅的日志不停的在刷,截取单条消息发送日志如下:

截取单条消息订阅日志如下:

1.4 消息查询

如遇消息消费有问题,则可通过查询具体发送的消息内容来排查问题。消息队列 RocketMQ 版提供了三种消息查询的方式,分别是按 Message ID、Message Key 以及 Topic 查询。

1.4.1 查询方式说明

三种查询方式的特点和对比如下表所述。
表1:查询方式对比

1.4.2 推荐查询过程

推荐按照以下流程查询消息。

1.4.3 查询步骤

1.登录MQ控制台。
2.在左侧导航栏,单击消息轨迹。
3.在消息轨迹页面,您可单击以下任一页签,然后按页面提示输入相应信息,再单击搜索按钮来查询消息。

  • 按 Message ID 查询

按 Message ID 查询消息属于精确查询,您输入 Topic 和 Message ID 即可精确查询到任意一条消息。因此,为了尽可能精确地查询,建议在发送消息成功后将 Message ID 信息打印到日志中,方便问题排查。

  • 按 Message Key 查询

消息队列 RocketMQ 版根据您设置的 Message Key 建立消息的索引信息,当您输入 Key 进行查询时,消息队列 RocketMQ 版根据该索引即可匹配相关的消息返回。

  • 按 Topic 查询

按 Topic 查询一般用在 Message ID 和 Message Key 都无法获得的情况下,根据 Topic 和消息的发送时间范围,批量获取该时间范围内的所有消息,然后再找到关心的数据。

4.在操作栏中单击消息详情,可查看到轨迹的简要信息,主要是消息本身的属性以及接收状态的信息。

5.在展开的区域中,单击查看轨迹即可查看完整的链路图。下图示例为在 TCP 协议下,按 Message ID 查询普通消息的轨迹。

对于 Message Key 和 Topic 查询方式,如果匹配到多条轨迹,可以进行上下翻页,查看比对轨迹数据。

1.4.4 查询结果说明

您可以在控制台的消息查询页面看到查询到的消息。直接显示的信息包含 Message ID、Tag、Key 和存储时间。此外,您还可以在每一行消息操作列下载消息内容、查询信息轨迹以及查看消息详情。
投递状态是消息队列 RocketMQ 版根据各个 Group ID 的消费进度计算出的结果,投递状态的信息如下表所示。
表 2: 消息投递状态

1.4.5 消费验证

消息队列 RocketMQ 版提供了消费验证功能,该功能可以将指定消息推送给指定的在线客户端,以检测客户端消费该消息的逻辑和结果是否符合预期。
说明: 消费验证功能仅仅是用于验证客户端的消费逻辑是否正常,并不会影响正常的收消息流程,因此消息的消费状态等信息在消费验证后并不会改变。

1.5 查看消息生产数据

可供查看的消息生产数据是某个Topic在一个时间段内从Broker接收的消息的总量或者TPS。
1.登录MQ控制台。
2.在左侧导航栏,单击资源报表。
3.在资源报表页面,单击消息生产页签。
4.在Topic一栏,选择Topic,并指定其他信息,然后单击搜索。
字段说明:

  • 采集类型:分为总量和TPS。总量提供该周期内Topic接收的消息总量;TPS提供每个周期内该Topic接收消息的平均TPS。
  • 采集周期:包括1分钟、10分钟后、30分钟、1小时。采集周期决定了数据采集的时间间隔,周期越短,采集点越密集,消息消费数据越详细。
  • 时间范围:RocketMQ最多可以提供最近三天之内的消息的生产查询。

查询结果以图表的形式显示

1.6 查看消息消费数据

可供查看的消息消费数据是某个Topic在一个时间段内投递给某个Group ID的消息的总量或TPS。
具体操作步骤如下:
1.登录MQ控制台。
2.在左侧导航栏,单击资源报表。
3.在资源报表页面,单击消息消费页签。
4.在Group ID和Topic栏,分别选择您要查询的Group ID和Topic。
5.指定其他信息,然后单击搜索。
字段说明:

  • 采集类型:分为总量和TPS。总量提供每个周期内该Topic投递给该Group ID的消息总量,TPS提供每个周期内该Topic投递给该Group ID消息的平均TPS。
  • 采集周期:包括1分钟、10分钟后、30分钟、1小时。采集周期决定了数据采集的时间间隔,周期越短,采集点越密集,消息消费数据越详细。
  • 时间范围:RocketMQ最多可以提供最近三天之内的消息的消费查询。

查询结果以图表的形式显示

原文链接
本文为阿里云原创内容,未经允许不得转载。

消息队列RocketMQ性能测试案例相关推荐

  1. JAVA应用开发MQ实战最佳实践——Series2:消息队列RocketMQ性能测试案例

    简介:JAVA应用开发MQ实战最佳实践--Series2:消息队列RocketMQ性能测试案例 往期内容 JAVA应用开发MQ实战最佳实践--Series1:RocketMQ综述及代码设计 1. 消息 ...

  2. 基于消息队列 RocketMQ 的大型分布式应用上云较佳实践

    作者|绍舒 审核&校对:岁月.佳佳 编辑&排版:雯燕 前言 消息队列是分布式互联网架构的重要基础设施,在以下场景都有着重要的应用: 应用解耦 削峰填谷 异步通知 分布式事务 大数据处理 ...

  3. 基于消息队列 RocketMQ 的大型分布式应用上云最佳实践

    简介:Apache RocketMQ 作为阿里巴巴开源的支撑万亿级数据洪峰的分布式消息中间件,在众多行业广泛应用.在选型过程中,开发者一定会关注开源版与商业版的业务价值对比. 那么,今天就围绕着商业版 ...

  4. 基于消息队列 RocketMQ 的大型分布式应用上云实践

    简介: Apache RocketMQ 作为阿里巴巴开源的支撑万亿级数据洪峰的分布式消息中间件,在众多行业广泛应用.在选型过程中,开发者一定会关注开源版与商业版的业务价值对比. 那么,今天就围绕着商业 ...

  5. 芋道 Spring Boot 消息队列 RocketMQ 入门

    点击上方"芋道源码",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 RP ...

  6. 分布式消息队列RocketMQ继承SpringBoot

    一.介绍 Springboot 继承RocketMQ: com.alibaba.cloud spring-cloud-starter-stream-rocketmq 底层封装了 rocketmq-cl ...

  7. 什么是消息队列 RocketMQ 版?

    消息队列 RocketMQ 版是阿里云基于 Apache RocketMQ 构建的低延迟.高并发.高可用.高可靠的分布式消息中间件.消息队列 RocketMQ 版既可为分布式应用系统提供异步解耦和削峰 ...

  8. 阿里云消息队列 RocketMQ、Kafka 荣获金融级产品稳定性测评 “先进级” 认证

    近日,由中国信通院和混沌工程实验室联合举办的混沌工程技术沙龙–金融行业精品专场顺利召开,并发布金融级产品稳定性测评成果.在分布式系统稳定性评估体系获奖名单中,阿里云分布式消息队列服务成为通过首批消息队 ...

  9. 消息队列RocketMQ应对双十一流量洪峰的“六大武器”

    作者:不周 审核校对:岁月.明锻 编辑&排版:雯燕 " 4982 亿,58.3 万笔/秒 "的背后 在新冠肺炎疫情催化下,数字化生活方式渐成新常态."4982 亿 ...

最新文章

  1. 在 JDK 9 中更简洁使用 try-with-resources 语句
  2. matlab读取.xyz文件及任意有间隔符数据
  3. 我目前要学习的vue知识点
  4. 为wp博客添加html网页,WP——在博客(wordpress)中嵌入jupyter notebook
  5. 【跨Web与客户端多媒体开发】
  6. 用keil怎么擦除_分享STM32 FLASH 擦除(以及防止误擦除程序代码)、写入
  7. latex中report目录_LaTeX目录格式控制
  8. npm 可视化html编辑器,超给力 Vue.js 可视化H5拖拽编辑器Quark-H5
  9. 18、led驱动程序的实现
  10. Uniswap 24h交易量约为10.6亿美元涨2.91%
  11. c 语言 二进制 十进制,C 语言实例 - 二进制与十进制相互转换
  12. 88上的数学题目之二
  13. MongoDB集群架构 调整,增加延迟备份节点服务器,删除仲裁节点(9)
  14. 区分大小屏幕_新GL8陆尊30多万,四块屏幕,科技感堪比奔驰,你还选埃尔法吗?...
  15. 斐讯k2路由器刷第三方固件
  16. java实现根据身份证计算年龄的两种方式
  17. 2021金山wps校招(前端)
  18. 入门C语言编程植树问题,亏损率的公式—(-圆位置排序c程序-数学-封巧及同学
  19. 自定义android控件EditText边框背景
  20. 如何使用 Alink 进行中文情感分析?

热门文章

  1. java getselecteditem_java – 将getSelectedItem()从JComboBox转换为int或任何其他东西
  2. 正泰eplan_【万泉河】给EPLAN初学者的建议:不用宏
  3. 如何给python升级_python升级后,如何给virtualenv里的python进行升级
  4. 天津科技大学计算机合资办学,天津科技大学计算机科学与信息工程学院介绍
  5. 大学计算机基础python第二次作业_第二次python作业-titanic数据练习
  6. python垃圾回收 采用方式_python-面向对象-10-__del__析构方法/垃圾回收机制
  7. 下面哪个字段是http请求中必须具备的_HTTP 协议报文结构及示例
  8. python selenium span内容读取_【程仁智推荐】Selenium自动化测试入门
  9. matlab jp2格式,JP2文件扩展名_JP2是什么格式_JP2文件怎么打开-文件百科
  10. python列表添加元素的三种方法定义集合数据对象_(1) List,tuple,dictionary,Python语法基础集,一,之,列表,元组,字典,集合...