如何进行Kafka、RabbitMQ、RocketMQ消息中间件消息发送性能的对比

57次阅读
没有评论

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

行业资讯    
服务器    
云计算    
如何进行 Kafka、RabbitMQ、RocketMQ 消息中间件消息发送性能的对比

这篇文章给大家介绍如何进行 Kafka、RabbitMQ、RocketMQ 消息中间件消息发送性能的对比,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

摘要
引言 分布式系统中, 我们广泛运用消息中间件进行系统间的数据交换, 便于异步解耦。现在开源的消息中间件有很多, 前段时间我们自家的产品 RocketMQ (MetaQ 的内核) 也顺利开源, 得到大家的关注。那么, 消息中间件性能究竟哪家强? 带着这个疑问, 我们中间件测试组对常见的三类消息产品(Kafka、…

引言

分布式系统中, 我们广泛运用消息中间件进行系统间的数据交换, 便于异步解耦。现在开源的消息中间件有很多, 前段时间我们自家的产品 RocketMQ (MetaQ 的内核) 也顺利开源, 得到大家的关注。

那么, 消息中间件性能究竟哪家强?

带着这个疑问, 我们中间件测试组对常见的三类消息产品 (Kafka、RabbitMQ、RocketMQ) 做了性能比较。

Kafka 是 LinkedIn 开源的分布式发布 - 订阅消息系统,目前归属于 Apache 定级项目。Kafka 主要特点是基于 Pull 的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8 版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。

RabbitMQ 是使用 Erlang 语言开发的开源消息队列系统,基于 AMQP 协议来实现。AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布 / 订阅)、可靠性、安全。AMQP 协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。

RocketMQ 是阿里开源的消息中间件,它是纯 Java 开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。RocketMQ 思路起源于 Kafka,但并不是 Kafka 的一个 Copy,它对消息的可靠传输及事务性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog 分发等场景。

测试目的

对比 Kafka、RabbitMQ、RocketMQ 发送小消息 (124 字节) 的性能。这次压测我们只关注服务端的性能指标, 所以压测的标准是:

不断增加发送端的压力, 直到系统吞吐量不再上升, 而响应时间拉长。这时服务端已出现性能瓶颈, 可以获得相应的系统最佳吞吐量。

测试场景

在同步发送场景中,三个消息中间件的表现区分明显:

Kafka 的吞吐量高达 17.3w/s,不愧是高吞吐量消息中间件的行业老大。这主要取决于它的队列模式保证了写磁盘的过程是线性 IO。此时 broker 磁盘 IO 已达瓶颈。

RocketMQ 也表现不俗,吞吐量在 11.6w/s,磁盘 IO %util 已接近 100%。RocketMQ 的消息写入内存后即返回 ack,由单独的线程专门做刷盘的操作,所有的消息均是顺序写文件。

RabbitMQ 的吞吐量 5.95w/s,CPU 资源消耗较高。它支持 AMQP 协议,实现非常重量级,为了保证消息的可靠性在吞吐量上做了取舍。我们还做了 RabbitMQ 在消息持久化场景下的性能测试,吞吐量在 2.6w/ s 左右。

测试结论

在服务端处理同步发送的性能上,Kafka RocketMQ RabbitMQ。

附录:测试环境

服务端为单机部署,机器配置如下:

CPU24 核内存 94G 硬盘 Seagate Constellation ES (SATA 6Gb/s) 2,000,398,934,016 bytes [2.00 TB] 7202 rpm 网卡 1000Mb/s

应用版本:

消息中间件版本 Kafka0.8.2RabbitMQ3.5.4RocketMQ3.4.6 测试脚本压力端 Jmeter 的 java 客户端消息大小 128 字节并发数能达到服务端最大 TPS 的最优并发 Topic 分区数量 8 刷盘策略 Kafka 和 RocketMQ 为异步落盘,RabbitMQ 的 Queue 不开启 durable 持久化

关于如何进行 Kafka、RabbitMQ、RocketMQ 消息中间件消息发送性能的对比就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计1772字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)