MQ中间件压测的探究

说到 MQ,大家可能都不陌生,我们常见的MQ有IBM MQ 、Rabbit MQ、Kafka等等。

这几种常见的MQ,具体应用适配系统场景、MQ有哪些优势、解决了什么问题,今天就不过多赘述了,感兴趣的同学可以去问下“度娘”。

MQ实质上就是一个消息队列,生产者生产消息,将消息发送至消息队列;消费者去指定的队列获取消息,再进行相关业务处理。

简单的MQ模型如下:

MQ中间件压测的探究1

我们经常使用压测工具模拟生产者对MQ的消息队列服务器进行压测。然而往往这么压测一下就真的结束了么?

相信很多时候,往往都是用压测工具模拟producers(生产者),然后再模拟consumers(消费者)对指定队列或topic进行消费。

但是这种测试方式总感觉差点什么。。。。我们来看张图:

MQ中间件压测的探究2

我们把MQ message queue 看成管道,把报文可以看成里面的水。试想下水从开始进入管道直到流出管道,这是不是也需要时间,这个时间就是排队时间。

如果管道之间的某个水阀开的比较小(暂不考虑出入口阀),会直接影响最后出口的水流速。

如果我们把管道的水阀看成是MQ队列配置参数呢?嗯哼。。。。

随着业务的迅猛增长,应用到消息队列的场景也越来越广泛,各种营销活动,感觉每天都在过节,如:618活动、双十一活动.....

这种大促活动,无疑会往消息队列发送大量的消息,这就会有一种现象发生,很可能消息在队列中排队耗时过长,导致用户迟迟收不到下行短信或者推送消息,造成用户体验感下降。

那么有没有更好的测试方法来测消息在MQ队列中的性能表现?当然是有的。

MQ中间件压测的探究3

从图不难看出,这个操作其实就是把发送消息的动作的时间戳写到报文中,在下游消费者接收到报文时,把报文中发送的时间戳取出。这样就可以测MQ队列的性能表现了。

源自公众号 宝路测试手记



留言