Python知識(shí)分享網(wǎng) - 專業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
RocketMQ高級(jí)原理:深入剖析消息系統(tǒng)的核心機(jī)制 PDF 下載
匿名網(wǎng)友發(fā)布于:2024-01-23 09:51:20
(侵權(quán)舉報(bào))
(假如點(diǎn)擊沒(méi)反應(yīng),多刷新兩次就OK!)

RocketMQ高級(jí)原理:深入剖析消息系統(tǒng)的核心機(jī)制 PDF 下載  圖1

 

 

 

資料內(nèi)容:

 

1 消息模型(Message Model) RocketMQ主要由 Producer、Broker、Consumer 三部分組成,其中Producer 負(fù)責(zé)生產(chǎn)消息, Consumer 負(fù)責(zé)消費(fèi)消息,Broker 負(fù)責(zé)存儲(chǔ)消息。Broker 在實(shí)際部署過(guò)程中對(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ā)送不需要。 生產(chǎn)者中,會(huì)把同一類(lèi)Producer組成一個(gè)集合,叫做生產(chǎn)者組,這類(lèi)Producer發(fā)送同一類(lèi)消息且發(fā)送 邏輯一致。如果發(fā)送的是事務(wù)消息且原始生產(chǎn)者在發(fā)送之后崩潰,則Broker服務(wù)器會(huì)聯(lián)系同一生產(chǎn)者組 的其他生產(chǎn)者實(shí)例以提交或回溯消費(fèi)。 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)。 拉取式消費(fèi)的應(yīng)用通常主動(dòng)調(diào)用Consumer的拉消息方法從Broker服務(wù)器拉消息、主動(dòng)權(quán)由應(yīng)用控 制。一旦獲取了批量消息,應(yīng)用就會(huì)啟動(dòng)消費(fèi)過(guò)程。 推動(dòng)式消費(fèi)模式下Broker收到數(shù)據(jù)后會(huì)主動(dòng)推送給消費(fèi)端,該消費(fèi)模式一般實(shí)時(shí)性較高。 消費(fèi)者同樣會(huì)把同一類(lèi)Consumer組成一個(gè)集合,叫做消費(fèi)者組,這類(lèi)Consumer通常消費(fèi)同一類(lè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)。 集群消費(fèi)模式下,相同Consumer Group的每個(gè)Consumer實(shí)例平均分?jǐn)傁ⅰ?廣播消費(fèi)模式下,相同Consumer Group的每個(gè)Consumer實(shí)例都接收全量的消息。 4 主題(Topic) 表示一類(lèi)消息的集合,每個(gè)主題包含若干條消息,每條消息只能屬于一個(gè)主題,是RocketMQ進(jìn)行消息 訂閱的基本單位。 同一個(gè)Topic下的數(shù)據(jù),會(huì)分片保存到不同的Broker上,而每一個(gè)分片單位,就叫做MessageQueue。 MessageQueue是生產(chǎn)者發(fā)送消息與消費(fèi)者消費(fèi)消息的最小單位。 5 代理服務(wù)器(Broker Server) 消息中轉(zhuǎn)角色,負(fù)責(zé)存儲(chǔ)消息、轉(zhuǎn)發(fā)消息。代理服務(wù)器在RocketMQ系統(tǒng)中負(fù)責(zé)接收從生產(chǎn)者發(fā)送來(lái)的 消息并存儲(chǔ)、同時(shí)為消費(fèi)者的拉取請(qǐng)求作準(zhǔn)備。代理服務(wù)器也存儲(chǔ)消息相關(guān)的元數(shù)據(jù),包括消費(fèi)者組、 消費(fèi)進(jìn)度偏移和主題和隊(duì)列消息等。 Broker Server是RocketMQ真正的業(yè)務(wù)核心,包含了多個(gè)重要的子模塊: