跳至主要內容
版本:5.0

網域模型

本節描述 Apache RocketMQ 的網域模型。

Apache RocketMQ 是一種採用非同步通訊模型和發布/訂閱訊息傳輸模型的分布式中介軟體服務。

如需通訊模型和傳輸模型的更多資訊,請參閱通訊模型訊息傳輸模型

Apache RocketMQ 的非同步通訊模型具有簡單的系統拓撲和鬆散的上游下游耦合。Apache RocketMQ 用於非同步解耦和負載轉移場景。

Apache RocketMQ 的網域模型

领域模型

如前圖所示,Apache RocketMQ 訊息的生命週期包含三個階段:製作、儲存和使用。

生產者產生訊息並將其傳送至 Apache RocketMQ 代理。訊息儲存在代理上的主題中。消費者訂閱主題以使用訊息。

訊息製作

生產者

用於在 Apache RocketMQ 中產生訊息的執行實體。生產者是業務呼叫連結的上游部分。生產者輕量、匿名且沒有身分。

訊息儲存

  • 主題

    用於在 Apache RocketMQ 中傳輸和儲存訊息的分組容器。主題包含多個訊息佇列,用於儲存訊息和擴充主題。

  • 訊息佇列

    用於在 Apache RocketMQ 中傳輸和儲存訊息的單元容器。訊息佇列類似於 Kafka 中的分區。Apache RocketMQ 以串流方式根據無限佇列結構儲存訊息。訊息按順序儲存在佇列中。

  • 訊息

    Apache RocketMQ 中資料傳輸的最小單位。訊息在初始化和儲存後不可變更。

訊息消費

  • ConsumerGroup

    Apache RocketMQ 發布/訂閱模型中定義的獨立消費身分組。Consumer Group 用於集中管理底層執行的消費者。同一個組內的消費者必須彼此維持相同的消費邏輯與設定,並共同消費組訂閱的訊息,以擴充組的消費能力。

  • 消費者

    Apache RocketMQ 中用於消費訊息的執行實體。Consumer 是業務呼叫鏈路的後端部分,一個 Consumer 必須屬於某個特定的 Consumer Group。

  • 訂閱

    Apache RocketMQ 發布/訂閱模型中的設定集合。設定包括訊息過濾、重試、消費者進度。訂閱在 Consumer Group 層級管理。您使用 Consumer Group 來指定訂閱,以管理組內的消費者如何過濾訊息、重試消費,以及還原 Consumer 偏移量。

    Apache RocketMQ 訂閱中的設定都是持久化的,除了過濾表達式。無論 Broker 重新啟動或連線關閉,訂閱都不會改變。

通訊模型

根據分散式系統架構的概念,一個複雜的系統可以分割成多個獨立的模組,例如微服務模組。系統中必須確保模組之間的遠端通訊。有兩種典型的通訊模型可用於此目的:基於 RPC 的同步通訊模型和基於中間件的非同步通訊模型。

基於 RPC 的同步模型

Synchronous invocation

在此模型中,遠端系統直接彼此通訊。每個請求直接從呼叫端傳送至被呼叫端,而被呼叫端會立即將呼叫結果傳回呼叫端。注意「同步」一詞並不指程式介面的模式。RPC 也支援非同步非封鎖呼叫的程式模式,在此情況下,呼叫端仍然會在指定期間內從被呼叫端期待直接回應。

非同步通訊模型 非同步呼叫

在這個模型中,子系統並非以緊密耦合的方式連接。呼叫端只需要將請求轉換成非同步事件或訊息,然後將其傳送給代理程式。只要訊息已傳送,呼叫即會被視為完成。代理程式會將訊息傳遞給被呼叫的下游子系統,並確保任務已完成。代理程式的角色通常由訊息中間件承擔。

非同步通訊提供下列好處

  • 系統拓撲簡單。由於呼叫端和被呼叫端都只與代理程式通訊,因此系統會以星狀結構運作,易於維護和管理。
  • 上游和下游耦合弱。耦合弱可讓系統結構更具彈性。代理程式會執行緩衝和非同步復原。部署在上游和下游的系統可以獨立升級和變更,而不會互相影響。
  • 負載轉移。面向訊息的代理程式通常提供大型流量緩衝區和強大的流量調整功能。這可防止流量高峰淹沒下游系統。

訊息傳輸模型

訊息中間件服務有兩種常見的傳輸模型:點對點模型和發布/訂閱模型。

點對點模型 點對點模型

點對點模型,又稱為佇列模型,具有下列特徵

  • 消費者匿名:佇列是上游下游通訊期間使用的唯一身分。下游消費者在從佇列取得訊息時無法宣告身分。

  • 一對一通訊:消費者沒有身分。消費者群組中的所有消費者會一起使用訂閱的訊息。每則訊息只能由一個特定消費者使用。因此,此模型僅支援一對一通訊。

發布/訂閱模型 發布/訂閱模型

此模型具有下列特徵

  • 獨立消費:在此模型中,消費者使用消費者群組或訂閱的身份來接收和消費訊息。消費者群組彼此獨立。

  • 一對多通訊:基於獨立身分的設計,此模型允許多個消費者群組訂閱同一個主題,每個群組都能完全存取所有訊息。因此,發布/訂閱模型支援一對多通訊。

傳輸模型比較

點對點模型結構較為簡單,而發布/訂閱模型則提供更好的擴充性。Apache RocketMQ 使用發布/訂閱模型,並具有與其相同的擴充性。