RocketMQ最全詳解(圖文全面總結(jié))
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
消息中間件是億級(jí)互聯(lián)網(wǎng)架構(gòu)的基石,其中最典型有“RocketMQ”消息中間件,大廠最愛(ài)考察的內(nèi)容,下面我就全面來(lái)詳解。 RocketMQRocketMQ是一款開(kāi)源的分布式消息中間件,具有高吞吐量、低延遲和高可靠性的特點(diǎn)。 主要解決,如下4大場(chǎng)景: 1、應(yīng)用解耦 通過(guò)消息隊(duì)列將生產(chǎn)者、和消費(fèi)者解耦,比如:電商平臺(tái)中,用戶下單后,物流服務(wù)...等,可以通過(guò)消息隊(duì)列解耦,彼此獨(dú)立處理自己的業(yè)務(wù)邏輯。 2、異步通信 在系統(tǒng)間傳遞消息時(shí),生產(chǎn)者發(fā)送消息后,不需要立即等待消費(fèi)者處理完畢,而是可以繼續(xù)執(zhí)行其他操作,這樣可以提高系統(tǒng)的響應(yīng)速度、和吞吐量。 3、削峰填谷 最典型的就是:阿里雙11,秒殺活動(dòng)中,用戶的搶購(gòu)請(qǐng)求通過(guò)消息隊(duì)列暫存,這就是典型的“削峰填谷”,避免因?yàn)樗矔r(shí)高并發(fā)導(dǎo)致數(shù)據(jù)庫(kù)壓力過(guò)大。 4、消息廣播 支持消息的多播,便于實(shí)現(xiàn)通知、和廣播功能,比如:系統(tǒng)監(jiān)控報(bào)警,當(dāng)發(fā)現(xiàn)系統(tǒng)異常時(shí),報(bào)警消息通過(guò)消息隊(duì)列廣播多個(gè)。 RocketMQ原理RocketMQ架構(gòu)RocketMQ架構(gòu),如下圖所示: RocketMQ架構(gòu):主要由NameServer、Broker、Producer以及Consumer四部分構(gòu)成。 1.NameServer 提供命名服務(wù),負(fù)責(zé)管理Topic和Broker的元數(shù)據(jù)信息。 要包括兩個(gè)功能,如下圖所示: 1)Broker管理
2)路由信息管理 每個(gè)NameServer將保存關(guān)于Broker集群的整個(gè)路由信息,Producer和Conumser通過(guò)NameServer,就可以知道整個(gè)Broker集群的路由信息,從而進(jìn)行消息的投遞和消費(fèi)。 2.Broker 消息中間件的服務(wù)器,負(fù)責(zé)存儲(chǔ)和傳遞消息。 如下圖所示: Broker的核心功能包含:
3.Producer 消息的生產(chǎn)者,負(fù)責(zé)發(fā)送消息到Broker。 生產(chǎn)者發(fā)送消息時(shí),先與Namesrv交互獲取Broker信息,然后與Broker建立連接發(fā)送消息。 如下圖所示:
4.Consumer 消息的消費(fèi)者,負(fù)責(zé)從Broker訂閱并消費(fèi)消息。 如下圖所示: 消費(fèi)者通過(guò)與Namesrv交互獲取Broker信息,并根據(jù)主題和隊(duì)列進(jìn)行消息訂閱。 消費(fèi)者從Broker拉取消息進(jìn)行消費(fèi),可以設(shè)置消費(fèi)模式(順序消費(fèi)或并發(fā)消費(fèi))和消費(fèi)進(jìn)度。 5.消息存儲(chǔ)RocketMQ采用順序?qū)懘疟P(pán)的方式持久化消息,以保證高吞吐量和消息的持久性。 消息存儲(chǔ)在CommitLog文件中,其中包含了消息的主題、標(biāo)簽、屬性等信息。 消息索引存儲(chǔ)在Index文件中,用于快速查找消息。 6.消息的順序性保證RocketMQ支持順序消費(fèi),在同一個(gè)隊(duì)列上的消息按照發(fā)送順序被消費(fèi)。 對(duì)于全局有序的場(chǎng)景,可以將消息發(fā)送到同一個(gè)隊(duì)列中。 對(duì)于局部有序的場(chǎng)景,可以將消息發(fā)送到多個(gè)隊(duì)列中,并在消費(fèi)端根據(jù)消息的某個(gè)關(guān)鍵屬性進(jìn)行排序。 7.高可用和容錯(cuò)性RocketMQ通過(guò)主從復(fù)制機(jī)制實(shí)現(xiàn)高可用性和容錯(cuò)性。 Broker集群中的每個(gè)主節(jié)點(diǎn)都有相應(yīng)的備份節(jié)點(diǎn),當(dāng)主節(jié)點(diǎn)出現(xiàn)故障時(shí),備份節(jié)點(diǎn)可以接管服務(wù)。 Namesrv也可以配置為集群模式,提供高可用性和容錯(cuò)性。 8.消息的事務(wù)性RocketMQ支持消息的事務(wù)性,允許生產(chǎn)者發(fā)送帶有事務(wù)標(biāo)記的消息。 生產(chǎn)者發(fā)送事務(wù)消息時(shí),會(huì)先執(zhí)行本地事務(wù),然后根據(jù)事務(wù)結(jié)果提交或回滾消息。 事務(wù)消息的狀態(tài)和進(jìn)度由Broker和生產(chǎn)者共同管理和維護(hù)。 閱讀原文:原文鏈接 該文章在 2025/7/2 0:15:44 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |