RocketMQ

RocketMQ

通用API
【更新時間: 2024.03.29】 RocketMQ 是由阿里慷慨捐贈給 Apache 的重要成果,它作為一款極為出色的分布式消息中間件,具有低延遲、高并發、高可用以及高可靠等顯著特性,能夠在各種復雜場景中穩定高效地實現消息傳遞與處理等相關服務。
瀏覽次數
34
采購人數
0
試用次數
0
! 適用于個人&企業
收藏
×
完成
取消
×
書簽名稱
確定
最佳渠道 最佳渠道
全部服務商>
RocketMQ
RocketMQ 是由阿里慷慨捐贈給 Apache 的重要成果,它作為一款...
RocketMQ
RocketMQ 是由阿里慷慨捐贈給 Apache 的重要成果,它作為一款...
<
產品介紹
>

什么是RocketMQ?

"RocketMQ" 是一款高性能、高吞吐量的分布式消息中間件,由阿里巴巴開源并捐贈給 Apache 軟件基金會,成為 Apache RocketMQ 項目。它旨在處理大規模的消息傳遞需求,廣泛應用于互聯網、金融、電信、物流等行業的核心業務系統中。

消息隊列 RocketMQ版 是基于 Apache RocketMQ 構建的商業級消息中間件服務,通常由云服務提供商(如阿里云、騰訊云等)提供。這種服務形式不僅繼承了 Apache RocketMQ 的所有核心功能和優勢,還通過云服務的方式,為用戶提供了更加便捷、靈活、可擴展的部署和管理方案。

什么是RocketMQ接口?

由服務使用方的應用程序發起,以Restful風格為主、通過公網HTTP協議調用RocketMQ,從而實現程序的自動化交互,提高服務效率。

RocketMQ有哪些核心功能?

消費模式多樣

  1. 發布/訂閱模式:這是消息隊列最常見的消費模式。生產者(Producer)將消息發送到指定的主題(Topic),消費者(Consumer)訂閱該主題并接收消息。RocketMQ確保每個消息只被每個消費者組(Consumer Group)中的一個消費者實例消費,即使存在多個消費者實例同時訂閱同一主題。

  2. 集群消費模式:在集群消費模式下,多個消費者實例組成一個消費者組,共同消費同一個主題下的消息。RocketMQ通過負載均衡機制將消息均勻分配給組內的消費者實例,以提高消費能力和容錯性。

  3. 廣播消費模式:與集群消費模式不同,廣播消費模式下,消息會被發送到訂閱了該主題的每個消費者實例,而不管這些消費者實例是否屬于同一個消費者組。這種模式適用于需要將消息廣播給所有訂閱者的場景。

消息類型豐富

  1. 普通消息:最基本的消息類型,支持同步、異步和單向發送方式。

  2. 順序消息:保證消息的順序性,適用于需要按特定順序處理消息的場景,如訂單處理、日志收集等。

  3. 事務消息:支持分布式事務的最終一致性。生產者先發送半事務消息到RocketMQ,然后執行本地事務。根據本地事務的執行結果,生產者向RocketMQ發送提交或回滾請求。RocketMQ根據這些請求來處理半事務消息,確保事務的最終一致性。

  4. 定時消息延時消息:允許生產者指定消息在特定時間后或延遲一段時間后才被消費。這適用于需要按時間順序處理消息的場景,如定時任務、預約提醒等。                                                                                                                  

監控告警

  1. 消息查詢和回溯:支持按時間、消息ID等條件查詢消息,方便用戶回溯消息處理過程。

  2. 消息重試與死信管理:對于消費失敗的消息,RocketMQ支持自動重試機制。如果多次重試后仍無法消費成功,則可以將消息發送到死信隊列中,供后續處理。

  3. 數據監控與告警:支持對消息堆積、消費延時等關鍵指標進行實時監控,一旦達到預設的閾值,系統將自動觸發告警通知相關人員。

數據安全

  1. ACL訪問策略:支持配置ACL(Access Control List)訪問策略,通過密鑰管理實現數據面的鑒權和授權。這有助于防止未經授權的訪問和數據泄露。

  2. 密鑰管理:提供密鑰管理服務,用于生成、存儲和管理訪問密鑰。這些密鑰用于加密和解密消息內容或認證消息發送者和接收者的身份。

  3. 私有網絡(VPC):支持將RocketMQ部署在私有網絡中,通過VPC加強網絡訪問控制。這有助于隔離外部網絡流量和保護內部數據資源的安全。

