歡迎光臨
每天分享高質量文章

Dubbo for Go,Ready for Now.

多語言支持是 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 代碼貢獻。

若對代碼、文件、博客等內容貢獻感興趣的,可以郵件:[email protected],也可以加入 DubboGo 釘釘群號: 23331795。

媒體專訪預告



開源中國將在下周一發佈 DubboGo 團隊的專訪,一起聊聊 Dubbo & Go 的故事,歡迎關註。

赞(0)

分享創造快樂