日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

What‘s new in dubbo-go v1.5.6

發布時間:2025/3/20 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 What‘s new in dubbo-go v1.5.6 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 | 鐵城??dubbo-go 社區 committer
來源 | 阿里巴巴云原生公眾號

dubbogo 社區近期發布了 dubbogo v1.5.6。該版本和 dubbo 2.7.8 對齊,提供了命令行工具,并提供了多種加載配置的方式。

相關改進實在太多,本文只列出相關重大 feature 和?性能提升項。

1. 命令行工具

熟悉dubbo?的朋友可能知道 dubbo 支持 telnet 命令行在線調試。

本次發布也增加了 dubbo-go 的 cli 命令行工具,可以方便用戶直連特定服務,通過編寫 json 文件來定義傳輸結構和數據,發起調用進行在線調試,打印返回數據和耗時情況。

目前支持嵌套 struct,但是只支持單個參數的請求包和回包。數據類型由于需要在 json 中定義,只支持 golang 基本數據類型:字符串、整形、浮點。

社區后續會再發一篇文章,著重講解其原理和實現。相關 pr 為 https://github.com/apache/dubbo-go/pull/818,由 dubbogo 最年輕的 00 后 apache committer 李志信同學實現。

2. 代理實現擴展

重構 Proxy,添加 ImplementFunc 函數,允許項目對 Proxy 的代理進行重新實現。在使用 ProxyFactory 自定義注冊的場景下,創建的 proxy.Proxy 也自定義實現,可以對返回數據進行修改。

主要應用場景為在網關泛化調用場景下。懂得的人自然懂。

相關 pr ?https://github.com/apache/dubbo-go/pull/1019,由本文作者親自操刀。

3. 啟動時指定配置文件的路徑

用戶使用之前版本的 dubbogo 時,一直吐槽其只提供環境變量的方式,加載指定的配置文件。

export CONF_PROVIDER_FILE_PATH="../profiles/dev/server.yml" export CONF_CONSUMER_FILE_PATH="../profiles/dev/server.yml" export APP_LOG_CONF_FILE="../profiles/dev/log.yml"

v1.5.6 提供了新的配置文件加載接口:在啟動命令行通過 ?proConf、conConf、logConf三個 flag 設定配置文件路徑。

服務提供方:

go run . -proConf ../profiles/dev/server.yml -logConf ../profiles/dev/log.yml

服務消費方:

go run . -conConf ../profiles/dev/client.yml -logConf ../profiles/dev/log.yml

相關 pr https://github.com/apache/dubbo-go/pull/1039,由南京信息工程大學大三學生 陳家鵬實現。

4. 自定義加載 ServerConfig 和 ReferenceConfig

新增 ConfigPostProcessor 接口,用戶可以依據該接口提供兩個的方法,在部署 dubbogo 服務時加載自定義的配置。

// 服務提供方配置 PostProcessServiceConfig(*common.URL)// 服務消費方配置 PostProcessReferenceConfig(*common.URL)

相關 pr ?https://github.com/apache/dubbo-go/pull/943,由即將奔五十的 dubbo chairman 北緯親自操刀實現,chairman 同志老當益壯,號召大家向 chairman 筒子學習。

5. 擴展?URL 的比較

在common/url.go里面提供 CompareURLEqualFunc,可以讓用戶自定義 URL 比較,提高比對效率。相關技術細節見如下鏈接。

common/url.go:
https://github.com/apache/dubbo-go/pull/854/files#diff-5111f14762c010c3029a67743796fea97ab1015d35c96670a4cfa25f30145464

目前的 URL 實現并未達到最終狀態。未來的 dubbogo 3.x 版本中,將借鑒 dubbo 的 URL 實現,將 common.URL 拆分為ServiceConfigURL、ServiceAddressURL和InstanceAddressURL,分別對應配置中心、注冊中心和元數據中心的 schema,盡量將變更壓力降低到最低粒度。

該功能對應的?pr??https://github.com/apache/dubbo-go/pull/854 由阿里雙十一中間件大隊長展圖同學實現。展圖同學一直奮戰在編程一線。

6. 注冊中心優化

