基本概念
1 消息模型(Message Model)
RocketMQ主要由 Producer、Broker、Consumer 三部分組成,其中Producer 負(fù)責(zé)生產(chǎn)消息,Consumer 負(fù)責(zé)消費(fèi)消息士嚎,Broker 負(fù)責(zé)存儲(chǔ)消息。Broker 在實(shí)際部署過程中對(duì)應(yīng)一臺(tái)服務(wù)器悔叽,每個(gè) Broker 可以存儲(chǔ)多個(gè)Topic的消息莱衩,每個(gè)Topic的消息也可以分片存儲(chǔ)于不同的 Broker。Message Queue 用于存儲(chǔ)消息的物理地址娇澎,每個(gè)Topic中的消息地址存儲(chǔ)于多個(gè) Message Queue 中笨蚁。ConsumerGroup 由多個(gè)Consumer 實(shí)例構(gòu)成。
2 消息生產(chǎn)者(Producer)
負(fù)責(zé)生產(chǎn)消息,一般由業(yè)務(wù)系統(tǒng)負(fù)責(zé)生產(chǎn)消息括细。一個(gè)消息生產(chǎn)者會(huì)把業(yè)務(wù)應(yīng)用系統(tǒng)里產(chǎn)生的消息發(fā)送到broker服務(wù)器伪很。RocketMQ提供多種發(fā)送方式,同步發(fā)送奋单、異步發(fā)送是掰、順序發(fā)送、單向發(fā)送辱匿。同步和異步方式均需要Broker返回確認(rèn)信息,單向發(fā)送不需要炫彩。
3 消息消費(fèi)者(Consumer)
負(fù)責(zé)消費(fèi)消息匾七,一般是后臺(tái)系統(tǒng)負(fù)責(zé)異步消費(fèi)。一個(gè)消息消費(fèi)者會(huì)從Broker服務(wù)器拉取消息江兢、并將其提供給應(yīng)用程序昨忆。從用戶應(yīng)用的角度而言提供了兩種消費(fèi)形式:拉取式消費(fèi)、推動(dòng)式消費(fèi)杉允。
4 主題(Topic)
表示一類消息的集合邑贴,每個(gè)主題包含若干條消息,每條消息只能屬于一個(gè)主題叔磷,是RocketMQ進(jìn)行消息訂閱的基本單位拢驾。
5 代理服務(wù)器(Broker Server)
消息中轉(zhuǎn)角色,負(fù)責(zé)存儲(chǔ)消息改基、轉(zhuǎn)發(fā)消息繁疤。代理服務(wù)器在RocketMQ系統(tǒng)中負(fù)責(zé)接收從生產(chǎn)者發(fā)送來的消息并存儲(chǔ)、同時(shí)為消費(fèi)者的拉取請(qǐng)求作準(zhǔn)備秕狰。代理服務(wù)器也存儲(chǔ)消息相關(guān)的元數(shù)據(jù)稠腊,包括消費(fèi)者組、消費(fèi)進(jìn)度偏移和主題和隊(duì)列消息等鸣哀。
6 名字服務(wù)(Name Server)
名稱服務(wù)充當(dāng)路由消息的提供者架忌。生產(chǎn)者或消費(fèi)者能夠通過名字服務(wù)查找各主題相應(yīng)的Broker IP列表。多個(gè)Namesrv實(shí)例組成集群我衬,但相互獨(dú)立叹放,沒有信息交換。
7 拉取式消費(fèi)(Pull Consumer)
Consumer消費(fèi)的一種類型挠羔,應(yīng)用通常主動(dòng)調(diào)用Consumer的拉消息方法從Broker服務(wù)器拉消息许昨、主動(dòng)權(quán)由應(yīng)用控制。一旦獲取了批量消息褥赊,應(yīng)用就會(huì)啟動(dòng)消費(fèi)過程糕档。
8 推動(dòng)式消費(fèi)(Push Consumer)
Consumer消費(fèi)的一種類型,該模式下Broker收到數(shù)據(jù)后會(huì)主動(dòng)推送給消費(fèi)端,該消費(fèi)模式一般實(shí)時(shí)性較高速那。
9 生產(chǎn)者組(Producer Group)
同一類Producer的集合俐银,這類Producer發(fā)送同一類消息且發(fā)送邏輯一致。如果發(fā)送的是事務(wù)消息且原始生產(chǎn)者在發(fā)送之后崩潰端仰,則Broker服務(wù)器會(huì)聯(lián)系同一生產(chǎn)者組的其他生產(chǎn)者實(shí)例以提交或回溯消費(fèi)捶惜。
10 消費(fèi)者組(Consumer Group)
同一類Consumer的集合,這類Consumer通常消費(fèi)同一類消息且消費(fèi)邏輯一致荔烧。消費(fèi)者組使得在消息消費(fèi)方面吱七,實(shí)現(xiàn)負(fù)載均衡和容錯(cuò)的目標(biāo)變得非常容易。要注意的是鹤竭,消費(fèi)者組的消費(fèi)者實(shí)例必須訂閱完全相同的Topic踊餐。RocketMQ 支持兩種消息模式:集群消費(fèi)(Clustering)和廣播消費(fèi)(Broadcasting)。
11 集群消費(fèi)(Clustering)
集群消費(fèi)模式下,相同Consumer Group的每個(gè)Consumer實(shí)例平均分?jǐn)傁ⅰ?/p>
12 廣播消費(fèi)(Broadcasting)
廣播消費(fèi)模式下臀稚,相同Consumer Group的每個(gè)Consumer實(shí)例都接收全量的消息吝岭。
13 普通順序消息(Normal Ordered Message)
普通順序消費(fèi)模式下,消費(fèi)者通過同一個(gè)消息隊(duì)列( Topic 分區(qū)吧寺,稱作 Message Queue) 收到的消息是有順序的窜管,不同消息隊(duì)列收到的消息則可能是無順序的。
14 嚴(yán)格順序消息(Strictly Ordered Message)
嚴(yán)格順序消息模式下稚机,消費(fèi)者收到的所有消息均是有順序的幕帆。
15 消息(Message)
消息系統(tǒng)所傳輸信息的物理載體,生產(chǎn)和消費(fèi)數(shù)據(jù)的最小單位赖条,每條消息必須屬于一個(gè)主題蜓肆。RocketMQ中每個(gè)消息擁有唯一的Message ID,且可以攜帶具有業(yè)務(wù)標(biāo)識(shí)的Key谋币。系統(tǒng)提供了通過Message ID和Key查詢消息的功能仗扬。
16 標(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)退个。消費(fèi)者可以根據(jù)Tag實(shí)現(xiàn)對(duì)不同子主題的不同消費(fèi)邏輯,實(shí)現(xiàn)更好的擴(kuò)展性调炬。
本篇文章由一文多發(fā)平臺(tái)ArtiPub自動(dòng)發(fā)布