訊息佇列 RocketMQ 5.0:從訊息服務到雲原生事件流平臺

阿里巴巴雲原生發表於2022-11-17

前言

回顧 RocketMQ 的發展歷程,至今已十年有餘。2022 年 RocketMQ 5.0 正式釋出,全面邁進雲原生時代。

11 月 5 日,2022 杭州 · 雲棲大會上,阿里雲智慧高階產品專家楊秋弟在雲原生峰會上發表主題演講,釋出訊息佇列 RocketMQ 5.0:從訊息服務到雲原生事件流處理平臺。

 title=

阿里雲智慧高階產品專家&Apache RocketMQ 聯合創始人   楊秋弟

Apache RocketMQ 發展史

 title=

回顧 Apache RocketMQ 過去十年的發展歷程,可分為“誕生於網際網路”與“成長於雲端計算”兩大階段。

第一個階段是 RocketMQ 的從 0 到 1,在阿里內部規模化落地。 2012 年,為了支撐超大規模電商網際網路架構,阿里中介軟體研發了 RocketMQ,並在產品誕生初期開源,2017 年 RocketMQ 統一了阿里訊息技術體系。

第二個階段是雲端計算。 2015 年 RocketMQ 上雲,這也是業界首個提供公共雲 SaaS 形態的開源訊息佇列;2016 年,阿里把 RocketMQ 捐贈給 Apache,2017 年孵化畢業,成為國內首個 TLP 的網際網路中介軟體。

十年磨一劍,出鞘必鋒芒。在這十年的過程中,透過集團打磨穩定性,依託雲端計算孵化創新,開源共建加速標準化建立與生態連線,RocketMQ 始終堅持開源、集團、商業三位一體的發展思路,核心演進和產品迭代齊頭並進。2022 年 RocketMQ 5.0 正式釋出宣告著全面邁進雲原生時代。

RocketMQ 5.0:從訊息服務到雲原生事件流平臺

 title=

回顧過去這十年,RocketMQ 服務於集團幾乎所有的業務,在阿里雲上更是累計服務了 10 萬餘家企業客戶,覆蓋網際網路、零售、金融、汽車等 20 多個行業,大規模的生產實踐持續累積產品的核心優勢。

  • 多樣性,企業級應用複雜的業務訴求,催生 RocketMQ 提供豐富的訊息型別,比如定時訊息、事務訊息、順序訊息等等。此外,也提供了像訊息軌跡、訊息回溯等一系列的訊息治理能力。 
  • 一致性,無論是淘寶交易還是螞蟻支付都天然對資料一致性有著極高的要求,RocketMQ 提供的分散式事務訊息是業內第一個提供該特性的訊息產品,將非同步解耦與資料一致性完美融合,是金融客戶中不可或缺的產品能力。 
  • 穩定性,穩定性是產品的根基,更是一個系統工程,RocketMQ 長期在電商和金融領域中打磨,不僅提供最高達 99.99% SLA,更是幫助客戶提供全方位的健康巡檢與故障排查能力,如訊息軌跡、訊息回溯、死信機制等等,提供多樣化的穩定性兜底手段。 
  • 高效能,在雙十一的極限流量下,RocketMQ 具備無限擴充套件能力,支援千萬級併發與萬億級訊息洪峰,P9999 寫延遲在 1ms 內,100%在 100ms 內。 

可以說,在訊息領域,尤其在業務訊息領域,RocketMQ 在國內已經做到頂尖,成為企業客戶的首選。

而隨著雲原生以及數字化時代的到來,RocketMQ 也在快速的發生著變化,那麼變化主要體現在哪些方面呢?

首先,全面擁抱雲原生。向下,訊息系統自身實現雲原生架構的演進,充分釋放雲基礎設施的池化能力,全方位提高訊息的核心技術指標。向上,訊息產品形態持續演進,成為雲原生應用架構的核心引擎。比如微服務、事件驅動、Serverless 等現代化應用架構。

