Dubbo是阿里巴巴內(nèi)部的SOA服務(wù)化治理方案的核心框架,每天為2000+ 個(gè)服務(wù)提供3,000,000,000+ 次訪問(wèn)量支持,并被廣泛應(yīng)用于阿里巴巴集團(tuán)的各成員站點(diǎn)。Dubbo自2011年開源后,已被許多非阿里系公司使用。 

項(xiàng)目主頁(yè):http://alibaba.github.io/dubbo-doc-static/Home-zh.htm 

為了使大家對(duì)該框架有一個(gè)深入的了解,本期我們采訪了Dubbo團(tuán)隊(duì)主要開發(fā)人員之一梁飛。 

ITeye期待并致力于為國(guó)內(nèi)優(yōu)秀的開源項(xiàng)目提供一個(gè)免費(fèi)的推廣平臺(tái),如果你和你的團(tuán)隊(duì)希望將自己的開源項(xiàng)目介紹給更多的開發(fā)者,或者你希望我們對(duì)哪些開源項(xiàng)目進(jìn)行專訪,請(qǐng)告訴我們,發(fā)站內(nèi)短信給ITeye管理員或者發(fā)郵件到webmaster@iteye.com即可。

先來(lái)個(gè)自我介紹吧!Top

我叫梁飛,花名虛極,之前負(fù)責(zé)Dubbo服務(wù)框架,現(xiàn)已調(diào)到天貓。 

我的博客:http://javatar.iteye.com

Dubbo是什么?能做什么?Top

Dubbo是一個(gè)分布式服務(wù)框架,以及SOA治理方案。其功能主要包括:高性能NIO通訊及多協(xié)議集成,服務(wù)動(dòng)態(tài)尋址與路由,軟負(fù)載均衡與容錯(cuò),依賴分析與降級(jí)等。 

可參見:http://alibaba.github.io/dubbo-doc-static/Home-zh.htm

Dubbo適用于哪些場(chǎng)景?Top

當(dāng)網(wǎng)站變大后,不可避免的需要拆分應(yīng)用進(jìn)行服務(wù)化,以提高開發(fā)效率,調(diào)優(yōu)性能,節(jié)省關(guān)鍵競(jìng)爭(zhēng)資源等。 

當(dāng)服務(wù)越來(lái)越多時(shí),服務(wù)的URL地址信息就會(huì)爆炸式增長(zhǎng),配置管理變得非常困難,F(xiàn)5硬件負(fù)載均衡器的單點(diǎn)壓力也越來(lái)越大。 

當(dāng)進(jìn)一步發(fā)展,服務(wù)間依賴關(guān)系變得錯(cuò)蹤復(fù)雜,甚至分不清哪個(gè)應(yīng)用要在哪個(gè)應(yīng)用之前啟動(dòng),架構(gòu)師都不能完整的描述應(yīng)用的架構(gòu)關(guān)系。 

接著,服務(wù)的調(diào)用量越來(lái)越大,服務(wù)的容量問(wèn)題就暴露出來(lái),這個(gè)服務(wù)需要多少機(jī)器支撐?什么時(shí)候該加機(jī)器?等等…… 

在遇到這些問(wèn)題時(shí),都可以用Dubbo來(lái)解決。 

可參見:Dubbo的背景及需求

Dubbo的設(shè)計(jì)思路是什么?Top

該框架具有極高的擴(kuò)展性,采用微核+插件體系,并且文檔齊全,很方便二次開發(fā),適應(yīng)性極強(qiáng)。 

可參見:開發(fā)者指南 - 框架設(shè)計(jì)

Dubbo的需求和依賴情況?Top

Dubbo運(yùn)行JDK1.5之上,缺省依賴javassist、netty、spring等包,但不是必須依賴,通過(guò)配置Dubbo可不依賴任何三方庫(kù)運(yùn)行。 

可參見:用戶指南 - 依賴

Dubbo的性能如何?Top

Dubbo通過(guò)長(zhǎng)連接減少握手,通過(guò)NIO及線程池在單連接上并發(fā)拼包處理消息,通過(guò)二進(jìn)制流壓縮數(shù)據(jù),比常規(guī)HTTP等短連接協(xié)議更快。在阿里巴巴內(nèi)部,每天支撐2000多個(gè)服務(wù),30多億訪問(wèn)量,最大單機(jī)支撐每天近1億訪問(wèn)量。 

可參見:Dubbo性能測(cè)試報(bào)告

和淘寶HSF相比,Dubbo的特點(diǎn)是什么?Top

1.  Dubbo比HSF的部署方式更輕量,HSF要求使用指定的JBoss等容器,還需要在JBoss等容器中加入sar包擴(kuò)展,對(duì)用戶運(yùn)行環(huán)境的侵入性大,如果你要運(yùn)行在Weblogic或Websphere等其它容器上,需要自行擴(kuò)展容器以兼容HSF的ClassLoader加載,而Dubbo沒(méi)有任何要求,可運(yùn)行在任何Java環(huán)境中。 

2.  Dubbo比HSF的擴(kuò)展性更好,很方便二次開發(fā),一個(gè)框架不可能覆蓋所有需求,Dubbo始終保持平等對(duì)待第三方理念,即所有功能,都可以在不修改Dubbo原生代碼的情況下,在外圍擴(kuò)展,包括Dubbo自己內(nèi)置的功能,也和第三方一樣,是通過(guò)擴(kuò)展的方式實(shí)現(xiàn)的,而HSF如果你要加功能或替換某部分實(shí)現(xiàn)是很困難的,比如支付寶和淘寶用的就是不同的HSF分支,因?yàn)榧庸δ軙r(shí)改了核心代碼,不得不拷一個(gè)分支單獨(dú)發(fā)展,HSF現(xiàn)階段就算開源出來(lái),也很難復(fù)用,除非對(duì)架構(gòu)重寫。 