RocketMQ的技術原理是什么?

  1. 角色組成
    • NameServer:一個幾乎無狀態的節點,可集群部署,節點之間無任何信息同步。主要用來管理Broker的地址信息,為Producer和Consumer提供路由查詢服務。
    • Broker:RocketMQ的核心組成部分,負責消息的存儲和轉發。Broker支持消息Push和Pull模式,支持千億級別的消息堆積能力。
    • Producer:消息生產者,和NameServer通信獲取topic路由信息,和NameServer保持長連接以及和該生產者關聯的所有broker保持長連接。
    • Consumer:消費者,單個消費者和一臺NameServer保持長連接,定時查詢topic配置信息,根據topic路由和Broker保持長連接。
  2. 消息流程
    • 消息發布:Producer首先向NameServer查詢目標Topic所在的Broker地址,然后將消息發送到這個Broker。
    • 消息存儲:Broker接收到消息后,將消息存儲在磁盤或內存中。為了提高效率,Broker會批量將消息存儲到磁盤。
    • 消息訂閱:Consumer啟動時,向NameServer查詢并訂閱其感興趣的Topic,NameServer返回對應的Broker地址。然后,Consumer直接和Broker建立連接,進行消息拉取或等待Broker推送消息。
    • 主從同步:為了保證數據的可靠性和高可用性,Broker可以配置為主從模式。在此模式下,主Broker負責處理讀寫請求,同時將數據同步到從Broker,以保證在主Broker宕機時,從Broker可以接管服務。
  3. 負載均衡
    • RocketMQ支持集群模式,可以通過增加Broker實例來水平擴展系統的處理能力。同時,它在Producer和Consumer端都實現了負載均衡,確保消息的均勻分布和消費。
  4. 消息確認與重試機制
    • 消費者處理消息后,需要向Broker發送確認信息。如果Broker在規定時間內沒有收到確認,它會重新投遞該消息。
    • 當消息消費失敗時,RocketMQ支持自動重試,增強了消息處理的可靠性。

RocketMQ的核心優勢是什么?

標準API接口
我們提供標準的API接口和詳細的接入文檔,幫助用戶快速、便捷地將服務集成到自己的應用程序中。接入流程簡單明了,無需復雜的配置和調試即可實現快速接入。

服務商賬號統一管理
用戶在冪簡平臺根據已使用的API服務采購API服務商的賬號后,并在冪簡平臺進行創建、綁定、解綁等操作。通過采集分離的工具,使用賬號資源進行產品運營

零代碼集成服務商
通過一套改進過的流程來實現研發過程的零采購、零干擾。讓程序員優先對接API服務,匹配業務需求,驗證項目可行性上線之后再啟動采購,24小時內即可上線運行

智能路由
采用智能路由規則,動態分配識別通道,有效提升了驗證的準確率,其性能高于同行業平臺,通過不斷優化算法和模型,確保精準度和準確性

 

服務擴展

服務擴展不僅提供特性配置和歸屬地查詢等增值服務,還能根據用戶需求靈活定制解決方案,滿足多樣化的業務場景,進一步提升用戶體驗和滿意度。

 

可視化監控
專注于性能和安全,通過監控調用量、成功率、響應時間和狀態碼來優化請求效率。安全機制利用網關和策略嚴格控制訪問,防止違規調用。異常監控快速識別服務中斷,確保穩定性和可靠性

在哪些場景會用到RocketMQ?

1. 異步解耦

在復雜的企業級應用架構中,"RocketMQ"的API接口被廣泛應用于實現高效的異步通信機制,從而有效地解除多個業務系統之間的緊密耦合。這種解耦不僅提升了系統的靈活性和可擴展性,還保證了整體業務的連續性和穩定性。具體場景包括但不限于:

  • 微服務架構中的服務間通信:在微服務架構中,服務間的調用往往涉及復雜的依賴關系。通過RocketMQ,服務間的調用可以轉變為異步消息傳遞,服務生產者發送消息后無需等待響應即可繼續處理其他任務,而服務消費者則可以根據自身處理能力異步接收并處理消息。這種方式顯著降低了服務間的耦合度,提高了系統的響應速度和吞吐量。

  • 訂單處理與支付確認:在電商系統中,訂單生成后通常需要調用支付服務進行支付確認。如果采用同步調用方式,訂單服務將等待支付服務響應后才能繼續后續流程,這可能導致系統性能瓶頸。通過RocketMQ,訂單服務可以將支付請求作為消息發送到隊列中,由支付服務異步處理并返回結果。這樣,訂單服務可以立即返回給用戶訂單已提交的響應,而無需等待支付服務的實際處理結果。

