RocketMQ大数据畅想

简介: 刚刚过去的双十一,阿里自主研发的消息中间件RocketMQ,充分展现了它的低延迟特性,大部分消息请求落在2ms内,慢请求也都落在20ms内,这无疑给追求快速响应的在线交易系统(OLTP)带去了福音。 也是在今年11月份,RocketMQ进入Apache孵化。这款最初设计来为淘宝交易系统异步解耦、削峰填谷的消息中间件,开始走出国门,为世界上的用户提供服务。自然地,RocketMQ将来不仅仅只服务于

刚刚过去的双十一,阿里自主研发的消息中间件RocketMQ,充分展现了它的低延迟特性,大部分消息请求落在2ms内,慢请求也都落在20ms内,这无疑给追求快速响应的在线交易系统(OLTP)带去了福音。
也是在今年11月份,RocketMQ进入Apache孵化。这款最初设计来为淘宝交易系统异步解耦、削峰填谷的消息中间件,开始走出国门,为世界上的用户提供服务。自然地,RocketMQ将来不仅仅只服务于在线系统,对于离线或半离线系统,尤其是大数据领域,RocketMQ也将为其绽放自己的光彩。

Kafka大数据的杀手锏

谈到大数据领域内的消息传输,则绕不开Kafka。这款为大数据而生的消息中间件,以其百万级TPS的吞吐量名声大噪,迅速成为大数据领域的宠儿,在数据采集、传输、存储的过程中发挥着举足轻重的作用,被LinkedIn,Uber, Twitter, Netflix等大公司所采纳,而storm,spark,flink等大数据流处理或批处理平台都有Kafka的相关插件支持。
那么,Kafka的百万级TPS是如何做到的呢?
有很多相关的分析,比如异步IO,PageCache,异步刷盘,消费过程零拷贝,Batch等,这些都对,但是没有一个直观的说明,这众多因素中,哪一个才是杀手锏呢?
笔者对这个问题进行了一些探究,在揭晓之前,请看下图:
screenshot.png

注:一台物理机部署Kafka,另一台物理机施加压力,每个producer异步发送,异步统计结果;本文所涉及的机器配置都是24核48G内存SSD盘

从上图可以看出,当单个消息体为50字节时,kafka单机的吞吐量确实表现出色,能达到百万级。可是当单个消息体为5k字节时,TPS极速下降,只有大约3万多,少了两个数量级。
对此,可能有人会说那是因为网卡打满了,还有就是因为消息体变大,每次能batch的数量变少了,导致整体TPS下降。
都有可能,笔者测试时网卡虽然没有打满,却确实是负载比较高了。因此,为了排除因素,笔者还做了另外一个测试如下:
screenshot.png

上图可以清晰地看出,50字节时,Kafka no batch(batch size设为1)时的吞吐量只有15万多,只有启用batch时的十分之一,而RocketMQ也可以很轻松地达到这个水平。
至此,可以直观地充分说明,Kafka达到百万级TPS的杀手锏就是batch
batch, 简单说就是把多个消息打包一次性发过去,对于在线交易系统来说,这通常不是一个好的选择,会导致消息大量丢失或者大量重复,延迟也会加大。但对于大数据领域来说,由于大部分都是离线半离线的计算,对数据可靠性要求没有那么高,但追求高吞吐量。Kafka为适应大数据,选择了batch,因此,赢得了大数据的欢迎。

RocketMQ大数据的无限潜力

到这里,自然会有一个疑问,如果把batch特性用到RocketMQ中,效果会如何呢?
按照上面的结论进行推测,batch特性势必也能大大提高RocketMQ的吞吐量。但如果要实践证明,需要做一些工作。
为了直观地证明batch对于RocketMQ的功效,笔者在Kafka Broker做了一层代理,大致结构图如下:
screenshot.png
Kafka Broker收到Kafka Client的Batch Data后,不存储在本地,而是把消息转发到RocketMQ,等待RocketMQ返回结果后,再返回给Kafka Client。
笔者用一台物理机部署Kafka Broker作为Proxy,同时用另一台同样配置的物理机部署RocketMQ作为存储,然后用另一台物理机来对Proxy进行施加压力,结果如下图:
screenshot.png

这个结果与上面关于Kafka的结果相互印证,既证明了Kakfa大数据的杀手锏在于batch,同时也展现了RocketMQ在大数据领域的无限潜力,并不逊色于Kafka。