3.  HSF依賴比較多內(nèi)部系統(tǒng),比如配置中心,通知中心,監(jiān)控中心,單點(diǎn)登錄等等,如果要開源還需要做很多剝離工作,而Dubbo為每個(gè)系統(tǒng)的集成都留出了擴(kuò)展點(diǎn),并已梳理干清所有依賴,同時(shí)為開源社區(qū)提供了替代方案,用戶可以直接使用。 

4.  Dubbo比HSF的功能更多,除了ClassLoader隔離,Dubbo基本上是HSF的超集,Dubbo也支持更多協(xié)議,更多注冊(cè)中心的集成,以適應(yīng)更多的網(wǎng)站架構(gòu)。

Dubbo在安全機(jī)制方面是如何解決的?Top

Dubbo主要針對(duì)內(nèi)部服務(wù),對(duì)外的服務(wù),阿里有開放平臺(tái)來(lái)處理安全和流控,所以Dubbo在安全方面實(shí)現(xiàn)的功能較少,基本上只防君子不防小人,只防止誤調(diào)用。 

Dubbo通過(guò)Token令牌防止用戶繞過(guò)注冊(cè)中心直連,然后在注冊(cè)中心上管理授權(quán)。Dubbo還提供服務(wù)黑白名單,來(lái)控制服務(wù)所允許的調(diào)用方。 

可參見:Dubbo的令牌驗(yàn)證

Dubbo在阿里巴巴內(nèi)部以及外部的應(yīng)用情況?Top

在阿里內(nèi)部,除淘系以外的其它阿里子公司,都在使用Dubbo,包括:中文主站,國(guó)際主站,AliExpress,阿里云,阿里金融,阿里學(xué)院,良無(wú)限,來(lái)往等等。 

開源后,已被:去哪兒,京東,吉利汽車,方正證劵,海爾,焦點(diǎn)科技,中潤(rùn)四方,華新水泥,海康威視,等公司廣泛使用,并不停的有新公司加入,社區(qū)討論及貢獻(xiàn)活躍,得到用戶很高的評(píng)價(jià)。 

可參見:Dubbo的已知用戶

在分布式事務(wù)、多語(yǔ)言支持方面,Dubbo的計(jì)劃是什么?Top

分布式事務(wù)可能暫不會(huì)支持,因?yàn)槿绻皇侵С趾?jiǎn)單的XA/JTA兩階段提交事務(wù),實(shí)用性并不強(qiáng)。用戶可以自行實(shí)現(xiàn)業(yè)務(wù)補(bǔ)償?shù)氖录蚋鼜?fù)雜的分布式事務(wù),Dubbo有很多擴(kuò)展點(diǎn)可以集成。 

在多語(yǔ)言方面,Dubbo實(shí)現(xiàn)了C++版本,但在內(nèi)部使用面極窄,沒(méi)有得到很強(qiáng)的驗(yàn)證,并且C++開發(fā)資源緊張,沒(méi)有精力準(zhǔn)備C++開源事項(xiàng)。

Dubbo采用的開源協(xié)議?商業(yè)應(yīng)用應(yīng)該注意哪些事項(xiàng)?Top

Dubbo采用Apache License 2.0開源協(xié)議,它是一個(gè)商業(yè)友好的協(xié)議,你可以免費(fèi)用于非開源的商業(yè)軟件中。 

你可以對(duì)它進(jìn)行改造和二次發(fā)布,只要求保留阿里的著作權(quán),并在再發(fā)布時(shí)保留原始許可聲明。 

可參見:Dubbo的開源許可證

Dubbo開發(fā)團(tuán)隊(duì)情況?Top

Dubbo共有六個(gè)開發(fā)人員參與開發(fā)和測(cè)試,每一個(gè)開發(fā)人員都是很有經(jīng)驗(yàn),團(tuán)隊(duì)合作很默契,開發(fā)過(guò)程也很有節(jié)奏,有完善質(zhì)量保障流程。團(tuán)隊(duì)組成: 

  • 梁飛 (開發(fā)人員/產(chǎn)品管理)
  • 劉昊旻 (開發(fā)人員/過(guò)程管理)
  • 劉超 (開發(fā)人員/用戶支持)
  • 李鼎 (開發(fā)人員/用戶支持)
  • 陳雷 (開發(fā)人員/質(zhì)量保障)
  • 閭剛 (開發(fā)人員/開源運(yùn)維)
 
從左至右:劉超,梁飛,閭剛,陳雷,劉昊旻,李鼎

可參見:Dubbo的團(tuán)隊(duì)成員

其他開發(fā)者如何參與?可以做哪些工作?Top

開發(fā)者可以在Github上fork分支,然后將修改push過(guò)來(lái),我們審核并測(cè)試后,會(huì)合并到主干中。 

Github地址:https://github.com/alibaba/dubbo 

開發(fā)者可以在JIRA上認(rèn)領(lǐng)小的BUG修復(fù),也可以在開發(fā)者指南頁(yè)面領(lǐng)取大的功能模塊。 

JIRA:http://code.alibabatech.com/jira/browse/DUBBO(暫不可用) 

開發(fā)者指南:http://alibaba.github.io/dubbo-doc-static/Developer+Guide-zh.htm

Dubbo未來(lái)的發(fā)展計(jì)劃?Top

Dubbo的RPC框架已基本穩(wěn)定,未來(lái)的重心會(huì)放在服務(wù)治理上,包括架構(gòu)分析、監(jiān)控統(tǒng)計(jì)、降級(jí)控制、流程協(xié)作等等。 

可參見:http://alibaba.github.io/dubbo-doc-static/Roadmap-zh.htm