消息队列 MQ 性能大揭秘

简介: 本文对比了RabbitMQ、RocketMQ、Kafka和Pulsar四款消息队列的性能。RabbitMQ的吞吐量为万级,延迟在低吞吐量时可低至微秒级;高吞吐量下延迟显著上升。RocketMQ官方宣称支持万亿级吞吐量,实际测试中可达百万级TPS,延迟为毫秒级。Kafka和Pulsar的吞吐量均为百万级,Kafka延迟低至2ms,Pulsar延迟约10ms。总体来看,Kafka在高吞吐量下表现最优,而RabbitMQ适合对速度与可靠性要求高的低吞吐量场景。

RabbitMQ

以下是rabbitmq官方针对RabbitMQ 3.12的性能测试报告,从报告中可以看到他测试的吞吐量是保持在万级的,延迟时间平均在25毫秒左右,最小延时可以达到微秒级。

另外图中还可以看到在低吞吐量的情况下rabbitmq的延迟速度非常的快,在高吞吐量情况下rabbitmq的延迟速度相对的上升梯度非常明显。


添加图片注释,不超过 140 字(可选)


在另一份confluent.io的测试报告中也有类似的结论,以下是confluent.io的测试报告


添加图片注释,不超过 140 字(可选)


图片与表格来源于confluent.io

RabbitMQ延迟在吞吐量高于30 MB/s时会显著降低。

小结

结合网上很多文章的相同结果:

吞吐量:万级

延迟(低吞吐量):毫秒级,可低至微秒级


RocketMQ

RocketMQ我在网上并没有找到比较可靠的性能测试报告,在官方有提到“Trillion-level throughput guarantee”万亿级吞吐保证。当然主要强调rocketmq可以达到万亿级别的数据处理需求。


添加图片注释,不超过 140 字(可选)


在阿里云可以看到可以购买到100万/秒 TPS的产品


添加图片注释,不超过 140 字(可选)


小结

结合网上很多文章的相同结果:

吞吐量:百万级

延迟:毫秒级


Kafka


添加图片注释,不超过 140 字(可选)


使用机器集群以网络有限的吞吐量传递消息,延迟低至2ms。

kafka官网的性能页面有个性能测试的blog链接


添加图片注释,不超过 140 字(可选)


这个blog是对 Apache Kafka 进行基准测试:每秒 200 万次写入


添加图片注释,不超过 140 字(可选)


另一个网站confluent.io的测试结果


添加图片注释,不超过 140 字(可选)


小结

结合网上很多文章的相同结果:

吞吐量:百万级

延迟:毫秒级,可低至2ms

Pulsar


添加图片注释,不超过 140 字(可选)


Apache Pulsar是一个一体化的消息和流媒体平台。消息可以单独使用和确认,也可以作为延迟小于10 ms的流使用。其分层架构允许在数百个节点间快速扩展,而无需重新调整数据。


小结

结合网上很多文章的相同结果:

吞吐量:百万级

延迟:毫秒级,可低至10ms



总结

当然以上数据基于的硬件环境不一样,测试的数据也不一样,只能当成个大概的参考。在confluent.io的数据是基于相同的数据与环境的测试结果。另外以上的测试的结果并不能代表MQ的极限,因为机器配置与机器数量也不是足够的。


添加图片注释,不超过 140 字(可选)


  • 延迟

rabbitmq、kafka、pulsar、rocketmq延迟均能达到毫秒级,在不同的吞吐量他们的延迟还是有所区别。

在低吞吐量的情况下,消息队列系统的延迟时间会受到多种因素的影响,包括系统架构、消息大小、网络延迟等。延迟时间从快到慢的一般排名:

rabbitmq->kafka->pulsar->rocketmq

而在高吞吐量的情况下,不同的消息队列系统的延迟时间会受到它们设计和优化的影响。延迟时间从快到慢的一般排名:

kafka->pulsar->rocketmq->rabbitmq

如果业务量并不大,对消息的速度与可靠性(几款MQ均能保证消息不丢失,不过或多或少要开启一些配置,rabbitmq默认配置的可靠性已非常高)要求高可以优先选择rabbitmq。


  • 吞吐量

rabbitmq、kafka、pulsar、rocketmq吞吐量,rabbitmq较低是万级,kafka、pulsar、rocketmq均是百万级。吞吐量比高到低的排名:

kafka->pulsar->rocketmq->rabbitmq