其次,全面擁抱實時資料。企業的數字化轉型從原來的業務數字化邁向了數字業務化。對業務資料的實時洞察、實時決策成為指導業務成功的關鍵要素。訊息佇列也將從線上業務架構的基礎設施,延伸到實時資料架構的基礎設施,從而實現事務分析一體化。

隨著 5.0 的釋出,RocketMQ 也正式從訊息服務升級到雲原生事件流處理平臺。

RocketMQ 5.0:雲原生架構升級

 title=

首先來看 RocketMQ 自身的雲原生架構演進。從下面的全景圖可以看出,RocketMQ 從客戶端到服務端都進行了全方位的改造,具體體現在以下幾個方面:

  1. 輕量化。RocketMQ 4.0 誕生於 2012 年的淘寶電商,當時大部分的業務還跑在物理機上,單節點計算能力強,客戶端節點數少且較為穩定,因此,富客戶端的接入方式不僅更加高效,更可以提供諸如客戶端側負載均衡、訊息快取、故障轉移等一系列企業級特性。但這種模式在雲原生時代發生了改變,輕量客戶端更容易被雲原生技術棧所整合。因此,RocketMQ 5.0 客戶端採用輕量 SDK 設計理念,將原來富客戶端的邏輯下沉到服務端,滿足現代化應用輕量化、Serverless 化以及 Mesh 化的趨勢,更容易被整合;同時也正是因為輕量化,使得 SDK 多語言開發成本低了很多,快速覆蓋當下主流的多語言版本。
  2. 彈性,存算分離架構讓無狀態計算節點可以快速伸縮,而分級儲存以及冷熱分離架構更是讓訊息儲存具備更強的彈效能力。
  3. 高可用,基於全新的 Leaderless 架構,去 ZK 依賴的同時,可以做到副本數靈活選擇,同步非同步自動升降級,實現秒級故障轉移;面向雲的多可用區、多地域組建全域性高可用能力。
  4. 最後,RocketMQ 整體架構走向 Kubernetes 化,擁抱 OpenTelemetry,依託於阿里雲提供的 ARMS、Prometheus 以及 Grafana 實現可觀測能力的雲原生化。

而 RocketMQ 5.0 本次的升級,除了在技術架構雲原生化之外,在產品能力以及成本最佳化方面都有著重大的提升,我們來逐一分解。

輕量無狀態消費模型

 title=

RocketMQ 4.0 採用按佇列消費模型,消費者完全按照佇列負載均衡,非常適合批次拉取快速消費,對單一訊息狀態不敏感的場景,比如流計算。然而在業務訊息領域,尤其是金融場景以及事件驅動架構之下,每一條訊息狀態都是極為重要的。再加上不同業務型別的訊息處理耗時也是各不相同,從毫秒級、到秒級甚至到分鐘級,佇列的負載不均衡或者短暫的 Block 都可能會引發訊息的區域性堆積,從而影響到終端使用者的體驗。因此,RocketMQ 5.0 全新推出按訊息負載的輕量無狀態消費模型,透過 PoP 機制巧妙地在佇列模型之上構建了訊息模型,業務只需要關心訊息而無需關心佇列,所有 API 都能夠支援單條訊息級別控制,如訊息的消費、重試、刪除等。而基於訊息消費模型,客戶端、連線和消費都是無狀態的,可在任意 Proxy 節點上飄移,真正做到輕量化。

RocketMQ 5.0 提供按佇列消費模型以及按訊息消費模型,更好的滿足事件與流的業務場景,正可謂魚與熊掌兼得。

海量訊息分級儲存

 title=

