阿里巴巴重啟原開源微服務(wù)框架 - Dubbo
近期在開源軟件平臺上的活躍 - commit-activity
2012 年,阿里巴巴在 GitHub 上開源了基于 Java 的分布式服務(wù)治理框架 Dubbo,之后它成為了國內(nèi)該類開源項(xiàng)目的佼佼者,許多開發(fā)者對其表示青睞,同時构灸,先后有不少公司在實(shí)踐中基于 Dubbo 進(jìn)行分布式系統(tǒng)架構(gòu)。目前在 GitHub 上,它的 fork增拥、star 數(shù)均已破萬。
今年 9 月底寻歧,同為阿里開源的項(xiàng)目 RocketMQ 被 Apache 社區(qū)接納為頂級項(xiàng)目跪者;10 月中旬,OpenMessaging熄求、ApsaraCache 等全球化開源項(xiàng)目在阿里云棲大會正式公布渣玲;同時,Dubbo 也被列入重點(diǎn)維護(hù)開源項(xiàng)目弟晚,期望繼續(xù)保持快速發(fā)展的態(tài)勢忘衍。
阿里這一系列開源項(xiàng)目的成績,讓人們看到了它對于開源這件事的重視卿城,重啟維護(hù) Dubbo 的背后枚钓,有什么樣的思考呢?InfoQ 就此采訪了 Dubbo 負(fù)責(zé)人瑟押、阿里巴巴中間件高級技術(shù)專家羅毅搀捷。
InfoQ:為什么重啟維護(hù)?有哪些因素在驅(qū)動著多望?
羅毅:Dubbo 自開源以來嫩舟,深受國內(nèi)友商和開源愛好者的青睞,雖然一直陸續(xù)在維護(hù)怀偷,但是由于 Dubbo 用戶群體龐大家厌,日常維護(hù)根本無法完全滿足社區(qū)的旺盛需求。隨著集團(tuán)內(nèi)部技術(shù)水平的迅速發(fā)展椎工,如今不僅能夠保證集團(tuán)及客戶的系統(tǒng)高效運(yùn)行饭于,還能抽調(diào)更多精力將技術(shù)賦能給全社會蜀踏。
開源就是阿里巴巴集團(tuán)在技術(shù)層面賦能的重要領(lǐng)域。阿里巴巴中間件團(tuán)隊(duì)今后不僅要聆聽社區(qū)的聲音掰吕,及時修復(fù)問題果覆,及時合并優(yōu)秀的 pull request,還會力爭將 Dubbo 打造成有國際影響力的 RPC 框架殖熟。
從集團(tuán)層面看随静,阿里為國內(nèi)甚至國際開源社區(qū)貢獻(xiàn)了大量優(yōu)秀開源項(xiàng)目,如大家熟知的 RocketMQ吗讶、JStorm燎猛、Fastjson、Dubbo照皆、Weex 等重绷。在今年的云棲大會上,阿里集團(tuán)公開宣布了將加大技術(shù)投入膜毁、擁抱開源的發(fā)展策略昭卓。正是由于以上幾個原因,阿里巴巴中間件團(tuán)隊(duì)決定 Dubbo 的下一步計(jì)劃是持續(xù)發(fā)展瘟滨,并走向國際化候醒。
InfoQ:我們知道阿里內(nèi)部現(xiàn)在基本上沒有在使用 Dubbo,而是用了 Dubbo 之后開發(fā)的第三代 RPC 服務(wù)框架 HSF(High-speed Service Framework)杂瘸,那現(xiàn)在還將 Dubbo 重啟維護(hù)倒淫,大家不免疑惑。
羅毅:Dubbo 和 HSF 都是阿里巴巴集團(tuán)自研的 RPC 服務(wù)框架败玉,在不同時期都很好的支持了集團(tuán)業(yè)務(wù)的發(fā)展敌土。目前,HSF2 主要服務(wù)于集團(tuán)內(nèi)部業(yè)務(wù)运翼,而 Dubbo2 主要以開源的形式服務(wù)社會返干,它們之間的關(guān)系與 Google 內(nèi)部使用的 Stubby 和開源的 gRPC 類似。
從功能及使用方式上來說血淌,HSF2 和 Dubbo2 都是十分優(yōu)秀的 RPC 框架矩欠,都能很好地滿足搭建分布式服務(wù)化系統(tǒng)的訴求。內(nèi)部堅(jiān)持使用 HSF2 而不是開源版本的 Dubbo2 與業(yè)務(wù)屬性和規(guī)模有關(guān)悠夯。
此外也出于以下幾方面的考慮:內(nèi)部統(tǒng)一技術(shù)框架癌淮、統(tǒng)一運(yùn)維方面的訴求,應(yīng)用遷移成本疗疟,內(nèi)部服務(wù)注冊發(fā)現(xiàn)该默、配置推送以及鏈路追蹤等外圍系統(tǒng)的集成度等瞳氓〔咄總的來說栓袖,HSF2 在服務(wù)治理、超大規(guī)模集群店诗、多機(jī)房幾個方面比 Dubbo2 更有優(yōu)勢裹刮,并且在使用層面保持了對 Dubbo2 的兼容性。
為什么我們還要重啟 Dubbo 的維護(hù)呢庞瘸?
道理和 Google 開源 gRPC 是一樣的捧弃。開源不僅僅是賦能社會的方式,我們也可以通過社區(qū)反饋提升產(chǎn)品和技術(shù)能力擦囊。
Dubbo2 作為一款優(yōu)秀的開源產(chǎn)品违霞,由于面向的用戶群體非常廣泛,這就決定了它的設(shè)計(jì)原則強(qiáng)調(diào)擴(kuò)展性瞬场、使用輕量买鸽、以及對開源外圍系統(tǒng)和協(xié)議的適配。通過開源社區(qū)的建議贯被,目前 Dubbo 已經(jīng)具備了一些特有功能眼五,例如對 REST 的支持和對 Spring Boot 的集成。
值得注意的是彤灶,目前負(fù)責(zé) Dubbo 的團(tuán)隊(duì)和內(nèi)部負(fù)責(zé) HSF 的是同一個團(tuán)隊(duì)看幼,在聆聽外部用戶反饋之余,我們也會把大規(guī)模領(lǐng)域里的服務(wù)運(yùn)維經(jīng)驗(yàn)反哺回 Dubbo 社區(qū)幌陕,形成良性循環(huán)诵姜,做到真正意義上的內(nèi)外統(tǒng)一。
InfoQ:那這么多年過去了搏熄,現(xiàn)在 Dubbo 在同類型項(xiàng)目中還存在優(yōu)勢嗎茅诱?
羅毅: Dubbo 目前在 GitHub 上有超過 12000 個 star 和超過 10000 的 fork 數(shù),仍然是國內(nèi)影響力最大的開源項(xiàng)目之一搬卒。這其中有兩個重要因素瑟俭,一個是 RPC 領(lǐng)域相對成熟,自 Dubbo 開源的第一天起契邀,框架里已經(jīng)融合了阿里巴巴服務(wù)化改造進(jìn)程中沉淀下來的諸多寶貴經(jīng)驗(yàn)摆寄。
其二是 Dubbo 設(shè)計(jì)上十分提倡可擴(kuò)展性,在框架內(nèi)置功能不能滿足業(yè)務(wù)訴求甚至過時的情況下坯门,用戶可以選擇自行擴(kuò)展微饥。這一點(diǎn),從友商給我們提交來的 pull request 中可以明顯感受到古戴,優(yōu)秀的框架設(shè)計(jì)本身就可以很好的支持用戶千變?nèi)f化的需求欠橘。
Dubbo 維護(hù)重啟后,3 個月內(nèi)連續(xù)發(fā)布 3 個維護(hù)版本现恼,不僅修復(fù)了優(yōu)雅停機(jī)肃续、注解配置等一些框架缺陷黍檩,還新增了 Netty4 通信模塊和線程堆棧 dump 特性等。在框架穩(wěn)定性上已經(jīng)有了大幅提升始锚,今后 Dubbo 將持續(xù)保持快速迭代更新刽酱,以滿足用戶的各種需求。
InfoQ:如您所說瞧捌,這個開源項(xiàng)目棵里,很多代碼貢獻(xiàn)者和框架采用者其實(shí)提交了不少有意義的反饋,近期 Dubbo 官方一連給出的這三個版本更新姐呐,其中意義最大殿怜、大家最想看到的更新內(nèi)容是什么呢?
羅毅: 的確曙砂,作為國內(nèi)使用面最廣的服務(wù)框架的代表稳捆,很多用戶都貢獻(xiàn)了在使用過程中發(fā)現(xiàn)的問題和建議。我們目前優(yōu)先級最高的任務(wù)就是在其中遴選社區(qū)關(guān)注度最高的問題和建議優(yōu)先給予支持麦轰,其中包括 issue 的修復(fù)乔夯、第三方依賴的升級、新技術(shù)新規(guī)范的適配款侵、以及功能上的優(yōu)化等末荐。
已經(jīng)發(fā)布的版本中我們篩選了社區(qū)反饋的框架缺陷、pull request 等新锈,按照優(yōu)先級順序修復(fù)甲脏,保證框架的可用性和穩(wěn)定性,并同時更新了主頁 (http://dubbo.io/) 和文檔 (https://www.gitbook.com/@dubbo)妹笆。最近即將發(fā)布的版本中完善了注解形式的配置块请、Docker 環(huán)境中部署的問題等幾個社區(qū)呼聲較高的需求。
目前團(tuán)隊(duì)最大的任務(wù)就是活躍社區(qū)拳缠,聆聽用戶的聲音墩新,已經(jīng)發(fā)布的三個版本以及未來的幾個維護(hù)版本都是圍繞這個話題進(jìn)行。
InfoQ:阿里對 Dubbo 接下來的發(fā)展有怎樣的計(jì)劃窟坐?能否給大家一個清晰的視圖海渊?
羅毅: 主力開發(fā)以阿里巴巴中間件團(tuán)隊(duì)為主,優(yōu)先吸納集團(tuán)內(nèi)部對 Dubbo 開源有熱情的開發(fā)同學(xué)哲鸳,同時積極與國內(nèi)大量使用 Dubbo 框架的友商聯(lián)系臣疑。一方面是合并大家的建議猎拨,對呼聲最高的建議進(jìn)行性能提升向拆,另一方面是尋求共建開源項(xiàng)目的資源∽S兀總的來說婿奔,項(xiàng)目方面會以阿里內(nèi)部專門的團(tuán)隊(duì)為主缺狠,并積極發(fā)展社區(qū)中的 committer问慎。
在活躍社區(qū)的前提下,我們會繼續(xù)在 Dubbo 框架現(xiàn)代化儒老、國際化這兩個大的方向上進(jìn)行探索『牵現(xiàn)代化方面主要是考慮到目前微服務(wù)架構(gòu)以及容器化日漸流行的大趨勢记餐,Dubbo 作為 RPC 框架如何很好地融入其中驮樊,成為其生態(tài)體系中不可或缺的一個組件。
這里就不得不提到目前的一些文章在談到微服務(wù)的時候總是拿 Spring Cloud 和 Dubbo 來對比片酝,需要強(qiáng)調(diào)的是 Dubbo 未來的定位并不是要成為一個微服務(wù)的全面解決方案囚衔,而是專注在 RPC 領(lǐng)域,成為微服務(wù)生態(tài)體系中的一個重要組件雕沿。至于大家關(guān)注的微服務(wù)化衍生出的服務(wù)治理需求练湿,我們會在 Dubbo 積極適配開源解決方案,甚至啟動獨(dú)立的開源項(xiàng)目予以支持审轮。
對于國際化方面的思考是雖然 Dubbo 在 GitHub 上非常受歡迎肥哎,但是受眾主要來自國內(nèi)各友商以及個人開發(fā)者,希望將來能夠?qū)⒂脩敉卣沟饺蚣苍韲嗽?RPC 領(lǐng)域與 gRPC篡诽、Finagle 等競爭。
官網(wǎng):http://dubbo.io/
源碼:https://github.com/alibaba/dubbo