GitHub user Alanxtl edited a discussion: Dubbo-go-Pixiu 3.3.1 Release doc 发版文档
# 🚀 Apache Dubbo-go 3.3.1 Official Release ## A Faster, Cleaner, and More Powerful Triple RPC Framework > **Brand-new Client API | Systematic Evolution of the Triple Protocol | > Comprehensive Enhancements in Configuration & Governance** **Apache Dubbo-go 3.3.1** is now officially released 🎉 This is a **major enhancement release designed for production readiness and future architectural evolution**. Rather than simply adding features, this release delivers a **systematic upgrade** across **API design, Triple protocol capabilities, and configuration & governance systems**, significantly improving: * Developer experience in both client-side and server-side * Protocol performance and extensibility * Production stability and observability At the infrastructure level, a key milestone has also been reached: > ✅ **Dubbo-go now officially supports Go 1.24, fully aligned with the latest > Go ecosystem** --- ## Dubbo-go 3.3.1 in One Sentence > **This is a pivotal release that moves Dubbo-go from “usable” to “pleasant to > use, reliable in production, and sustainable for long-term evolution.”** Dubbo-go 3.3.1 focuses on four core directions: * **A fully redesigned Client New API (the future main path)** Significantly improves client maintainability and extensibility @marsevilspirit * **Next-generation Triple protocol enhancements** From protocol implementation to high-performance, operable RPC infrastructure @marsevilspirit * **Upgraded configuration center, routing, and governance capabilities** More stable, more flexible, and better suited for complex production environments @1kasa @MinatoWu @FoghostCn --- ## 🔥 Highlight 1: Brand-New Client New API (Strongly Recommended) > **This is a “reboot-level” upgrade of Dubbo-go’s client capabilities.** Dubbo-go 3.3.1 introduces a **brand-new Client New API**, redesigned around the **Option Pattern**. It redefines client initialization and invocation models, laying a unified foundation for multi-protocol support, Triple evolution, and advanced features. ### Why a New API? * ✅ **Clear and readable initialization flow** * ✅ **Explicit and controllable capability composition** * ✅ **Native support for Triple and multi-protocol scenarios** * ✅ **Easier testing and encapsulation** * ✅ **Aligned with Go community best practices** ### Example (New API + Triple) Sample source code: [https://github.com/apache/dubbo-go-samples/tree/main/async](https://github.com/apache/dubbo-go-samples/tree/main/async) ```go func main() { cli, _ := client.NewClient( client.WithClientProtocolTriple(), client.WithClientURL("tri://127.0.0.1:20000"), client.WithClientSerialization(constant.ProtobufSerialization), ) userProvider, _ := user.NewUserProvider(cli, client.WithAsync()) req := &user.SayHelloRequest{UserId: "003"} resp, _ := userProvider.SayHello(context.Background(), req) logger.Info(resp) } ``` > ✅ **The New API is the core foundation for future Dubbo-go evolution** > For all new projects and Triple-based scenarios, **strongly recommended**. --- ## 🚀 Highlight 2: Next-Generation Triple Protocol Leap > **Triple is evolving from a “protocol implementation” into a > “high-performance RPC infrastructure.”** Dubbo-go 3.3.1 introduces **cross-layer, systematic enhancements** to the Triple protocol: * **Parallel support for HTTP/2 and HTTP/3** * **Experimental HTTP/3 (QUIC) support** * **Redesigned Triple TLS API** * **Non-IDL Mode support (IDL-free services)** * **Triple Generic Calls** * **Stream-based Hessian decoding for large payloads and streaming** * **Triple service OpenAPI documentation generator** These capabilities significantly improve Triple in terms of: * Lower network latency * Better resilience in weak or unstable networks * Improved engineering and operational friendliness ### Example (Triple + HTTP/3) Sample source code: [https://github.com/apache/dubbo-go-samples/tree/main/http3](https://github.com/apache/dubbo-go-samples/tree/main/http3) ```go // server side func main() { logger.SetLoggerLevel("debug") srv, err := server.NewServer( server.WithServerProtocol( protocol.WithPort(20000), protocol.WithTriple( triple.Http3Enable(), ), ), server.WithServerTLSOption( tls.WithCertFile("../../x509/server2_cert.pem"), tls.WithKeyFile("../../x509/server2_key_pkcs8.pem"), tls.WithServerName("dubbogo.test.example.com"), ), ) if err != nil { panic(err) } if err := greet.RegisterGreetServiceHandler(srv, &GreetTripleServer{}); err != nil { panic(err) } logger.Info("Starting HTTP/3 enabled Dubbo-go server on port 20000...") if err := srv.Serve(); err != nil { panic(err) } } ``` ```go // client side func main() { logger.SetLoggerLevel("debug") cli, err := client.NewClient( client.WithClientURL("127.0.0.1:20000"), client.WithClientTLSOption( tls.WithCACertFile("../../x509/server_ca_cert.pem"), tls.WithCertFile("../../x509/server2_cert.pem"), tls.WithKeyFile("../../x509/server2_key_pkcs8.pem"), tls.WithServerName("dubbogo.test.example.com"), ), client.WithClientProtocol( protocol.WithTriple( triple.Http3Enable(), ), ), ) if err != nil { panic(err) } svc, err := greet.NewGreetService(cli) if err != nil { panic(err) } for i := 0; i < 3; i++ { ctx, cancel := context.WithTimeout(context.Background(), time.Second) resp, err := svc.Greet(ctx, &greet.GreetRequest{Name: "Go Client"}) if err != nil { panic(err) } logger.Infof("Greet response: %s", resp.Greeting) cancel() time.Sleep(time.Second) } } ``` --- ## 🎯 Highlight 3: Configuration, Routing & Governance Upgrades > **Making Dubbo-go more stable and controllable in complex production > environments.** ### Key Enhancements * **New Apollo configuration center support** * Can serve as both configuration center and governance entry point * Supports namespace isolation and version management * **Hot configuration reload** * **Improved stability for Nacos / Zookeeper** * Registration and subscription reliability * Weight and routing consistency * Edge case fixes * **Enhanced interface precise matching** * Supports `group / version` wildcards * **Service metadata enhancements** * Supports injecting `dubbo.tag` * **Router API officially opened** * New `WithInterface` option added to client initialization ### Apollo Configuration Center Example Sample source code: [https://github.com/apache/dubbo-go-samples/tree/main/config_center/apollo](https://github.com/apache/dubbo-go-samples/tree/main/config_center/apollo) ```go func main() { ins, _ := dubbo.NewInstance( dubbo.WithConfigCenter( config_center.WithApollo(), config_center.WithAddress(apolloMetaAddress), config_center.WithNamespace(apolloNamespace), config_center.WithDataID(apolloNamespace), config_center.WithAppID(apolloAppID), config_center.WithCluster(apolloCluster), ), ) cli, _ := ins.NewClient() svc, _ := greet.NewGreetService(cli) resp, _ := svc.Greet(context.Background(), &greet.GreetRequest{Name: "Apollo"}) logger.Infof("Greet response: %s", resp) } ``` --- ## 📈 Performance · Stability · Observability Fully promote > **This is the confidence behind “safe upgrades in production.”** ### Performance & Resource Governance * **Precompiled regular expressions** * **20–30% performance improvement** in routing and validation scenarios * **Streaming Hessian decoding** * Significantly reduces peak memory usage for large payloads * Ideal for file transfer, batch RPC, and IoT scenarios * **Weighted Round Robin fixes** * Fairer scheduling and lower latency in dynamic cluster environments ### Stability & Engineering Quality * goroutine / file descriptor / cache leaks * Improved graceful shutdown using `errgroup` * Added shutdown timeout control for Triple servers * Multiple panic and edge case fixes * Enhanced service registration lifecycle logging ### Observability Dubbo-go 3.3.1 introduces comprehensive **OpenTelemetry upgrades**, supporting both tracing and metrics. These enhancements improve observability with fine-grained control and standards compliance, enabling seamless integration with tools like Jaeger and Prometheus. * **Dependency upgrade**: Migrated to OTel v1.21.0 for latest features, bug fixes, and deprecation handling * **Insecure mode support**: HTTP exporters without TLS for development or internal networks * **Scope alignment**: Tracing scopes adjusted to comply with OTel specifications * **Enhanced lifecycle logs**: Service registration, deregistration, and update logs for dynamic environments * **Timeout control**: Integrated with graceful shutdown for better trace handling during service termination --- ## ℹ️ Upgrade Notes * **Go version requirement: Go 1.24** * **HTTP/3 is an experimental feature** * Legacy APIs remain available, but **gradual migration to the New API is strongly recommended** --- ## 🙏 Community Contributors Thanks to all community members who contributed to Dubbo-go 3.3.1 (alphabetical order) ❤️: @1kasa @97ZQ @ALSoryu @Akashisang @Alanxtl @AlexStocks @CAICAIIs @Flying-Tom @FoghostCn @KamToHung @MinatoWu @MrSibe @Nexusrex18 @No-SilverBullet @Rinai-R @Similarityoung @Snow-kal @WangzJi @Whitea029 @ayamzh @baerwang @dongjiang1989 @evanzhang87 @flypiggyyoyoyo @hs80 @liushiqi1001 @manzhizhen @marsevilspirit @nanjiek @phpcyy @sebbASF @wqyenjoy @xuzhijvn @yumosx @yxrxy @zbchi @ziyyun --- ## 🚀 Get Started Now * **Project Repository** 👉 [https://github.com/apache/dubbo-go](https://github.com/apache/dubbo-go) * **Official Samples** 👉 [https://github.com/apache/dubbo-go-samples](https://github.com/apache/dubbo-go-samples) --- ## Final Words Dubbo-go 3.3.1 is more than a feature release—it is a **clear upgrade in engineering capability and architectural direction**: * **New API**: Truly engineering-grade client design * **Triple**: Advancing toward next-generation high-performance RPC * **Configuration & Governance**: Greater confidence in production > **A cleaner API. > A stronger Triple. > Production-ready, future-oriented.** --- # 🚀 Apache Dubbo-go 3.3.1 正式发布 ## A Faster, Cleaner, and More Powerful Triple RPC Framework > **全新 Client API|Triple 协议体系化进化|配置与治理能力全面增强** **Apache Dubbo-go 3.3.1** 现已正式发布 🎉 这是一个 **面向生产环境、面向未来架构演进的重要增强版本**。 本次版本并非简单的功能叠加,而是围绕 **API 设计、Triple 协议能力、配置与治理体系** 的一次系统性升级,显著提升了: * 客户端与服务端工程体验 * 协议性能与可扩展性 * 生产环境稳定性与可观测性 同时,基础设施能力完成关键演进: > ✅ **Dubbo-go 正式支持 Go 1.24,全面对齐最新 Go 生态** --- ## 一句话看懂 Dubbo-go 3.3.1 > **这是 Dubbo-go 从“能用”走向“好用、稳用、可长期演进”的一个关键版本。** Dubbo-go 3.3.1 聚焦四个核心方向: * **全新设计的 Client New API(未来主路径)** 显著提升客户端可维护性与扩展能力 @marsevilspirit * **下一代 Triple 协议能力体系化增强** 从协议实现走向高性能、可运营的 RPC 基础设施 @marsevilspirit * **配置中心、路由与治理能力升级** 更稳定、更灵活,更适合复杂生产环境 @1kasa @MinatoWu @FoghostCn --- ## 🔥 亮点一:全新 Client New API(强烈推荐) > **这是 Dubbo-go 客户端能力的一次“重启式升级”。** Dubbo-go 3.3.1 引入 **全新 Client New API**,基于 **Option Pattern** 重新设计客户端初始化与调用模型,为后续多协议、Triple 与高级能力演进奠定统一基础。 ### 为什么需要 New API? * ✅ **初始化路径清晰可读** * ✅ **能力组合显式可控** * ✅ **天然支持 Triple 与多协议** * ✅ **更易测试、更易封装** * ✅ **符合 Go 社区工程实践** ### 使用示例(New API + Triple) 示例源码见: [https://github.com/apache/dubbo-go-samples/tree/main/async](https://github.com/apache/dubbo-go-samples/tree/main/async) ```go func main() { cli, _ := client.NewClient( client.WithClientProtocolTriple(), client.WithClientURL("tri://127.0.0.1:20000"), client.WithClientSerialization(constant.ProtobufSerialization), ) userProvider, _ := user.NewUserProvider(cli, client.WithAsync()) req := &user.SayHelloRequest{UserId: "003"} resp, _ := userProvider.SayHello(context.Background(), req) logger.Info(resp) } ``` > ✅ **New API 是 Dubbo-go 后续能力演进的核心基础** > 所有新项目与 Triple 场景,**强烈推荐优先使用**。 --- ## 🚀 亮点二:下一代 Triple 协议能力跃迁 > **Triple 正在从“协议实现”升级为“高性能 RPC 基础设施”。** Dubbo-go 3.3.1 对 Triple 协议进行了 **跨层级、体系化增强**: * **HTTP/2 与 HTTP/3 并行支持** * **实验性 HTTP/3(QUIC)能力** * **全新 Triple TLS API 设计** * **支持 Non-IDL Mode(无 IDL 服务)** * **Triple 泛化调用(Generic Call)** * **Stream Hessian 解码,优化大包与流式场景** * **Triple 服务 OpenAPI 文档生成工具** 这些能力使 Triple 在以下方面显著增强: * 更低网络延迟 * 更强弱网适应能力 * 更好的工程与运维友好度 ### 使用示例(Triple + HTTP/3) 示例源码见: [https://github.com/apache/dubbo-go-samples/tree/main/http3](https://github.com/apache/dubbo-go-samples/tree/main/http3) ```go // server side func main() { logger.SetLoggerLevel("debug") srv, err := server.NewServer( server.WithServerProtocol( protocol.WithPort(20000), protocol.WithTriple( triple.Http3Enable(), ), ), server.WithServerTLSOption( tls.WithCertFile("../../x509/server2_cert.pem"), tls.WithKeyFile("../../x509/server2_key_pkcs8.pem"), tls.WithServerName("dubbogo.test.example.com"), ), ) if err != nil { panic(err) } if err := greet.RegisterGreetServiceHandler(srv, &GreetTripleServer{}); err != nil { panic(err) } logger.Info("Starting HTTP/3 enabled Dubbo-go server on port 20000...") if err := srv.Serve(); err != nil { panic(err) } } ``` ```go // client side func main() { logger.SetLoggerLevel("debug") cli, err := client.NewClient( client.WithClientURL("127.0.0.1:20000"), client.WithClientTLSOption( tls.WithCACertFile("../../x509/server_ca_cert.pem"), tls.WithCertFile("../../x509/server2_cert.pem"), tls.WithKeyFile("../../x509/server2_key_pkcs8.pem"), tls.WithServerName("dubbogo.test.example.com"), ), client.WithClientProtocol( protocol.WithTriple( triple.Http3Enable(), ), ), ) if err != nil { panic(err) } svc, err := greet.NewGreetService(cli) if err != nil { panic(err) } for i := 0; i < 3; i++ { ctx, cancel := context.WithTimeout(context.Background(), time.Second) resp, err := svc.Greet(ctx, &greet.GreetRequest{Name: "Go Client"}) if err != nil { panic(err) } logger.Infof("Greet response: %s", resp.Greeting) cancel() time.Sleep(time.Second) } } ``` --- ## 🎯 亮点三:配置、路由与治理能力升级 > **让 Dubbo-go 在复杂生产环境中更稳、更可控。** ### 核心增强 * **新增 Apollo 配置中心支持** * 可作为配置中心与治理入口 * 支持命名空间隔离、版本管理 * **配置热更新(Hot Reload)** * **Nacos / Zookeeper 稳定性增强** * 注册与订阅可靠性 * 权重与路由一致性 * 边界条件修复 * **接口精确匹配增强** * 支持 `group / version` 通配符 * **服务元数据增强** * 支持注入 `dubbo.tag` * **Router API 正式对外开放** * Client 初始化新增 `WithInterface` 选项 ### Apollo 配置中心示例 示例源码见: [https://github.com/apache/dubbo-go-samples/tree/main/config_center/apollo](https://github.com/apache/dubbo-go-samples/tree/main/config_center/apollo) ```go func main() { ins, _ := dubbo.NewInstance( dubbo.WithConfigCenter( config_center.WithApollo(), config_center.WithAddress(apolloMetaAddress), config_center.WithNamespace(apolloNamespace), config_center.WithDataID(apolloNamespace), config_center.WithAppID(apolloAppID), config_center.WithCluster(apolloCluster), ), ) cli, _ := ins.NewClient() svc, _ := greet.NewGreetService(cli) resp, _ := svc.Greet(context.Background(), &greet.GreetRequest{Name: "Apollo"}) logger.Infof("Greet response: %s", resp) } ``` --- ## 📈 性能 · 稳定性 · 可观测性全面提升 > **这是“敢在生产环境放心升级”的底气所在。** ### 性能与资源治理 * **正则表达式预编译** * 路由与校验场景性能提升 **20–30%** * **Hessian 流式解码** * 显著降低大包场景峰值内存 * 适合文件传输、批量 RPC、IoT 场景 * **Weighted RoundRobin 修复** * 动态集群环境下更公平、更低延迟 ### 稳定性与工程质量 * goroutine / 文件句柄 / 缓存泄漏治理 * 使用 `errgroup` 改进优雅停机 * Triple Server 新增停机超时控制 * 多项 panic 与边界条件修复 * 服务注册生命周期日志增强 ### 可观测性 Dubbo-go 3.3.1 引入 OpenTelemetry 全面升级,支持追踪与指标。这一功能增强了可观测性,提供细粒度控制与标准合规,便于与 Jaeger 或 Prometheus 等工具集成。 * **依赖升级**:移至 OTel v1.21.0,支持最新特性、bug 修复与弃用处理,确保长期兼容性。 * **非安全模式**:支持无 TLS 的 HTTP 导出器,适用于开发或内部网络的灵活配置。 * **作用域对齐**:调整追踪作用域符合 OTel 规范,提升与其他可观测工具的互操作性。 * **增强日志**:添加服务注册、注销与更新的生命周期日志,有助于动态环境调试。 * **超时控制**:与优雅关闭集成,更好处理服务终止时的追踪。 --- ## ℹ️ 升级说明 * **Go 版本要求:Go 1.24** * **HTTP/3 为实验特性** * 旧 API 仍可使用,但 **建议逐步迁移至 New API** --- ## 🙏 致谢社区贡献者 感谢所有参与 Dubbo-go 3.3.1 建设的社区成员(按字典序)❤️: @1kasa @97ZQ @ALSoryu @Akashisang @Alanxtl @AlexStocks @CAICAIIs @Flying-Tom @FoghostCn @KamToHung @MinatoWu @MrSibe @Nexusrex18 @No-SilverBullet @Rinai-R @Similarityoung @Snow-kal @WangzJi @Whitea029 @ayamzh @baerwang @dongjiang1989 @evanzhang87 @flypiggyyoyoyo @hs80 @liushiqi1001 @manzhizhen @marsevilspirit @nanjiek @phpcyy @sebbASF @wqyenjoy @xuzhijvn @yumosx @yxrxy @zbchi @ziyyun --- ## 🚀 立即体验 * **项目地址** 👉 [https://github.com/apache/dubbo-go](https://github.com/apache/dubbo-go) * **官方示例** 👉 [https://github.com/apache/dubbo-go-samples](https://github.com/apache/dubbo-go-samples) --- ## Final Words Dubbo-go 3.3.1 不只是一次功能发布,而是一次 **工程能力与架构方向的明确升级**: * **New API**:让客户端真正工程化 * **Triple**:迈向下一代高性能 RPC * **配置与治理**:让生产环境更安心 > **A cleaner API. > A stronger Triple. > Production-ready, future-oriented.** GitHub link: https://github.com/apache/dubbo-go/discussions/3138 ---- This is an automatically sent email for [email protected]. To unsubscribe, please send an email to: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
