天天看點

阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

Dubbo是阿裡巴巴内部的SOA服務化治理方案的核心架構,每天為2000+ 個服務提供3,000,000,000+ 次通路量支援,并被廣泛應用于阿裡巴巴集團的各成員站點。Dubbo自2011年開源後,已被許多非阿裡系公司使用。 

項目首頁: http://alibaba.github.io/dubbo-doc-static/Home-zh.htm 

為了使大家對該架構有一個深入的了解,本期我們采訪了Dubbo團隊主要開發人員之一 梁飛。 

目 錄 [ - ]

  1. 先來個自我介紹吧!
  2. Dubbo是什麼?能做什麼?
  3. Dubbo适用于哪些場景?
  4. Dubbo的設計思路是什麼?
  5. Dubbo的需求和依賴情況?
  6. Dubbo的性能如何?
  7. 和淘寶HSF相比,Dubbo的特點是什麼?
  8. Dubbo在安全機制方面是如何解決的?
  9. Dubbo在阿裡巴巴内部以及外部的應用情況?
  10. 在分布式事務、多語言支援方面,Dubbo的計劃是什麼?
  11. Dubbo采用的開源協定?商業應用應該注意哪些事項?
  12. Dubbo開發團隊情況?
  13. 其他開發者如何參與?可以做哪些工作?
  14. Dubbo未來的發展計劃?

先來個自我介紹吧!
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

我叫梁飛,花名虛極,之前負責Dubbo服務架構,現已調到天貓。 

我的部落格: http://javatar.iteye.com

Dubbo是什麼?能做什麼?
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

Dubbo是一個分布式服務架構,以及SOA治理方案。其功能主要包括:高性能NIO通訊及多協定內建,服務動态尋址與路由,軟負載均衡與容錯,依賴分析與降級等。 

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

Dubbo适用于哪些場景?
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

當網站變大後,不可避免的需要拆分應用進行服務化,以提高開發效率,調優性能,節省關鍵競争資源等。 

當服務越來越多時,服務的URL位址資訊就會爆炸式增長,配置管理變得非常困難,F5硬體負載均衡器的單點壓力也越來越大。 

當進一步發展,服務間依賴關系變得錯蹤複雜,甚至分不清哪個應用要在哪個應用之前啟動,架構師都不能完整的描述應用的架構關系。 

接着,服務的調用量越來越大,服務的容量問題就暴露出來,這個服務需要多少機器支撐?什麼時候該加機器?等等…… 

在遇到這些問題時,都可以用Dubbo來解決。 

可參見: Dubbo的背景及需求

Dubbo的設計思路是什麼?
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

該架構具有極高的擴充性,采用微核+插件體系,并且文檔齊全,很友善二次開發,适應性極強。 

可參見: 開發者指南 - 架構設計

Dubbo的需求和依賴情況?
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

Dubbo運作JDK1.5之上,預設依賴javassist、netty、spring等包,但不是必須依賴,通過配置Dubbo可不依賴任何三方庫運作。 

可參見: 使用者指南 - 依賴

Dubbo的性能如何?
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

Dubbo通過長連接配接減少握手,通過NIO及線程池在單連接配接上并發拼包處理消息,通過二進制流壓縮資料,比正常HTTP等短連接配接協定更快。在阿裡巴巴内部,每天支撐2000多個服務,30多億通路量,最大單機支撐每天近1億通路量。 

可參見: Dubbo性能測試報告

和淘寶HSF相比,Dubbo的特點是什麼?
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

1.   Dubbo比HSF的部署方式更輕量,HSF要求使用指定的JBoss等容器,還需要在JBoss等容器中加入sar包擴充,對使用者運作環境的侵入性大,如果你要運作在Weblogic或Websphere等其它容器上,需要自行擴充容器以相容HSF的ClassLoader加載,而Dubbo沒有任何要求,可運作在任何Java環境中。 

