RocketMQ 一些核心概念

  • Producer:生產者,一個生產者發送業務應用系統生成的數據給Brokers(經紀人)。RocketMQ提供多範式發送:同步,異步,一站式。

  • Producer Group:生產者組,是將同樣角色生產者的分組在一起。同一生產組的不同生產者實例都會被Broker經紀人聯絡告知提交或者回滾事務,以避免事務後源生產者崩潰。

注:考慮到提供的生產者在發送消息時足夠給力時,一個生產者組僅允許一個生產者實例,以避免不必要的生產者實例初始化。

  • Consumer:消費者,從Brokers經紀人處拉取信息並填充到應用中。從用戶應用的角度看,有兩種類型的消費者:

    • PullConsumer:主動從brokers經紀人處拉取消息。一旦拉取到批量的數據,用戶應用的消費進程初始化。
    • PushConsumer:封裝消息拉取、消費進程和內部其他工作維護,留下一個回調接口讓用戶實現,當消息到達時即可執行用戶實現邏輯。
  • Consumer Group:消費組,同前面提到的生產者組類似,把同樣角色的消費乾分組到一起即消費者組。消費者組是實現負載均衡目標和容錯目標的一個重要概念。就信息消費而言,超級easy。

注:一個消費組的所有消費者實例必須擁有相同的topic主題描述。

  • Topic:主題,是生產者發送的消息和消費者拉取的消息的規類。Topic與生產者和消費者都是非常鬆散的關係,一個topic可以有0個或者1個或者多個生產者向其發送消息,換句話說,一個生產者可以同時向不同和topic發送消息。從消費者的解度來說,一個topic可能被0個或者一個或者多個消費組訂閱,類似的,一個消費組可以訂閱一個或者多個主題只要這個消費組的實例保持他們的訂閱一致。

  • Message:消息,要傳輸的信息。一個message必須有一個主題,主題可以看做是你的信件要郵寄的地址。一個消息也可以擁有一個可選的tag和額處的鍵值對。如你可能需要給你的message設置一個業務key和要boker服務上查找此message,以便在開發期間查找問題。

  • Message Queue:消息隊列,一個主題被化分爲一個或者多個子主題(sub-topics),“消息隊列”.

  • Tag:標籤,換而言之爲子主題,爲用戶提供額外的靈活性。使用tag,同一業務模塊不同目的的messages就可以用相同topic不同tag來標識。Tags有益於保持你的代碼乾淨而條理清晰,同時促進使用RocketMQ提供的查詢系統的效率。

  • Broker:經紀人,爲RocketMQ系統的一個主要組件。它接收發送自生產者的messages,存儲,然後準備處理來處消費者的拉取message請求。它也會存儲message相關的元數據,包括消費組,消費進程偏移量和主題/隊列相關信息。

  • Name Server:名字服務器,扮演遠程信息提供者的角色。用於生產者消費者通過主題查找對應的broker列表。

  • Message Model:消息模型,兩種:

    • Clustering:集羣
    • Broadcasting:廣播
  • Message Order:當使用DefaultMQPushConsumer時,你需要確定消費消息的方式:

    • Orderly:順序地消費消息即表示消費的消息順序同生產者發送的順序一致。
    • Concurrently:並行消費。指定此方式消費,信息消費的最大並行數量僅受限於每個消費者客戶端指定的線程池。

注:指定orderly時,最大並行消費數量由消費組訂閱的消息隊列的數量決定。

發佈了42 篇原創文章 · 獲贊 10 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章