天天看點

RocketMQ 基本概念

生産者

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

生産者組

具有相同角色的生産者被分到一組。假如原始的生産者在事務後崩潰,broker會聯系

同一生産者組中的不同生産者執行個體,繼續送出或復原事務。

消費者

一個消費者從broker拉取資訊,并将資訊返還給應用。為了我們應用的正确性,提供了兩種消費者類型:

拉式消費者

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

推式消費者

推式消費者,從另一方面講,囊括了消息的拉取、消費過程,并保持了内部的其他工作,留下了一個回調

接口給終端使用者去實作,實作在消息到達時要執行的内容。

消費者組

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

就消費消息而言,它是非常容易的。

一個消費組中的消費者執行個體必須有确定的相同的訂閱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的消費組的數量。

  • 同時消費

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