RocketMQ概述
一、MQ概述
1、MQ簡介
MQ,Message Queue,是一種提供訊息佇列服務的中間件,也稱為訊息中間件,是一套提供了訊息生
產、存盤、消費全程序API的軟體系統,訊息即資料,一般訊息的體量不會很大,
2、MQ用途
從網上可以查看到很多的關于MQ用途的敘述,但總結起來其實就以下三點,
- 限流削峰
MQ可以將系統的超量請求暫存其中,以便系統后期可以慢慢進行處理,從而避免了請求的丟失或系統
被壓垮,

- 異步解耦
上游系統對下游系統的呼叫若為同步呼叫,則會大大降低系統的吞吐量與并發度,且系統耦合度太高,而異步呼叫則會解決這些問題,所以兩層之間若要實作由同步到異步的轉化,一般性做法就是,在這兩層間添加一個MQ層,
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DSQ3pcCx-1629211884661)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210817202307891.png)]](https://img.uj5u.com/2021/08/20/258270200700212.png)
- 資料收集
分布式系統會產生海量級資料流,如:業務日志、監控資料、用戶行為等,針對這些資料流進行實時或
批量采集匯總,然后對這些資料流進行大資料分析,這是當前互聯網平臺的必備技術,通過MQ完成此
類資料收集是最好的選擇,
3、常見MQ產品
-
ActiveMQ
ActiveMQ是使用Java語言開發一款MQ產品,早期很多公司與專案中都在使用,但現在的社區活躍度已
經很低,現在的專案中已經很少使用了, -
RabbitMQ
RabbitMQ是使用ErLang語言開發的一款MQ產品,其吞吐量較Kafka與RocketMQ要低,且由于其不是
Java語言開發,所以公司內部對其實作定制化開發難度較大, -
Kafka
Kafka是使用Scala/Java語言開發的一款MQ產品,其最大的特點就是高吞吐率,常用于大資料領域的實
時計算、日志采集等場景,其沒有遵循任何常見的MQ協議,而是使用自研協議,對于Spring Cloud
Netflix,其僅支持RabbitMQ與Kafka, -
RocketMQ
RocketMQ是使用Java語言開發的一款MQ產品,經過數年阿里雙11的考驗,性能與穩定性非常高,其
沒有遵循任何常見的MQ協議,而是使用自研協議,對于Spring Cloud Alibaba,其支持RabbitMQ、
Kafka,但提倡使用RocketMQ,
- 對比
| 關鍵詞 | ACTIVEMQ | RABBITMQ | KAFKA | ROCKETMQ |
|---|---|---|---|---|
| 開發語言 | Java | ErLang | Java | Java |
| 單機吞吐量 | 萬級 | 萬級 | 十萬級 | 十萬級 |
| Topic | - | - | 百級Topic時會影響系統吞吐量 | 千級Topic時會影響系統吞吐量 |
| 社區活躍度 | 低 | 高 | 高 | 高 |
4、MQ常見協議
一般情況下MQ的實作是要遵循一些常規性協議的,常見的協議如下:
以下協議,RocketMQ都不支持
-
JMS
JMS,Java Messaging Service(Java訊息服務),是Java平臺上有關MOM(Message OrientedMiddleware,面向訊息的中間件 PO/OO/AO)的技術規范,它便于訊息系統中的Java應用程式進行訊息交換,并且通過提供標準的產生、發送、接收訊息的介面,簡化企業應用的開發,ActiveMQ是該協議的典型實作, -
STOMP
STOMP,Streaming Text Orientated Message Protocol(面向流文本的訊息協議),是一種MOM設計的簡單文本協議,STOMP提供一個可互操作的連接格式,允許客戶端與任意STOMP訊息代理(Broker)進行互動,ActiveMQ是該協議的典型實作,RabbitMQ通過插件可以支持該協議, -
AMQP
AMQP,Advanced Message Queuing Protocol(高級訊息佇列協議),一個提供統一訊息服務的應用
層標準,是應用層協議的一個開放標準,是一種MOM設計,基于此協議的客戶端與訊息中間件可傳遞
訊息,并不受客戶端/中間件不同產品,不同開發語言等條件的限制, RabbitMQ是該協議的典型實
現, -
MQTT
MQTT,Message Queuing Telemetry Transport(訊息佇列遙測傳輸),是IBM開發的一個即時通訊協
議,是一種二進制協議,主要用于服務器和低功耗IoT(物聯網)設備間的通信,該協議支持所有平
臺,幾乎可以把所有聯網物品和外部連接起來,被用來當做傳感器和致動器的通信協議, RabbitMQ通
過插件可以支持該協議,
二、RocketMQ概述
1、RocketMQ簡介
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-INU6rJat-1629211884667)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20210817202658573.png)]](https://img.uj5u.com/2021/08/20/258270200700213.png)
RocketMQ是一個統一訊息引擎、輕量級資料處理平臺,RocketMQ是?款阿?巴巴開源的訊息中間件,2016年11?28?,阿?巴巴向 Apache 軟體基?會捐贈RocketMQ,成為 Apache 范訓項?,2017 年 9 ? 25 ?,Apache 宣布 RocketMQ范訓成為 Apache 頂級項?(TLP ),成為國內?個互聯?中間件在 Apache 上的頂級項?,
官?地址:http://rocketmq.apache.org

2007年,阿里開始五彩石專案,Notify作為專案中交易核心訊息流轉系統,應運而生,
Notify系統是RocketMQ的雛形,2010年,B2B大規模使用ActiveMQ作為阿里的訊息內核,阿里急需一個具有
海量堆積能力的訊息系統,2011年初,
Kafka開源,淘寶中間件團隊在對Kafka進行了深入研究后,開發了一款新的MQ,MetaQ,2012年,MetaQ發展到了v3.0版本,在它基礎上進行了進一步的抽象,形成了RocketMQ,然后就將其進行了開源,
2015年,阿里在RocketMQ的基礎上,又推出了一款專門針對阿里云上用戶的訊息系統Aliware MQ,
2016年雙十一,RocketMQ承載了
萬億級訊息的流轉,跨越了一個新的里程碑,11?28?,阿?巴巴向 Apache 軟體基?會捐贈 RocketMQ,成為 Apache 范訓項?,2017 年 9 ? 25 ?,Apache 宣布 RocketMQ范訓成為 Apache 頂級項?(TLP ),成為國內?個互聯?中間件在 Apache 上的頂級項?,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294894.html
標籤:其他
上一篇:關于大資料下資料一致性的思考
下一篇:快速了解HIVE檔案存盤格式
