多語言支持是 Dubbo 發展生態的重點之一。目前,Dubbo 已經支持 PHP/Node.js/Python,同時,基於標準的 Java REST API - JAX-RS 2.0實現了 REST 的調用支持。具體的支持和貢獻者狀況以下:php
PHP: php-for-apache-dubbo by 樂信,提供客戶端和服務端。git
Node.js: dubbo2.js by 公里網 ,提供客戶端; egg-dubbo-rpc by 螞蟻金服 egg 團隊 ,提供客戶端和服務端。github
Python: py-client-for-apache-dubbo by 公里網 ,提供客戶端。web
近年來,Go 因其語言優點,生態發展迅速。已經有很多微服務領域的用戶開始嘗試使用 Go 開發一些新的項目,那麼如何實現 Go 項目和 Java 項目的互通,以及 Go 項目自己對 RPC 和微服務開發框架的訴求,這是 Dubbo 社區須要解決的問題。apache
這次,Go 加入 Dubbo 生態 ,發佈 go-for-apache-dubbo ,將幫助 Go 語言開發者得到更好的微服務體驗。微信
項目簡介網絡
DubboGo v1.0.0 版本沿用了 Dubbo 的代碼分層解耦設計。其中,Dubbo 2.6.x的主要功能都會逐漸在 DubboGo 中實現,包括 Dubbo 基於 SPI 的代碼拓展機制,DubboGo 也有對應的extension 擴展機制與之對應。app
得益於此,咱們在將來將很快實現功能列表中的內容,如雲原生領域很是流行的 K8s,並會同步 Dubbo 的 roadmap,跟進 K8s 做爲註冊中心的支持。而廣大開發者們也能夠對這些分層接口進行新的實現,並經過 extension 模塊進行拓展,以完成本身的特殊需求,且無需修改源代碼。同時,咱們很是歡迎開發者爲社區貢獻有用的拓展實現。框架
該版本解決的重點問題和特色是:dom
解決了與 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 的故事,歡迎關注。
本文分享自微信公衆號 - 技術原始積累(gh_805ebfd2deb0)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。