大數據

雲棲發佈|阿里雲消息隊列 RocketMQ 5.0:消息、事件、流融合處理平臺

引言:從“消息”到“消息、事件、流”的大融合

消息隊列作為當代應用的通信基礎設施,微服務架構應用的核心依賴,通過異步解耦能力讓用戶更高效地構建分佈式、高性能、彈性健壯的應用程序。

從數據價值和業務價值角度來看,消息隊列的價值不斷深化。消息隊列中流動的業務核心數據涉及集成傳輸、分析計算和處理等不同環節與場景。伴隨著不斷演進,我們可以預見消息隊列勢必在數據通道、事件集成驅動、分析計算等場景不斷產生新價值,創造新的“化學反應”。

01.png

RocketMQ 誕生於阿里巴巴內部電商系統,發展至今日,其核心架構經歷了多次關鍵演進:

早在 2007 年,淘寶電商系統做服務化拆分的時候,就誕生了第一代消息服務 Notify,這是 RocketMQ 最早雛形。Notify 採用了關係型數據庫作為存儲,使用推模式。在阿里淘寶這種高頻交易場景中,具有非常廣泛地應用。

在 2007-2013 年期間,隨著阿里集團業務發展,不僅需要交易場景異步調用,同時需要支持大量傳輸埋點數據、數據同步。此時,內部衍生出 MetaQ 以及 RocketMQ3.0 版本,這兩個版本開始探索自研存儲引擎,採用了自研專有消息存儲,支持了單機海量 Topic,並前瞻性地去除了 Zookeeper 等組件的外部依賴。在十年後的今天,我們看到去各種 keeper 已成為整個消息領域的發展主流。

經歷了前三代的內部業務打磨後,阿里巴巴積極參與開源並將 RocketMQ3.0 貢獻到開源社區,並於 2017 年正式從 Apache 孵化器畢業,成為中國首個非 Hadoop 生態體系的 Apache 社區頂級項目。此後,RocketMQ 也開始正式服務於阿里雲企業客戶。秉承開源、商業、內部三位一體發展策略,18 年發佈的 4.x 版,在高可靠低延遲方面重點優化,構建了全新的低延遲存儲引擎和多場景容災解決方案、並提供了豐富的消息特性。這也使得 RocketMQ 成為金融級的業務消息首選方案。

上個月社區發佈了 RocketMQ5.0-preview 版,正式宣告 5.0 的到來。RocketMQ5.0 將不再侷限於消息解耦的基本場景,更是通過統一內核、存儲的優勢,提供消息、事件、流一體化的處理能力。

2.png

回顧 RocketMQ 發展的十餘年,良好的社區環境和商業支持使得大量企業開發者可以很方便的跟進業務特點和訴求進行選型和驗證。在社區活躍影響力方面,RocketMQ 社區項目收穫 15000+Star,活躍的貢獻者有 400+ 位,多語言、生態連接等周邊活躍項目 30+ 個,深受社區開發者歡迎。在應用規模方面,RocketMQ 作為金融級業務消息方案,積累了互聯網遊戲、在線教育、金融證券、銀行、政企能源、汽車出行等眾多行業數以萬計的企業客戶。同時,在阿里巴巴內部擔負業務核心鏈路,每天流轉萬億級消息流量,扛過了歷屆雙十一的零點峰值。在行業評測方面,RocketMQ 也多次斬獲大獎。

3.png

官宣:阿里雲新一代 RocketMQ “消息、事件、流”融合處理平臺

今天發佈阿里雲消息隊列 RocketMQ 版 5.0,我們稱之為一站式“消息、事件、流”融合處理平臺。

新版本核心誕生兩大新亮點,首先是消息核心場景的擴展和佈局,RocketMQ 5.0 不再侷限於消息解耦場景,將全新佈局事件驅動和消息流式處理場景;其次則是一站式融合處理的技術架構和趨勢。

4.png

“消息、事件、流”一站式融合處理的技術架構可以實現一份消息存儲,支持消息的流式計算、異步投遞、集成驅動多種場景,極大地降低業務人員運維多套系統的技術複雜度和運維成本。可以說,無論是微服務的指令調用、異步通知,還是 CDC 變更日誌、行為埋點數據,亦或是資源運維、審計事件,統一的 RocketMQ5.0 產品棧都能統一處理。

重大發布一:RocketMQ 基礎架構全新升級

首先,最重要的升級是阿里雲 RocketMQ 的技術架構全面煥新。

5.png

全新的 RocketMQ5.0 版將通用的存儲邏輯下沉,集中解決消息存儲的多副本、低延遲、海量隊列分區等技術問題,將上層的消息處理和剝離出完全的無狀態計算層,主要完成協議適配、權限管理、消費狀態、可觀測運維體系支持。得益於存算分離的架構設計,從 SDK 接入到線上運維全鏈路帶來全面提升:

  1. 輕量版 SDK 的開放和全鏈路可觀測系統的提升:同時支持 4.x 通信協議和全新的 gRPC 通信協議,並內置 OpenTelemetry 埋點支持,新版本 SDK 新增了 10 餘個指標埋點。
  2. 消息級負載均衡:新版本 SDK 不再參與實際存儲隊列的負載均衡,消息負載均衡將更加輕量,以單條消息為調度最小單元。
  3. 多網絡訪問支持:新版本支持單一實例同時暴露公網、內網等訪問形式,方便客戶多網絡接入訪問。
  4. 海量分級存儲:新版本開放分級存儲歷史消息保存能力,消息低成本無大小限制,最長保存 30 天。冷熱數據進行分離設計,極大降低消費歷史消息對實例的性能影響。

