1. 程式人生 > >3分鐘快速入門RocketMQ(上)

3分鐘快速入門RocketMQ(上)

簡介

用官方的話來說,RcoketMQ 是一款低延遲、高可靠、可伸縮、易於使用的訊息中介軟體,具有以下特性(ps:對於這些特性描述,大家簡單過一眼就即可,深入學習之後自然就明白了):

  1. 支援釋出/訂閱(Pub/Sub)和點對點(P2P)訊息模型
  2. 在一個佇列中可靠的先進先出(FIFO)和嚴格的順序傳遞
  3. 支援拉(pull)和推(push)兩種訊息模式
  4. 單一佇列百萬訊息的堆積能力
  5. 支援多種訊息協議,如 JMS、MQTT 等
  6. 分散式高可用的部署架構,滿足至少一次訊息傳遞語義
  7. 提供 docker 映象用於隔離測試和雲集群部署
  8. 提供配置、指標和監控等功能豐富的 Dashboard

專業術語

  • Producer
    也就是常說的生產者,生產者的作用就是將訊息傳送到 MQ,生產者本身既可以產生訊息,如讀取文字資訊,將讀取的文字資訊傳送到 MQ。也可以對外提供介面,由外部應用來呼叫介面,生產者將收到的請求體內容傳送到 MQ。擁有相同 Producer Group 的生產者稱為一個生產者叢集。

  • Producer Group
    生產者組,簡單來說傳送同一類訊息的多個生產者就是一個生產者組。

  • Consumer
    也就是常說的消費者,接收 MQ 訊息的應用程式就是一個消費者。擁有相同 Consumer Group 的消費者稱為一個消費者叢集。

  • Consumer Group
    消費者組,和生產者類似,消費同一類訊息的多個消費者組成一個消費者組。

  • Topic
    主題是對訊息的邏輯分類,比如說有訂單類相關的訊息,也有庫存類相關的訊息,那麼就需要進行分類,一個是訂單 Topic 專門用來存放訂單相關的訊息,一個是庫存 Topic 專門用來存放庫存相關的訊息。

  • Tag
    標籤可以被認為是對主題的進一步細化,可以理解為二級分類,一般在相同業務模組中通過引入標籤來標記不同用途,同時消費者也可以根據不同的標籤進行訊息的過濾。

  • Broker
    Broker 是 RocketMQ 系統的主要角色,就是前面一直說的 MQ。Broker 接收來自生產者的訊息,儲存以及為消費者拉取訊息的請求做好準備。

  • Name Server
    Name Server 提供輕量級的服務發現和路由資訊,每個 NameServer 記錄完整的路由資訊,提供等效的讀寫服務,並支援快速儲存擴充套件。

邏輯架構

圖1-RocketMQ 架構

由這張圖可以看到有四個叢集,分別是 Name Server 叢集、Broker 叢集、Producer 叢集和 Consumer 叢集。

簡單說明一下圖中箭頭含義,從 Broker 開始,Broker Master1 和 Broker Slave1 是主從結構,它們之間會進行資料同步,即 Date Sync。同時每個 Broker 與 Name Server 叢集中的所有節點建立長連線,定時註冊 Topic 資訊到所有 Name Server 中。

生產者與 Name Server 叢集中的其中一個節點(隨機選擇)建立長連線,定期從 Name Server 獲取 Topic 路由資訊,並向提供 Topic 服務的 Broker Master 建立長連線,且定時向 Broker Master 傳送心跳。

消費者也是與 Name Server 叢集中的其中一個節點(隨機選擇)建立長連線,定期從 Name Server 獲取 Topic 路由資訊。但是消費者與生產者不同,生產者只能將訊息傳送到 Broker master,消費者則可以同時和提供 Topic 服務的 Broker Master 和 Broker Slave 建立長連線,既可以從 Broker Master 訂閱訊息,也可以從 Broker Slave 訂閱訊息。

更多技術乾貨,可以掃描下面的二維碼,關注微信公眾號:馮先生的筆記


馮先生的筆記