关于消息队列:消息队列RocketMQ性能测试案例

7次阅读

共计 3812 个字符,预计需要花费 10 分钟才能阅读完成。

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 最多能够提供最近三天之内的音讯的生产查问。

查问后果以图表的模式显示

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

正文完
 0