1. 程式人生 > >展望Apache RocketMQ5.0 | 談RocketMQ的過去、現在和未來

展望Apache RocketMQ5.0 | 談RocketMQ的過去、現在和未來

雙向 維護 分布式消息 雲上 產生 保持 實現 ati 通信

摘要: 核心理念:計算和存儲分離。

近日,在Aliware Open Source?深圳站 - Apache Dubbo & Apache RocketMQ 開發者沙龍上,Apache RocketMQ 創始人,阿裏巴巴中間件高級技術專家 馮嘉 向開發者們分享了Apache RocketMQ 的過去、現在和未來,以及對RocketMQ5.0的展望。本文是根據馮嘉的現場分享所整理,為大家回顧分享中的精彩內容。

技術分享圖片

嘉賓介紹:馮嘉, Apache RocketMQ 創始人,Linux OpenMessaging 創始人,阿裏巴巴 Messaging 技術負責人。

一、回顧過去 - RocketMQ的發展歷程

阿裏巴巴最早是一個電商平臺,內部有一套系統,同時承載了會員、訂單、商品等應用,有上百人在維護,每天的提交和發布都非常復雜。為了更好的支撐快速發展的業務,阿裏在2007年啟動了“五彩石”項目,通過橫向和縱向兩個維度將這一單體應用拆分出用戶中心,商品中心,交易中心,評價中心等平臺型應用,這時候系統和系統之間的交互就變得非常重要。通常,系統和系統之間有兩種交互方式,一種是同步方式,通過rpc來實現,一種是異步,阿裏的第一代消息引擎 Notify就是基於這個背景下產生的,用於淘寶B2C業務系統和系統之間的消息流轉。

技術分享圖片

緊接著在2010年,阿裏B2B業務開始大規模使用 ActiveMQ,並打造了自己的消息引擎Napoli。但無論是Notify,還是Napoli,他們的存儲都是基於關系型數據庫,最大的隱患是容易在磁盤上造成堆積。

2011年,LinkedIn開源了自己的分布式消息引擎Kafka,Kafka擁有強大的日誌處理和處理磁盤堆積的能力,隨後我們用Java重寫了Kafka的核心邏輯,並以MetaQ項目進行開源。但MetaQ在遇到淘寶海量數據交易場景時,出現了非常多的問題。為了解決這些問題,我們把MetaQ的存儲從原先的partition全量數據存儲模式優化為目錄和數據文件分離的模式,這個版本我們命名為MetaQ2.0。但這種優化不能從根本上解決我們在大規模數據下遇到的問題,比如在系統宕機和擴容方面出現的Rebalance問題,隨後我們決定去完全重寫MetaQ2.0,才有了第一代的RocketMQ,為了體現RocketMQ是源於MetaQ 2.0,我們將其命名為RocketMQ 3.0。

2016年,我們在阿裏雲上線了RocketMQ的商業化產品阿裏雲消息隊列MQ,幫助用戶方便快捷的獲得RocketMQ的消息發送和流數據處理能力。同年11月,我們將RocketMQ捐贈給Apache(版本升級為4.0),目的是希望更多的企業開發者加入到社區來共同發展RocketMQ。孵化期間,我們發現來自東南亞、包括美國的一些銀行開始使用RocketMQ在跑PoC,這讓我們感到非常欣慰。我們希望在未來,能夠將RocketMQ建設成可以比肩Hadoop那樣的生態。

2017年,不到10個月的時間裏,RocketMQ 從 Apache 畢業,成為Apache下的頂級項目,和 Hadoop 同規格。基於RocketMQ在各類場景下的豐富實踐,我們將互聯網業務對消息的需求進行抽象,形成了一套能滿足大多數業務場景的標準模型,逐步發展成與廠商無關、平臺無關的分布式消息及流處理領域的應用開發標準– OpenMessaging,並與10月進入Linux基金會。進入到2018年,團隊和社區開始著手思考和構建下一代消息引擎– Apache RocketMQ 5.0,並大力發展Messaging生態,也希望這方面的專家能夠加入我們,加入社區,一起打造OpenMessaging領域新標準。

技術分享圖片

二、如何深度參與社區共建
1、我們需要更多的社區角色:
通常社區會有PMC member、committer、contributor和user這些角色,但一些優秀的國際社區有更多的生態角色,例如專欄作家,以一個Editor的身份,把開發和使用過程中的經驗以文字的形式分享出來,發表在自己的社交賬號或者社區官網的blog上,幫助其他開發者更好的使用開源產品,這對社區的建設是非常有幫助的。除此之外,Evangelist(布道師),Release Manager,Consultant包括各類會議的Speaker也是非常重要的社區角色。

從去年開始,我們在北京、深圳開展了線下的Meetup活動,豐富社區的交流方式,如果你有特別好的消息實踐,歡迎到我們的Meetup上來進行分享。另外,我們也會更多的聆聽來自用戶的聲音,如果大家所在的公司在大規模使用RocketMQ中遇到了問題,也歡迎找我們交流。我們也在計劃進行一些更聚焦的workshop,走進企業。希望大家一起來共建Messaging生態,探討領域發展方向。當然,如果你有想法寫一本關於Messaging或者RocketMQ方面的書籍,也歡迎聯系我們。

技術分享圖片

