天天看點

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

近日,在Aliware Open Source•深圳站 - Apache Dubbo & Apache RocketMQ 開發者沙龍上,Apache RocketMQ 創始人,阿裡巴巴中間件進階技術專家 馮嘉 向開發者們分享了Apache RocketMQ 的過去、現在和未來,以及對RocketMQ5.0的展望。本文是根據馮嘉的現場分享所整理,為大家回顧分享中的精彩内容。
展望Apache RocketMQ5.0 | 談RocketMQ的過去、現在和未來
嘉賓介紹:馮嘉, Apache RocketMQ 創始人,Linux OpenMessaging 創始人,阿裡巴巴 Messaging 技術負責人。
» 公衆号傳送門:

背景發送“深圳沙龍PPT”,下載下傳全場PPT。

背景發送“深圳沙龍視訊”,觀看全場回顧視訊。

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

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

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

緊接着在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領域新标準。

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

二、如何深度參與社群共建

1、我們需要更多的社群角色:

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

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

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

2、社群參與第一步 - 建立溝通管道:

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

3、了解 How to Contribute

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

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

4、送出issue,在issue頁面發表評論

我們非常歡迎使用者和開發者在使用 RocketMQ 的過程中,将你遇到的使用問題或是改善建議釋出到 issue 頁面,并對參與到已經釋出的 issue 的改善讨論中。

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

5、貢獻代碼

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

6、參與到RocketMQ 社群項目中

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

展望Apache RocketMQ5.0 | 談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系統中。

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

» 拓展場景能力

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

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

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