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