重大發布二:RocketMQ Streaming 雲上最佳實踐——消息ETL

消息基礎架構的能力提升之外,阿里雲 RocketMQ 在 Streaming 流式處理場景推出了輕量級消息 ETL 功能。

6.png

用戶在數據庫變更、終端數據上報、後臺埋點日誌等場景產生的消息,典型的消費場景就是數據清洗轉化,同時再存儲到外部的存儲和離線分析、在線分析系統中。傳統實現方案需要搭建 Flink 等重量級實時計算服務或者自建消費應用做消息處理。而使用商業版 RocketMQ ETL 功能,簡單控制檯配置即可實現消息的清洗和轉化。RocketMQ ETL 功能有三大優勢:

  1. 輕量無依賴:作為阿里雲消息原生功能,使用時不需要部署外部計算服務或消費程序,方案更輕量。
  2. 開發門檻低:內置常見清洗轉化模板,滿足絕大多數消息內容處理需求,並支持用戶快速編寫自定義函數來支持特殊的業務邏輯。整體開發成本非常低,1 小時即可完成業務上線。
  3. Serverless 彈性:無需預先估算容量,採取 Serverless 無服務器模式,實現按需彈性伸縮。

重大發布三:EDA 雲上最佳實踐——事件中心 EventBridge

本次 RocketMQ 最後一個發佈點是在事件驅動的業務場景的佈局和演進。早在 2018 年,Gartner 評估報告將 EDA(Event-Driven-Architecture) 列為十大戰略技術趨勢之一,事件驅動架構將成為未來微服務主流。我們首先下一個定義:

事件驅動其本質是對消息驅動的再升級,是企業IT架構深度演進的下一個必然階段。

事件驅動架構和消息驅動架構的區別和關聯主要集中於以下三點:

  1. EDA 更加強調深層次解耦:消息驅動是同一業務、組織系統內不同組件之間在技術架構層面的調用解耦,其信息封裝和處理都是有預期、預定義的。事件驅動適配是更寬泛的業務、組織系統,基於事件的解耦上下游之間無需有預期和行為定義,上下游統一遵循標準化的規範,這是更深度的解耦。

  1. EDA 更加強調連接能力:消息驅動更多是單一系統內的調用,而事件驅動往往會涉及到不同的地域、賬戶主體以及三方 SaaS 的協同,事件驅動的一大特徵就是生態的強連接能力。

  1. EDA 更加強調 Serverless 低代碼開發:類比於消息和微服務的協同關係,未來業務架構 Serverless 化的大趨勢會推動業務開發模式逐步轉向低代碼配置化。事件驅動的另一大特徵就是低代碼開發,基於豐富的工具能力,業務側不需要像消息驅動一樣編寫大量的生產消費代碼。

7.png

因此,阿里雲統一事件中心 EventBridge 產品帶來如下能力:

  1. 統一標準化的事件集成生態:作為阿里雲事件中心,集成 80 餘款雲產品的業務事件,支持 800 多種事件類型,用戶使用 EventBridge 可以一次性管理所有云產品資源的變更、操作使用事件,避免對接多個產品接口的重複性勞動。

  1. 全球事件互通網絡:貫徹事件驅動強連接的屬性能力,本次發佈了全球事件互通網絡,首批支持國內五大地域事件互通。企業客戶簡單配置即可實現跨賬號、跨地域、跨網絡的事件聚合和流轉。

  1. Serverless 低代碼開發:內置十餘種事件目標和處理模板,涵蓋了大多數業務場景,客戶簡單配置、低代碼,無需部署服務即可完成事件的驅動和處理。

面向未來:堅定推動“消息、事件、流”大融合的發展

RocketMQ5.0 的發佈標誌著阿里雲消息正式從消息領域正式邁向了“消息、事件、流”場景大融合的新局面。未來阿里雲消息產品的演進也將繼續圍繞消息、事件、流核心場景而開展。消息基礎架構本身也必將步伐不斷,繼續朝著 Serverless 彈性、強容災能力、可觀測免運維方向推進,給客戶帶來高性能、高可靠、強容災的高 SLA 服務;並在 Streaming 的場景會基於客戶業務訴求,聯合生態產品持續推出更多的消息處理計算服務;打造面向未來的企業集成模式,聯合生態夥伴和開源社區大力推動事件驅動進一步發展。

final.png

點擊下方鏈接,觀看企業互聯網架構論壇直播回放!

https://yunqi.aliyun.com/2021/agenda/session184?spm=5176.23756404.J_6556766720.7.41c07c21SwyCvF

Leave a Reply

Your email address will not be published. Required fields are marked *