2.   Dubbo比HSF的擴充性更好,很友善二次開發,一個架構不可能覆寫所有需求,Dubbo始終保持平等對待第三方理念,即所有功能,都可以在不修改Dubbo原生代碼的情況下,在外圍擴充,包括Dubbo自己内置的功能,也和第三方一樣,是通過擴充的方式實作的,而HSF如果你要加功能或替換某部分實作是很困難的,比如支付寶和淘寶用的就是不同的HSF分支,因為加功能時改了核心代碼,不得不拷一個分支單獨發展,HSF現階段就算開源出來,也很難複用,除非對架構重寫。 

3.   HSF依賴比較多内部系統,比如配置中心,通知中心,監控中心,單點登入等等,如果要開源還需要做很多剝離工作,而Dubbo為每個系統的內建都留出了擴充點,并已梳理幹清所有依賴,同時為開源社群提供了替代方案,使用者可以直接使用。 

4.   Dubbo比HSF的功能更多,除了ClassLoader隔離,Dubbo基本上是HSF的超集,Dubbo也支援更多協定,更多注冊中心的內建,以适應更多的網站架構。

Dubbo在安全機制方面是如何解決的?
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

Dubbo主要針對内部服務,對外的服務,阿裡有開放平台來處理安全和流控,是以Dubbo在安全方面實作的功能較少,基本上隻防君子不防小人,隻防止誤調用。 

Dubbo通過Token令牌防止使用者繞過注冊中心直連,然後在注冊中心上管理授權。Dubbo還提供服務黑白名單,來控制服務所允許的調用方。 

可參見: Dubbo的令牌驗證

Dubbo在阿裡巴巴内部以及外部的應用情況?
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

在阿裡内部,除淘系以外的其它阿裡子公司,都在使用Dubbo,包括:中文主站,國際主站,AliExpress,阿裡雲,阿裡金融,阿裡學院,良無限,來往等等。 

開源後,已被:去哪兒,京東,吉利汽車,方正證劵,海爾,焦點科技,中潤四方,華新水泥,海康威視,等公司廣泛使用,并不停的有新公司加入,社群讨論及貢獻活躍,得到使用者很高的評價。 

可參見: Dubbo的已知使用者

在分布式事務、多語言支援方面,Dubbo的計劃是什麼?
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

分布式事務可能暫不會支援,因為如果隻是支援簡單的XA/JTA兩階段送出事務,實用性并不強。使用者可以自行實作業務補償的事件,或更複雜的分布式事務,Dubbo有很多擴充點可以內建。 

在多語言方面,Dubbo實作了C++版本,但在内部使用面極窄,沒有得到很強的驗證,并且C++開發資源緊張,沒有精力準備C++開源事項。

Dubbo采用的開源協定?商業應用應該注意哪些事項?
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

Dubbo采用Apache License 2.0開源協定,它是一個商業友好的協定,你可以免費用于非開源的商業軟體中。 

你可以對它進行改造和二次釋出,隻要求保留阿裡的著作權,并在再釋出時保留原始許可聲明。 

可參見: Dubbo的開源許可證

Dubbo開發團隊情況?
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

Dubbo共有六個開發人員參與開發和測試,每一個開發人員都是很有經驗,團隊合作很默契,開發過程也很有節奏,有完善品質保障流程。團隊組成: 

  • 梁飛 (開發人員/産品管理)
  • 劉昊旻 (開發人員/過程管理)
  • 劉超 (開發人員/使用者支援)
  • 李鼎 (開發人員/使用者支援)
  • 陳雷 (開發人員/品質保障)
  • 闾剛 (開發人員/開源運維)
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

從左至右:劉超,梁飛,闾剛,陳雷,劉昊旻,李鼎

可參見: Dubbo的團隊成員

其他開發者如何參與?可以做哪些工作?
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

開發者可以在Github上fork分支,然後将修改push過來,我們稽核并測試後,會合并到主幹中。 

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

開發者可以在JIRA上認領小的BUG修複,也可以在開發者指南頁面領取大的功能子產品。 

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

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

Dubbo未來的發展計劃?
阿裡巴巴分布式服務架構 Dubbo 團隊成員梁飛專訪

Dubbo的RPC架構已基本穩定,未來的重心會放在服務治理上,包括架構分析、監控統計、降級控制、流程協作等等。 

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

繼續閱讀