摘要:?9 月 25 日,Apache 軟件基金會官方宣布寇钉,阿里巴巴捐贈給 Apache 社區(qū)的開源項目 RocketMQ 從 Apache 社區(qū)正式畢業(yè)刀疙,成為 Apache 頂級項目(TLP)。Apache RocketMQ 是國內(nèi)首個非 Hadoop 生態(tài)體系的頂級項目扫倡,開源至今谦秧,RocketMQ 已經(jīng)被國內(nèi)外數(shù)百家企業(yè)廣泛使用。
寫在前面
2016 年 11 月 11 號, 對阿里巴巴中間件消息團(tuán)隊來說镊辕,有著極其特殊的意義油够。這一天,在光明頂上奮戰(zhàn)的小伙伴們見證了 RocketMQ 低延遲存儲架構(gòu)的成功試水征懈,完成了保障雙十一如絲般順滑的既定目標(biāo)石咬。在另一個戰(zhàn)場,歷時 3 個月的開源重塑之后卖哎,Apache RocketMQ Champion Bruce 代表團(tuán)隊正式啟動了 Apache 捐贈工程鬼悠。至此,RocketMQ 開啟了邁向全球頂級開源軟件的新征程亏娜。
截止今天焕窝,RocketMQ 進(jìn)入 Apache Incubator 已經(jīng) 7 個月有余。在這半年多的時間里维贺,團(tuán)隊走過很多路它掂,也經(jīng)歷了很多事。
第一次按照 Apache Way 走通 Apache 軟件發(fā)布流程溯泣,完成了在整個 IPMC 都極為罕見的 Rc3 發(fā)布壯舉虐秋,體現(xiàn)了中國團(tuán)隊的嚴(yán)謹(jǐn)、高效垃沦,贏得了社區(qū)的贊譽(yù)客给。
第一次吸納外籍 Committer - 日本博士 Roman。2 個月時間里肢簿,他提交近 20 個 Pull Request靶剑,推動 RocketMQ 跟 Apache 其它頂級社區(qū)項目合作,對社區(qū)起步做出了卓越貢獻(xiàn)池充。
第一次面向社區(qū)舉辦編程馬拉松桩引。PMC 成員全程跟進(jìn),幫助參賽選手評審設(shè)計收夸、Review 代碼坑匠。
第一次吸納 PMC 成員。在 RocketMQ 社區(qū)咱圆,PMC 是對 Committer 持續(xù)貢獻(xiàn)的進(jìn)一步 Merit笛辟。
第一次向 Apache 社區(qū)昭告 OpenMessaging 標(biāo)準(zhǔn)的愿景。緊接著, ASF Director Jim 毛遂自薦序苏,加入到 RocketMQ 超強(qiáng)豪華的全球 Mentor 陣營中手幢。
第一次面向國內(nèi)社區(qū)舉辦了大型 MeetUp。全球圖文現(xiàn)場直播忱详,5 場純技術(shù) Messaging & Streaming 干貨分享围来,傳達(dá)了團(tuán)隊誓將做好社區(qū),搞好生態(tài)的決心匈睁。
第一次……
人生就是一場跋涉监透,走久了,才知心酸航唆,才知艱難胀蛮,才有堅韌,才有渴望糯钙。前方的路粪狼,盡管遙遠(yuǎn),盡管顛簸包帚。但腳步依然乘客,追求依然乳绕,方向依然。
2017 年 8 月 3 號困鸥,團(tuán)隊正式發(fā)起了沖擊 TLP 的討論。接下來的一個月時間里剑按,討論和投票疾就,幾乎成了每天的必修課。終于吕座,搶在 Java 9 發(fā)布之前虐译,RocketMQ 正式通過董事會決議,結(jié)束了在 Apache 上的孵化吴趴,正式成為 Apache 340 多個頂級項目中的一員漆诽。這一刻,完全出自中國團(tuán)隊锣枝,來自阿里巴巴的分布式消息引擎成為全球互聯(lián)網(wǎng)中間件厢拭、大數(shù)據(jù)領(lǐng)域璀璨的新星。下一站撇叁,等待它的將是在國際舞臺上與世界頂級老牌消息中間件的激烈角逐供鸠。相信在 Apache 先進(jìn)的社區(qū)理念指引下,RocketMQ 社區(qū)生態(tài)會繼續(xù)蓬勃發(fā)展陨闹,完成我們所賦予它的光榮使命楞捂。
接下來薄坏,我們從產(chǎn)品、社區(qū)寨闹、生態(tài)這三個維度胶坠,分別回顧一下 RocketMQ 這半年多的 Apache 孵化歷程。
與 Apache 大多數(shù)頂級項目不同繁堡,RocketMQ 在進(jìn)入 Apache 之前沈善,Open Source 之路已經(jīng)走過了 3 個春秋。歷經(jīng)多次雙十一洗禮椭蹄,在國內(nèi)積累了一定的口碑闻牡,社區(qū)也有不錯的 Active Contributors,但這些還遠(yuǎn)遠(yuǎn)不夠绳矩。在正式開啟捐贈之前罩润,團(tuán)隊對 RocketMQ 甚至包括社區(qū)做了大量重塑工作。如國際化方面埋酬,在 Github 上利用 sidebar 特性重新設(shè)計編排了文檔哨啃。如今,User Guide, Quick Start, Architecture & Design, How to contribute, Community, FAQ 這些幾乎成為了團(tuán)隊新產(chǎn)品標(biāo)配的文檔結(jié)構(gòu)写妥。
代碼層面更是進(jìn)行了比較“激進(jìn)”地優(yōu)化拳球。如去除 GBK 字符,全面擁抱 UTF-8珍特。重寫 API JavaDoc祝峻。清理代碼,優(yōu)化代碼結(jié)構(gòu)扎筒。利用 JDepend 優(yōu)化組件之間的抽象依賴關(guān)系莱找。利用 Findbugs 掃描代碼漏洞,指導(dǎo)規(guī)范編碼嗜桌。交付方面奥溺,規(guī)范 Release 流程,New Features骨宠、Improvement and Bug 分類 Release note浮定。社區(qū)層面則開啟了全英式互動,發(fā)布問問題的技巧层亿。
經(jīng)過這些精心的準(zhǔn)備桦卒,RocketMQ 完成了從 3.0 到 4.0 的悄然升級。而 4.0 是個過渡版本(和 3.0 相比匿又,架構(gòu)層面沒有較大的改變)方灾,也是在 Apache 開啟孵化的版本。通過孵化碌更,團(tuán)隊重新認(rèn)識了軟件研發(fā)流程的重要性裕偿,尤其是像精細(xì)設(shè)計洞慎,代碼 Review,編碼規(guī)約嘿棘,分支模型拢蛋,發(fā)布規(guī)約等容易被忽略的過程。無以規(guī)矩不成方圓蔫巩,尤其是當(dāng)你置身于并領(lǐng)導(dǎo)一個全球協(xié)作的開源項目時,這些都顯得是尤為重要快压。
RocketMQ 的編碼規(guī)約是比較寬松的圆仔,至少在 4.0 這個版本上。與其它 Apache 頂級項目不同蔫劣,我們并沒有從編碼細(xì)節(jié)上去做過多約束坪郭,如靜態(tài)變量如何使用,日志怎么打脉幢,異常怎么捕獲歪沃、處理。而主要通過 Code Style, Copyright, Code Template 3 塊來進(jìn)行一些大方向上的約束嫌松。為了防止不遵循規(guī)約的代碼合并倉庫沪曙,我們通過 PR Checklist, checkstyle 和持續(xù)集成來自動化校驗行為。因為我們相信萎羔,凡是有人介入的地方液走,就存在 check 的必要。凡是有人介入的地方贾陷,就存在自動化的可能缘眶。
RocketMQ 的開源模式不是傳統(tǒng)意義上的開放內(nèi)核模式,而是和 Apache Hadoop 和 OpenStack 這一類開源平臺模式類似髓废,我們嘗試把開源世界和專有世界最好的結(jié)合起來巷懈,在真正意義上的協(xié)作平臺上生產(chǎn)專有產(chǎn)品。我們希望 Redhat慌洪,CentOS 和 Fedora 這樣的產(chǎn)品簇協(xié)同發(fā)展效應(yīng)也能體現(xiàn)在 RocketMQ 未來的演進(jìn)中顶燕。為了迎接這樣的挑戰(zhàn),團(tuán)隊必須從軟件研發(fā)流程方面做出改變蒋譬,構(gòu)建能夠同時支撐內(nèi)部割岛、開源社區(qū)以及商業(yè)化的生態(tài)體系。
RocketMQ 在設(shè)計之初就曾設(shè)想過未來 One Kernel 這樣的產(chǎn)品形態(tài)犯助。這些年下來癣漆,圍繞著它,團(tuán)隊打造了 AliwareMQ剂买、MetaQ惠爽、以及 Notify 3.0 等內(nèi)部癌蓖、商業(yè)化產(chǎn)品。隨著 RocketMQ 進(jìn)入 Apache婚肆,代碼的演進(jìn)變得愈加復(fù)雜租副,而傳統(tǒng)的 Master 分支模型很難滿足開源、商業(yè)化较性、集團(tuán)內(nèi)部和公有云用僧、私有云共用一個 RocketMQ 內(nèi)核這樣的需求。通過不斷的思考與實踐赞咙,我們通過引入鏡像倉庫機(jī)制解決了這一難題责循。具體講,就是通過在每個倉庫配置 master 和 develop 分支攀操,不同的倉庫直接由鏡像節(jié)點進(jìn)行轉(zhuǎn)換和特性緩沖院仿。這樣下來,在 Apache 上孵化的特性可以一路合并至內(nèi)部甚至輸出到公有云速和、私有云歹垫,在內(nèi)部孵化的特性也能以 PATCH 的方式反哺到開源社區(qū)。如下圖所示:
持續(xù)集成颠放、持續(xù)壓測排惨,持續(xù)交付
借助 Travis 和 Jenkins,我們搭建了兩套基礎(chǔ)設(shè)施碰凶。在 Github 上若贮,Travis 會對所有 commit,所有 PR 觸發(fā)持續(xù)集成痒留,這是它的一個強(qiáng)大之處谴麦。除此之外,它還支持跨 JDK伸头,跨平臺的 Matrix 驗證(不過很可惜匾效,OSX 平臺似乎一直都有問題)。在內(nèi)部恤磷,利用 Jenkins 2.0 的 Pipeline 實現(xiàn)了持續(xù)集成面哼,持續(xù)壓測,持續(xù)交付(Docker扫步,Pandora 以及 AWS Cloud魔策,Azure Cloud)。如下圖所示:
由上圖可知河胎,整個持續(xù)集成分為代碼靜態(tài)檢測闯袒,單元測試,集成測試,Sonar 質(zhì)量評測這個幾個 Stage政敢。對于單元測試其徙,不僅要覆蓋核心邏輯,而且要快(內(nèi)置 3 分鐘閾值喷户,超過就報錯和發(fā)郵件)唾那。無數(shù)實踐告訴我們,如果不夠快褪尝,就會有更多的同學(xué)在本地編譯時選擇跳過單測闹获,久而久之,單測就慢慢失去了意義河哑,變得愈發(fā)不可維護(hù)昌罩。要全,要快灾馒,還要可維護(hù)性。這對單測編寫者來說無疑是個巨大挑戰(zhàn)遣总,這就要求多線程之間的交互盡量避免依賴 sleep睬罗,自底向下的盡可能 Mock 依賴,動賓狀結(jié)構(gòu)的優(yōu)雅命名旭斥,斷言異常而不是拋出異常容达。
進(jìn)入 Apache 后,尤其在孵化階段垂券,學(xué)習(xí)并遵循 Apache 發(fā)布流程顯得尤為重要花盐。
上面這幅圖描述的是 Apache 孵化項目的發(fā)布流程」阶Γ快算芯、穩(wěn),這是 RocketMQ 團(tuán)隊第一次發(fā)布傳達(dá)給社區(qū)的信息凳宙∥踝幔縱觀所有 Apache 孵化項目,能夠在這么短的時間內(nèi)氏涩,用這么少的次數(shù) (RC3) 學(xué)習(xí)并走完發(fā)布届囚,用行動證明中國人同樣具備嚴(yán)謹(jǐn)且專業(yè)地做事態(tài)度。當(dāng)然是尖,我們也是幸運(yùn)地意系,幸運(yùn)地碰到了 Justin 和 Bruce 這兩位熱心、專業(yè)的 Mentor饺汹。這里蛔添,需要強(qiáng)調(diào)下 Release 生成的幾個重要文件,如下圖:
源碼 (src) 和二進(jìn)制文件 (bin) 被分別打包。asc 是一個簽名文件作郭,committer 使用自己的私鑰對分發(fā)包進(jìn)行簽名陨囊,任何人可以用我們對外公布的 512 位的公鑰進(jìn)行驗證。
另外夹攒,還有一個不得不提的事情蜘醋。Apache 對 License 進(jìn)行了嚴(yán)格的分類,比如 Apache License 2.0/1.1咏尝,BSD压语,MIT/X11 等屬于 Category A,這些協(xié)議與 Apache License 是兼容的编检,可以放心地引入胎食。對于 Category B 中的 License,比如 EPL 1.0允懂,MPL 1.0/1.1/2.0 等能夠以 binary 的形式引入厕怜。對于 Category X 中的 License 如 GPL,LGPL 則不能引入到產(chǎn)品當(dāng)中蕾总。
針對 License 的問題粥航,RocketMQ 在首次發(fā)布的時候,在社區(qū)里進(jìn)行了充分討論生百。如何處雙重 License 的依賴递雀,如何區(qū)分 Source 和 Binary Release 依賴的 License 問題,如何處理 NOTICE蚀浆。這些知識被我們“現(xiàn)學(xué)現(xiàn)賣”的用在了指導(dǎo)社區(qū)貢獻(xiàn)上面缀程,既加強(qiáng)了記憶,又很好地傳承給了社區(qū)市俊。
這是一個 RocketMQ way 的具體體現(xiàn)杨凑。針對 PR,我們設(shè)計了一套 Checklist摆昧,如下圖所示:
所有 PR 必須有 3+ Committer Review蠢甲,Committer 提交的 PR,盡量不要自己 Merge据忘。另外鹦牛,PR 的合并是個費時費力的工作,團(tuán)隊成員通過研究勇吊,編寫了一個自動化 Python 腳本曼追,巧妙地將原先幾分鐘的常態(tài)工作縮減到了幾秒鐘,一定程度上體現(xiàn)了中國工程師“懶中求勝”的匠心精神汉规。而 Jira礼殊,我們強(qiáng)調(diào) component驹吮,每個 component 都有 2 到 3 位 committer or maintainer 把持。Jira 的處理一般是需要經(jīng)過 Resolve 階段晶伦,最后才是 Close碟狞,并且詳細(xì)標(biāo)明受影響的版本,在哪個版本修復(fù)掉婚陪。
在產(chǎn)品篇章里族沃,我們主要從編碼規(guī)約,分支模型泌参,持續(xù)交付脆淹,發(fā)布規(guī)約等環(huán)節(jié)回顧了這半年來可喜的變化。接下來的社區(qū)篇沽一,我們將聚焦社區(qū)盖溺,重點介紹 Apache Way,RocketMQ Way铣缠,以及社區(qū)成熟度模型烘嘱。至于品牌 & 社區(qū)的 Building,業(yè)界也有很多實踐蝗蛙,如 DevRel蝇庭,JUG 等。這里歼郭,放張圖感受一下。
在 Apache 社區(qū)辐棒,一個很重要的理念病曾,Community over Code。社區(qū)是判斷一個孵化項目能否畢業(yè)的重要考核標(biāo)準(zhǔn)漾根。但這并不意味著 Code 就不重要泰涂。仔細(xì)回想一下,在你接觸過的所有 Apache 頂級項目中辐怕,有沒有給你留下深刻印象的 Code(請允許我拿代碼來說事逼蒙,代碼就像一面鏡子,是工程師的門面寄疏,也是工匠榮辱的最直接體現(xiàn))是牢。相信那些研究過大量 Apache 頂級項目的同學(xué),一定有和我一樣的感受陕截。Apache 在大力強(qiáng)調(diào)社區(qū)的今天驳棱,很容易給大家讓大家誤解 - 設(shè)計不重要了,代碼不重要了农曲。試想下社搅,如果產(chǎn)品的設(shè)計,產(chǎn)品的質(zhì)量不過硬,又怎么指望會有一個健康多元的社區(qū)呢形葬?所以合呐,我們重視社區(qū),但也重視設(shè)計笙以,重視代碼質(zhì)量淌实,重視產(chǎn)品帶給用戶的體驗。
上面這幅圖節(jié)選自之前 MeetUp 上的分享源织,是我們對于 Apache Way 的理解翩伪。
Community - Over Code,首先要認(rèn)識社區(qū)谈息,社區(qū)包羅萬象缘屹,有 Developers,Writers侠仇,Testers轻姿,Sysadmins,Devops逻炊,Users 等等互亮,但不需要 Employee。由 Employees 打造的社區(qū)是不健康的余素,不可持續(xù)的豹休,缺乏多元化。國際上一些大公司桨吊,早期參與 Apache 項目威根,一味想著控制社區(qū),殊不知 Apache 社區(qū)理念的精髓在于與社區(qū)视乐,與其它企業(yè)洛搀,其它個人貢獻(xiàn)者,培養(yǎng)協(xié)作佑淀,加速項目與個人的成長留美。社區(qū)不會憑空產(chǎn)生,不是把項目往 Github 上一丟就是開源了伸刃,然后社區(qū)就會自動產(chǎn)生谎砾。一個社區(qū)的經(jīng)營是需要花費心思的,發(fā)展一個社區(qū)成員捧颅,爭取一個國際貢獻(xiàn)者棺榔,這些都是一個長期經(jīng)營的過程。RocketMQ 社區(qū)的第一個國際貢獻(xiàn)者隘道,我們整整跟進(jìn)症歇、鼓勵了近 2 個月郎笆。當(dāng)然,還有不少老外也表達(dá)出了貢獻(xiàn)社區(qū)的興趣忘晤,萬丈高樓平地起宛蚓,先從最基本的工作做起,讓社區(qū)看到你的努力设塔,看到你持續(xù)跟進(jìn)凄吏、貢獻(xiàn)社區(qū)的決心,Apache Committer(認(rèn)證程序員)自然離你不遠(yuǎn)闰蛔。
Merit - Recognizing Your Work痕钢,參與社區(qū)的建設(shè)能獲得什么,一個 Contributor 在社區(qū)的所有努力是有目共睹和有跡可循的序六,提交了多少 Issue 和 PR任连?參與了多少 Code Review,郵件列表里是否總有真知灼見冒出來例诀,這一切都在 Github随抠、JIRA、和郵件列表里進(jìn)行了沉淀繁涂,在得到社區(qū)的認(rèn)可后拱她,Contributor 變成為了 Committer,Committer 變成為了 PMC Member扔罪。一步一步秉沼,社區(qū)認(rèn)可了你的貢獻(xiàn),你也獲得了不錯的成長矿酵。
Open Development - For Everything唬复,社區(qū)一切都是開放的,特別是對于開發(fā)坏瘩,每個人都可以參與到每行代碼中盅抚,從開發(fā)前的 DISCUSS漠魏,再到 Pull Request 中的 Code Review倔矾,甚至作為 User 使用方面的 Feedback。所有的討論柱锹,思想的碰撞哪自,甚至是爭論,都是 Public 的禁熏。對于國內(nèi)社區(qū)壤巷,我們一直在鼓勵所有線下 (包括 QQ) 的重要討論,在郵件列表里都能有所體現(xiàn)瞧毙,一切都是開放與透明的胧华,沒有私下的決定寄症。
Decision Making - Consensus & Votes,絕對的開放也會帶來一定的弊端矩动,如流程上的繁瑣與拖沓有巧。在社區(qū)做決議,首先需要通過在郵件列表中發(fā)起討論悲没,達(dá)成一致后篮迎,需要再發(fā)起一次投票,并至少等待 72 小時(考慮全球時區(qū))后才能宣布投票結(jié)果示姿。流程雖繁甜橱,但決議一旦通過,就堅決執(zhí)行栈戳,這也是一種社區(qū)執(zhí)行力的體現(xiàn)岂傲。
在學(xué)習(xí)和實踐 Apache Way 的過程中,團(tuán)隊也摸索出了一套我們稱之為 RocketMQ Way 的最佳實踐荧琼。
International Collaboration - 禁止中文注釋譬胎,允許 User 郵件列表使用中文提問,但 Dev 郵件列表必須使用英文命锄。關(guān)于幾個郵件列表的用途堰乔,請參考官方說明。
PR Management - Pull Request 提交脐恩、合并需遵循一定的規(guī)約 (checklist)镐侯;每個 PR 必須有足夠的單元測試,集成測試驶冒,有增量的代碼覆蓋率要求苟翻;PR 的合并有 3+ +1,Committer 提交的 PR 不要自己 Merge骗污。
Diversity Review - 對于 Committer 代碼實施 CTR(Commit then Review) 策略崇猫,對于 Contributor 則是 RTC(Review then Commit) 策略。
Branch Model - 采用雙主干模式(Master 與 Develop)需忿,秉持 One kernel 的理念诅炉。
Community CodeMarathon - 不定期的編程馬拉松,挖掘社區(qū)活躍的貢獻(xiàn)者屋厘,培養(yǎng)并輔導(dǎo)社區(qū)的深度參與者涕烧。
Ecosystem Assemble - 獨立倉庫,為社區(qū)項目安營扎寨汗洒。每個個體在貢獻(xiàn)之前议纯,首先要提交 Apache 的 ICLA。
One contributor, One Mentor - 每位 PMC 成員都有義務(wù)幫助社區(qū) Contributor溢谤,輔導(dǎo)并帶領(lǐng)他們熟悉 Apache Way瞻凤,成為 Committer 甚至是 PMC Member憨攒。
半年多的時間里,我們陸續(xù)在云棲社區(qū)阀参,CSDN浓恶,InfoQ 中文站、國際站發(fā)表了多篇技術(shù)文章结笨,撰寫國際論文包晰,在 ApacheCon、LinuxCon 等國際頂級開源峰會發(fā)表主題演講炕吸,全球圖文同步直播 Meetup伐憾。通過這一系列國際輸出,網(wǎng)站流量迎來了可喜變化赫模。
通過這幅圖可以看到树肃,美國現(xiàn)在已經(jīng)是 RocketMQ 全球第 2 大訪問國。這對團(tuán)隊即將開展的 Aliware MQ 國際戰(zhàn)略瀑罗,奠定了良好的基礎(chǔ)胸嘴。同時,這種持續(xù)走高的流量也在不斷鞭策著我們斩祭,寫高質(zhì)量代碼劣像,做高質(zhì)量產(chǎn)品,向全球輸出中國智 (質(zhì)) 造摧玫。
坦白說耳奕,RocketMQ 進(jìn)入 Apache 之初,并沒有針對這個模型做任何學(xué)習(xí)(討厭應(yīng)試教育)诬像。我們希望通過自己的理解和踐行屋群,完成全球社區(qū)的構(gòu)建,完成畢業(yè)坏挠。令人驚喜的是芍躏,當(dāng)團(tuán)隊 8 月份開始正式審視畢業(yè) TODO List 時,發(fā)現(xiàn) Apache 的理論指導(dǎo)和我們的實踐驚人的一致降狠。理解萬歲对竣!下圖是 RocketMQ 的社區(qū)成熟度評估。
作為國內(nèi)首個非 Hadoop喊熟、Spark 大數(shù)據(jù)生態(tài)下的 Apache 頂級項目柏肪,我們在打造多元化社區(qū)的同時姐刁,也在努力構(gòu)建以 Messaging 為 Core 的生態(tài)體系芥牌。之前提到過的,我們?yōu)樯鐓^(qū)生態(tài)貢獻(xiàn)者提供了單獨的 Apache 代碼倉庫聂使。這一做法壁拉,現(xiàn)在也在紛紛被其它 Apache 頂級項目所效仿谬俄。截止目前為止,來自社區(qū)貢獻(xiàn)的 RocketMQ-Console, RocketMQ-JMS, RocketMQ-Flume弃理,RocketMQ-CPP 等生態(tài)項目已經(jīng)在諸多公司內(nèi)部進(jìn)行了線上驗證溃论,像 RocketMQ-Druid,RocketMQ-Ignite痘昌,RocketMQ-Storm 等項目钥勋,代碼更是被合并進(jìn)對方倉庫,這也使 RocketMQ 和其它頂級開源項目辆苔、社區(qū)之間有了更多連接算灸。更多的生態(tài)項目介紹,請參考官網(wǎng)介紹驻啤。
上面這幅圖是團(tuán)隊圍繞著 OpenMessaging 標(biāo)準(zhǔn)而努力打造的生態(tài)體系菲驴。OpenMessaging 是團(tuán)隊多年來從事 Messaging 領(lǐng)域研究的一個經(jīng)驗提煉。經(jīng)過半年多的發(fā)展骑冗,這套標(biāo)準(zhǔn)已經(jīng)進(jìn)入 Linux 基金會赊瞬,接下來會進(jìn)入到 CNCF,成為云計算不可或缺的標(biāo)準(zhǔn)之一贼涩。而這套 API 級的跨平臺巧涧,跨語言標(biāo)準(zhǔn),會嘗試解決之前我們遇到但未曾徹底解決的所有問題遥倦。如下圖所示褒侧,分布式事務(wù),我們內(nèi)部的產(chǎn)品 MateQ 和 Notify 也有類似的特性谊迄,但這種分布式事務(wù)更多的是發(fā)送者分布式事務(wù)闷供,并不是真正意義上的分布式事務(wù)沟饥。負(fù)載均衡薛夜,在拉模式和推模式下策略會有所不同,消息本身的 sharding 也會因業(yè)務(wù)場景不同而不同技扼。分布式追蹤粮呢,主要是考慮 Linux CNCF 中的 opentracing婿失。協(xié)議橋接,主要是考慮如何和現(xiàn)有的標(biāo)準(zhǔn)啄寡,如 JMS 進(jìn)行無縫橋接豪硅。流計算,通過引入流計算算子挺物,在消息投遞過程中針對內(nèi)容進(jìn)行計算懒浮。Benchmark,類似 SPECJMS砚著,把所有 Messaging Engine 拉到同一基調(diào)上做性能測試次伶。
總結(jié)一下冠王,基于 OpenMessaging 的下一代的消息引擎 RocketMQ 5.0 主要會在四個領(lǐng)域持續(xù)發(fā)力:電子商務(wù),高并發(fā)下削峰填谷舌镶。物聯(lián)網(wǎng)領(lǐng)域柱彻,海量連接同時在線餐胀。大數(shù)據(jù)領(lǐng)域,吞吐為王骂澄。金融領(lǐng)域吓蘑,重要的是高可靠,數(shù)據(jù)冗余坟冲。
最后,我們再來看一個大家比較關(guān)心的問題:團(tuán)隊在開源上到底投入了多少健提?
原則上私痹,我們希望團(tuán)隊每個人投入一些時間(10%~20%)。時不時的復(fù)盤紊遵,我們驚訝地發(fā)現(xiàn)最終的投入要遠(yuǎn)遠(yuǎn)小于這個值。當(dāng)然匀奏,這也是團(tuán)隊現(xiàn)實所決定的学搜,除了開源,團(tuán)隊目前還有內(nèi)部聚磺、公有云炬丸、私有云的研發(fā)支撐工作。除了 RocketMQ矢沿,團(tuán)隊還在 AliwareMQ酸纲,Kafka,中繼等產(chǎn)品上持續(xù)耕耘栽惶。當(dāng)然疾嗅,更不能忘記 OpenMessaging,這一極具挑戰(zhàn)的規(guī)范演進(jìn)代承。自然而然的论悴,團(tuán)隊納新就成了迫在眉睫的事情,我們希望在分布式幔亥、大數(shù)據(jù)察纯、多語言架構(gòu)領(lǐng)域有較高造詣,有追求的同學(xué)加入團(tuán)隊饼记,而團(tuán)隊也會努力為大家創(chuàng)造極具挑戰(zhàn)的施展空間具则。我們重視成長,關(guān)注可持續(xù)發(fā)展崇裁。Apache RocketMQ 頂級項目的畢業(yè)只是一個開始束昵。前路漫漫,未來可期巴比!
始于 2017.8.03 晚,終稿于 2017.9.20 Apache 董事會決議前
本文為云棲社區(qū)原創(chuàng)內(nèi)容轻绞,未經(jīng)允許不得轉(zhuǎn)載政勃,如需轉(zhuǎn)載請發(fā)送郵件至yqeditor@list.alibaba-inc.com;如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容既棺,歡迎發(fā)送郵件至:yqgroup@service.aliyun.com 進(jìn)行舉報懒叛,并提供相關(guān)證據(jù),一經(jīng)查實胖烛,本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容诅迷。