多語言支援是 Dubbo 發展生態的重點之一。目前,Dubbo 已經支援 PHP/Node.js/Python,同時,基於標準的 Java REST API – JAX-RS 2.0實現了 REST 的呼叫支援。具體的支援和貢獻者情況如下:
PHP: php-for-apache-dubbo by 樂信,提供客戶端和服務端。
Node.js: dubbo2.js by 千米網 ,提供客戶端; egg-dubbo-rpc by 螞蟻金服 egg 團隊 ,提供客戶端和服務端。
Python: py-client-for-apache-dubbo by 千米網 ,提供客戶端。
近年來,Go 因其語言優勢,生態發展迅速。已經有不少微服務領域的使用者開始嘗試使用 Go 開發一些新的專案,那麼如何實現 Go 專案和 Java 專案的互通,以及 Go 專案本身對 RPC 和微服務開發框架的訴求,這是 Dubbo 社群需要解決的問題。
此次,Go 加入 Dubbo 生態 ,釋出 go-for-apache-dubbo ,將幫助 Go 語言開發者獲得更好的微服務體驗。
專案簡介
DubboGo v1.0.0 版本沿用了 Dubbo 的程式碼分層解耦設計。其中,Dubbo 2.6.x的主要功能都會逐漸在 DubboGo 中實現,包括 Dubbo 基於 SPI 的程式碼拓展機制,DubboGo 也有對應的extension 擴充套件機制與之對應。
得益於此,我們在未來將很快實現功能串列中的內容,如雲原生領域非常流行的 K8s,並會同步 Dubbo 的 roadmap,跟進 K8s 作為註冊中心的支援。而廣大開發者們也可以對這些分層介面進行新的實現,並透過 extension 模組進行拓展,以完成自己的特殊需求,且無需修改原始碼。同時,我們非常歡迎開發者為社群貢獻有用的拓展實現。
該版本解決的重點問題和特點是:
-
解決了與 Dubbo Java 版本的互通問題
我們將這部分提取出了 hessian2 專案,並已經完成了對 Java 大部分型別的相容支援。大家也可以單獨將該此整合到自己的專案中,它同樣是遵循 Apache-2.0 的開源協議的。
hessian2 地址:
https://github.com/dubbogo/hessian2
-
新增 TCP 非同步網路 I/O 庫
TCP 非同步網路 I/O 庫是基於我們社群成員的 getty 專案開發的,作為 DubboGo 的非同步網路I/O庫,同時也支援被整合,遵循 Apache-2.0 licence.
下一版本,我們會針對 DubboGo 和 getty 的網路 I/O 與執行緒派發這一部分進行進一步的最佳化,例如將 codec 過程、邏輯處理與主網路 I/O 執行緒分離,來進一步最佳化 DubboGo 的整體效能。
getty 地址:
https://github.com/dubbogo/getty
詳細的設計思路請至:
https://github.com/dubbo/go-for-apache-dubbo/wiki/dubbo-go-V1.0-design
功能串列
實現串列:
-
Role: Consumer(√), Provider(√)
-
Transport: HTTP(√), TCP(√)
-
Codec: JsonRPC v2(√), Hessian v2(√)
-
Registry: ZooKeeper(√)
-
Cluster Strategy: Failover(√)
-
Load Balance: Random(√)
-
Filter: Echo Health Check(√)
開發中串列:
-
Cluster Strategy: Failfast/Failsafe/Failback/Forking
-
Load Balance: RoundRobin/LeastActive/ConsistentHash
-
Filter: TokenFilter/AccessLogFilter/CountFilter/ActiveLimitFilter/ExecuteLimitFilter/GenericFilter/TpsLimitFilter
-
Registry: etcd/K8s/Consul
任務串列:
-
Routing rule (dubbo v2.6.x)
-
Monitoring (dubbo v2.6.x)
-
Dynamic configuration (dubbo v2.7.x)
-
Metrics (dubbo v2.7.x) waiting dubbo’s quota
貢獻者團隊
於雨:GitHub ID @AlexStocks
DubboGo/Hessian2/Getty 早期維護、程式碼貢獻。
何鑫銘:GitHub ID @hxmhlt
DubboGo/dubbogo-benchmark 維護、程式碼貢獻,來自攜程基礎中臺研發部。
方銀城:GitHub ID @fangyincheng
DubboGo/dubbogo-benchmark維護、程式碼貢獻,Getty 程式碼貢獻,來自攜程基礎中臺研發部。
張海彬:GitHub ID @NameHaibinZhang,DubboGo 程式碼貢獻。
望哥:GitHub ID @wongoo,Hessian2/Getty 維護、程式碼貢獻。
周子慶:GitHub ID @u0x01,Hessian2 程式碼貢獻。
高辛格:GitHub ID @gaoxinge,DubboGo/Hessian2 程式碼貢獻。
若對程式碼、檔案、部落格等內容貢獻感興趣的,可以郵件:hxmhlt0507@gmail.com,也可以加入 DubboGo 釘釘群號: 23331795。
媒體專訪預告
開源中國將在下週一釋出 DubboGo 團隊的專訪,一起聊聊 Dubbo & Go 的故事,歡迎關註。
朋友會在“發現-看一看”看到你“在看”的內容