RocketMQ基本概念


RocketMQ基本概念

一、生產者

  生產者發送業務系統產生的消息給broker。RocketMQ提供了多種發送方式:同步的、異步的、單向的。

1.1 生產者組

  具有相同角色的生產者被分到一組。假如原始的生產者在事務后崩潰,broker會聯系 同一生產者組中的不同生產者實例,繼續提交或回滾事務。

二、消費者

  一個消費者從broker拉取信息,並將信息返還給應用。為了我們應用的正確性,提供了兩種消費者類型:

  拉式消費者:拉式消費者從broker拉取消息,一旦一批消息被拉取,用戶應用系統將發起消費過程。

  推式消費者:推式消費者,從另一方面講,囊括了消息的拉取、消費過程,並保持了內部的其他工作,留下了一個回調 接口給終端用戶去實現,實現在消息到達時要執行的內容。

2.1 消費者組

  具有相同角色的消費者被組在一起,稱為消費者組。它是一個偉大的概念,它完成了負載均衡和容錯的目標。 就消費消息而言,它是非常容易的。

一個消費組中的消費者實例必須有確定的相同的訂閱topic。

三、Topic(主題)

  Topic是一個消息的目錄,在這個目錄中,生產者傳送消息,消費者拉取消息。Topic與生產者和消費者之間的關系非常的寬松。 明確的,一個Topic可以有0個,1個或多個生產者向它發送消息。相反的,一個生產者可以發送不同Topic的消息。 在消費者方面,一個Topic可以被0個,1個或多個消費者組訂閱。相似的,一個消費者組可以訂閱1個或多個Topic,只要組內的消費者實例 保持訂閱的一致性。

四、Message(消息)

  消息是被傳遞的信息。一個消息必須有一個Topic,它可以理解為信件上的地址。一個消息也可以有一個可選的tag,和額外的key-value對。 例如:你可以設置業務中的鍵到你的消息中,在broker服務中查找消息,以便在開發期間診斷問題。

五、消息隊列

  Topic被分割成一個或多個消息隊列。隊列分為3中角色:異步主、同步主、從。如果你不能容忍消息丟失,我們建議你部署同步主,並加一個從隊列。 如果你容忍丟失,但你希望隊列總是可用,你可以部署異步主和從隊列。如果你想最簡單,你只需要一個異步主,不需要從隊列。 消息保存磁盤的方式也有兩種,推薦使用的是異步保存,同步保存是昂貴的並會導致性能損失,如果你想要可靠性,我們推薦你使用同步主+從的方式。

六、Tag(標簽)

  標簽,用另外一個詞來說,就是子主題,為用戶提供額外的靈活性。具有相同Topic的消息可以有不同的tag。

七、Broker(隊列)

  Broker是RocketMQ的一個主要組件,它接收生產者發送的消息,存儲它們並准備處理消費者的拉取請求。它也存儲消息相關的元數據, 包括消費組,消費成功的偏移量,主題、隊列的信息。

八、名稱服務

  名稱服務主要提供路由信息。生產者/消費者客戶端尋找topic,並找到通信的隊列列表。

九、消息的順序

  當DefaultMQPushConsumer被使用,你就要決定消費消息時,是順序消費還是同時消費。

  • 順序消費

  順序消費消息的意思是 消息將按照生產者發送到隊列時的順序被消費掉。如果你被強制要求使用全局的順序,你要確保你的topic只有一個消息隊列。

如果指定順序消費,消息被同時消費的數量就是訂閱這個topic的消費組的數量。

  • 同時消費

  當同時消費消息時,消息同時消費的最大數量取決於消費客戶端指定的線程池的大小。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM