移動雲消息中間件產品矩陣在開源技術創新領域的演進之路

2023-10-27     InfoQ

原標題:移動雲消息中間件產品矩陣在開源技術創新領域的演進之路

作者 | 胡宗棠

消息中間件作為消息通信的基礎軟體,已在業界諸多 IT 系統中被廣泛使用。近年來,隨著移動雲業務的持續高速發展,基於開源技術生態構建的消息中間件雲產品體系越來越受到市場的青睞。移動雲在消息中間件領域的技術演進與發展方向上一直堅持著自研和開源融合的發展路線,在做好自研的基礎上積極擁抱開源生態。

在剛剛落幕的 CommunityOverCode Asia 2023 開源盛會上,中國移動雲能力中心消息中間件領域技術專家、移動雲消息隊列團隊負責人胡宗棠向大家介紹了移動雲消息隊列產品矩陣在開源領域與產品商業化的發展歷程、作為雲基礎設施領域的探索與實踐,以及未來的創新計劃。

1移動雲消息隊列產品矩陣的介紹

移動云為雲端用戶提供了多元化的消息隊列產品矩陣(包括 RocketMQ、MQTT、RabbitMQ 和 Kafka)。RocketMQ,作為網際網路新興業務領域首選的消息通信產品,可為用戶提供金融交易級的消息可靠性保障能力;MQTT,作為移動網際網路、物聯網和邊緣計算的數據流轉產品,可為用戶提供豐富的消息終端接入能力;Kafka,作為大數據首選的數據通道類產品,可為用戶提供數據加工和批流一體計算能力;RabbitMQ,作為傳統業務領域的消息管道類產品,為用戶提供穩定高效的消息並發訪問能力。

移動雲消息隊列產品矩陣完全構建在移動雲基礎設施上(包括計算、存儲和網絡等基礎設施部分),基本實現了應用場景全覆蓋,包括微服務解耦、網際網路 SaaS 應用、IOT 物聯網、大數據流計算或日誌收集生態,同時也在內部覆蓋了移動雲端的所有業務,在雲上為企業客戶提供了優質的消息服務。

2移動雲消息隊列產品商業化的歷程

移動雲消息隊列產品的商業化歷程主要經歷了幾個階段。在 2015 至 2018 年,消息中間件以組件的形式完成了生產環境的大規模部署與實踐,實現了中國移動信令傳輸等場景的落地與應用。在 2019 至 2021 年,RocketMQ/Kafka/MQTT 以雲服務的形式,在移動公有雲上完成了正式商用上線。在 2022 年,自研的 AMQP 消息中間件完成了移動雲生產環境所有 Region 的替換上線,成為業界首家在 OpenStack 基礎設施領域完成自研消息中間件超大規模實踐的雲廠商。從當前至未來,我們會繼續探索軟硬一體化設計的技術演進路線,構建面向數字基礎設施的通信新基座能力。

3移動雲消息隊列的開源之路

移動雲消息隊列團隊,自 2018 年 10 月份為 Apache RocketMQ 開源項目提交且合併了關於消息軌跡特性的 PR,開啟了 Apache 開源之旅。在 2019 至 2021 年,團隊核心成員主導並發布了 Apache RocketMQ 4.5.2/4.9.0/4.9.1 多個版本,並且完成了諸多特性的提交與合併,在這個過程中為 Apache RocketMQ、Apache Pulsar 和 Apache Kafka 等社區做出了積極的貢獻。

在 2020 至 2022 年,團隊與 StreamNative 聯合發起開源 AMQP on Pulsar 項目,該項目是業界首個面向 OpenStack 基礎設施領域的開源消息中間件的解決方案。從 2023 年開始,團隊在歐拉社區牽頭創建了消息中間件 sig 組,致力於將移動雲多年來在消息中間件領域的積累開源並貢獻給業界。

4移動雲消息隊列在雲基礎設施領域探索與實踐

隨著 OpenStack 在中國移動公有雲端的部署規模越來越大,消息並發量也呈現指數級增長,在大量連接數、多 Queue 隊列和高 TPS 流量峰值的場景下,開源 RabbitMQ 的系統架構設計存在著一定的限制,主要有以下問題:

一、穩定性差

(1)網絡分區故障的容錯性較差;

(2)抗消息堆積能力弱;

(3)單個代理連接數受限;

二、集群 TPS 吞吐性能較低

開源 RabbitMQ(3.8.9 版本) 集群在開啟鏡像隊列後性能較低。1KB 大小的消息,TPS 在 2 萬 / 秒左右,當消息堆積量增大後會導致集群性能明顯下降。

