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

本文涉及的产品
服务治理 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的索引机制起到了关键作用。消息类的对比测试也并未结束,我们会陆续加入新的评测场景,敬请期待!

相关链接

相关文章
|
1月前
|
消息中间件 存储 Kafka
RabbitMQ、RocketMQ和Kafka全面对决,谁是最佳选择?
1、应用场景 1.RabbitMQ: 适用于易用性和灵活性要求较高的场景 异步任务处理:RabbitMQ提供可靠的消息传递机制,适用于处理异步任务,例如将耗时的任务放入消息队列中,然后由消费者异步处理,提高系统的响应速度和可伸缩性。 解耦系统组件:通过使用RabbitMQ作为消息中间件,不同的系统组件可以通过消息进行解耦,实现松耦合的架构,提高系统的可维护性和灵活性。 事件驱动架构:RabbitMQ的发布-订阅模式可以用于构建事件驱动架构,将系统中的事件作为消息发布到相应的主题,不同的消费者可以订阅感兴趣的主题进行相应的处理。
155 2
|
8天前
|
消息中间件 负载均衡 监控
Kafka消费者:监听模式VS主动拉取,哪种更适合你?
Kafka消费者:监听模式VS主动拉取,哪种更适合你?
41 0
|
21天前
|
消息中间件 存储 Kafka
【深入浅出 RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿一下RocketMQ和Kafka索引设计原理和方案
【深入浅出 RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿一下RocketMQ和Kafka索引设计原理和方案
42 1
|
3月前
|
消息中间件 监控 负载均衡
Kafka高级应用:如何配置处理MQ百万级消息队列?
在大数据时代,Apache Kafka作为一款高性能的分布式消息队列系统,广泛应用于处理大规模数据流。本文将深入探讨在Kafka环境中处理百万级消息队列的高级应用技巧。
172 0
|
5月前
|
消息中间件 存储 架构师
RabbitMQ vs Kafka:正面交锋(2)
RabbitMQ 是一个消息代理中间件,而 Apache Kafka 是一个分布式流处理平台。这种差异可能看起来只是语义上的,但它会带来严重的影响,影响我们方便地实现各种系统功能。 例如 Kafka 最适合处理流数据,在同一主题同一分区内保证消息顺序,而 RabbitMQ 对流中消息的顺序只提供基本的保证。
63 1
|
5月前
|
消息中间件 存储 Kafka
RabbitMQ vs Kafka:正面交锋(1)
值得注意的是,无论消费者是否消费了这些消息,Kafka 都会将消息保留在分区中直至预先配置的时间段内。这种保留意味着消费者可以自由地重读过去的消息。此外,开发人员还可以使用 Kafka 的存储层来实现事件溯源和审计日志等机制。
56 1
|
5月前
|
消息中间件 存储 传感器
何时使用Kafka而不是RabbitMQ
在公司项目中,一般消息量都不大的情况下,博主推荐大家可以使用 RabbitMQ。消息量起来了可以考虑切换到 Kafka,但是也要根据公司内部对两种 MQ 的熟悉程度来进行选择,避免 MQ 出现问题时无法及时处理。
83 0
|
6月前
|
消息中间件 存储 Kafka
Kafka 与 RabbitMQ:比较功能和用例
Kafka 与 RabbitMQ:比较功能和用例
354 1
Kafka 与 RabbitMQ:比较功能和用例
|
6月前
|
消息中间件 存储 算法
MQ - 闲聊MQ一二事儿 (Kafka、RocketMQ 、Pulsar )
MQ - 闲聊MQ一二事儿 (Kafka、RocketMQ 、Pulsar )
152 0
|
消息中间件 算法 Java
弥补延时消息的不足,RocketMQ 基于时间轮算法实现了定时消息!
弥补延时消息的不足,RocketMQ 基于时间轮算法实现了定时消息!
604 1
弥补延时消息的不足,RocketMQ 基于时间轮算法实现了定时消息!

相关产品

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