Proxy与RocketMQ Kernel

RocketMQ最初是为交易系统而生,现在也不会忘记这一初心,但其也绝不会固步自封。面对越来越多的来自各个领域的用户,他们有着各自不一样的复杂应用场景,这给RocketMQ带来了挑战,也带来了机遇。未来的RocketMQ会继续保持初心,维护自己Kernel的本色,但也会增加一些外围功能,以适应各种不同的场景,如面向大数据的Kakfa Proxy,面向物联网的MQTT,面向REST的Http Proxy。
screenshot.png

最后,这一切只是开始,更多的想象空间,需要大家一起来创造。

目录
相关文章
|
消息中间件 分布式计算 大数据
RabbitMQ与大数据平台的集成
【8月更文第28天】在现代的大数据处理架构中,消息队列作为数据传输的关键组件扮演着重要的角色。RabbitMQ 是一个开源的消息代理软件,它支持多种消息协议,能够为分布式系统提供可靠的消息传递服务。本篇文章将探讨如何使用 RabbitMQ 与 Hadoop 和 Spark 进行集成,以实现高效的数据处理和分析。
377 1
|
消息中间件 存储 Prometheus
大数据生态中的 RocketMQ 5.0
随着RocketMQ 5.0的发布,RocketMQ 在处理消息、事件和流上实现了统一,有了越来越强大的优势,存储和计算分离的特性也使其能提供更低的成本,使企业上云更省钱、更省力,也更省人力。
大数据生态中的 RocketMQ 5.0
|
消息中间件 大数据 Apache
发力IOT、大数据,Apache RocketMQ 构建云时代的新生态
摘要 2018年9月1日,由阿里巴巴中间件举办的RocketMQ开发者沙龙在北京举行。这是RocketMQ今年举办的第二次大型线下技术交流活动,出席技术沙龙的嘉宾包括Apache RocketMQ布道师冯嘉、滴滴出行消息团队负责人江海挺、Apache RocketMQ PMC 刘振东、杜恒以及其他commiter和contributor。
4649 0
|
消息中间件 大数据 Apache
解锁事务消息,发力大数据流计算,Apache RocketMQ 开发者再聚深圳,干货满满获开源爱好者好评
7月29日,阿里中间件(Aliware)联合阿里巴巴技术协会,在深圳举办了Apache RocketMQ毕业后的第二次线下Meetup。当天现场的700名和线上三个直播平台的开源技术爱好者一起,与活动现场的Committer及Contributor就RocketMQ的CI/CD、最终一致性事务、金融领域的最佳实践、流计算生态、以及开源社区生态建设等话题展开深入探讨。本次活动不仅促进了开源社区的发展壮大,也推进了消息技术及规范的进一步发展。据统计,报名活动页面浏览量58000次,报名人数达2034人,线上3大平台直播,总PV超过17000,UV接近7500。
4264 0
解锁事务消息,发力大数据流计算,Apache RocketMQ 开发者再聚深圳,干货满满获开源爱好者好评
|
11月前
|
消息中间件 数据管理 Serverless
阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025
阿里云消息团队基于 Apache RocketMQ 构建 Serverless 消息系统,适配多种主流消息协议(如 RabbitMQ、MQTT 和 Kafka),成功解决了传统中间件在可伸缩性、成本及元数据管理等方面的难题,并据此实现 ApsaraMQ 全系列产品 Serverless 化,助力企业提效降本。
|
9月前
|
消息中间件 Java Kafka
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
本文深入解析了 Kafka 和 RabbitMQ 两大主流消息队列在 Spring 微服务中的应用与对比。内容涵盖消息队列的基本原理、Kafka 与 RabbitMQ 的核心概念、各自优势及典型用例,并结合 Spring 生态的集成方式,帮助开发者根据实际需求选择合适的消息中间件,提升系统解耦、可扩展性与可靠性。
642 1
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
1106 96
|
消息中间件 安全 Java
云消息队列RabbitMQ实践解决方案评测
一文带你详细了解云消息队列RabbitMQ实践的解决方案优与劣
565 115
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
消息中间件 运维 监控
云消息队列RabbitMQ实践解决方案评测报告
本报告旨在对《云消息队列RabbitMQ实践》解决方案进行综合评测。通过对该方案的原理理解、部署体验、设计验证以及实际应用价值等方面进行全面分析,为用户提供详尽的反馈与建议。
396 16