今年的雙十一對阿里巴巴中間件消息團隊來講,註定是個不平凡的日子。在這一天,穩定性小組重點攻克的低延遲存儲解決方案成功地經受住了大考。整個大促期間,99.996%的延遲落在了10ms之內,極個別因爲GC引起的停頓在50ms之內,對於讀寫比例幾乎均衡的分佈式消息引擎來講,這一結果無不使人興奮。甚至能夠絕不誇張地講,即使拿到明年的Java one大會上,也一定是場很是吸睛的技術乾貨分享。接下來,團隊同窗會把相關的經驗提煉總結出來,期待能在接下來全球Qcon大會上爲小夥伴們帶去儘量多的乾貨分享。java
除此以外,更讓你們倍感欣慰是咱們終於爲贏得世界的尊重,擁抱世界走出了第一步,這一步走的着實不易,每走一步,回頭看看,都是記憶滿滿。正所謂,橋曾堅固,但已坍塌;路雖滄桑,但已破舊;街曾繁華,但已被拆;巷雖深遠,但已變舊。惟一不變的,是那生命裏留下的深深腳印。git
捐贈最好的項目給Apache~ 這個想法,最先是14年中旬,在開發maven dependency mediator這個開源組件的時候冒出來的。當時,爲了解決中間件組件依賴問題,我研究分析了業界最主流的開源方案,有Maven官方的,也有民間的,甚至研究了Gradle的解決方案,很惋惜,不知道是否是咱們寫代碼相比老外比較隨意,仍是說咱們的規模達到了讓組件依賴熵混亂不堪的境界,必須本身着手擼這麼個輪子(平心而論,這些年爲各種國際開源社區沒少貢獻ISSUE或者PR。但即使如此,心中那種擼輪子的」惡念」時不時會浮現)。因而乎,着手寫了這麼一個組件。接下來問題來了,怎麼去維護,怎麼作可以持久的去演進這款組件?相信喜歡擼輪子的童鞋都有這樣的經歷,產品從0到1容易,再從1再到0可就難了去了。放眼望去,這方面作的最棒的無非就是FastJson了,這麼些年的堅持,爲你們帶來了極盡優化的性能(不只性能,功能方面也不落後於同類產品)體驗。可以持久專一,不斷演進才應是我輩應該追求的開源情懷啊。github
回過頭來,咱們再來看這個maven組件項目,爲了可以吸引更多的外籍朋友反饋,專門寫了一個長篇E文,系統化介紹怎麼作二進制兼容依賴,從最初的設計編碼,到運維部署都有一套相對體系化的方案探索出來,爲此還曾想過發表專利來保護下這塊,不事後來由於事情多也就擱淺了。到此,咱們發現,上面提出的讓人糾結的問題仍是沒有解決,這個項目怎麼發展?由於以前的調研過程當中,從maven的Codehaus,也就是maven最大「非法」(非官方)插件集散地獲得了一些靈感 - 捐贈給它。Okay,接下來,結果你們也看到了。這個小項目發展到1.0.2版本的時候,被我擱淺了(說實話,這個項目的代碼質量在當時那種狀況,算是不錯了。但我要吐槽一下Maven自身的單測框架和集成測試框架,問題仍是挺多的。無論如何,若是有童鞋但願展這個項目,能夠聯繫我,截止目前,放眼望去,業界仍是缺乏這麼一個好用的兼容檢測組件,這裏面仍是有一些很是好玩的想法我沒有精力落地掉:-))。爲何擱淺?由於當時本身的工做重心主要在分佈式消息引擎、消息推送這塊,而且也是公司這塊幾個中間件的貢獻者以及負責人。能不能聚焦一下,那些工具擼起來當然爽快,但後續的發展着實讓人操心。俗話說,衆人拾材火焰高。能不能找幾個技術好手把分佈式領域的精髓都體如今某個產品中,和當時消息團隊的負責人誓嘉(很是低調的厲害傢伙:))閒暇時間聊起來,聊到這塊,聊到開源,聊到分佈式技術,聊到業界分佈式消息引擎,聊到它們將來的發展。隨後,再隨後,方向漸漸明晰了,因而便有了捐贈Apache這個如今看來最最基礎的一步。weex
我我的是比較喜歡聆聽批評,尤爲是足球和開源這塊,等等,姑且先拋開中國男足,今天只談開源。有不少人講,國內的開源氛圍很差,不少都是隻談績效,沽名釣譽,尤爲是幾個大廠甚至把風氣都帶歪了。即使開源了,設計、源碼、文檔、社區也是很難持續跟進。不能否認,這樣的事實也許存在。但今天,咱們把RocketMQ放出來,就是想給你們一個證實,一塊兒來看看由內而外,而後再由外而內這種模式到底能不能行得通。咱們彼此內心很是清楚,開源與商業化相輔相成,水能夠載舟,也能夠覆舟。產品、技術、商業如何可以打好配合,激發出1+1+1大於3的價值來,這也是咱們今年思考最多的問題。架構
RocketMQ是阿里巴巴在2012年開源的第三代分佈式消息中間件,不只在傳統高頻交易鏈路有着低延遲的出色表現,在實時計算等大數據領域也有着不錯的吞吐。開源至今,社區參與度很是高,國內擁有超大規模的活躍交流羣,ISSUE上更是收錄了來自全球數百個高質量的話題交流以及問題沉澱。除此以外,在產權保護、知識輸出這塊,有着接近20篇專利的沉澱。去年,RocketMQ得到了中日韓開源論壇CJK OSS大獎,今年早些時候又進入歐美主流開源門戶網站Awesome-java視野,意味着RocketMQ正式走出國門。也正是基於如此卓越的表現,爲後續Bruce,Brian等歐美大拿引路Apache奠基了良好的羣衆基礎。框架
在它之上,咱們構建了本身的內部版本MetaQ,還有雲產品MQ。經歷了幾年線上近乎苛刻的場景驗證,在雙十一當天消息容量達到萬億級的體量。這中間,有很多小夥伴默默地付出着(這裏面還有一個小插曲,社區的朋友爲感謝RMQ項目,捐贈了近500 RMB,不過咱們把這些錢一次性捐贈給公司的公益事業啦:) )。而今天,咱們將這些毫無保留的開源出來,就是爲了讓更多人受益。阿里巴巴是個很講究感恩的公司,咱們取之於開源不在少數,是時候體系化地反哺社區了。什麼樣的社區能讓Alibaba的產品走上更健康的道路呢,思考來思考去,還真只有Apache。相信在Apache這個平臺上,沒有人會去偷懶,沒有會想着走捷徑。今天也只是一個孵化項目,想不想畢業,能不能畢業,徹底取決於咱們對於開源精神的理解和詮釋。我想,應該沒有人會拿名族大義開玩笑吧(呸呸呸,扯到這上面來了。其實就是要給公司以及國內的同行們帶個好頭,作個表率,爭口氣:) )。畢竟,咱們表明中國,表明中國最早進,最執着的那批技術探路者。運維
接下來,進入重點。一塊兒看看Apache的整個捐贈歷程吧。整個歷程始於2014年,終於2016年(這裏用終於不是很穩當,咱們只是剛開始走上正路而已)。想法可能每天有,但怎麼落地,尤爲是這個想法的落地,很是具備挑戰。在研究Apache官網關於捐贈流程的文章後,咱們甄選了幾位MQ方面很是有經驗的老美,和他們聊聊吧。在很誠懇的給他們講述了咱們但願捐贈給Apache的訴求,Brian(ActiveMQ PMC member,Groupon CTO)率先答應了會幫助咱們。接下來,開始準備Proposal唄。很快,初稿就出來了。通過和Brian反反覆覆幾回溝通,不斷修改,算是有點模樣了。這時,問題來了,咱們失去了和Brian的聯繫。雖說老外很是喜歡度假式放鬆,但此次回來可真聯繫不上了。就像斷線的風箏那樣,咱們無所是從。接下來,你們也看到了,這件事情基本上被擱淺了。在John(JCP專家組成員)的郵件裏,他也用folded out這個詞來問我,究竟是什麼緣由讓大家中途擱淺了呢。Okay,擱淺的緣由講清楚了。接下來,時間來到了2015年。經過朋友的引薦,結識了Kylin的總架構師蔣旭(技術上任何牛逼的詞均可以往上貼,很是低調的榜樣)以及在Apache上的主推手Luke(很是Nice的一位GG,Kyligence聯合創始人)。又在Apache 亞洲路演北京站和他以及後來也是咱們的Mentor之一的姜寧(Apache多個項目的PMC member,committer)進行了交流,請教了一些禁忌事項。至此,咱們捐贈進程又活躍了起來。再後來呢,Luke和姜寧也成爲阿里巴巴RocketMQ IPMC國內的兩位mentor。不只如此,他們也欣然接受了阿里巴巴weex團隊的邀請(具體牽線人應該是咱們可敬的JStorm負責人紀君祥:)),繼續在Apache進程中爲咱們「保駕護航」。說到這裏,最最重量的小夥伴要等登場了。除了mentor,咱們還須要徵集最最重要的champion候選人。Brian這條線斷了,須要咱們再挖掘一位貴人相助。這個時候「大拿「Bruce(ActiveMQ in Action的做者,這裏我不想過多描述他在開源領域的傑出貢獻,感興趣的童鞋可自行google)出現了。給我印象最深的是Bruce一上來就問了我5個「究極」的問題:maven
是否瞭解Apache 孵化進程,是否知曉ASF 項目的一些基本要求分佈式
是否聯繫過其餘Championide
是否聯繫過其餘Mentor
是否聯繫過Apache ASF Membe
進入Apache後,RocketMQ會怎麼發展
固然,回答這些問題應該不成問題。但從這幾問題看得出來,Bruce很是有經驗,也很是有心的在嘗試幫助咱們。此後的歲月裏,咱們保持着高頻度的郵件來往,前先後後大概接近100封吧。考慮到時差,這一來一去,也就2個月過去了。期間又恰逢Bruce金婚19年(由衷的祝福),中間出去旅行了一陣子。很快,一個重要的日子來了。一天,Burce問我」準備好了嗎,咱們即將開啓Apache之旅「。個人回答也毫無猶豫,」Let’s Go~「一切都在平穩的向前推動着。雙十一當天,迎來了投票。預料之中的是,社區很是活躍的John對咱們提出了幾個犀利的問題,對咱們的社區數據提出了疑問。本着實事求是的原則,我公開郵件加私信的方式將事情的原委和他一一道來,疑慮擔憂算是打消了。這裏面還有一個小插曲,在你們」交涉「期間,來自Apache董事會的President和Vice chirman也來幫咱們說話,用文化差別,包容性等幫咱們解困。真的要很是很是感謝他們。
如今回想起來,John爲何會問那幾個犀利的問題,主要緣由來自他也是ActiveMQ PMC成員,要知道咱們網羅了3位ActiveMQ的VP來幫助咱們。並且按照Bruce的建議,Proposal里加入了和Apache ActiveMQ和Kafka的客觀對比。個人媽媽呀,這一舉,爲咱們帶來了這麼多沒必要要的麻煩。在諮詢了Bruce以後,咱們的Proposal並無刪除這個對比,可是稍微聚焦了一下咱們的優點。就這樣,看似平穩的投票朝着很是好的方向發展了。
這還沒完。接下來,更有意思的事情出現了,Apache Trafodion項目的Release Manager開了一個專題,題目爲 - China Contribution. (was: RocketMQ Incubation Proposal)。個人媽媽呀,這跟RocketMQ有毛線關係,實在看不下去了,適時地發表了個人看法。在這個討論裏,你們主要聚焦的問題是Trafodion項目裏,來自中國的contributors喜歡用QQ,而不是郵件進行溝通,這讓他們非常頭疼。說到這,你們想必也看到了,國內其實仍是有不少很是樂於開源的同窗活躍在Apache社區的。另外,因爲標題太過於刺眼,好玩的事情出現了。中國人嘛,看到有人扯到跟中國開源相關的事情,你們不樂意了。Luke,姜寧,陳亮(華爲Apache Carbondata孵化項目負責人),包括Databricks那個華人GG,都發表了防護性「聲明」。因爲各類緣由,中國人沒法郵件,沒法google,因此才。。。最後的結果你們想必也猜到了,不可能有結果,沒有結果可能就是最好的結果。因此這裏給你們的建議就是,若是但願讓國外的小夥伴參與進來,就試着把本身的英語拾起來吧,註釋,討論以及一些必要的文檔嘗試用英語,本地化社區能夠有非英語支持頻道!
通過了這麼多折騰,投票結果總算出來了,還不算壞 - 10票帶binding的+1,無反對票,正式進入孵化期。孵化成功後有望成爲國內首個互聯網中間件在Apache上的頂級項目,成爲全球繼ActiveMQ,Kafka以後,分佈式消息引擎家族中的重要成員。這次捐贈,也意味着以MQ爲表明的互聯網中間件在新興物聯網,大數據領域會發揮着愈來愈大的做用。另外,我必須提一下,雖然目前大數據技術」橫行當道「,尤爲以Spark和Hadoop爲陣營的各大開源平臺層出不窮(看看近些年那些最活躍的那些Apache產品)。小夥伴要小心,大數據背後的那些分佈式技術都是相通的,看問題學技術要掌握本源,只有掌握了最根本的,在技術廣袤的海洋裏,你纔不會迷失。另外,也正是經過此次Apache之旅,讓我深入意識到在社區裏面,有着大量的MQ 愛好者,若是能激起這些久經沙場的國外大拿的共鳴,那麼這勢必將是一個充滿競爭力的社區。
從這些經歷中,你們能夠清晰地看到,捐贈從想法醞釀到成型,再到落地,前先後後接近一年半。中間也經歷了各類曲折。回過頭來看,這些都是寶貴的財富,團隊也在不斷反思和總結。整個投票過程,團隊核心Committer全程參與,很好的近距離體驗了Apache Way,爲後續其它產品的輸出奠基了堅實基礎。
再接下來,也是我最想分享的。Apache RocketMQ接下來如何發展。你們知道,咱們在雲上圍繞着RMQ作了雲端版本的消息引擎MQ,像發送者事務,消息軌跡這些功能都是集成在MQ中的。一個初具規模的軟件產品,通常都會有社區版和商業版兩種受權。RocketMQ和MQ二者之間,也是這樣的關係。因此也請你們理解咱們在開源版本和商業版本之間的不一樣發展路線。這二者如何可以相互配合,互相補充,共同繁榮,在全球都是一個不易解的問題。不過,咱們能夠承諾,只要是團隊開源出來的,必定是在阿里久經考驗的臻品,並且質量會愈來愈好,愈來愈趨向標準化。除此以外,爲了更透徹的響應Apache社區關於多元社區文化的理念,在新的contributor和committer這塊,咱們會加大力度扶持、甄選具備開源情懷的童鞋,不管國籍,靠譜便可:) 能在大數據技術林良滿目的今日,國內自主研發的互聯網中間件從中殺出一條血路,向着擁抱全球規範的道路前行。這條路不容易走,但方向對了,就不怕遠~
到這裏,但願那些有志於打造世界頂級互聯網中間件的同窗加入咱們,幫助咱們,監督咱們,讓咱們一塊兒打造全球最棒的消息引擎(不只如此,咱們還有更好玩的產品在後面),攜手擁抱分佈式領域最值得期待的規範體系。
路纔剛剛開始,若是還有夢想,那就帶着靈魂出發吧~
方向,節奏,專一,激情~
Alibaba 馮嘉
寫在RocketMQ Apache捐贈投票後的第三天,終稿於11.22晚