基本概念
來源 :官方文檔
消息模型(Message Model)
RocketMQ 消息模型如圖1所示沟绪,主要由 Producer、Broker绽慈、Consumer 三部分組成辈毯,其中Producer 負(fù)責(zé)生產(chǎn)消息坝疼,Consumer 負(fù)責(zé)消費消息谆沃,Broker 負(fù)責(zé)存儲消息。Broker 在實際部署過程中對應(yīng)一臺服務(wù)器唁影,每個 Broker 可以存儲多個Topic的消息,每個Topic的消息也可以分片存儲于不同的 Broker据沈。Message Queue 用于存儲消息的物理地址,每個Topic中的消息地址存儲于多個 Message Queue 中锌介。ConsumerGroup 由多個Consumer 實例構(gòu)成。
消息生產(chǎn)者(Producer)
負(fù)責(zé)生產(chǎn)消息孔祸,一般由業(yè)務(wù)系統(tǒng)負(fù)責(zé)生產(chǎn)消息。一個消息生產(chǎn)者會把業(yè)務(wù)應(yīng)用系統(tǒng)里產(chǎn)生的消息發(fā)送到broker服務(wù)器筑公。RocketMQ提供多種發(fā)送方式,同步發(fā)送匣屡、異步發(fā)送、順序發(fā)送捣作、單向發(fā)送鹅士。同步和異步方式均需要Broker返回確認(rèn)信息券躁,單向發(fā)送不需要。
消息消費者(Consumer)
負(fù)責(zé)消費消息也拜,一般是后臺系統(tǒng)負(fù)責(zé)異步消費。一個消息消費者會從Broker服務(wù)器拉取消息慢哈、并將其提供給應(yīng)用程序。從用戶應(yīng)用的角度而言提供了兩種消費形式:拉取式消費滥沫、推動式消費。
主題(Topic)
表示一類消息的集合兰绣,每個主題包含若干條消息,每條消息只能屬于一個主題缀辩,是RocketMQ進(jìn)行消息訂閱的基本單位党觅。
代理服務(wù)器(Broker Server)
消息中轉(zhuǎn)角色雌澄,負(fù)責(zé)存儲消息杯瞻、轉(zhuǎn)發(fā)消息炫掐。代理服務(wù)器在RocketMQ系統(tǒng)中負(fù)責(zé)接收從生產(chǎn)者發(fā)送來的消息并存儲、同時為消費者的拉取請求作準(zhǔn)備募胃。代理服務(wù)器也存儲消息相關(guān)的元數(shù)據(jù),包括消費者組痹束、消費進(jìn)度偏移和主題和隊列消息等。
名字服務(wù)(Name Server)
名稱服務(wù)充當(dāng)路由消息的提供者祷嘶。生產(chǎn)者或消費者能夠通過名字服務(wù)查找各主題相應(yīng)的Broker IP列表。多個Namesrv實例組成集群论巍,但相互獨立,沒有信息交換嘉汰。
拉取式消費(Pull Consumer)
Consumer消費的一種類型,應(yīng)用通常主動調(diào)用Consumer的拉消息方法從Broker服務(wù)器拉消息、主動權(quán)由應(yīng)用控制持搜。一旦獲取了批量消息,應(yīng)用就會啟動消費過程葫盼。
推動式消費(Push Consumer)
Consumer消費的一種類型薄扁,該模式下Broker收到數(shù)據(jù)后會主動推送給消費端剪返,該消費模式一般實時性較高邓梅。
生產(chǎn)者組(Producer Group)
同一類Producer的集合,這類Producer發(fā)送同一類消息且發(fā)送邏輯一致日缨。如果發(fā)送的是事物消息且原始生產(chǎn)者在發(fā)送之后崩潰,則Broker服務(wù)器會聯(lián)系同一生產(chǎn)者組的其他生產(chǎn)者實例以提交或回溯消費匣距。
消費者組(Consumer Group)
同一類Consumer的集合,這類Consumer通常消費同一類消息且消費邏輯一致毅待。消費者組使得在消息消費方面,實現(xiàn)負(fù)載均衡和容錯的目標(biāo)變得非常容易吱涉。要注意的是,消費者組的消費者實例必須訂閱完全相同的Topic怎爵。RocketMQ 支持兩種消息模式:集群消費(Clustering)和廣播消費(Broadcasting)。
集群消費(Clustering)
集群消費模式下,相同Consumer Group的每個Consumer實例平均分?jǐn)傁ⅰ?/p>
廣播消費(Broadcasting)
廣播消費模式下鳖链,相同Consumer Group的每個Consumer實例都接收全量的消息。
普通順序消息(Normal Ordered Message)
普通順序消費模式下墩莫,消費者通過同一個消費隊列收到的消息是有順序的芙委,不同消息隊列收到的消息則可能是無順序的。
嚴(yán)格順序消息(Strictly Ordered Message)
嚴(yán)格順序消息模式下贼穆,消費者收到的所有消息均是有順序的题山。
代理服務(wù)器(Broker Server)
消息中轉(zhuǎn)角色,負(fù)責(zé)存儲消息故痊、轉(zhuǎn)發(fā)消息顶瞳。代理服務(wù)器在RocketMQ系統(tǒng)中負(fù)責(zé)接收從生產(chǎn)者發(fā)送來的消息并存儲、同時為消費者的拉取請求作準(zhǔn)備。代理服務(wù)器也存儲消息相關(guān)的元數(shù)據(jù)慨菱,包括消費者組焰络、消費進(jìn)度偏移和主題和隊列消息等。
消息(Message)
消息系統(tǒng)所傳輸信息的物理載體符喝,生產(chǎn)和消費數(shù)據(jù)的最小單位,每條消息必須屬于一個主題协饲。RocketMQ中每個消息擁有唯一的Message ID畏腕,且可以攜帶具有業(yè)務(wù)標(biāo)識的Key。系統(tǒng)提供了通過Message ID和Key查詢消息的功能茉稠。
標(biāo)簽(Tag)
為消息設(shè)置的標(biāo)志描馅,用于同一主題下區(qū)分不同類型的消息。來自同一業(yè)務(wù)單元的消息而线,可以根據(jù)不同業(yè)務(wù)目的在同一主題下設(shè)置不同標(biāo)簽铭污。標(biāo)簽?zāi)軌蛴行У乇3执a的清晰度和連貫性,并優(yōu)化RocketMQ提供的查詢系統(tǒng)膀篮。消費者可以根據(jù)Tag實現(xiàn)對不同子主題的不同消費邏輯嘹狞,實現(xiàn)更好的擴(kuò)展性。