復用了 zookeeper 鏈接以及優化了服務發現中心邏輯,大大減少了與 zookeeper 的 tcp 鏈接數目,減少了使用的 goroutine 數目,降低了 dubbo-go 的內存占用量。

我們會把同樣的邏輯服用到 nacos、etcd、consul 等各個注冊中心,通過減少 goroutine 數目,減輕注冊中心壓力,并減少 consumer 和 provider 內存的使用。

該功能對應的 pr https://github.com/apache/dubbo-go/pull/1010 由現在螞蟻中間件工作的 王文學 同學在涂鴉工作時實現。

7.?API 形式進行配置

以前版本的 dubbogo 只提供了從配置文件讀取配置選項,該功能增加以 API 的方式進行配置,用戶可以通過調用相關 API 初始化配置。

用戶可以通過 API 進行相關參數設定,無需再加載配置文件。

可以參考示例:?https://github.com/apache/dubbo-go-samples/tree/master/config-api

相關 pr https://github.com/apache/dubbo-go/pull/1020 也是由李志信實現。

8.?grpc 優化

  • 打通 dubbo-go中 consumer config 的超時時間 connect_timeout 和 gRPC server 的超時時間,用戶可以自定義 gRPC 超時時間機制。
# connect timeout connect_timeout: "3s"# application config application:organization: "dubbo.io"name: "GreeterGrpcConsumer"module: "dubbo-go greeter grpc client"version: "0.0.1"environment: "dev"
  • 將處理注冊中心服務變更事件的機制改為同步,防止 provider 端服務頻繁重啟導致上下線事件處理順序出錯。

  • 使用 gRPC 協議時,異步等待 dubbo-go 的 service 都暴露完后,才將所有 dubbo-go service 對應的 gRPC service 注冊到 gRPC server 上并啟動 gRPC server。以此修復 provider 端的只能注冊一個 service 的問題。

總體功能由 https://github.com/apache/dubbo-go/pull/1056 等多個 pr 構成,由 All In 了 dubbogo 的 上海識裝信息科技有限公司【知名 APP 得物所在公司】工程師 柯瞻、 dubbogo 社區負責人 于雨、阿里工程師云興 以及 南京某公司的張天同學 共同負責實現。

9.?hessian2 go 最新 feature

除了? dubbo-go 自身的改進外,dubbo-go-hessian2 項目截止目前最新版本 v1.9.2 也做了如下重大改進:

  • 內置支持 java.util.Locale:https://github.com/apache/dubbo-go-hessian2/pull/264
  • 內置支持 java.util.UUID:https://github.com/apache/dubbo-go-hessian2/pull/256
  • 支持編碼 no pojo object:https://github.com/apache/dubbo-go-hessian2/pull/243
  • 內置支持 java.sql.Time:https://github.com/apache/dubbo-go-hessian2/pull/219
  • 內置支持 java.sql.Date:https://github.com/apache/dubbo-go-hessian2/pull/221

dubbo-go-hessian2:https://github.com/apache/dubbo-go-hessian2

總體 pr 由 dubbo-go-hessian2 項目負責人?望哥、李志信、張艷明等同學完成。

10. 回顧與展望

dubbogo 目前處于一個比較穩定成熟的狀態,1.5 版本會被持續維護,以修復 BUG 和進行一些必要的最低幅度的優化。

更多信息:https://github.com/apache/dubbo-go/releases/tag/v1.5.6

目前最新的朝云原生方向的發展3.0 版本基于 v1.5.x,在兼容 dubbo 3.0 的同時,將向后兼容 v2.7.x,計劃于 4 月底發布第一個版本。

如果你有任何疑問,歡迎釘釘掃碼加入交流群【釘釘群號 31363295】:

作者簡介

鐵城 (Github ID cityiron),dubbo-go 社區 committer,主要參與 dubbo-go 1.5 版本迭代、 dubbo-go 3.0 服務路由和云原生方面工作、以及 dubbo-go-pixiu 項目負責人。目前就職于阿里盒馬事業群,從事交易流程工作,擅長使用 Java/Go 語言,專注于云原生和微服務等技術方向。

在 PC 端登錄 start.aliyun.com 知行動手實驗室,沉浸式體驗在線交互教程。

總結

以上是生活随笔為你收集整理的What‘s new in dubbo-go v1.5.6的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。