我们 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
  • 更新了 UseAsMetaReportUseAsConfigCenter 以使用字符串值来防止覆盖。 #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 用户升级到最新版本,以享受更稳定、高效的服务体验。

链接:


wdlgd7ue
1 声望0 粉丝