藉助 Pulsar 算存分離的雲原生技術架構,通過自研的 AMQP 協議轉換組件、元數據存儲方案、自適應的多 bundle 負載均衡算法和冷熱分離存儲方案,我們推出了 Aop(AMQP on Pulsar) 項目,其在面對海量 queue 隊列、多連接數和超高 TPS 流量峰值場景下,依舊可以提供低延遲、高可靠的消息隊列服務能力。從上面 PPT 圖中可以看出,Aop 在數據可靠性、連接數限制、服務可用性、消息堆積能力和可觀測性上,相比開源 RabbitMQ 都具備一定的優勢。

作為面向 OpenStack 領域的消息通信中間件基座,基於 Aop 項目研發的 AMQP 高性能消息隊列,目前已在移動雲上完成了 600+ 台伺服器規模的部署,上線移動雲全量資源池(完成單個 3 節點組成的 Aop 集群納管 3000+ 計算節點規模),日消息流轉量達到了百億條規模,解決開源 RabbitMQ 的諸多痛點問題,為中國移動超大規模算力網絡構建提供消息通信的重要保障,同時為業界提供 Openstack 超大規模實踐的消息通信解決方案。

隨著雲計算技術的蓬勃發展和落地,越來越多企業客戶選擇採用雲服務快速完成業務數字化轉型,更好地適應市場變化,其中有很多的企業基於降低技術開發和運維成本,選擇將自己的業務部署在雲端;還有一部分企業出於數據和安全隱私方面的考慮,選擇在內部數據中心搭建專有雲平台;而對公有雲和專有雲都有需求的企業用戶,則選擇搭建混合雲 / 多雲的架構搭建其業務系統。

移動雲 RocketMQ 消息隊列產品作為網際網路新興業務領域首選的消息通信產品,近年來日益收到客戶的青睞,很多企業用戶在選擇混合雲 / 多雲架構搭建其業務系統時候,會考慮將 RocketMQ 消息隊列作為構建其數字化業務系統在多雲之間互聯互通的數據通信管道。然而,鑒於 RocketMQ 4.X 版本與客戶端之間的 2 次訪問模型(也即為:客戶端與 RocketMQ 的 Broker 所有節點的直連模式)會帶來如下的幾個典型問題:

(1)直連模式對域名地址映射等需求的改造成本較高;

(2)直連模式無法滿足雲端用戶豐富的網絡接入訪問(公網 /VPC 內網 / 跨雲訪問接入);

(3)直連模式存在一定安全風險,隔離一些非法的網絡請求成本較高;

通過引入 RocketMQ 5.0 的無狀態代理組件,同時新增支持 RocketMQ 原生 Remoting 協議的適配和兼容性,移動雲 RocketMQ 消息隊列產品實現了算存分離的完全雲原生架構,解決了在多雲 / 混合雲應用架構下遇到的場景和諸多挑戰,調整後的優勢如下:

(1)解決了 RocketMQ 4.X Broker 直連模式下,對雲端網絡訪問接入(公網 /VPC 訪問)的綁定和限制問題;客戶端只與 Proxy 代理層連接,針對多網絡類型接入的訴求,可以將多網絡類型綁定到 Proxy 代理層,保證了多類型網絡接入是與集群規模無關的;

(2)Proxy 代理層易於實現流量隔離、ACL 鑒權和多協議適配等業務操作;

(3)Proxy 代理層無狀態,可根據用戶以及客戶端的流量進行水平彈性擴縮容,完全支持雲原生的語義;

(4)Proxy 代理組件屬於計算型資源,相對消耗 CPU;Broker 屬於存儲型資源,相對消耗磁碟空間和存儲 IO;便於部署時候提前規劃資源類型和資源容量;

5移動雲消息隊列的創新計劃

傳統的 TCP/IP 網絡(指內核態 TCP)一直是業界主流的網絡通信協議,目前大部分雲計算產品技術都是基於 TCP/IP 構建,但隨著超算 / 智算數據中心相關的業務發展,雲產品對於網絡性能的需求越來越強烈。但是,傳統 TCP/IP 網絡方案存在如下幾個典型問題:

(1)系統調用導致 CPU 在用戶態和內核態之間來回切換,消耗大量時間;

(2)發送 / 接受過程中需要 CPU 把數據從用戶空間到內核空間來回複製,增加了數據在網絡中的傳輸延時;

(3)需要 CPU 參與數據包的封裝和解析,在數據量大時將對 CPU 將造成很重的負擔;因此,傳統 TCP/IP 網絡方案中的網絡 IO 時延成為制約消息中間件(比如,Kafka)在大模型、AI 訓練和批流計算等領域發展的重要因素。