2、社區參與第一步 - 建立溝通渠道:
對於年輕的開發者和開源使用者,首先需要了解在遇到使用難題或問題的時候,如何向項目成員尋求幫助。在社區中,我們幾乎不使用微信、QQ等溝通方式,而遵循國外尤其是 Apache 提倡的郵件列表溝通方式,而對待Bug或者新需求,我們通常鼓勵 issue 提交、甚至是 PR(Patch) 提交。當然,接下來會有一些新變化,為了讓大家更好的參與進來,我們計劃起草 RIP(RocketMQ Improvement Proposals),這一標準實踐很快會正式和大家見面。

3、了解 How to Contribute
我們在社區的文檔界面上線了一頁“How to Contribute”的頁面,頁面詳細描述了開發者如何深度參與到社區中。除了在社區提交問題之外,開發者們還可以通過上報疑似錯誤報告、提交改進或新功能的需求的方式深度參與到社區共建,例如我們在限流方面做的還不夠精細,開發者可以起草一個改進,參與到社區的討論中,邀請社區的PMC member、committer來review自己的PR。

技術分享圖片

4、提交issue,在issue頁面發表評論
我們非常歡迎用戶和開發者在使用 RocketMQ 的過程中,將你遇到的使用問題或是改善建議發布到 issue 頁面,並對參與到已經發布的 issue 的改善討論中。

技術分享圖片

5、貢獻代碼
開源項目的持續發展一定離不開開發者對項目的共同維護和改善,我們鼓勵任何人貢獻代碼。為了確保貢獻者和審閱者的愉快貢獻體驗並保持高質量的代碼庫,需要遵循我們在 Contribute 中描述的貢獻過程。

6、參與到RocketMQ 社區項目中
我們在Apache上創建了一個倉庫repository,名稱是rocketmq-externals,把社區中已有的大規模場景的應用,或者我們認為比較好玩的項目都放到了這裏。開發者可以選擇你們擅長的項目,無論是適配RocketMQ的客戶端,例如Go語言SDK,還是運行RocketMQ的Docker容器包括K8s Operator,或是 RocketMQ 上下遊生態集成,開發者都可以提交你的代碼,對項目進行改進與完善。

技術分享圖片

7、更多參與方式 - 代碼不是為參與社區共建的唯一方式

我們非常重視文檔的建設,這是提高社區開發者效率非常重要的方式,提供簡明,精確和完整的文檔,並歡迎任何有助於改進Apache RocketMQ文檔的貢獻。

三、展望未來 - RocketMQ5.0
RocketMQ5.0 將基於雲原生的理念,圍繞可運維、可監控、彈性、可恢復、敏捷 5 個維度來打造下一代分布式消息計算平臺,全面提升RocketMQ的功能、性能、生態效能和場景應對能力。計算方面,我們將基於存儲和計算分離的理念,打造一個精簡的計算節點群,更貼近地面或邊緣設備的高效解決數據量不斷增大、訪問端點不斷增多,但計算能力有限的需求場景。存儲方面,我們將更加精細化的控制內存配置和回收,利用SPDK發揮在SSD新標準NVMe下的優勢,兼容各類硬件設備,達到微秒級的端到端時延。同時,團隊也在積極尋求和全球高校合作,探索更前沿的技術實現以及應用場景,努力挖掘用戶的癢點,解決客戶的痛點,創造產品的爽點。

? 提升周邊集成能力

RocketMQ5.0將基於 OpenMessaging 標準向上和向下拓展,提升生態效能。在聯機分析處理領域,對接Prometheus、ELK包括業務數據,將來自上遊的數據形態Metrics、Logs、Streams傳輸到下遊的各類數據分析應用上。在金融、遊戲和電商領域,RocketMQ5.0 將進一步優化打磨內核,提供更高的穩定性與可用性。同時,借助 OpenMessaging 提供更多語言的接入能力,包括 Infrastructure Native 的能力。在一些新興領域,如IoT場景中,基於計算和存儲分離的理念,借助物聯網中無處不在的“物”來分擔計算,從而解決Java在單機上支持海量設備的連接在線的不足的問題,將上遊的數據高效寫入下遊的TP或者AP系統中。

技術分享圖片

? 拓展場景能力

優秀的產品和強大的技術都需要通過解決實際場景的業務問題來詮釋自身的價值,RocketMQ5.0將在以下4個場景中進一步提升應對能力。在電子商務領域保證整個傳輸鏈上的消息不丟,提高交易數據的完整性;在金融領域,支持分布式事務下的多端調用,保證關鍵數據的一致性;在大數據領域,具備更強的天然的streaming能力,解決端到端的延遲,優化用戶端體驗;在IoT領域,支持海量設備同時在線和海量topic消息隊列,保障雙向通信。

技術分享圖片

最後,和大家預告一下,接下來我們還會繼續在北京,上海,成都舉辦技術沙龍,歡迎大家報名參加,也歡迎領域專家們和我們共同舉辦小範圍的workshop,豐富社區的交流方式。產品方面,可以提前透漏給大家的是,社區目前研發的多語言SDKs馬上就要對外開放,我們也在研發IoT套件,這塊的Proposal很快也會和大家見面,歡迎大家參與進來,共建RocketMQ生態。

原文鏈接請添加鏈接描述

本文為雲棲社區原創內容,未經允許不得轉載。

展望Apache RocketMQ5.0 | 談RocketMQ的過去、現在和未來