Apache RocketMQ

Apache RocketMQ
開發者Apache软件基金会
首次发布2012年,​12年前​(2012
当前版本
  • 5.1.0 (2023年2月20日)[1]
編輯維基數據鏈接
源代码库
  • github.com/apache/rocketmq
編輯維基數據鏈接
编程语言Java
操作系统跨平台
类型流处理, 消息代理
许可协议Apache许可证 2.0
网站rocketmq.apache.org

RocketMQ[2]是一个分布式消息和流数据平台,具有低延迟、高性能、高可靠性、万亿级容量和灵活的可扩展性。RocketMQ是2012年阿里巴巴开源的第三代分布式消息中间件,2016年11月21日,阿里巴巴向Apache软件基金会捐赠了RocketMQ;第二年2月20日,Apache软件基金会宣布Apache RocketMQ成为顶级项目。

历史

RocketMQ的发展可分为三个阶段。[3]

第一代在数据传输中使用push模式,在数据存储中使用关系型数据库。它展现了消息传递的低延迟,并且满足了具有分布式事务的典型电子商务平台[4] 的用途。

第二代在数据传输中使用pull模式,在数据存储中使用文件系统。它更注重稳定性和可靠性,并显示出与第一代响应时间和Kafka日志收集相当的性能。

第三代将pull模式与一些push操作相结合。它继承了第一代和第二代的优点,并在并发性和大量数据场景中表现出高性能。

功能

各种消息传递解决方案之间已经进行了很多比较,众所周知,当主题数量急剧增加时,RocketMQ的吞吐量下降幅度远小于Kafka。[5]由于具有高性能、高可靠性和高实时性的特点,RocketMQ与其他协议组件在MQTT等各种消息场景中的结合也越来越多。[6]

客户端SDK 协议和规范 有序消息 计划消息 批量消息 广播消息 消息过滤器
Java,C++,Python,Go,Node.Js Pull模式,支持TCP,JMS,OpenMessaging 确保严格的消息排序,并可以优雅地扩展 支持 支持同步模式以避免的消息损失 支持 支持基于SQL92的属性过滤器表达式
服务器触发的重传递 消息储存 消息追溯 消息优先权 高可用性和故障转移 消息跟踪 配置
支持 高性能和低延迟的文件存储 支持时间戳和偏移量两种表示 不支持 支持Master-Slave模型,不需要其他组件 支持 开箱即用,用户只需要注意几个配置

架构

RocketMQ由四部分组成:命名服务器(Name Server)、代理(Broker)、生产者(Producer)和消费者(Consumer),其中每一个都可以水平扩展而没有单点故障,如上图所示。

命名服务器集群

命名服务器集群是用于服务发现的轻量级组件,它们可用于读取和写入路由信息。每个命名服务器可以记录全局信息,并支持快速存储扩展。

代理集群

代理集群使用轻量级主题(topic)和队列(queue)机制来管理数据存储。为了实现容错,代理提供2份或3份数据。客户端可以在Push和Pull模型中获取消息。此外,还支持灾难恢复和丰富的指标统计信息。

生产者集群

生产者(Producer)可以分布式部署,从生产者到代理的消息可以通过多路径进行平衡。此外,还支持快速故障恢复和低延迟。

消费者集群

消费者也可以在Push和Pull模型中进行分布式部署,他们可以实时订阅消息,以集群为单位消费消息,同时还支持消息广播。

应用

Apache RocketMQ至少可以应用到以下五个方面:

  • 异构系统的集成;
  • 应用程序之间的分离;
  • 在事件驱动机制和复杂事件架构模型中的骨干;
  • 数据复制渠道;
  • 与流计算引擎集成。

社区维护

RocketMQ团队为活跃社区做了很多工作。聚会、研讨会、ApacheCon和Code Marathon定期在北京、深圳、杭州等地举行,以吸引新的贡献者和提交者。OpenMessaging基准测试套件目前可用于RocketMQ,它使RocketMQ与分布式消息传递的全球标准保持同步。[7]对于版本管理,采用了一系列标准化的软件开发过程。最新版本是4.2.0,4.3.0即将推出。可在此处(页面存档备份,存于互联网档案馆)获取更多信息。

获奖

2016年度最受欢迎中国开源软件奖(页面存档备份,存于互联网档案馆

2017年度最受欢迎中国开源软件奖(页面存档备份,存于互联网档案馆

第12次中日韩(中国-日本-韩国)开源软件优秀技术奖(页面存档备份,存于互联网档案馆

2018年度最受欢迎中国开源软件奖(页面存档备份,存于互联网档案馆

参见

参考文献

  1. ^ Release 5.1.0. 2023年2月20日 [2023年3月8日]. 
  2. ^ apache/rocketmq. GitHub. [2018-05-25]. (原始内容存档于2019-08-01) (英语). 
  3. ^ From Alibaba to Apache: RocketMQ’s Past, Present, and Future. InfoQ. [2018-06-26]. (原始内容存档于2018-06-19). 
  4. ^ Toward a General Distributed Messaging Framework for Online Transaction Processing Applications - IEEE Journals & Magazine. ieeexplore.ieee.org. [2018-06-26]. (原始内容存档于2018-06-26) (美国英语). 
  5. ^ Cloud, Alibaba. Kafka vs. RocketMQ- Multiple Topic Stress Test Results. Medium. 2018-01-04 [2018-07-08]. (原始内容存档于2018-07-08). 
  6. ^ A MQTT Protocol Message Push Server Based on RocketMQ - IEEE Conference Publication. ieeexplore.ieee.org. [2018-06-26]. (原始内容存档于2018-06-19) (美国英语). 
  7. ^ The OpenMessaging Benchmark Framework. openmessaging.cloud. [2018-07-08]. (原始内容存档于2018-06-25). 

外部链接


顶级项目
  • Abdera英语Apache Abdera
  • Accumulo英语Apache Accumulo
  • ActiveMQ
  • Ambari英语Apache Ambari
  • Ant
  • Aries英语Apache Aries
  • Apache Arrow
  • Apache HTTP Server
  • APR
  • Avro
  • Axis
  • Axis2
  • Beam
  • Bloodhound英语Apache Bloodhound
  • Apache Brooklyn英语Apache Brooklyn
  • Buildr英语Apache Buildr
  • Calcite英语Apache Calcite
  • Camel
  • Cassandra
  • Cayenne英语Apache Cayenne
  • Chemistry英语Apache Chemistry
  • CloudStack英语Apache CloudStack
  • Cocoon英语Apache Cocoon
  • Continuum英语Apache Continuum
  • Cordova
  • CouchDB
  • cTAKES英语cTAKES
  • CXF
  • Deltacloud英语Deltacloud
  • Derby
  • Directory英语Apache Directory Server
  • Drill英语Apache Drill
  • Empire-db英语Apache Empire-db
  • ECharts
  • Felix英语Apache Felix
  • Flex
  • Flink
  • Flume英语Apache Flume
  • Forrest英语Apache Forrest
  • Geronimo英语Apache Geronimo
  • Gora英语Apache Gora
  • Gump英语Apache Gump
  • Hadoop
  • Hama英语Apache Hama
  • HBase
  • Hive
  • Jackrabbit英语Apache Jackrabbit
  • James英语Apache James
  • JMeter英语Apache JMeter
  • Kafka
  • Karaf英语Apache Karaf
  • Kylin英语Apache Kylin
  • Lucene
  • Lenya英语Apache Lenya
  • Mahout英语Apache Mahout
  • Marmotta英语Apache Marmotta
  • Maven
  • MINA英语Apache MINA
  • mod_perl英语mod_perl
  • MyFaces英语Apache MyFaces
  • Nutch英语Apache Nutch
  • ODE英语Apache ODE
  • OFBiz英语Apache OFBiz
  • Oozie英语Oozie
  • OpenEJB英语Apache OpenEJB
  • OpenJPA英语Apache OpenJPA
  • OpenNLP
  • OpenOffice
  • PDFBox英语Apache PDFBox
  • Phoenix英语Apache Phoenix
  • POI
  • Pig英语Pig (programming tool)
  • Pivot英语Apache Pivot
  • Qpid英语Apache Qpid
  • River英语Apache River
  • Roller英语Apache Roller
  • RocketMQ
  • Samza英语Apache Samza
  • ServiceMix英语Apache ServiceMix
  • Shindig英语Apache Shindig
  • Shiro
  • Sling英语Apache Sling
  • Spark
  • Stanbol英语Apache Stanbol
  • Storm
  • SpamAssassin
  • Sqoop
  • Apache C++标准库英语stdcxx
  • Struts
  • Struts 2
  • Subversion
  • Tapestry
  • Thrift
  • Tiles英语Apache Tiles
  • Tika英语Apache Tika
  • Tomcat
  • Trafficserver
  • Turbine
  • Tuscany
  • UIMA
  • Velocity
  • Wave
  • Wicket
  • Wink英语Apache Wink
  • Xalan英语Xalan
  • Xerces英语Xerces
  • XMLBeans英语XMLBeans
  • ZooKeeper
ASF logo
Commons项目
  • Apache Commons Logging英语Apache Commons Logging
  • BCEL英语Byte Code Engineering Library
  • BSF英语Bean Scripting Framework
  • Commons Daemon英语Commons Daemon
  • Jelly英语Apache Jelly
Lucene项目
  • Lucene Java
  • Lucene.Net英语Lucene.Net
  • Nutch英语Nutch
  • Solr
Hadoop项目
其他项目
  • Batik
  • Chainsaw英语Chainsaw (log file viewer)
  • FOP
  • Log4j
  • XAP英语Apache XAP
  • Log4Net
  • Ivy英语Apache Ivy
孵化器项目
  • XAP英语Apache XAP
  • Samza英语Apache Samza
  • Storm
Apache Attic
  • AxKit英语AxKit
  • Beehive英语Apache Beehive
  • Click英语Apache Click
  • Apache BlueSky英语BlueSky Open Platform
  • Cactus英语Jakarta Cactus
  • Jakarta
  • Excalibur英语Apache Excalibur
  • Harmony
  • HiveMind英语Apache HiveMind
  • Lenya英语Apache Lenya
  • Slide英语Jakarta Slide
  • Shale英语Apache Shale
  • Shindig英语Apache Shindig
  • stdcxx英语Apache C++ Standard Library
  • iBATIS
  • XMLBeans英语XMLBeans
许可证标准
  • 分类 分类
  • 共享资源页面 维基共享