摘要:?核心理念:計(jì)算和存儲(chǔ)分離。
近日,在Aliware Open Source?深圳站 - Apache Dubbo & Apache RocketMQ 開(kāi)發(fā)者沙龍上,Apache RocketMQ 創(chuàng)始人,阿里巴巴中間件高級(jí)技術(shù)專(zhuān)家 馮嘉 向開(kāi)發(fā)者們分享了Apache RocketMQ 的過(guò)去、現(xiàn)在和未來(lái),以及對(duì)RocketMQ5.0的展望。本文是根據(jù)馮嘉的現(xiàn)場(chǎng)分享所整理,為大家回顧分享中的精彩內(nèi)容。
嘉賓介紹:馮嘉, Apache RocketMQ 創(chuàng)始人,Linux OpenMessaging 創(chuàng)始人,阿里巴巴 Messaging 技術(shù)負(fù)責(zé)人。
一、回顧過(guò)去 - RocketMQ的發(fā)展歷程
阿里巴巴最早是一個(gè)電商平臺(tái),內(nèi)部有一套系統(tǒng),同時(shí)承載了會(huì)員、訂單、商品等應(yīng)用,有上百人在維護(hù),每天的提交和發(fā)布都非常復(fù)雜。為了更好的支撐快速發(fā)展的業(yè)務(wù),阿里在2007年啟動(dòng)了“五彩石”項(xiàng)目,通過(guò)橫向和縱向兩個(gè)維度將這一單體應(yīng)用拆分出用戶中心,商品中心,交易中心,評(píng)價(jià)中心等平臺(tái)型應(yīng)用,這時(shí)候系統(tǒng)和系統(tǒng)之間的交互就變得非常重要。通常,系統(tǒng)和系統(tǒng)之間有兩種交互方式,一種是同步方式,通過(guò)rpc來(lái)實(shí)現(xiàn),一種是異步,阿里的第一代消息引擎 Notify就是基于這個(gè)背景下產(chǎn)生的,用于淘寶B2C業(yè)務(wù)系統(tǒng)和系統(tǒng)之間的消息流轉(zhuǎn)。
緊接著在2010年,阿里B2B業(yè)務(wù)開(kāi)始大規(guī)模使用 ActiveMQ,并打造了自己的消息引擎Napoli。但無(wú)論是Notify,還是Napoli,他們的存儲(chǔ)都是基于關(guān)系型數(shù)據(jù)庫(kù),最大的隱患是容易在磁盤(pán)上造成堆積。
2011年,LinkedIn開(kāi)源了自己的分布式消息引擎Kafka,Kafka擁有強(qiáng)大的日志處理和處理磁盤(pán)堆積的能力,隨后我們用Java重寫(xiě)了Kafka的核心邏輯,并以MetaQ項(xiàng)目進(jìn)行開(kāi)源。但MetaQ在遇到淘寶海量數(shù)據(jù)交易場(chǎng)景時(shí),出現(xiàn)了非常多的問(wèn)題。為了解決這些問(wèn)題,我們把MetaQ的存儲(chǔ)從原先的partition全量數(shù)據(jù)存儲(chǔ)模式優(yōu)化為目錄和數(shù)據(jù)文件分離的模式,這個(gè)版本我們命名為MetaQ2.0。但這種優(yōu)化不能從根本上解決我們?cè)诖笠?guī)模數(shù)據(jù)下遇到的問(wèn)題,比如在系統(tǒng)宕機(jī)和擴(kuò)容方面出現(xiàn)的Rebalance問(wèn)題,隨后我們決定去完全重寫(xiě)MetaQ2.0,才有了第一代的RocketMQ,為了體現(xiàn)RocketMQ是源于MetaQ 2.0,我們將其命名為RocketMQ 3.0。
2016年,我們?cè)诎⒗镌粕暇€了RocketMQ的商業(yè)化產(chǎn)品阿里云消息隊(duì)列MQ,幫助用戶方便快捷的獲得RocketMQ的消息發(fā)送和流數(shù)據(jù)處理能力。同年11月,我們將RocketMQ捐贈(zèng)給Apache(版本升級(jí)為4.0),目的是希望更多的企業(yè)開(kāi)發(fā)者加入到社區(qū)來(lái)共同發(fā)展RocketMQ。孵化期間,我們發(fā)現(xiàn)來(lái)自東南亞、包括美國(guó)的一些銀行開(kāi)始使用RocketMQ在跑PoC,這讓我們感到非常欣慰。我們希望在未來(lái),能夠?qū)ocketMQ建設(shè)成可以比肩Hadoop那樣的生態(tài)。
2017年,不到10個(gè)月的時(shí)間里,RocketMQ 從 Apache 畢業(yè),成為Apache下的頂級(jí)項(xiàng)目,和 Hadoop 同規(guī)格。基于RocketMQ在各類(lèi)場(chǎng)景下的豐富實(shí)踐,我們將互聯(lián)網(wǎng)業(yè)務(wù)對(duì)消息的需求進(jìn)行抽象,形成了一套能滿足大多數(shù)業(yè)務(wù)場(chǎng)景的標(biāo)準(zhǔn)模型,逐步發(fā)展成與廠商無(wú)關(guān)、平臺(tái)無(wú)關(guān)的分布式消息及流處理領(lǐng)域的應(yīng)用開(kāi)發(fā)標(biāo)準(zhǔn)– OpenMessaging,并與10月進(jìn)入Linux基金會(huì)。進(jìn)入到2018年,團(tuán)隊(duì)和社區(qū)開(kāi)始著手思考和構(gòu)建下一代消息引擎– Apache RocketMQ 5.0,并大力發(fā)展Messaging生態(tài),也希望這方面的專(zhuān)家能夠加入我們,加入社區(qū),一起打造OpenMessaging領(lǐng)域新標(biāo)準(zhǔn)。
二、如何深度參與社區(qū)共建
1、我們需要更多的社區(qū)角色:
通常社區(qū)會(huì)有PMC member、committer、contributor和user這些角色,但一些優(yōu)秀的國(guó)際社區(qū)有更多的生態(tài)角色,例如專(zhuān)欄作家,以一個(gè)Editor的身份,把開(kāi)發(fā)和使用過(guò)程中的經(jīng)驗(yàn)以文字的形式分享出來(lái),發(fā)表在自己的社交賬號(hào)或者社區(qū)官網(wǎng)的blog上,幫助其他開(kāi)發(fā)者更好的使用開(kāi)源產(chǎn)品,這對(duì)社區(qū)的建設(shè)是非常有幫助的。除此之外,Evangelist(布道師),Release Manager,Consultant包括各類(lèi)會(huì)議的Speaker也是非常重要的社區(qū)角色。
從去年開(kāi)始,我們?cè)诒本⑸钲陂_(kāi)展了線下的Meetup活動(dòng),豐富社區(qū)的交流方式,如果你有特別好的消息實(shí)踐,歡迎到我們的Meetup上來(lái)進(jìn)行分享。另外,我們也會(huì)更多的聆聽(tīng)來(lái)自用戶的聲音,如果大家所在的公司在大規(guī)模使用RocketMQ中遇到了問(wèn)題,也歡迎找我們交流。我們也在計(jì)劃進(jìn)行一些更聚焦的workshop,走進(jìn)企業(yè)。希望大家一起來(lái)共建Messaging生態(tài),探討領(lǐng)域發(fā)展方向。當(dāng)然,如果你有想法寫(xiě)一本關(guān)于Messaging或者RocketMQ方面的書(shū)籍,也歡迎聯(lián)系我們。
2、社區(qū)參與第一步 - 建立溝通渠道:
對(duì)于年輕的開(kāi)發(fā)者和開(kāi)源使用者,首先需要了解在遇到使用難題或問(wèn)題的時(shí)候,如何向項(xiàng)目成員尋求幫助。在社區(qū)中,我們幾乎不使用微信、QQ等溝通方式,而遵循國(guó)外尤其是 Apache 提倡的郵件列表溝通方式,而對(duì)待Bug或者新需求,我們通常鼓勵(lì) issue 提交、甚至是 PR(Patch) 提交。當(dāng)然,接下來(lái)會(huì)有一些新變化,為了讓大家更好的參與進(jìn)來(lái),我們計(jì)劃起草 RIP(RocketMQ Improvement Proposals),這一標(biāo)準(zhǔn)實(shí)踐很快會(huì)正式和大家見(jiàn)面。
3、了解 How to Contribute
我們?cè)谏鐓^(qū)的文檔界面上線了一頁(yè)“How to Contribute”的頁(yè)面,頁(yè)面詳細(xì)描述了開(kāi)發(fā)者如何深度參與到社區(qū)中。除了在社區(qū)提交問(wèn)題之外,開(kāi)發(fā)者們還可以通過(guò)上報(bào)疑似錯(cuò)誤報(bào)告、提交改進(jìn)或新功能的需求的方式深度參與到社區(qū)共建,例如我們?cè)谙蘖鞣矫孀龅倪€不夠精細(xì),開(kāi)發(fā)者可以起草一個(gè)改進(jìn),參與到社區(qū)的討論中,邀請(qǐng)社區(qū)的PMC member、committer來(lái)review自己的PR。
4、提交issue,在issue頁(yè)面發(fā)表評(píng)論
我們非常歡迎用戶和開(kāi)發(fā)者在使用 RocketMQ 的過(guò)程中,將你遇到的使用問(wèn)題或是改善建議發(fā)布到 issue 頁(yè)面,并對(duì)參與到已經(jīng)發(fā)布的 issue 的改善討論中。
5、貢獻(xiàn)代碼
開(kāi)源項(xiàng)目的持續(xù)發(fā)展一定離不開(kāi)開(kāi)發(fā)者對(duì)項(xiàng)目的共同維護(hù)和改善,我們鼓勵(lì)任何人貢獻(xiàn)代碼。為了確保貢獻(xiàn)者和審閱者的愉快貢獻(xiàn)體驗(yàn)并保持高質(zhì)量的代碼庫(kù),需要遵循我們?cè)?Contribute 中描述的貢獻(xiàn)過(guò)程。
6、參與到RocketMQ 社區(qū)項(xiàng)目中
我們?cè)贏pache上創(chuàng)建了一個(gè)倉(cāng)庫(kù)repository,名稱是rocketmq-externals,把社區(qū)中已有的大規(guī)模場(chǎng)景的應(yīng)用,或者我們認(rèn)為比較好玩的項(xiàng)目都放到了這里。開(kāi)發(fā)者可以選擇你們擅長(zhǎng)的項(xiàng)目,無(wú)論是適配RocketMQ的客戶端,例如Go語(yǔ)言SDK,還是運(yùn)行RocketMQ的Docker容器包括K8s Operator,或是 RocketMQ 上下游生態(tài)集成,開(kāi)發(fā)者都可以提交你的代碼,對(duì)項(xiàng)目進(jìn)行改進(jìn)與完善。
7、更多參與方式 - 代碼不是為參與社區(qū)共建的唯一方式
我們非常重視文檔的建設(shè),這是提高社區(qū)開(kāi)發(fā)者效率非常重要的方式,提供簡(jiǎn)明,精確和完整的文檔,并歡迎任何有助于改進(jìn)Apache RocketMQ文檔的貢獻(xiàn)。
三、展望未來(lái) - RocketMQ5.0
RocketMQ5.0 將基于云原生的理念,圍繞可運(yùn)維、可監(jiān)控、彈性、可恢復(fù)、敏捷 5 個(gè)維度來(lái)打造下一代分布式消息計(jì)算平臺(tái),全面提升RocketMQ的功能、性能、生態(tài)效能和場(chǎng)景應(yīng)對(duì)能力。計(jì)算方面,我們將基于存儲(chǔ)和計(jì)算分離的理念,打造一個(gè)精簡(jiǎn)的計(jì)算節(jié)點(diǎn)群,更貼近地面或邊緣設(shè)備的高效解決數(shù)據(jù)量不斷增大、訪問(wèn)端點(diǎn)不斷增多,但計(jì)算能力有限的需求場(chǎng)景。存儲(chǔ)方面,我們將更加精細(xì)化的控制內(nèi)存配置和回收,利用SPDK發(fā)揮在SSD新標(biāo)準(zhǔn)NVMe下的優(yōu)勢(shì),兼容各類(lèi)硬件設(shè)備,達(dá)到微秒級(jí)的端到端時(shí)延。同時(shí),團(tuán)隊(duì)也在積極尋求和全球高校合作,探索更前沿的技術(shù)實(shí)現(xiàn)以及應(yīng)用場(chǎng)景,努力挖掘用戶的癢點(diǎn),解決客戶的痛點(diǎn),創(chuàng)造產(chǎn)品的爽點(diǎn)。
? 提升周邊集成能力
RocketMQ5.0將基于 OpenMessaging 標(biāo)準(zhǔn)向上和向下拓展,提升生態(tài)效能。在聯(lián)機(jī)分析處理領(lǐng)域,對(duì)接Prometheus、ELK包括業(yè)務(wù)數(shù)據(jù),將來(lái)自上游的數(shù)據(jù)形態(tài)Metrics、Logs、Streams傳輸?shù)较掠蔚母黝?lèi)數(shù)據(jù)分析應(yīng)用上。在金融、游戲和電商領(lǐng)域,RocketMQ5.0 將進(jìn)一步優(yōu)化打磨內(nèi)核,提供更高的穩(wěn)定性與可用性。同時(shí),借助 OpenMessaging 提供更多語(yǔ)言的接入能力,包括 Infrastructure Native 的能力。在一些新興領(lǐng)域,如IoT場(chǎng)景中,基于計(jì)算和存儲(chǔ)分離的理念,借助物聯(lián)網(wǎng)中無(wú)處不在的“物”來(lái)分擔(dān)計(jì)算,從而解決Java在單機(jī)上支持海量設(shè)備的連接在線的不足的問(wèn)題,將上游的數(shù)據(jù)高效寫(xiě)入下游的TP或者AP系統(tǒng)中。
? 拓展場(chǎng)景能力
優(yōu)秀的產(chǎn)品和強(qiáng)大的技術(shù)都需要通過(guò)解決實(shí)際場(chǎng)景的業(yè)務(wù)問(wèn)題來(lái)詮釋自身的價(jià)值,RocketMQ5.0將在以下4個(gè)場(chǎng)景中進(jìn)一步提升應(yīng)對(duì)能力。在電子商務(wù)領(lǐng)域保證整個(gè)傳輸鏈上的消息不丟,提高交易數(shù)據(jù)的完整性;在金融領(lǐng)域,支持分布式事務(wù)下的多端調(diào)用,保證關(guān)鍵數(shù)據(jù)的一致性;在大數(shù)據(jù)領(lǐng)域,具備更強(qiáng)的天然的streaming能力,解決端到端的延遲,優(yōu)化用戶端體驗(yàn);在IoT領(lǐng)域,支持海量設(shè)備同時(shí)在線和海量topic消息隊(duì)列,保障雙向通信。
最后,和大家預(yù)告一下,接下來(lái)我們還會(huì)繼續(xù)在北京,上海,成都舉辦技術(shù)沙龍,歡迎大家報(bào)名參加,也歡迎領(lǐng)域?qū)<覀兒臀覀児餐e辦小范圍的workshop,豐富社區(qū)的交流方式。產(chǎn)品方面,可以提前透漏給大家的是,社區(qū)目前研發(fā)的多語(yǔ)言SDKs馬上就要對(duì)外開(kāi)放,我們也在研發(fā)IoT套件,這塊的Proposal很快也會(huì)和大家見(jiàn)面,歡迎大家參與進(jìn)來(lái),共建RocketMQ生態(tài)。
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
評(píng)論
查看更多