RocketMQ 5.0 的另一個重大升級則是海量訊息的分級儲存。對訊息佇列了解的同學都知道,訊息通常都是流動的短時間的儲存,業內大部分訊息產品對訊息的保留時間都比較優先,3 天,7 天,最長 15 天不等。有限的儲存空間使不僅限制了訊息的保留時長,更在某些場景下可能會導致業務資損,比如在訊息還沒有被消費的時候,因為磁碟空間不足或者訊息過期而被清除,這在金融等領域都是不可接受的。所以,RocketMQ 一直想要解決這樣的問題,讓儲存變得更有彈性。

RocketMQ 5.0 基於 ESSD、物件儲存打造冷熱分離以及分級儲存架構,提供低成本的無限儲存能力,確保訊息不會因為本地磁碟空間不足而提前被清除,造成業務資損。我們提供訊息儲存的 Serverless,客戶只需按實際儲存使用量付費,而無需預購儲存空間。

此外,流量削峰是訊息佇列極為常見的場景,而由此帶來的海量訊息堆積能力以及在堆積情況下的效能穩定性成為衡量產品效能的核心指標。RocketMQ 5.0 基於冷熱資料分離架構進一步做到讀寫隔離,避免在堆積的場景下影響熱資料的寫入效能。分級儲存的冷資料碎片規整能力更是提高了冷資料的讀取效能,為使用者提供一致的冷讀 SLA。

售賣系列全線升級,最高降本 50%

 title=

從前面的介紹我們已經瞭解到,RocketMQ 5.0 在技術架構以及產品能力上都有著明顯提升。

而 5.0 推出全新的售賣形態與計費策略相比 4.0 更簡單、更靈活也更為普惠。例項的綜合成本最高可降低 50%。接入門檻最低可降至 390 元/月,遠低於自建成本。訊息儲存支援 Serverless 彈效能力,按需付費可大幅降低閒置成本。結合冷熱分離的多級儲存能力,相比開源自建可降低 67%,大幅降低訊息佇列的使用成本。

EventBridge:雲上事件樞紐

 title=

事件驅動是一個起源很早的概念,早在幾十年前,無論是作業系統核心的設計、還是客戶端程式設計框架都大量採用了事件驅動技術。RocketMQ PushConsumer 提供的 API 其實就是一種事件驅動的程式設計正規化,但在微服務應用架構當中,整合與通訊才是剛需,事件驅動的價值並沒有那麼明顯的體現。

而隨著雲原生時代的到來,計算力的構成越來越多樣化。作為雲原生的代表技術,Serverless 架構正規化也是事件驅動的。無論是阿里雲的函式計算、還是 AWS 的 Lambda,它們的主要觸發源都是各種形態的事件,雲產品事件,如 OSS 檔案上傳觸發使用者基於函式進行檔案加工處理;使用者業務事件,如 RocketMQ 觸發函式執行消費邏輯處理等等。

以事件驅動為核心理念,阿里雲推出了 EventBridge 產品,其使命就是打造雲上的事件樞紐。透過 EventBridge 可以兌現四大業務價值:

  1. 統一事件樞紐。阿里雲從 IaaS、PaaS 到第三方的 SaaS,每天都有數以億計的事件產生,但卻沒有一種簡單和統一的方式來觸達這些事件;這些事件散落在各個地方形成『事件孤島』,很難挖掘出有用的業務價值。只有充分發揮資料的規模效應,建立起資料之間的血緣關係,我們才能更好的發掘出資料的價值;所以 EventBridge 首要任務便是統一阿里雲上的事件規範,擁抱 CloudEvents 事件標準,打造阿里雲統一的事件樞紐。
  2. 事件驅動引擎。當 EventBridge 連線了海量的事件源後,基於 RocketMQ 毫秒級的事件觸發能力,必將加速企業 EDA/Serverless 的架構升級。
  3. 開放與整合。EventBridge 提供豐富的跨雲、跨平臺、跨產品、跨地域以及跨賬號的連線能力,能夠促進雲產品、應用程式、SaaS 服務的相互整合。
  4. 低程式碼。EventBridge 藉助 Serverless 的應用中心,透過簡單的規則匹配以及豐富的模板,即可實現事件的分發、過濾、轉換等處理,進一步提升事件驅動的效率。