為解決 TCP/IP 網絡方案中時延和吞吐瓶頸,新一代高性能無損網絡技術—RDMA(Remote Direct Memory Access)逐漸成為雲計算時代超低時延網絡傳輸的利器。概括地來說,RDMA 是一種基於硬體加速的網絡傳輸技術,可以實現在完全無 CPU 參與下的數據傳輸,提高整體傳輸效率和性能(超低延遲、高吞吐量和低 CPU 開銷)。從上面的圖中可以看出 RDMA 在數據傳輸中的幾個主要特點:

(1)在 RDMA 網絡模型下,數據傳輸整體過程中沒有系統調用;

(2)在系統內存內部做到完全零拷貝,節省了數據在用戶空間和內核空間之間拷貝的步驟;

(3)把數據包的封裝和解析任務交給 RDMA 網卡硬體來完成,實現了 CPU 卸載;

我們希望藉助 RDMA 網絡技術為消息中間件實現網絡層面的加速,主要的優勢體現如下:

(1)藉助 RDMA 網絡單路 IO us 級時延的數據傳輸特性,加速消息中間件的網絡 IO 效率,降低批量消息發送和主從複製過程中的網絡時延和開銷;

(2)考慮軟硬協同一體化設計,藉助 RDMA 網絡技術提升消息中間件集群可承載的整體吞吐流量峰值;

在 Messsage on RDMA 這個創新計劃的前期探索中,我們也是遇到了很多挑戰,比如,socket API -> RDMA verbs API 中間轉換網絡路徑的替換和改造,大規模 RDMA 組網問題等。後續,我們會考慮將 Message on RDMA 的整體解決方案發布至社區,賦能開源用戶,為業界提供參考。

解決傳統 TCP/IP 網絡方案(指內核態 TCP)幾個典型問題的另外一項網絡技術就是 DPDK 網絡 IO 加速技術。DPDK 網絡技術並不是一個新技術,它最初是由 Intel 公司開發的一款高性能網絡驅動組件,通過大頁內存、綁核輪詢取代中斷、零拷貝、Linux 系統的 UIO 等技術實現了應用程式可以在用戶態通過 DPDK 提供的接口實現網絡數據包的收發操作。

相比傳統 TCP/IP 網絡方案,DPDK 的主要技術特點如下:

(1)通過 Linux 系統的 UIO 技術旁路內核,避免了 CPU 在內核中斷和用戶態 / 內核態之間來回大量數據拷貝所帶來的時間開銷;

(2)在流量較高的網絡數據收發場景中,通過綁 CPU 核輪詢的方式,相比內核中斷更為高效;

(3)大頁內存技術可以避免使用 swap 、減輕 TLB 壓力和減輕內存查詢的壓力;

我們希望藉助 DPDK 網絡技術為消息中間件實現網絡 IO 層面的加速,主要的優勢體現如下:

(1)對應用層來說相對透明且無感知,無需應用層的代碼改造;

(2)相比傳統的內核態 TCP 網絡來說,單路 IO 和網絡吞吐量均可提升 +20%~30%;

(3)無額外的硬體成本(相比 RDMA 網卡);

在 Messsage on DPDK 這個創新計劃的前期探索中,我們也是遇到了很多挑戰,比如,JDK/JVM 對於 DPDK (包括大頁內存)的支持,應用對於純 DPDK 操作如何適配和兼容等。後續,我們也同樣會考慮將 Message on DPDK 的整體解決方案發布至社區,為業界提供一些消息中間件在軟硬協同設計中的參考。

作者簡介

胡宗棠,中國移動雲能力中心,消息中間件領域技術專家,移動雲消息隊列團隊負責人;8 年以上消息中間件內核開發和架構設計經歷,從無到有參與移動雲 RocketMQ、MQTT、Kafka 等多款主流消息中間件系列產品的內核架構和研發。作為技術嘉賓,曾多次參與 Apache Conf Aisa2022/2023、Apache RocketMQ Summit/Meetup、雲原生服務大會技術分享,開源項目實踐經驗豐富,擔任 Apache RocketMQ、SOFAJRaft、Nacos、openEuler message-middleware sig 和 openMessaging 等開源社區的 Maintainer/Committer。曾獲 2022 年信通院《雲原生技術標準專家》, 多個開源社區的開源先鋒等榮譽。

語雀突發 P0 級事故!宕機 8 小時被網友怒噴,運維又背鍋?

智譜 AI「超 25 億融資」的背後

是時候徹底放棄「高分低能」的 Leetcode了:AI 時代的面試需要大變革!

B 站廣州研發工作室解散;外媒曝光蘋果中國區醜聞;OpenAI 被曝已叫停新大模型項目 | Q資訊

文章來源: https://twgreatdaily.com/zh-hk/809fcec3f04a7adf041756dc673b91dc.html