1. 程式人生 > 其它 >一、RocketMQ概述

一、RocketMQ概述

一、MQ概述

1 、MQ簡介

MQ,Message Queue,是一種提供訊息佇列服務的中介軟體,也稱為訊息中介軟體,是一套提供了訊息生產、儲存、消費全過程API的軟體系統。訊息即資料。一般訊息的體量不會很大。

2 、MQ用途

從網上可以檢視到很多的關於MQ用途的敘述,但總結起來其實就以下三點。

  • 限流削峰

    • MQ可以將系統的超量請求暫存其中,以便系統後期可以慢慢進行處理,從而避免了請求的丟失或系統被壓垮。
  • 非同步解耦

    • 上游系統對下游系統的呼叫若為同步呼叫,則會大大降低系統的吞吐量與併發度,且系統耦合度太高。而非同步呼叫則會解決這些問題。所以兩層之間若要實現由同步到非同步的轉化,一般性做法就是,在這兩層間新增一個MQ層。
  • 資料收集

    • 分散式系統會產生海量級資料流,如:業務日誌、監控資料、使用者行為等。針對這些資料流進行實時或批量採集彙總,然後對這些資料流進行大資料分析,這是當前網際網路平臺的必備技術。通過MQ完成此類資料收集是最好的選擇。

      3 、常見MQ產品

  • ActiveMQ

    • ActiveMQ是使用Java語言開發一款MQ產品。早期很多公司與專案中都在使用。但現在的社群活躍度已經很低。現在的專案中已經很少使用了。
  • RabbitMQ

    • RabbitMQ是使用ErLang語言開發的一款MQ產品。其吞吐量較Kafka與RocketMQ要低,且由於其不是Java語言開發,所以公司內部對其實現定製化開發難度較大。
  • Kafka

    • Kafka是使用Scala/Java語言開發的一款MQ產品。其最大的特點就是高吞吐率,常用於大資料領域的實時計算、日誌採集等場景。其沒有遵循任何常見的MQ協議,而是使用自研協議。對於Spring CloudNetçix,其僅支援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的實現是要遵循一些常規性協議的。常見的協議如下:
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簡介

RocketMQ是一個統一訊息引擎、輕量級資料處理平臺。RocketMQ是一款阿里巴巴開源的訊息中介軟體。 2016 年 11 月 28 日,阿里巴巴向 Apache 軟體基金會捐贈RocketMQ,成為 Apache 孵化專案。 2017 年 9 月 25 日,Apache 宣佈 RocketMQ孵化成為 Apache 頂級專案(TLP ),成為國內首個網際網路中介軟體在 Apache 上的頂級專案。

官網地址:http://rocketmq.apache.org

2 、RocketMQ發展歷程

  • 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 上的頂級專案。