Kafka vs RocketMQ ——消息及时性对比

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
MSE Nacos 企业版免费试用,1600元额度,限量50份
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 引言 在前几期的消息中间件对比中,我们为Kafka和RocketMQ设定了几个性能场景(单机系统可靠性、多Topic对性能稳定性的影响以及Topic数量对单机性能的影响),这些场景大都是以服务端的吞吐能力为对比焦点。这一期,我们将从客户端的角度出发,为大家带来Kafka和RocketMQ消息及时性

引言

在前几期的消息中间件对比中,我们为Kafka和RocketMQ设定了几个性能场景(单机系统可靠性、多Topic对性能稳定性的影响以及Topic数量对单机性能的影响),这些场景大都是以服务端的吞吐能力为对比焦点。这一期,我们将从客户端的角度出发,为大家带来Kafka和RocketMQ消息及时性的对比。

何谓消息及时性?

消息及时性是指对于一条消息来说,从消息发送到消息中间件这一时刻起,到最终到达消费端所消耗的总时间。
是不是有点抽象?我们来看个物流公司配送的例子,便于理解:
卖家把货物投递给物流公司就不再关心这笔交易了,但买家此时却更希望早点收到货品,这时就到了物流公司之间比拼运送能力的时候了,如果用飞机,买家就幸福了,而轮船呢,就只能默默等待了。这个过程里买家所等待的时间,就是一次物流的整体耗时,因此我说:整体耗时越短,及时性就越好,反之,及时性就是越差
_

通过上面的解释明白此次试验的目的了吧,就是对于同样数量的消息,Kafka和RocketMQ哪一个会用更短的时间处理完,以减少业务等待的时间

测试目的

在消息同步收发的情况下,Kafka和RocketMQ各自发送并处理200万条128字节大小的消息,测算消息中间件从消息生产者发送第一条消息到消费者处理完最后一条消息所消耗的时间,对不同并发数下的Kafka和RocketMQ的消息及时性进行对比。

测试场景

场景描述

测试过程中,Kafka和RocketMQ均使用相同的测试环境和客户端逻辑,接收端每接收2条消息,产生1ms的时间延迟来模拟消费端的处理耗时,消息队列数均设置为8,分别记录Kafka和RocketMQ在不同的发端并发数下,从生产者发送第一条消息到消费者接收到第200W条消息的耗时.

  • 测试数据如下:
    _

我们可以看到,当发送端的并发数小的时候,Kafka和RocketMQ的接收端速度都能与之持平,Kafka表现稍好,随着发送端并发数的增加,消息处理量增大,Kafka对于发送端消息的存储能力强于RocketMQ,但是把消息投递给消费端的能力非常弱,导致消息处理的时间几乎是RocketMQ的两倍,此时RocketMQ的消息及时性远胜Kafka。

测试结论

在测试过程中,Kafka就好像是一个仓库无穷大的物流公司,货物入仓库很快,但是配送多用轮船和汽车,送货速度很慢,比如(某达速运,某通速运)。RocketMQ则像是一个仓库容量有界限的物流公司,货物入库的速度是一定的,但是配送多用飞机和汽车,送货很快(比如某丰速运)
如果公司的业务量非常小,一天中几乎不存在高峰的时段,那么Kafka或RocketMQ都可以。而当消息的处理数量上升后,Kafka累积消息的能力强于RocketMQ,但是把消息投递给消费的能力大幅下降,导致消耗过多的时间(Kafka要133秒,RocketMQ要65秒)。在消息及时性这个场景,RocketMQ完胜Kafka

附录

测试环境

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

CPU

应用版本

_

测试脚本

_

未完待续

RocketMQ在这场消息及时性测试中表现优异,原因一点不奇怪,RocketMQ的索引机制起到了关键作用。消息类的对比测试也并未结束,我们会陆续加入新的评测场景,敬请期待!

相关链接

目录
打赏
0
59
64
84
3416
分享
相关文章
商业版vs开源版:一图看懂云消息队列 RocketMQ 版核心优势
自建开源 RocketMQ 集群,为保证业务稳定性,往往需要按照业务请求的峰值去配置集群资源。云消息队列 RocketMQ 版 Serverless 实例通过资源快速伸缩,实现资源使用量与实际业务负载贴近,并按实际使用量计费,有效降低企业的运维压力和使用成本。
485 78
招行面试:RocketMQ、Kafka、RabbitMQ,如何选型?
45岁资深架构师尼恩针对一线互联网企业面试题,特别是招商银行的高阶Java后端面试题,进行了系统化梳理。本文重点讲解如何根据应用场景选择合适的消息中间件(如RabbitMQ、RocketMQ和Kafka),并对比三者的性能、功能、可靠性和运维复杂度,帮助求职者在面试中充分展示技术实力,实现“offer直提”。此外,尼恩还提供了《尼恩Java面试宝典PDF》等资源,助力求职者提升架构、设计、开发水平,应对高并发、分布式系统的挑战。更多内容及技术圣经系列PDF,请关注【技术自由圈】获取。
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
本文深入探讨了消息队列的核心概念、应用场景及Kafka、RocketMQ、RabbitMQ的优劣势比较,大厂面试高频,必知必会,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
ActiveMQ、RocketMQ、RabbitMQ、Kafka 的区别
【10月更文挑战第24天】ActiveMQ、RocketMQ、RabbitMQ 和 Kafka 都有各自的特点和优势,在不同的应用场景中发挥着重要作用。在选择消息队列时,需要根据具体的需求、性能要求、扩展性要求等因素进行综合考虑,选择最适合的消息队列技术。同时,随着技术的不断发展和演进,这些消息队列也在不断地更新和完善,以适应不断变化的应用需求。
514 1
说说如何解决RocketMq消息积压?为什么Kafka性能比RocketMq高?它们区别是什么?
【10月更文挑战第8天】在分布式系统中,消息队列扮演着至关重要的角色,它不仅能够解耦系统组件,还能提供异步处理、流量削峰和消息持久化等功能。在众多的消息队列产品中,RocketMQ和Kafka无疑是其中的佼佼者。本文将围绕如何解决RocketMQ消息积压、为什么Kafka性能比RocketMQ高以及它们之间的区别进行深入探讨。
296 1
阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025
阿里云消息团队基于 Apache RocketMQ 构建 Serverless 消息系统,适配多种主流消息协议(如 RabbitMQ、MQTT 和 Kafka),成功解决了传统中间件在可伸缩性、成本及元数据管理等方面的难题,并据此实现 ApsaraMQ 全系列产品 Serverless 化,助力企业提效降本。
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
解决方案 | 云消息队列RabbitMQ实践获奖名单公布!
云消息队列RabbitMQ实践获奖名单公布!
155 1
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
721 80

相关产品

  • 云消息队列 Kafka 版
  • 云消息队列 MQ
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等

    登录插画

    登录以查看您的控制台资源

    管理云资源
    状态一览
    快捷访问