2. 削峰填谷

面對高并發、高流量的業務場景,"RocketMQ"的API接口作為流量緩沖器,發揮著至關重要的作用。它能夠有效地收集上游系統的突增請求,并按照下游系統的實際消費能力平滑處理消息,從而避免系統過載和崩潰。具體場景包括:

  • 大促活動期間的流量控制:在電商大促期間,用戶訪問量和訂單量會急劇增加,給系統帶來巨大壓力。通過RocketMQ,可以將用戶請求和訂單信息異步發送到消息隊列中,由后端服務按需消費處理。這樣,即使上游系統面臨巨大的流量沖擊,下游系統也能保持穩定的處理能力,確保業務平穩運行。

  • 數據同步與批量處理:在數據密集型應用中,如日志收集、用戶行為分析等場景,系統需要實時或定期地將大量數據從一個系統同步到另一個系統。通過RocketMQ,可以將數據同步請求作為消息發送到隊列中,由專門的消費者服務進行批量處理和同步。這種方式不僅可以降低系統間的耦合度,還可以提高數據同步的效率和可靠性。

3. 順序收發

在某些業務場景中,消息的順序性至關重要,如訂單處理、金融交易等。"RocketMQ"提供了順序消息的機制,確保消息的先進先出(FIFO)順序,并支持全局和分區順序消費,滿足不同場景下的需求。

  • 訂單處理流程:在電商系統中,訂單的處理通常涉及多個步驟,如支付確認、庫存扣減、物流分配等。這些步驟需要按照嚴格的順序進行,以確保訂單的正確性和一致性。通過RocketMQ的順序消息功能,可以確保訂單相關的消息按照生成順序被消費處理,從而避免訂單處理過程中的混亂和錯誤。

  • 金融交易記錄:在金融系統中,交易記錄的生成和處理也需要保持嚴格的順序性。通過RocketMQ的分區順序消費功能,可以將同一交易類型的消息發送到同一個分區中,確保這些消息被順序消費處理。同時,分區順序消費還支持動態擴展功能,可以根據業務量的增長靈活調整分區數量,提高系統的可擴展性和處理能力。

4. 消息追蹤與審計

在需要高度監管和合規性要求的行業中,如金融、醫療等,消息的追蹤與審計是不可或缺的一部分。這些行業往往需要對數據的完整性、準確性和安全性進行嚴格的監控和記錄,以確保業務操作符合法規要求,同時預防潛在的風險和漏洞。"RocketMQ"的API接口在此類場景中發揮了重要作用,它不僅支持高效的消息傳遞,還提供了強大的消息追蹤和審計功能。

  • 訂消息追蹤:在金融交易中,每一筆交易都伴隨著多條消息的產生和處理。為了確保交易的透明度和可追溯性,需要對這些消息進行詳細的追蹤。RocketMQ通過其監控中心和API接口,提供了消息軌跡的查詢功能,可以實時查看消息的發送時間、發送者、接收者、接收時間以及處理結果等關鍵信息。這有助于快速定位問題、排查故障,并在必要時進行審計和調查。

  • 審計日志:在醫療系統中,患者的健康數據和醫療記錄是極其敏感和重要的。為了確保數據的合規性和安全性,醫療機構需要對所有涉及患者數據的操作進行詳細的審計和記錄。RocketMQ的日志系統可以與現有的審計系統集成,自動記錄每一條消息的發送、接收和處理過程,包括消息的內容、時間戳、操作員等信息。這些審計日志可以作為法律證據,用于證明醫療操作的合規性和正確性,同時也為后續的故障排查和改進提供了寶貴的參考。

