我們 dubbogo 社區很高興地宣佈發佈最新版本 v3.3.0!這一版本帶來了多個 Bug 修復、新特性以及代碼優化,顯著提升了 dubbogo 的穩定性與功能性。
🚀 版本亮點
在本次更新中,我們對多個核心組件進行了改進,以解決服務發現、註冊中心相關的問題,並優化內存管理,減少內存泄漏。此外,我們增強了底層通信庫的錯誤處理能力,並提升了系統的整體穩定性,為 Go 開發者提供更強大、更可靠的微服務開發體驗。
本次更新的主要改進包括:修復了多個服務發現和註冊中心相關的問題,解決了內存泄漏,並增強了底層通信庫的錯誤處理能力和穩定性。此外,還新增了腳本路由功能、增強了 Java 兼容性、支持 Triple 協議 Keepalive 以及引入基於 Protobuf 的 MetadataService。
更新亮點
✨ 主要新特性
- 腳本化路由功能:支持基於腳本的動態路由配置,提高服務治理的靈活性。
- 增強 Java 互操作性:進一步優化 Dubbo-Go 與 Java 生態的兼容性。
- Triple 協議 Keepalive:為 Triple 協議引入 Keepalive 配置,增強長連接的穩定性。
- Protobuf 元數據服務支持:支持基於 Protobuf 的
MetadataService,更好地支持微服務治理。 - Nacos 註冊中心增強:支持多類別訂閲,提升 Nacos 作為註冊中心的適用性。
🛠 穩定性提升
- 修復 OTEL-GRPC 導出器初始化問題,確保 OpenTelemetry 監控功能正常運行。
- 解決 Nacos/Zookeeper 服務發現和訂閲相關問題,提升註冊中心的穩定性。
- 修復內存泄漏問題,優化
BaseInvoker和slice截取的內存管理。 - 改進 Triple 協議的錯誤處理,增強通信穩定性,避免未實現方法導致的錯誤。
📈 代碼優化增強
- 重構超時單位:Dubbo 協議超時時間單位統一調整為毫秒。
- 更新條件規則排序邏輯,確保路由規則執行順序的穩定性。
- 業務錯誤與 RPC 傳輸錯誤分離,便於更精準地識別錯誤來源。
詳細更新內容
🐞 Bug 修復
- 修復 OTEL-GRPC 導出器的初始化問題。 #2666 #2679
- 解決測試用例不一致的問題。 #2660
- 修復 makezero bug。 #2682
- 解決 nacos 服務發現問題。 #2691 #2694
- 修正 protoc-gen-go-triple 路徑錯誤。 #2690
- 修復因 nil backupCodec 導致的分段錯誤。 #2698
- 解決 zookeeper 映射鍵問題。 #2711
- 解決 nacos 註冊中心
*訂閲問題。 #2713 - 解決 nacos 服務發現無法獲取所有服務名稱的問題。 #2715
- 解決潛在的死鎖問題。#2716
- 修復服務斷連和配置失效的問題。 #2717
- 處理 triple handler 錯誤,採用 codeUnimplemented 機制。 #2719
- 修復路由規則解析日誌錯誤。 #2720
- 通過設置 baseinvoker 的 URL 為 nil 解決內存泄漏問題。 #2726
- 修復 CallClientStream 結果處理錯誤。 #2732
- 修正切片初始化長度問題。 #2734
- 增強日誌記錄,添加文件名、函數名和行號。#2744
- 解決 HTTP 代理請求自動駝峯轉換問題。 #2746
- 修復 golangci-lint 報告的問題。 #2754
- 修正 dubbo_registry_directory 指標類型錯誤。#2766
- 修復 findMappedServices 可能引發的 panic。#2768
- 確保 CacheListener 中的 ListenerSet 線程安全。 #2769
- 改進訂閲行為,等待註冊完成或超時。#2775
- 解決 rc.id 始終為空的問題。 #2778
- 修復相同地址無法區分不同註冊中心的問題。 #2784
- 移除不必要的 setdeadline 調用。 #2785
- 修復多個錯誤返回問題。 #2791
- 解決額外的內存泄漏問題。 #2792
- 修正部分不準確的註釋。 #2793
- 修復 ReadMessage() 競態問題。 getty#123
- 修復因切片截取導致的內存泄漏問題。 #hessian2/374
- 解決了 dubbogo-cli 中 ZooKeeper 的 URL 解析 panic 並改進了錯誤處理。 2795
🚀 新特性
- 添加了基於腳本的路由功能。 #2669
- 引入了對多目的地條件路由的支持。 #2685
- 實現了新的條件規則。 #2686
- 增強了 Java 互操作性。 #2687
- 添加了基於 Protobuf 的 MetadataService 支持。 #2723
- 引入了 triple 協議的 keepalive 配置。 #2757
- 增強了 nacos 註冊中心的多類別訂閲支持。 #2783
- 添加了 triple 協議 keepalive 配置。 #triple87
- 添加了 triple 協議連接池。 #triple91
📌 代碼優化
- 為元數據添加了單元測試。 #2665
- 改進了代碼註釋。 #2668
- 將方法
WithClientCheck重命名為WithClientNoCheck。 #2680 - 優化了 Nacos 端點處理。 #2692
- 更新了
UseAsMetaReport和UseAsConfigCenter以使用字符串值來防止覆蓋。 #2693 - 更新了條件規則排序邏輯。 #2688
- 區分了業務錯誤和 RPC 網絡錯誤。 #2712
- 標準化了 Dubbo 協議中的超時單位(毫秒)。 #2737
- 將內部組件移動到 dubbo-go-samples 倉庫。 2794
- 限制了重新連接的嘗試次數和持續時間。 getty#117
❤️ 特別感謝
感謝所有為本次發佈做出貢獻的社區成員!!您的貢獻使得 Dubbo-Go 變得更加高效和強大:
@1kasa
@AlbumenJ
@AlexStocks
@alingse
@ALLen442
@baerwang
@chickenlj
@cuishuang
@FinalT
@FoghostCn
@gexincoding
@knowmost
@linfeip
@marsevilspirit
@Nexusrex18
@No-SilverBullet
@SHA-4096
@ShawnJeffersonWang
@snowLeopard331
@solisamicus
@wcy666103
@YarBor
@yumosx
📥 升級
強烈建議所有 dubbogo 用户升級到最新版本,以享受更穩定、高效的服務體驗。
鏈接:
- GitHub 倉庫:https://github.com/apache/dubbo-go
- 📌 訪問 GitHub 獲取最新版本:Apache Dubbo-Go Releases v3.3.0