我是栈江湖,如果你喜欢此文章,不要忘记关注+点赞哦!你的支持是我创作的动力。如果你有任何意见或建议,欢迎在下方留言。若转载,请注明文章来源。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
3月前
|
消息中间件 存储 监控
说说如何解决RocketMq消息积压?为什么Kafka性能比RocketMq高?它们区别是什么?
【10月更文挑战第8天】在分布式系统中,消息队列扮演着至关重要的角色,它不仅能够解耦系统组件,还能提供异步处理、流量削峰和消息持久化等功能。在众多的消息队列产品中,RocketMQ和Kafka无疑是其中的佼佼者。本文将围绕如何解决RocketMQ消息积压、为什么Kafka性能比RocketMQ高以及它们之间的区别进行深入探讨。
120 1
|
5月前
|
图形学 人工智能 C#
从零起步,到亲手实现:一步步教你用Unity引擎搭建出令人惊叹的3D游戏世界,绝不错过的初学者友好型超详细指南 ——兼探索游戏设计奥秘与实践编程技巧的完美结合之旅
【8月更文挑战第31天】本文介绍如何使用Unity引擎从零开始创建简单的3D游戏世界,涵盖游戏对象创建、物理模拟、用户输入处理及动画效果。Unity是一款强大的跨平台游戏开发工具,支持多种编程语言,具有直观编辑器和丰富文档。文章指导读者创建新项目、添加立方体对象、编写移动脚本,并引入基础动画,帮助初学者快速掌握Unity开发核心概念,迈出游戏制作的第一步。
296 1
|
5月前
|
消息中间件 存储 监控
RocketMQ的性能优势?
【8月更文挑战第29天】RocketMQ的性能优势?
146 2
|
5月前
|
消息中间件 Prometheus 监控
RabbitMQ性能调优指南
【8月更文第28天】RabbitMQ 是一个非常流行的消息队列中间件,它支持多种消息协议,并且可以轻松集成到各种系统中。随着应用的扩展,确保 RabbitMQ 在高负载环境下能够高效稳定地运行变得至关重要。本文将深入探讨如何通过配置、监控以及最佳实践来优化 RabbitMQ 的性能。
764 1
|
5月前
|
消息中间件 传感器 缓存
为什么Kafka能秒杀众多消息队列?揭秘它背后的五大性能神器,让你秒懂Kafka的极速之道!
【8月更文挑战第24天】Apache Kafka作为分布式流处理平台的领先者,凭借其出色的性能和扩展能力广受好评。本文通过案例分析,深入探讨Kafka实现高性能的关键因素:分区与并行处理显著提升吞吐量;批量发送结合压缩算法减少网络I/O次数及数据量;顺序写盘与页缓存机制提高写入效率;Zero-Copy技术降低CPU消耗;集群扩展与负载均衡确保系统稳定性和可靠性。这些机制共同作用,使Kafka能够在处理大规模数据流时表现出色。
75 3
|
5月前
|
消息中间件 存储 Kafka
现代消息队列与云存储问题之Kafka在海量队列场景下存在性能的问题如何解决
现代消息队列与云存储问题之Kafka在海量队列场景下存在性能的问题如何解决
|
8月前
|
消息中间件 Kafka 数据库
【后端面经】【消息队列】22 | 消息队列:消息队列可以用来解决什么问题?-02 超时场景+性能问题
【5月更文挑战第7天】 本文介绍了电商中订单超时取消的处理方法,通过使用消息队列实现延时消息。当订单30分钟后未支付,消息队列将触发取消操作,但需注意并发问题,如采用分布式锁或乐观锁避免并发更新订单状态。乐观锁确保只有订单状态为未支付时才允许支付。主流消息队列如RocketMQ支持延迟消息,而Kafka不支持。 使用消息队列的好处在于解耦和提高系统性能、扩展性和可用性。同步调用会导致性能下降,因为必须等待所有调用完成。并发调用虽可提升性能,但仍逊于消息队列,且无法解决扩展性和可用性问题。
134 1
|
8月前
|
消息中间件 存储 Apache
精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的事务性消息的底层原理并在分析其实际开发场景
事务消息(Transactional Message)是指应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败。RocketMQ的事务消息提供类似 X/Open XA 的分布事务功能,通过事务消息能达到分布式事务的最终一致。
658 2
精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的事务性消息的底层原理并在分析其实际开发场景
|
消息中间件 网络协议 Kafka
RabbitMQ、RocketMQ、Kafka性能为何差距如此之大?
MQ的作用解耦、异步、削峰填谷。 未使用MQ的情况
|
消息中间件 网络协议 JavaScript
「事件驱动架构」Kafka vs. RabbitMQ:架构、性能和用例
「事件驱动架构」Kafka vs. RabbitMQ:架构、性能和用例