<
產品問答
>
?
角色組成: NameServer:一個幾乎無狀態的節點,可集群部署,節點之間無任何信息同步。主要用來...
消費組必須保證消費關系和邏輯完全一致。業務服務集群更新時,訂閱關系可能會出現不一致,這時候只有交集是可靠消費,差集是不可靠消費。需要快速修正訂閱關系,確保所有節點訂閱的Topic一致。
?
同一個消息會被消費多次嗎?
RocketMQ已經做到了同一個consumer group只會消費一次,但如果有業務消費冪等的需求(如生產中存在灰度服,服務版本大于正式服),仍然需要在消費邏輯中增加冪等處理。
?
持續生產的消息,在沒有消費組的情況下會積壓嗎?
會積壓。一直沒有消費組的話,消息會按照一定策略(如48小時后)被清理。如果消息很重要,需要增加消費組的節點來增加消費速度,或者重置commitlog的offset。
?
消費組和Topic需要提前創建嗎?
一般情況下,建議消費組和Topic提前創建好。但RocketMQ也支持動態創建Topic和消費組,不過需要注意相關的配置和可能的警告信息。
?
Broker的部署模式有哪些?
單Master模式:這是最簡單的部署方式,但風險較大。只有一個Master節點,沒有Slave節點,一旦Master節點重啟或宕機,服務將不可用。這種模式一般用于測試環境,不建議在生產環境使用。 多Master模式:集群中全部為Master節點,沒有Slave節點。優點是配置簡單,單個Master節點宕機對應用影響較小,且性能較高。但缺點是當單個Master節點宕機時,該節點上未被消費的消息在節點恢復之前不可訂閱,會影響消息的實時性。 多Master多Slave模式(異步復制):每個Master節點配置一個或多個Slave節點,HA(高可用)采用異步復制方式。這種方式下,消息寫入Master后即返回成功ACK,然后主備之間異步同步消息。優點是即使磁盤損壞,消息丟失的很少,且Master宕機后消費者仍可從Slave消費,對應用透明。但缺點是主備之間有短暫的消息延遲,且Master宕機、磁盤損壞情況下會丟失少量消息。 多Master多Slave模式(同步雙寫):與異步復制模式類似,但主備之間采用同步雙寫方式,即只有主備都寫成功才向應用返回成功。這種方式下,數據與服務都無單點故障,Master宕機情況下消息無延遲,服務可用性與數據可用性都非常高。但缺點是性能比異步復制模式略低,發送單個消息的RT會略高。
<
最可能同場景使用的其他API
>
API接口列表
<
依賴服務
>
<
產品問答
>
?
角色組成: NameServer:一個幾乎無狀態的節點,可集群部署,節點之間無任何信息同步。主要用來...
消費組必須保證消費關系和邏輯完全一致。業務服務集群更新時,訂閱關系可能會出現不一致,這時候只有交集是可靠消費,差集是不可靠消費。需要快速修正訂閱關系,確保所有節點訂閱的Topic一致。
?
同一個消息會被消費多次嗎?
RocketMQ已經做到了同一個consumer group只會消費一次,但如果有業務消費冪等的需求(如生產中存在灰度服,服務版本大于正式服),仍然需要在消費邏輯中增加冪等處理。
?
持續生產的消息,在沒有消費組的情況下會積壓嗎?
會積壓。一直沒有消費組的話,消息會按照一定策略(如48小時后)被清理。如果消息很重要,需要增加消費組的節點來增加消費速度,或者重置commitlog的offset。
?
消費組和Topic需要提前創建嗎?
一般情況下,建議消費組和Topic提前創建好。但RocketMQ也支持動態創建Topic和消費組,不過需要注意相關的配置和可能的警告信息。
?
Broker的部署模式有哪些?
單Master模式:這是最簡單的部署方式,但風險較大。只有一個Master節點,沒有Slave節點,一旦Master節點重啟或宕機,服務將不可用。這種模式一般用于測試環境,不建議在生產環境使用。 多Master模式:集群中全部為Master節點,沒有Slave節點。優點是配置簡單,單個Master節點宕機對應用影響較小,且性能較高。但缺點是當單個Master節點宕機時,該節點上未被消費的消息在節點恢復之前不可訂閱,會影響消息的實時性。 多Master多Slave模式(異步復制):每個Master節點配置一個或多個Slave節點,HA(高可用)采用異步復制方式。這種方式下,消息寫入Master后即返回成功ACK,然后主備之間異步同步消息。優點是即使磁盤損壞,消息丟失的很少,且Master宕機后消費者仍可從Slave消費,對應用透明。但缺點是主備之間有短暫的消息延遲,且Master宕機、磁盤損壞情況下會丟失少量消息。 多Master多Slave模式(同步雙寫):與異步復制模式類似,但主備之間采用同步雙寫方式,即只有主備都寫成功才向應用返回成功。這種方式下,數據與服務都無單點故障,Master宕機情況下消息無延遲,服務可用性與數據可用性都非常高。但缺點是性能比異步復制模式略低,發送單個消息的RT會略高。
<
最可能同場景使用的其他API
>