Dubbo作者亲述:那些辉煌、沉寂与重生的故事
摘要:?Dubbo 這個(gè)名字,最后會(huì)變成一個(gè) Apache 的商標(biāo),會(huì)成為一個(gè)在 GitHub 上有 2 萬(wàn)多人關(guān)注、一百多人參與貢獻(xiàn)的超級(jí)項(xiàng)目。
梁飛在 2011 年開(kāi)源 Dubbo 這個(gè)項(xiàng)目的時(shí)候,完全沒(méi)有想過(guò),Dubbo 這個(gè)名字,最后會(huì)變成一個(gè) Apache 的商標(biāo),會(huì)成為一個(gè)在 GitHub 上有 2 萬(wàn)多人關(guān)注、一百多人參與貢獻(xiàn)的超級(jí)項(xiàng)目。在自己退出這個(gè)項(xiàng)目多年后,Dubbo 仍在野蠻生長(zhǎng),并煥發(fā)新機(jī)。
從商業(yè)公司開(kāi)源出去的產(chǎn)品會(huì)變成什么樣?開(kāi)源是否一定要按照某種既定的方式去生長(zhǎng)?還是說(shuō)開(kāi)源的世界有足夠的包容性、開(kāi)放性,能夠允許各種各樣的創(chuàng)作在其中成長(zhǎng)?且看本次二叉樹(shù)——Dubbo 項(xiàng)目的故事。
嘉賓簡(jiǎn)介
梁飛(虛極),2009 年加入阿里巴巴,負(fù)責(zé)中間件的開(kāi)發(fā),Dubbo 開(kāi)源分布式服務(wù)框架作者,HTTL 開(kāi)源模板引擎作者,QCon 優(yōu)秀出品人。 2012 年加入天貓,負(fù)責(zé)手機(jī)天貓 APP 的技術(shù)團(tuán)隊(duì),見(jiàn)證了天貓雙 11 無(wú)線化全過(guò)程。熱衷參與開(kāi)源社區(qū)建設(shè),傳播服務(wù)化,SOA,框架設(shè)計(jì),移動(dòng)應(yīng)用等架構(gòu)設(shè)計(jì)理念。
Dubbo 項(xiàng)目誕生于 2008 年。梁飛最早進(jìn)入阿里的時(shí)候,Dubbo 項(xiàng)目還沒(méi)有 Dubbo 這個(gè)名字,那時(shí)的 Dubbo 還是一個(gè)阿里內(nèi)部的系統(tǒng)。2010 年,Dubbo 項(xiàng)目進(jìn)行了重構(gòu)。
“2009 年下半年主要在修 bug,到了 2010 年初的時(shí)候覺(jué)得這個(gè)架構(gòu)實(shí)在是不堪重負(fù),覺(jué)得改起來(lái)太痛苦了,于是就重寫了。”
從 1.0 進(jìn)入 2.0,梁飛推動(dòng)了大量的工作,同時(shí)繼續(xù)在 JavaEye 寫著他的博客。
“寫博客對(duì)你有什么影響?”
“在社區(qū)里面看別人的博客,他們也在寫一些開(kāi)源軟件,大家互相看博客,然后就認(rèn)識(shí)了。推薦我來(lái)阿里的朋友就是當(dāng)時(shí)圈子里認(rèn)識(shí)的。”
2011 年的阿里,憋了一股勁兒要成為一家技術(shù)人向往的企業(yè)。那個(gè)時(shí)候,開(kāi)發(fā)者剛剛成為國(guó)內(nèi)各大廠商爭(zhēng)相奪取的寶貴資產(chǎn)。靠什么吸引最頂尖的開(kāi)發(fā)者?黑客文化。工程師文化。開(kāi)源文化。
“那時(shí)候公司覺(jué)得要做一些開(kāi)源的事情,一個(gè)是反哺開(kāi)源界,同時(shí)也希望通過(guò)開(kāi)源來(lái)提升公司的影響力。”
當(dāng)時(shí)在淘寶、在阿里 B2B,都有團(tuán)隊(duì)在推動(dòng)開(kāi)源。阿里 B2B 這邊決定先拿 Dubbo 項(xiàng)目開(kāi)源出去。
“大概在 2011 年初做了很多剝離的工作,也把文檔做了梳理。我們并沒(méi)有做很強(qiáng)的推廣,我們自己在技術(shù)群里發(fā)了一些文章,就有人開(kāi)始在用了。”
“那個(gè)時(shí)候的團(tuán)隊(duì)多少人?我看到你們有一張六個(gè)人團(tuán)隊(duì)的照片。”
“人員的變化還是挺多的,六個(gè)人是頂峰時(shí)期,是我們知名度上來(lái)之后加入我們的。我們平時(shí)開(kāi)發(fā)基本上就是一到兩個(gè)為主。”
“有外面的人來(lái)貢獻(xiàn)代碼嗎?”
“有很多人給我們貢獻(xiàn)代碼。還有很多公司請(qǐng)我們來(lái)跟他們講。”
“還有公司問(wèn)說(shuō)能不能我們付一點(diǎn)錢,這樣的話他們覺(jué)得出了問(wèn)題可以找我們。”
“但是我們當(dāng)時(shí)沒(méi)有這種機(jī)制。”
一年時(shí)間很快過(guò)去了,Dubbo 的用戶越來(lái)越多,有知名汽車廠商、證券廠商、水泥廠商、電器廠商、電商廠商。
“當(dāng)時(shí)來(lái)這么多公司,在你的預(yù)期之內(nèi)嗎?”
“超出我的預(yù)期。”
就在這個(gè)時(shí)候,發(fā)生了一件大事:阿里巴巴集團(tuán)要強(qiáng)化 One Company,開(kāi)始進(jìn)行架構(gòu)調(diào)整。技術(shù)層面,整個(gè)公司大統(tǒng)一,就希望不要重復(fù)建設(shè),但凡相同的項(xiàng)目都要合并。
當(dāng)時(shí)的淘寶有一個(gè)項(xiàng)目叫做 HSF,也是一個(gè)中間件服務(wù)框架,跟 Dubbo 做的事情高度重合。
“一開(kāi)始說(shuō)可以讓 HSF 合并到 Dubbo 里面來(lái),給了我們?nèi)齻€(gè)月時(shí)間要把它們整合起來(lái)。”
HSF 項(xiàng)目的作者林昊(畢玄),也是當(dāng)時(shí)國(guó)內(nèi) Java 領(lǐng)域的知名技術(shù)領(lǐng)袖。在 OSGi 非常流行的時(shí)候,畢玄可能是國(guó)內(nèi)能夠把 OSGi 解釋的最清楚的人之一。
HSF 和 Dubbo,雖然做的事情高度重合,但是設(shè)計(jì)理念不怎么一樣,雖然有些碰撞,但最終目的還是為了“強(qiáng)強(qiáng)聯(lián)合”。
“合并的時(shí)候,整個(gè)淘系都在用 HSF,而阿里金融、集團(tuán)、B2B 都在用 Dubbo。”
“時(shí)間沒(méi)有達(dá)到預(yù)期,還是沒(méi)合并起來(lái)。但其實(shí)我們把兩邊的協(xié)議都兼容好了。”
“后來(lái)就決定反向合并,把 Dubbo 合并到 HSF 里面去。”
“你當(dāng)時(shí)覺(jué)得應(yīng)該合并嗎?”
“我覺(jué)得協(xié)議能互通是有好處的,并不是壞事。我覺(jué)得他們做的挺好,把兩邊的設(shè)計(jì)理念全部整合在一起了。”
不久之后,Dubbo 團(tuán)隊(duì)調(diào)整,去到了各個(gè)地方。從外面看來(lái),Dubbo 項(xiàng)目從 2014 年之后就再也沒(méi)有更新過(guò)。倒是當(dāng)當(dāng)網(wǎng)開(kāi)發(fā)的擴(kuò)展版本 Dubbox 后來(lái)持續(xù)發(fā)展,被圈內(nèi)人評(píng)價(jià)為“墻內(nèi)開(kāi)花墻外香”。
“你會(huì)不會(huì)覺(jué)得建立共識(shí)是一個(gè)特別困難的事情?”
“我覺(jué)得任何東西必須要有一個(gè)主導(dǎo),但這個(gè)東西其實(shí)沒(méi)有對(duì)錯(cuò)。一個(gè)設(shè)計(jì)是沒(méi)有對(duì)錯(cuò)的,有些人可能就是不會(huì)認(rèn)同你這個(gè)共識(shí),但你總是能找到認(rèn)同你共識(shí)的人。”
“我就是認(rèn)為越簡(jiǎn)單越好,我的設(shè)計(jì)原則就是一定要實(shí)用。增加的復(fù)雜度越小,能帶來(lái)更大的收益,我覺(jué)得就值得。”
“那么,你要怎么吸引那些能夠認(rèn)同你的人到你的身邊來(lái)?在他們還不知道你的時(shí)候。”
“我會(huì)去其他團(tuán)隊(duì)認(rèn)識(shí)人,或者在圈子里面認(rèn)識(shí)人,我會(huì)跟他去聊我的理念,我會(huì)去分享。有人特別認(rèn)同的話,他就會(huì)來(lái)。”
就在所有人都以為 Dubbo 項(xiàng)目已經(jīng)沒(méi)有未來(lái)的時(shí)候,事情又出現(xiàn)了變化。
2017 年 9 月,就在項(xiàng)目已經(jīng)將近 3 年沒(méi)動(dòng)靜的時(shí)候,Dubbo 連續(xù)發(fā)布了好幾個(gè)新版本,并且開(kāi)始在內(nèi)部招募對(duì) Dubbo 感興趣的同事。新版本背后的主力開(kāi)發(fā)團(tuán)隊(duì)是阿里巴巴中間件團(tuán)隊(duì),其中一個(gè)重要的人名叫北緯,他從 2017 年 7 月開(kāi)始接手 Dubbo。在一次對(duì)外公開(kāi)的采訪中,北緯說(shuō)到:
“我對(duì) Dubbo 的了解主要來(lái)自梁飛在 JavaEye 的系列文章,再通過(guò)自己閱讀源碼,以及在內(nèi)部 RPC 框架對(duì) Dubbo 兼容的工作中學(xué)習(xí)所得。”
梁飛曾經(jīng)在 2015 年寫過(guò)一個(gè)繼續(xù)推動(dòng) Dubbo 的規(guī)劃,找了很多人聊過(guò):找過(guò)開(kāi)源委員會(huì),找過(guò)內(nèi)部的朋友,找過(guò)外面的朋友,希望能共同把這個(gè)事情繼續(xù)推起來(lái)。但是,梁飛已經(jīng)沒(méi)有那么多時(shí)間可以投入到 Dubbo 上。他當(dāng)時(shí)在做天貓客戶端。
“不管是誰(shuí),靠一腔熱血都很容易涼掉。”
有的開(kāi)源項(xiàng)目,通過(guò)志愿者們投入各自的業(yè)余時(shí)間活下去。但我們應(yīng)該要求所有的開(kāi)源項(xiàng)目都能做到這一點(diǎn)嗎?事實(shí)上,用戶也不會(huì)愿意將自己重要的東西跑在單純靠志愿者們的業(yè)余時(shí)間堆砌起來(lái)的項(xiàng)目上——尤其是企業(yè)用戶。
Dubbo 是中間件項(xiàng)目,用戶一定是企業(yè)。企業(yè)用戶寧愿花錢,有人給他提供服務(wù),而不是搞來(lái)一堆免費(fèi)而沒(méi)有保障的東西,自己為所有的問(wèn)題負(fù)責(zé)。
Dubbo 的轉(zhuǎn)機(jī),在于阿里云的流行。
2017 年的阿里云,發(fā)現(xiàn)有一批客戶上云之后,想要用 Dubbo。因?yàn)樗麄?Dubbo 已經(jīng)用的很熟了,不想因?yàn)樯显贫黄雀淖冏约旱氖褂昧?xí)慣。
于是,阿里云就把 Dubbo 服務(wù)作為自己的一個(gè)產(chǎn)品,賣給了這些客戶。
但是,客戶們又提出了一個(gè)問(wèn)題:
“你看你們 Dubbo 都不怎么更新代碼了是吧?你們自己都不維護(hù)了,我們用你的框架就覺(jué)得特別不放心。”
這下好了,真正的客戶提出要求了。提升客戶對(duì) Dubbo 的信心,成為了一件在公司層面有價(jià)值的事情。
“怎樣提升客戶對(duì) Dubbo 的信心?”
“讓它進(jìn)一步升級(jí)。”
“最好的辦法是什么?”
“捐給 Apache。”
北緯帶動(dòng)著他的團(tuán)隊(duì),將 Dubbo 項(xiàng)目捐給了 Apache。2018 年初,Dubbo 項(xiàng)目正式進(jìn)入了 Apache 的孵化器。
一邊是 Apache Dubbo 重啟后的第一個(gè)里程碑版本 2.7.0 進(jìn)入社區(qū)投票階段,并將作為社區(qū)的畢業(yè)版本;另一邊,Dubbo 正在從一個(gè)微服務(wù)領(lǐng)域的高性能 Java RPC 框架,演進(jìn)到微服務(wù)框架 Dubbo Ecosystem,打造出一個(gè)完整的微服務(wù)生態(tài)。而此時(shí),距離去年 Dubbo 重啟僅過(guò)一年有余。
我們?nèi)フ业奖本?#xff0c;希望他聊聊 Dubbo 的未來(lái)。北緯說(shuō),還是讓梁飛跟我們多講講。
“你覺(jué)得什么是開(kāi)源的精神?”
“開(kāi)源的精神,就是大家的智慧能共同成長(zhǎng)。”
“你覺(jué)得中國(guó)的開(kāi)源現(xiàn)在有哪些做得好的地方和不足的地方?”
“我覺(jué)得中國(guó)的開(kāi)源最缺對(duì)社區(qū)的重視,很多都只是把代碼 push 出來(lái),有些甚至連文檔都不完善,好像人家愛(ài)用不用,出了問(wèn)題也不是我的事。但這可能是一個(gè)初級(jí)階段,慢慢會(huì)成熟起來(lái)。但我覺(jué)得好的地方就是,大家都相信開(kāi)源的力量。”
“您會(huì)不會(huì)覺(jué)得中國(guó)企業(yè)做開(kāi)源,功利心特別重,光去看這個(gè)東西是不是有用?”
“輸出技術(shù)影響力是吧?我覺(jué)得一個(gè)開(kāi)源社區(qū)要能夠一直運(yùn)作下去,而且能跟上時(shí)代的潮流,其實(shí)是要與時(shí)俱進(jìn)的。我覺(jué)得做開(kāi)源,就是期望這個(gè)東西一直有生命力,這個(gè)作品能夠活多久應(yīng)該作為它的核心目標(biāo)。”
“那您覺(jué)得 Dubbo 還能活多久?”
“我覺(jué)得技術(shù)的革新其實(shí)挺快的,不革新的話,就有淘汰的危險(xiǎn)。但是在這個(gè)節(jié)點(diǎn)上進(jìn)行一次革新的話,我覺(jué)得它還有很長(zhǎng)的生命力。”
“那是什么樣的革新?”
“任何技術(shù)一定是沒(méi)有終點(diǎn)的。沒(méi)有任何架構(gòu)能解決現(xiàn)實(shí)中所有的問(wèn)題,而任何一個(gè)架構(gòu)去解決前面的問(wèn)題的時(shí)候,一定會(huì)帶來(lái)副作用,然后就需要下一個(gè)架構(gòu)去治理。這個(gè)探索的方向是沒(méi)有止境的,但只有你到達(dá)了一個(gè)階段,你才能夠去想下一個(gè)階段的很多事情。”
“回到原點(diǎn),十年前的選擇一定是最正確的嗎?就算當(dāng)時(shí)是最正確的,現(xiàn)在也不一定正確對(duì)吧?因?yàn)闀r(shí)代在變化。如果我們今天從零開(kāi)始,我們有沒(méi)有更好的選擇?有時(shí)候我們背了十年的包袱,反而不敢行動(dòng)了。但我希望我們下一代演化的時(shí)候,我們能夠提出一些顛覆式的理念,真正革新的解決我們現(xiàn)在面臨的問(wèn)題背后的那些問(wèn)題,而不是頭痛醫(yī)頭腳痛醫(yī)腳。這是我們期望做的事情。”
如常,早上 9 點(diǎn)多,梁飛打開(kāi)郵箱,關(guān)于 Apache Dubbo 重啟后的第一個(gè)里程碑版本 2.7.0 的討論郵件還在 mailing list 里熱烈進(jìn)行著;另一邊,Dubbo 正在從一個(gè)微服務(wù)領(lǐng)域的高性能 Java RPC 框架,演進(jìn)到微服務(wù)框架 Dubbo Ecosystem,打造出完整微服務(wù)生態(tài)。而此時(shí),距離去年 Dubbo 重啟僅過(guò)一年有余。
?
原文鏈接
本文來(lái)自云棲社區(qū)合作伙伴“InfoQ”如需轉(zhuǎn)載請(qǐng)聯(lián)系原作者。
總結(jié)
以上是生活随笔為你收集整理的Dubbo作者亲述:那些辉煌、沉寂与重生的故事的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 看完这些干货帖,大数据产品从入门到精通
- 下一篇: 阿里巴巴下一代云分析型数据库Analyt