Apache RocketMQ explained

Apache RocketMQ
Apache RocketMQ
Developer:Apache Software Foundation
Latest Release Version:5.0.0
Latest Release Date:[1]
Programming Language:Java
Operating System:Cross-platform
Genre:Stream processing, Message broker
License:Apache License 2.0

RocketMQ[2] is a distributed messaging and streaming platform with low latency, high performance and reliability, trillion-level capacity and flexible scalability. It is the third generation distributed messaging middleware open sourced by Alibaba in 2012. On November 21, 2016, Alibaba donated RocketMQ to the Apache Software Foundation. Next year, on February 20, the Apache Software Foundation announced Apache RocketMQ as a Top-Level Project.

History

The development of RocketMQ can be divided into three stages.[3]

The first generation uses the push mode in data transportation, and relational database in data storage. It shows low latency in message delivery and meets the command of a typical E-commerce platform[4] with distributed transactions.

The second generation uses the pull mode in data transportation, and file system in data storage. It paid more attention to stability and reliability, and shows a comparable performance to the first generation in response time and Kafka on log collection.

The third generation combines the Pull mode with some Push operations. It inherits the advantages of the first and second generation, and shows high performance in concurrency and massive amounts of data scenarios.

Features

Much comparison have been made between the various messaging solutions, and it is widely known that when the number of topics increases dramatically, the throughput of RocketMQ dropped much less than Kafka.[5] Because the characteristics of high performance, high reliability and high real-time ability, more and more efforts have been made to the combination of RocketMQ and other protocol components in every type of messaging scenarios such as MQTT.[6]

Client SDKProtocol and SpecificationOrdered MessageScheduled MessageBatched MessageBroadCast MessageMessage FilterServer Triggered Redelivery
Java, C/C++, Python, Go, NodejsPull model, support TCP, JMS, OpenMessagingEnsure strict ordering of messages, and can scale out gracefullySupportedSupported, with sync mode to avoid message lossSupportedSupported, property filter expressions based on SQL92Supported
Message StorageMessage RetroactiveMessage PriorityHigh Availability and FailoverMessage TrackConfiguration
High performance and low latency file storageSupported timestamp and offset two indicatesNot SupportedSupported, Master-Slave model, without another kitSupportedWork out of box,user only need to pay attention to a few configurations

Architecture

RocketMQ consists of four parts: name servers, brokers, producers and consumers. Each of them can be horizontally extended without a single point of Failure. As shown in image left.

NameServer Cluster

The lightweight component for service discovery and they can be used to read and write routing information. Each one records global information, and supports fast storage expansion.

Broker Cluster

They use lightweight TOPIC and QUEUE mechanisms to manage data storage. To realize fault tolerance, two copies or three copies of data are provided. And Client can get message in Push and Pull model. In addition, disaster recovery and rich metrics statistics are also supported.

Producer Cluster

Producers can be distributed deployed, and messages from producers to brokers can be balanced through multi-path. In addition, fast failure and low latency are supported.

Consumer Cluster

Consumers can also be distributed deployed in the push and pull model, and they can subscribe message real-time, consume message in the unit of cluster. Message broadcasting is also supported.

Applications

There are at least five aspects Apache RocketMQ could relate to:

Community Maintenance

The RocketMQ team has done much to keep the community active. Meetups, workshops, ApacheCon and Code Marathons are regularly held in Beijing, Shenzhen and Hangzhou to attract new contributors and committers. The OpenMessaging benchmarking suites are available for RocketMQ now, helping RocketMQ keep pace with the global standard for distributed messaging.[7] As for version management, a series of standardized software development processes have been adopted. The latest version is 4.2.0, with 4.3.0 on the way. More information can be obtained here.

Awards

2016 China's most popular open source software award

2017 China's most popular open source software award

16th CJK(China-Japan-South Korea) open source software outstanding technology award

2018 China's most popular open source software award

2019 China's most popular open source software award

External links

Notes and References

  1. Web site: Release Notes - Apache RocketMQ - Version 5.0.0. 9 September 2022 . 27 September 2022.
  2. Web site: apache/rocketmq. GitHub. en. 2018-05-25.
  3. Web site: From Alibaba to Apache: RocketMQ's Past, Present, and Future. InfoQ. 2018-06-26.
  4. 10.1109/ACCESS.2017.2717930. Toward a General Distributed Messaging Framework for Online Transaction Processing Applications. IEEE Access. 5. 18166–18178. 2017. Liao. Jianwei. Zhuang. Xiaodan. Fan. Renyi. Peng. Xiaoning. 2017IEEEA...518166L . free.
  5. Web site: Kafka vs. RocketMQ- Multiple Topic Stress Test Results. Cloud. Alibaba. 2018-01-04. Medium. 2018-07-08.
  6. Book: 10.1109/ICICTA.2017.72 . A MQTT Protocol Message Push Server Based on RocketMQ . 2017 10th International Conference on Intelligent Computation Technology and Automation (ICICTA) . 295–298 . 2017 . Yue . Ma . Ruiyang . Yan . Jianwei . Sun . Kaifeng . Yao . 978-1-5386-1230-9 . 28825800 .
  7. Web site: The OpenMessaging Benchmark Framework. openmessaging.cloud. 2018-07-08.