RocketMQ基本概念
基本概念
訊息模型(Message Model)
RocketMQ主要由 Producer、Broker、Consumer 三部分組成,其中Producer 負責生產訊息,Consumer 負責消費訊息,Broker 負責儲存訊息。Broker 在實際部署過程中對應一臺伺服器,每個 Broker 可以儲存多個Topic的訊息,每個Topic的訊息也可以分片儲存於不同的 Broker。Message Queue 用於儲存訊息的實體地址,每個Topic中的訊息地址儲存於多個 Message Queue 中。ConsumerGroup 由多個Consumer 例項構成。
訊息生產者(Producer)
負責生產訊息,一般由業務系統負責生產訊息。一個訊息生產者會把業務應用系統裡產生的訊息傳送到broker伺服器。RocketMQ提供多種傳送方式,同步傳送、非同步傳送、順序傳送、單向傳送。同步和非同步方式均需要Broker返回確認資訊,單向傳送不需要。
訊息消費者(Consumer)
負責消費訊息,一般是後臺系統負責非同步消費。一個訊息消費者會從Broker伺服器拉取訊息、並將其提供給應用程式。從使用者應用的角度而言提供了兩種消費形式:拉取式消費、推動式消費。
主題(Topic)
表示一類訊息的集合,每個主題包含若干條訊息,每條訊息只能屬於一個主題,是RocketMQ進行訊息訂閱的基本單位。
代理伺服器(Broker Server)
訊息中轉角色,負責儲存訊息、轉發訊息。代理伺服器在RocketMQ系統中負責接收從生產者傳送來的訊息並儲存、同時為消費者的拉取請求作準備。代理伺服器也儲存訊息相關的後設資料,包括消費者組、消費進度偏移和主題和佇列訊息等。
名字服務(Name Server)
名稱服務充當路由訊息的提供者。生產者或消費者能夠通過名字服務查詢各主題相應的Broker IP列表。多個Namesrv例項組成叢集,但相互獨立,沒有資訊交換。
拉取式消費(Pull Consumer)
Consumer消費的一種型別,應用通常主動呼叫Consumer的拉訊息方法從Broker伺服器拉訊息、主動權由應用控制。一旦獲取了批量訊息,應用就會啟動消費過程。
推動式消費(Push Consumer)
Consumer消費的一種型別,該模式下Broker收到資料後會主動推送給消費端,該消費模式一般實時性較高。
生產者組(Producer Group)
同一類Producer的集合,這類Producer傳送同一類訊息且傳送邏輯一致。如果傳送的是事物訊息且原始生產者在傳送之後崩潰,則Broker伺服器會聯絡同一生產者組的其他生產者例項以提交或回溯消費。
消費者組(Consumer Group)
同一類Consumer的集合,這類Consumer通常消費同一類訊息且消費邏輯一致。消費者組使得在訊息消費方面,實現負載均衡和容錯的目標變得非常容易。要注意的是,消費者組的消費者例項必須訂閱完全相同的Topic。RocketMQ 支援兩種訊息模式:叢集消費(Clustering)和廣播消費(Broadcasting)。
叢集消費(Clustering)
叢集消費模式下,相同Consumer Group的每個Consumer例項平均分攤訊息。
廣播消費(Broadcasting)
廣播消費模式下,相同Consumer Group的每個Consumer例項都接收全量的訊息。
普通順序訊息(Normal Ordered Message)
普通順序消費模式下,消費者通過同一個消費佇列收到的訊息是有順序的,不同訊息佇列收到的訊息則可能是無順序的。
嚴格順序訊息(Strictly Ordered Message)
嚴格順序訊息模式下,消費者收到的所有訊息均是有順序的。
代理伺服器(Broker Server)
訊息中轉角色,負責儲存訊息、轉發訊息。代理伺服器在RocketMQ系統中負責接收從生產者傳送來的訊息並儲存、同時為消費者的拉取請求作準備。代理伺服器也儲存訊息相關的後設資料,包括消費者組、消費進度偏移和主題和佇列訊息等。
訊息(Message)
訊息系統所傳輸資訊的物理載體,生產和消費資料的最小單位,每條訊息必須屬於一個主題。RocketMQ中每個訊息擁有唯一的Message ID,且可以攜帶具有業務標識的Key。系統提供了通過Message ID和Key查詢訊息的功能。
標籤(Tag)
為訊息設定的標誌,用於同一主題下區分不同型別的訊息。來自同一業務單元的訊息,可以根據不同業務目的在同一主題下設定不同標籤。標籤能夠有效地保持程式碼的清晰度和連貫性,並優化RocketMQ提供的查詢系統。消費者可以根據Tag實現對不同子主題的不同消費邏輯,實現更好的擴充套件性。
相關文章
- RocketMQ-基本概念(一)MQ
- RocketMQ系列(一)基本概念MQ
- RocketMqMQ
- RocketMQ(7)---RocketMQ順序消費MQ
- RocketMQ(5)---RocketMQ重試機制MQ
- 基本概念
- 【RocketMq】商用RocketMq和開源RocketMq的相容問題解決方案MQ
- 【RocketMQ】RocketMQ儲存結構設計MQ
- rocketMQ一MQ
- rocketmq配置MQ
- rocketmq 概念MQ
- 2.1 基本概念
- mobx基本概念
- JMS基本概念
- OpenGL基本概念
- Spring 基本概念Spring
- Mysql基本概念MySql
- babel基本概念Babel
- javascript:基本概念JavaScript
- mongodb 基本概念MongoDB
- PMP基本概念
- Kafka基本概念Kafka
- 【RocketMQ】RocketMQ 5.0新特性(二)- Pop消費模式MQ模式
- 【RocketMq】RocketMq-NameServ 原始碼分析(Ver4.9.4)MQ原始碼
- RocketMQ整合SpringBootMQSpring Boot
- rocketmq初識MQ
- RocketMQ架構MQ架構
- springboot 使用 rocketMQSpring BootMQ
- 安裝RocketmqMQ
- RocketMQ入門MQ
- RocketMQ 入門MQ
- RocketMQ 安裝MQ
- RocketMQ報錯:rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeoutMQREMExceptionOOM
- 01-基本概念
- redux的基本概念Redux
- Docker的基本概念Docker
- influxdb的基本概念UX
- 微服務基本概念微服務