讓訊息無處不在,讓事件無所不及

 title=

依託於 EventBridge、RocketMQ 以及函式計算 FC 的強強聯合,目前 EventBridge 的事件生態已初具規模。

在雲產品事件整合方面,目前已經整合 200+雲產品事件源,3000 多種事件型別。

在資料整合與處理方面,EventBridge 與微服務應用、大資料、IoT 等場景深度整合。比如與訊息生態的融合,阿里雲 6 款訊息佇列產品透過 EventBridge 實現訊息資料的互聯互通,並且透過 EventBridge 的全球事件網路賦予訊息全球訊息路由的能力,同時也可以透過 EventBridge 提供的豐富的模板,實現 ETL 資料處理能力。

在 SaaS 應用整合方面,包括釘釘、聚石塔以及雲上 50 多個 SaaS 服務都可以透過 EventBridgehook 方式連線到 EventBridge。

在事件觸發方面,EventBridge 目前已經觸達 10 多個事件目標,海量的事件源都可以透過 EventBridge 觸發包括 FC/SAE 等在內的 10 多款事件目標雲產品。除此之外,目前 EventBridge 已經對接了阿里雲全量的雲產品 API,任何一個事件都可以透過雲產品 API 的方式進行觸達。

未來還有會更多的事件源以及事件目標接入到 EventBridge 上來。

RocketMQ Streams:輕量級計算的新選擇

 title=

正如開篇所提到的,基於雲原生架構的全面升級,RocketMQ 5.0 也將從線上業務架構的基礎設施,延伸到實時資料架構的基礎設施,實現事務分析一體化。將 RocketMQ Streams 打造成為輕量級計算的新選擇。

業內最常見如 Flink、Spark 等大資料框架大多采用中心化的 Master-Slave 架構,依賴和部署比較重,每個任務的執行都需要很大的開銷,有較高的使用成本。而與之不同的是,RocketMQ Streams 著重打造輕資源,高效能的輕量計算引擎,無額外依賴,最低 1core,1g 即可完成部署,適用於大資料量、高過濾、輕視窗計算的場景,在資源敏感型場景,如訊息佇列流計算、安全風控,邊緣計算等,RocketMQ Streams 具有有很大優勢。阿里雲訊息團隊與安全團隊合作,透過對過濾場景做大量最佳化,效能提升 3-5 倍,資源節省 50%-80%。

目前,RocketMQ Streams 已經在開源社群釋出,未來計劃在 2023 年 4 月在阿里雲完成商業化。

RocketMQ 這十年,我們一同向前

 title=

RocketMQ 歷經十餘年的打磨,已經取得了眾多成果。全球擁有 700+的貢獻者,1.8w Star 數,超過 80%的主流雲廠商提供了 RocketMQ 的商業託管服務,Apache RocketMQ 社群始終保持著極高的活躍度,因此,也榮獲了科創中國“開源創新榜”,中日韓開源軟體優秀技術獎等十多個國內外開源獎項。

而阿里雲作為 RocketMQ 的起源和核心貢獻者,不僅 100%覆蓋全集團業務,承載千萬級併發萬億級訊息洪峰。十多年以來更是累計服務 10w+萬企業客戶,覆蓋網際網路、零售、汽車等 20 多個行業,超過 75%的頭部企業選擇使用 RocketMQ。期望阿里雲的訊息佇列 RocketMQ 可以成為廣大企業客戶的心之所選。也誠邀更廣大的開發者來積極參與 RocketMQ 的開源社群建設,一起將 RocketMQ 打造為訊息領域的引領者。

歡迎掃描下方二維碼加入釘釘群與 RocketMQ 愛好者一起溝通交流~

 title=

點選此處,進入官網瞭解更多詳情~

相關文章