江蘇專業(yè)的網(wǎng)站建設(shè)一點優(yōu)化
一、關(guān)于RocketMQ
RocketMQ 是一個高性能、高可靠、可擴展的分布式消息中間件,它是由阿里巴巴開發(fā)并貢獻給 Apache 軟件基金會的一個開源項目。RocketMQ 主要用于處理大規(guī)模、高吞吐量、低延遲的消息傳遞,它是一個輕量級的、功能強大的消息隊列系統(tǒng),廣泛應用于金融、電商、日志系統(tǒng)、數(shù)據(jù)分析等領(lǐng)域。
?
?
RocketMQ作為一款純java、分布式、隊列模型的開源消息中間件,支持事務(wù)消息、順序消息、批量消息、定時消息、消息回溯等,總之就是葛大爺?shù)囊痪湓挕?/p>
?
?
二、發(fā)展
消息隊列屬于最經(jīng)典的中間件之一,已經(jīng)有 30 多年的歷史,其發(fā)展歷程可以總結(jié)為幾個階段:
- 第一階段,2000 年之前。這個階段的消息隊列供應商是幾家商業(yè)軟件巨頭,比如 IBM、Oracle、Microsoft 都有自己的商業(yè)化 MQ,其中最具代表性的是 IBM MQ,價格昂貴,面向高端企業(yè),主要是大型金融、電信等企業(yè);這類商業(yè) MQ 一般采用高端硬件,軟硬件一體機交付,MQ 本身的軟件架構(gòu)是單機架構(gòu)。
- 第二階段,2000~2007 年。進入 00 年代后,初代開源消息隊列崛起,誕生了 JMS、AMQP 兩大標準,與之對應的兩個實現(xiàn)分別為 ActiveMQ、RabbitMQ,他們引領(lǐng)了初期的開源消息隊列技術(shù)。開源極大的促進了消息隊列的流行、降低了使用門檻,技術(shù)普惠化,逐漸成為了企業(yè)級架構(gòu)的標配。
- 第三階段,2007~2017 年。PC 互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)爆發(fā)式發(fā)展。由于傳統(tǒng)的消息隊列無法承受億級用戶的訪問流量和海量數(shù)據(jù)傳輸,誕生了互聯(lián)網(wǎng)消息中間件,核心能力是全面采用分布式架構(gòu)、具備很強的橫向擴展能力,開源典型代表有 Kafka、RocketMQ,閉源的還有淘寶 Notify。
RocketMQ 發(fā)展的主要歷程:
2007年:淘寶實施了“五彩石”項目,“五彩石”用于將交易系統(tǒng)從單機變成分布式,也是在這個過程中產(chǎn)生了阿里巴巴第一代消息引擎——Notify。
2010年:阿里巴巴B2B部門基于ActiveMQ的5.1版本也開發(fā)了自己的一款消息引擎,稱為Napoli,這款消息引擎在B2B里面廣泛地被使用,不僅僅是在交易領(lǐng)域,在很多的后臺異步解耦等方面也得到了廣泛的應用。
2011年:業(yè)界出現(xiàn)了現(xiàn)在被很多大數(shù)據(jù)領(lǐng)域所推崇的Kafka消息引擎,阿里巴巴在研究了Kafka的整體機制和架構(gòu)設(shè)計之后,基于Kafka的設(shè)計使用Java進行了完全重寫并推出了MetaQ 1.0版本,主要是用于解決順序消息和海量堆積的問題。
2012年:阿里巴巴開源其自研的第三代分布式消息中間件——RocketMQ。
經(jīng)過幾年的技術(shù)打磨,阿里稱基于RocketMQ技術(shù),目前雙十一當天消息容量可達到萬億級。
2016年11月:阿里將RocketMQ捐獻給Apache軟件基金會,正式成為孵化項目。
阿里稱會將其打造成頂級項目。這是阿里邁出的一大步,因為加入到開源軟件基金會需要經(jīng)過評審方的考核與觀察。
坦率而言,業(yè)界還對國人的代碼開源參與度仍保持著刻板印象;而Apache基金會中的342個項目中,暫時還只有Kylin、CarbonData、Eagle 、Dubbo和 RocketMQ 共計五個中國技術(shù)人主導的項目。
2017 年,RocketMQ 成功通過了 Apache Incubator 的評審,正式成為 Apache 頂級項目(Top-Level Project, TLP) 。這個標志性事件不僅提升了 RocketMQ 在全球開源社區(qū)的影響力,也使其獲得了更多來自外部社區(qū)的支持和貢獻。
2017年2月20日:RocketMQ正式發(fā)布4.0版本,專家稱新版本適用于電商領(lǐng)域,金融領(lǐng)域,大數(shù)據(jù)領(lǐng)域,兼有物聯(lián)網(wǎng)領(lǐng)域的編程模型。
2023 年,RocketMQ 發(fā)布了 5.x 版本,繼續(xù)強化其在云原生、容器化環(huán)境中的應用,并且在微服務(wù)架構(gòu)中發(fā)揮了重要作用。此版本在性能、可擴展性和穩(wěn)定性方面進行了進一步優(yōu)化,增強了在異構(gòu)環(huán)境下的跨平臺兼容性,并擴展了更多高級特性,如 精準消息投遞、更加細粒度的消息過濾 等。
以上就是RocketMQ的整體發(fā)展歷史,其實在阿里巴巴內(nèi)部圍繞著RocketMQ內(nèi)核打造了三款產(chǎn)品,分別是MetaQ、Notify和Aliware MQ。
這三者分別采用了不同的模型,MetaQ主要使用了拉模型,解決了順序消息和海量堆積問題;Notify主要使用了推模型,解決了事務(wù)消息;而云產(chǎn)品Aliware MQ則是提供了商業(yè)化的版本。
?
三、功能特點
-
高可靠性: RocketMQ 提供了強大的消息可靠性保證機制。它支持 消息持久化,即使在系統(tǒng)崩潰后,消息仍然可以恢復。此外,RocketMQ 提供了消息重試機制,確保消息不會丟失。
-
高吞吐量: RocketMQ 的設(shè)計目標之一就是高吞吐量。它通過高效的網(wǎng)絡(luò)通信和存儲方式,能夠處理大量的并發(fā)請求,適用于大規(guī)模分布式場景。
-
分布式架構(gòu): RocketMQ 使用 分布式架構(gòu),其主要組件包括 NameServer(負責服務(wù)發(fā)現(xiàn)),Broker(消息存儲與轉(zhuǎn)發(fā)),Producer(消息生產(chǎn)者),Consumer(消息消費者)。RocketMQ 具有水平擴展性,能夠支持多臺機器集群化部署,保證了系統(tǒng)的高可用性和彈性擴展。
-
順序消息支持: RocketMQ 提供了強大的 順序消息支持。對于需要保證消息順序的應用,RocketMQ 可以通過同一隊列中存儲順序消息,確保消費順序的一致性。
-
多種消息模型: RocketMQ 支持多種消息模型,如:
- 點對點模式(P2P) :消費者獨占某個隊列的消息,保證一個消息只被一個消費者消費。
- 發(fā)布/訂閱模式(Pub/Sub) :多個消費者可以訂閱同一個主題(Topic),消息廣播到所有消費者。
-
高可擴展性: RocketMQ 通過分區(qū)(Topic 分區(qū))和分布式的消息存儲,可以橫向擴展,支持大規(guī)模消息的存儲和處理??梢造`活地根據(jù)業(yè)務(wù)需求進行擴展。
-
多語言客戶端支持: RocketMQ 提供了多種客戶端 SDK,支持 Java、C++、Python、Go 等多種語言,方便開發(fā)者進行跨語言集成。
-
事務(wù)消息: RocketMQ 提供了 事務(wù)消息功能,可以支持分布式事務(wù)場景中的消息可靠性保證。通過事務(wù)消息,開發(fā)者可以保證消息與本地事務(wù)的一致性。
-
消息回溯與重試機制: 支持消息的 回溯功能,允許消費者查看過去的消息,還支持消息的 重試機制,確保消息處理失敗時不會丟失。
-
靈活的消息過濾: RocketMQ 支持消息的 標簽過濾(Tag-based filtering),允許消費者根據(jù)消息的標簽過濾需要的消息。
?
四、對比其它中間件
特性 | RocketMQ | Kafka | RabbitMQ | ActiveMQ | NATS |
---|---|---|---|---|---|
開發(fā)背景 | 阿里巴巴開發(fā),2010 年開源,現(xiàn)為 Apache 頂級項目 | LinkedIn 開發(fā),2011 年開源,現(xiàn)為 Apache 頂級項目 | Pivotal(現(xiàn) VMware)開發(fā),開源項目 | Apache 軟件基金會開發(fā),支持多協(xié)議的消息隊列 | 開源項目,初衷為輕量級實時消息傳遞 |
消息協(xié)議 | 自定義協(xié)議,兼容 MQTT、OpenMessaging 等 | 自定義協(xié)議(Kafka 協(xié)議) | 支持 AMQP、STOMP、MQTT 等多種協(xié)議 | 支持 AMQP、OpenWire、MQTT 等多種協(xié)議 | NATS 協(xié)議,專注于簡單的 Pub/Sub 模型 |
性能與吞吐量 | 高吞吐量,低延遲,適用于高并發(fā)場景 | 主要側(cè)重吞吐量,適用于大數(shù)據(jù)流處理 | 吞吐量較低,適用于中小型企業(yè) | 吞吐量較低,適合中小型企業(yè)應用 | 極低的延遲和極高的吞吐量,專注于實時性 |
消息模型 | 支持點對點(P2P)和發(fā)布/訂閱(Pub/Sub)模式 | 主要是發(fā)布/訂閱(Pub/Sub)模型 | 支持點對點(P2P)和發(fā)布/訂閱(Pub/Sub)模型 | 支持點對點(P2P)和發(fā)布/訂閱(Pub/Sub)模型 | 支持 Pub/Sub 模型 |
消息存儲 | 順序?qū)懭?#xff0c;支持高效的消息持久化 | 順序?qū)懭?#xff0c;按日志存儲,支持高效的消息持久化 | 使用內(nèi)存/磁盤存儲,支持消息持久化 | 使用內(nèi)存/磁盤存儲,支持消息持久化 | 存儲較為簡單,不強調(diào)持久化 |
擴展性 | 支持分布式部署,高可用,支持水平擴展 | 高擴展性,支持分布式部署和多副本機制 | 集群模式,但擴展性不如 RocketMQ 和 Kafka | 支持集群模式,擴展性相對較差 | 高擴展性,適用于大規(guī)模水平擴展 |
高可用性 | 支持主從復制,集群模式,容錯性高 | 多副本機制,較強的容錯性 | 支持鏡像隊列和集群模式,容錯性較好 | 支持主從復制和集群模式,容錯性一般 | 支持集群模式和多節(jié)點部署,容錯性較好 |
事務(wù)消息 | 原生支持事務(wù)消息和分布式事務(wù) | 不支持原生事務(wù)消息,需自行實現(xiàn) | 支持事務(wù)消息,但性能不如 RocketMQ | 支持事務(wù)消息,但一致性和性能較差 | 不支持事務(wù)消息 |
順序消息 | 支持嚴格順序消費,適合高并發(fā)場景 | 支持分區(qū)內(nèi)的順序消費,但需要手動控制分區(qū)的數(shù)量和分布 | 支持順序消費,但通常不如 RocketMQ 強大 | 支持順序消費,但不如 RocketMQ 強大 | 不強調(diào)順序消息處理 |
延遲 | 在高并發(fā)場景下延遲較低,適用于實時消息傳遞 | 吞吐量優(yōu)先,延遲相對較高 | 在高負載時延遲較高 | 延遲較高,尤其在負載較重時 | 延遲極低,適用于實時性要求較高的場景 |
適用場景 | 高吞吐量、大規(guī)模分布式系統(tǒng)、事務(wù)消息、順序消息等場景 | 日志聚合、流數(shù)據(jù)處理、大數(shù)據(jù)平臺 | 企業(yè)消息傳遞、支持 AMQP 協(xié)議的系統(tǒng) | 中小規(guī)模企業(yè)消息傳遞、企業(yè)級應用 | 實時數(shù)據(jù)流、IoT、微服務(wù)架構(gòu)等高性能、低延遲場景 |
社區(qū)與生態(tài) | Apache 社區(qū)支持,活躍且發(fā)展迅速 | Apache 社區(qū)支持,社區(qū)活躍 | 社區(qū)活躍,廣泛應用于企業(yè)級應用 | Apache 社區(qū)支持,但活躍度和擴展性相對較弱 | 開源社區(qū)活躍,適用于微服務(wù)和高并發(fā)場景 |
總結(jié):
- RocketMQ 在高吞吐量、低延遲和事務(wù)消息支持方面表現(xiàn)出色,適用于金融、電商等高并發(fā)、高可靠的場景。
- Kafka 強調(diào)吞吐量,適用于大數(shù)據(jù)流處理、日志聚合等大規(guī)模數(shù)據(jù)平臺,且具有較好的擴展性。
- RabbitMQ 適用于中小規(guī)模企業(yè),特別是需要支持多協(xié)議(如 AMQP)的消息傳遞應用。
- ActiveMQ 相對較為傳統(tǒng),適合于小到中規(guī)模的企業(yè)應用,支持多協(xié)議但性能和擴展性較差。
- NATS 輕量級、高性能,適用于實時性要求較高的場景,如物聯(lián)網(wǎng)、微服務(wù)架構(gòu)等。
?
五、應用場景
以下是一些典型的 RocketMQ 應用場景:
- 金融行業(yè)
- 交易消息系統(tǒng):金融交易系統(tǒng)對消息的可靠性、事務(wù)性和高吞吐量有嚴格要求。RocketMQ 支持事務(wù)消息(Transaction Message),能夠確保分布式事務(wù)的準確性,適合在銀行、電商金融、支付系統(tǒng)中進行實時交易消息處理。
- 風控系統(tǒng):在金融風控系統(tǒng)中,常常需要高并發(fā)、高吞吐量的消息系統(tǒng)來處理海量數(shù)據(jù)。RocketMQ 的高吞吐量和低延遲特性使其適用于此類實時風控決策系統(tǒng)。
- 資金調(diào)度:資金調(diào)度的核心需求是可靠性與高吞吐量,RocketMQ 能夠在大規(guī)模并發(fā)請求下保證數(shù)據(jù)一致性,適合資金結(jié)算、賬戶調(diào)度等高并發(fā)場景。
- 電商平臺
- 訂單處理系統(tǒng):電商平臺中的訂單生成、支付、庫存管理、物流等環(huán)節(jié)常常需要保證高并發(fā)、高吞吐量的消息傳遞。RocketMQ 能夠保證系統(tǒng)的高效性,特別是在“雙十一”等促銷活動期間,能夠平穩(wěn)處理海量訂單消息。
- 異步消息處理:電商系統(tǒng)中,很多操作是異步的,例如支付回調(diào)、庫存扣減、物流派送等。使用 RocketMQ 可以通過消息隊列解耦這些操作,提高系統(tǒng)響應速度。
- 促銷活動推送:對于電商平臺的秒殺、優(yōu)惠券發(fā)放等高頻業(yè)務(wù),RocketMQ 能夠提供高并發(fā)支持,保證消息的順序和穩(wěn)定性。
- 大數(shù)據(jù)與流處理
- 日志收集與分析:RocketMQ 可以高效地處理海量的日志數(shù)據(jù),支持從各類應用程序、服務(wù)器、設(shè)備等收集日志并進行實時處理。與 Flume、Logstash 等流式處理框架配合使用,能夠快速地收集、傳輸和分析日志數(shù)據(jù)。
- 數(shù)據(jù)流處理:在實時數(shù)據(jù)流的場景中,如實時大數(shù)據(jù)處理、數(shù)據(jù)分析、機器學習等,RocketMQ 能夠以極低的延遲和高吞吐量確保數(shù)據(jù)的穩(wěn)定傳輸,適用于大數(shù)據(jù)平臺和流計算架構(gòu)。
- 微服務(wù)架構(gòu)
- 微服務(wù)通信:在微服務(wù)架構(gòu)中,服務(wù)之間通常通過異步消息傳遞進行解耦。RocketMQ 提供可靠的消息投遞機制,可以保證服務(wù)間的數(shù)據(jù)一致性,避免系統(tǒng)耦合過緊。通過 RocketMQ,服務(wù)間的通信能夠更加靈活、可靠。
- 異步處理與事件驅(qū)動:RocketMQ 作為事件驅(qū)動架構(gòu)(EDA)中的核心組件,能夠很好地支持微服務(wù)中的異步處理和事件發(fā)布與訂閱模式。事件驅(qū)動模型適用于需要處理高并發(fā)、低延遲業(yè)務(wù)的微服務(wù)系統(tǒng)。
- 物聯(lián)網(wǎng)(IoT)
- 設(shè)備數(shù)據(jù)收集與處理:在物聯(lián)網(wǎng)應用中,設(shè)備的數(shù)量龐大,產(chǎn)生的數(shù)據(jù)量巨大,且對實時性要求較高。RocketMQ 的高吞吐量、低延遲和高可靠性非常適合用于 IoT 系統(tǒng)中,能夠?qū)崟r收集來自各類設(shè)備的數(shù)據(jù)并進行分發(fā)處理。
- 狀態(tài)監(jiān)控和告警系統(tǒng):RocketMQ 能夠支持設(shè)備的狀態(tài)數(shù)據(jù)流轉(zhuǎn),以及實時告警通知。通過將設(shè)備數(shù)據(jù)發(fā)送到消息隊列中,再進行實時分析和處理,能夠在出現(xiàn)異常時及時觸發(fā)告警。
- 實時消息推送
- 社交平臺消息推送:在社交平臺中,實時消息推送是一項核心功能,如聊天消息、通知、點贊、評論等,RocketMQ 具備高吞吐量和低延遲的特點,能夠保證大規(guī)模用戶的實時消息推送。
- 內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN) :RocketMQ 可以幫助構(gòu)建高效的內(nèi)容分發(fā)和通知系統(tǒng),推送實時更新、推薦內(nèi)容等,確保數(shù)據(jù)在多個節(jié)點之間快速傳遞,特別適用于需要快速內(nèi)容更新的場景。
- 日志與事件追蹤
- 異步日志記錄:許多應用系統(tǒng)會在后臺記錄用戶操作、系統(tǒng)運行狀態(tài)等信息。RocketMQ 可以異步記錄日志,避免同步阻塞,同時保證高效的日志傳輸和存儲,尤其適合大規(guī)模分布式系統(tǒng)的日志收集。
- 事件追蹤與分析:在微服務(wù)架構(gòu)中,事件追蹤(如調(diào)用鏈追蹤)對于監(jiān)控和故障排查至關(guān)重要。RocketMQ 可以確保事件流的高效傳遞和順序處理,幫助構(gòu)建全面的事件追蹤系統(tǒng)。
- 消息驅(qū)動的異步任務(wù)
- 后臺任務(wù)處理:很多系統(tǒng)的任務(wù)是異步的,如生成報表、郵件發(fā)送、數(shù)據(jù)處理等。使用 RocketMQ 進行任務(wù)調(diào)度和消息驅(qū)動處理,可以有效解耦主業(yè)務(wù)流程和耗時的任務(wù)處理,提高系統(tǒng)的響應能力。
- 定時任務(wù)與延時消息:RocketMQ 支持延時消息功能,可以用來處理定時任務(wù)、超時重試等操作。比如在電商場景中,發(fā)貨時間的計算、延時支付的重試等都可以通過 RocketMQ 延時消息機制來實現(xiàn)。
- 日志與審計系統(tǒng)
- 審計日志收集:在許多業(yè)務(wù)中,審計日志的收集與處理具有重要意義,特別是在合規(guī)性要求較高的行業(yè)(如金融、醫(yī)療等)。RocketMQ 可以作為日志收集的中間件,確保日志的可靠傳輸與持久化。
- 分布式系統(tǒng)與高可用架構(gòu)
- 系統(tǒng)解耦與彈性擴展:在復雜的分布式系統(tǒng)中,RocketMQ 可以通過消息隊列解耦各個服務(wù)模塊,保證系統(tǒng)的可靠性和高可用性。尤其是在微服務(wù)架構(gòu)中,消息中間件可以減少服務(wù)間的直接依賴,提高系統(tǒng)的擴展性和容錯能力。
?
場景示例1—異步解耦
隨著微服務(wù)架構(gòu)的流行,服務(wù)之間的關(guān)系梳理非常重要。異步解耦可以降低服務(wù)之間的耦合程度,同時也能提高服務(wù)的吞吐量。
使用異步解耦的業(yè)務(wù)場景非常多,因為每個行業(yè)的業(yè)務(wù)都會不太一樣,以一些比較通用的業(yè)務(wù)來說明相信大家都能理解。
比如電商行業(yè)的下單業(yè)務(wù)場景,以最簡單的下單流程來說,下單流程如下:
- 鎖庫存
- 創(chuàng)建訂單
- 用戶支付
- 扣減庫存
- 給用戶發(fā)送購買短信通知
- 給用戶增加積分
- 通知商家發(fā)貨
我們以下單成功后,用戶進行支付,支付完成會有個邏輯叫支付回調(diào),在回調(diào)里面需要去做一些業(yè)務(wù)邏輯。首先來看下同步處理需要花費的時間,如下圖:
?
同步流程
?
上面的下單流程從 3 到 5 都是可以采用異步流程進行處理,對于用戶來說,支付完成后他就不需要關(guān)注后面的流程了。后臺慢慢處理就行了,這樣就能簡化三個步驟,提高回調(diào)的處理時間。
?
異步流程
?
場景示例2—削峰填谷
削峰填谷指的是在大流量的沖擊下,利用 RocketMQ 可以抗住瞬時的大流量,保護系統(tǒng)的穩(wěn)定性,提升用戶體驗。
在電商行業(yè),最常見的流量沖擊就是秒殺活動了,利用 RocketMQ 來實現(xiàn)一個完整的秒殺業(yè)務(wù)還是與很多需要做的工作,不在本文的范圍內(nèi),后面有機會可以單獨跟大家聊聊。想告訴大家的是像諸如此類的場景可以利用 RocketMQ 來扛住高并發(fā),前提是業(yè)務(wù)場景支持異步處理。
?
削峰填谷
?
場景示例3—分布式事務(wù)最終一致性
眾所周知,分布式事務(wù)有 2PC,TCC,最終一致性等方案。其中使用消息隊列來做最終一致性方案是比較常用的。
在電商的業(yè)務(wù)場景中,交易相關(guān)的核心業(yè)務(wù)一定要確保數(shù)據(jù)的一致性。通過引入消息隊列 RocketMQ 版的分布式事務(wù),既可以實現(xiàn)系統(tǒng)之間的解耦,又可以保證最終的數(shù)據(jù)一致性。
?
場景示例4—數(shù)據(jù)分發(fā)
數(shù)據(jù)分發(fā)指的是可以將原始數(shù)據(jù)分發(fā)到多個需要使用這份數(shù)據(jù)的系統(tǒng)中,實現(xiàn)數(shù)據(jù)異構(gòu)的需求。最常見的有將數(shù)據(jù)分發(fā)到 ES, Redis 中為業(yè)務(wù)提供搜索,緩存等服務(wù)。
除了手動通過消息機制進行數(shù)據(jù)分發(fā),還可以訂閱 Mysql 的 binlog 來分發(fā),在分發(fā)這個場景,需要使用 RocketMQ 的順序消息來保證數(shù)據(jù)的一致性。
?
數(shù)據(jù)分發(fā)
?
?
六、RocketMQ 組件
RocketMQ 的架構(gòu)主要包括以下幾個核心組件:
- NameServer:
NameServer 是一個輕量級的服務(wù)發(fā)現(xiàn)模塊,負責管理 Broker 節(jié)點的元數(shù)據(jù),幫助 Producer 和 Consumer 查找 Broker,類似于一個服務(wù)注冊與發(fā)現(xiàn)中心。 - Broker:
Broker 是消息的存儲和轉(zhuǎn)發(fā)節(jié)點,消息生產(chǎn)者將消息發(fā)送到 Broker,消費者從 Broker 中拉取消息。Broker 負責消息的持久化存儲、順序消費和消息的投遞。 - Producer:
Producer 是消息生產(chǎn)者,負責將消息發(fā)送到指定的 Topic。每個 Producer 可以連接多個 Broker,發(fā)送消息到不同的隊列。 - Consumer:
Consumer 是消息消費者,負責從 Broker 拉取消息進行消費。Consumer 可以是 推模式(Push)或 拉模式(Pull),支持異步或同步消費。 - Admin Console:
RocketMQ 提供了管理控制臺,用于監(jiān)控和管理集群的狀態(tài)、Topic、Consumer 以及消息的流量等信息。
?
?
七、消息傳遞流程
- Producer 發(fā)送消息:
Producer 將消息發(fā)送到 RocketMQ 的 Broker,并通過 NameServer 找到目標 Broker。消息被分配到一個隊列(Queue),可以是順序隊列或并發(fā)隊列。 - 消息存儲:
Broker 接收到消息后會將其持久化到磁盤中,并且根據(jù)需要將消息復制到其他副本節(jié)點,保證高可用性。 - Consumer 拉取消息:
消費者(Consumer)從 Broker 拉取消息進行消費。RocketMQ 支持按 消息隊列(Queue) 或 消息主題(Topic) 進行消費,可以配置多種消費策略和消費并發(fā)度。 - 消息確認和重試:
消費者確認消息消費成功后,RocketMQ 會將消息從隊列中刪除;如果消費失敗,消息會進入重試隊列,按配置重試消費。
?
?
通過本文的介紹,我們可以看到 RocketMQ 作為一款高效的分布式消息中間件,無論你是正在考慮在項目中引入 RocketMQ,還是已經(jīng)在使用它的開發(fā)者,掌握 RocketMQ 的核心特性和最佳實踐對于提升系統(tǒng)的可靠性和性能至關(guān)重要。后續(xù)將分享RocketMQ的部署,及開發(fā)使用流程。