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

本文涉及的产品
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,182元/月
简介: 引言 在前几期的消息中间件对比中,我们为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的索引机制起到了关键作用。消息类的对比测试也并未结束,我们会陆续加入新的评测场景,敬请期待!

相关链接

相关文章
|
2月前
|
消息中间件 Java Kafka
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
本文深入解析了 Kafka 和 RabbitMQ 两大主流消息队列在 Spring 微服务中的应用与对比。内容涵盖消息队列的基本原理、Kafka 与 RabbitMQ 的核心概念、各自优势及典型用例,并结合 Spring 生态的集成方式,帮助开发者根据实际需求选择合适的消息中间件,提升系统解耦、可扩展性与可靠性。
185 1
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
|
12月前
|
消息中间件 运维 Serverless
商业版vs开源版:一图看懂云消息队列 RocketMQ 版核心优势
自建开源 RocketMQ 集群,为保证业务稳定性,往往需要按照业务请求的峰值去配置集群资源。云消息队列 RocketMQ 版 Serverless 实例通过资源快速伸缩,实现资源使用量与实际业务负载贴近,并按实际使用量计费,有效降低企业的运维压力和使用成本。
665 110
|
6月前
|
消息中间件 架构师 Java
美团面试:对比分析 RocketMQ、Kafka、RabbitMQ 三大MQ常见问题?
美团面试:对比分析 RocketMQ、Kafka、RabbitMQ 三大MQ常见问题?
美团面试:对比分析 RocketMQ、Kafka、RabbitMQ 三大MQ常见问题?
|
10月前
|
消息中间件 运维 Java
招行面试:RocketMQ、Kafka、RabbitMQ,如何选型?
45岁资深架构师尼恩针对一线互联网企业面试题,特别是招商银行的高阶Java后端面试题,进行了系统化梳理。本文重点讲解如何根据应用场景选择合适的消息中间件(如RabbitMQ、RocketMQ和Kafka),并对比三者的性能、功能、可靠性和运维复杂度,帮助求职者在面试中充分展示技术实力,实现“offer直提”。此外,尼恩还提供了《尼恩Java面试宝典PDF》等资源,助力求职者提升架构、设计、开发水平,应对高并发、分布式系统的挑战。更多内容及技术圣经系列PDF,请关注【技术自由圈】获取。
|
12月前
|
消息中间件 大数据 Kafka
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
本文深入探讨了消息队列的核心概念、应用场景及Kafka、RocketMQ、RabbitMQ的优劣势比较,大厂面试高频,必知必会,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
|
消息中间件 存储 监控
ActiveMQ、RocketMQ、RabbitMQ、Kafka 的区别
【10月更文挑战第24天】ActiveMQ、RocketMQ、RabbitMQ 和 Kafka 都有各自的特点和优势,在不同的应用场景中发挥着重要作用。在选择消息队列时,需要根据具体的需求、性能要求、扩展性要求等因素进行综合考虑,选择最适合的消息队列技术。同时,随着技术的不断发展和演进,这些消息队列也在不断地更新和完善,以适应不断变化的应用需求。
781 1
|
消息中间件 算法 Java
弥补延时消息的不足,RocketMQ 基于时间轮算法实现了定时消息!
弥补延时消息的不足,RocketMQ 基于时间轮算法实现了定时消息!
1045 1
弥补延时消息的不足,RocketMQ 基于时间轮算法实现了定时消息!
|
消息中间件 uml RocketMQ
3 张图带你彻底理解 RocketMQ 事务消息
3 张图带你彻底理解 RocketMQ 事务消息
68020 2
3 张图带你彻底理解 RocketMQ 事务消息
|
消息中间件 NoSQL 关系型数据库
实战:如何防止mq消费方消息重复消费、rocketmq理论概述、rocketmq组成、普通消息的发送
实战:如何防止mq消费方消息重复消费 如果因为网络延迟等原因,mq无法及时接收到消费方的应答,导致mq重试。(计算机网络)。在重试过程中造成重复消费的问题
3038 1
实战:如何防止mq消费方消息重复消费、rocketmq理论概述、rocketmq组成、普通消息的发送
|
消息中间件 Java uml
5张图带你理解 RocketMQ 顺序消息实现机制
5张图带你理解 RocketMQ 顺序消息实现机制
962 1
5张图带你理解 RocketMQ 顺序消息实现机制

相关产品

  • 云消息队列 Kafka 版
  • 云消息队列 MQ