Repository navigation
Discussion 3138
- 编号:#3138
- 分类:General
- 状态:打开 / 无已采纳答案
- 创建:2025-12-22T08:33:02Z
- 更新:2025-12-22T09:57:52Z
- 作者:Alanxtl
社区原始记录;其中的建议、未决提案和版本描述需结合 版本与升级 核对。快照日期:2026-09-20。
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
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
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.
- ✅ 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
Sample source code: https://github.com/apache/dubbo-go-samples/tree/main/async
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.
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
Sample source code: https://github.com/apache/dubbo-go-samples/tree/main/http3
// 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)
}
}// 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)
}
}Making Dubbo-go more stable and controllable in complex production environments.
-
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 / versionwildcards
- Supports
-
Service metadata enhancements
- Supports injecting
dubbo.tag
- Supports injecting
- Router API officially opened
- New
WithInterfaceoption added to client initialization
Sample source code: https://github.com/apache/dubbo-go-samples/tree/main/config_center/apollo
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)
}This is the confidence behind “safe upgrades in production.”
-
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
- 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
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
- 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
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
-
Project Repository 👉 https://github.com/apache/dubbo-go
-
Official Samples 👉 https://github.com/apache/dubbo-go-samples
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.
全新 Client API|Triple 协议体系化进化|配置与治理能力全面增强
Apache Dubbo-go 3.3.1 现已正式发布 🎉 这是一个 面向生产环境、面向未来架构演进的重要增强版本。
本次版本并非简单的功能叠加,而是围绕 API 设计、Triple 协议能力、配置与治理体系 的一次系统性升级,显著提升了:
- 客户端与服务端工程体验
- 协议性能与可扩展性
- 生产环境稳定性与可观测性
同时,基础设施能力完成关键演进:
✅ Dubbo-go 正式支持 Go 1.24,全面对齐最新 Go 生态
这是 Dubbo-go 从“能用”走向“好用、稳用、可长期演进”的一个关键版本。
Dubbo-go 3.3.1 聚焦四个核心方向:
-
全新设计的 Client New API(未来主路径) 显著提升客户端可维护性与扩展能力 @marsevilspirit
-
下一代 Triple 协议能力体系化增强 从协议实现走向高性能、可运营的 RPC 基础设施 @marsevilspirit
-
配置中心、路由与治理能力升级 更稳定、更灵活,更适合复杂生产环境 @1kasa @MinatoWu @FoghostCn
这是 Dubbo-go 客户端能力的一次“重启式升级”。
Dubbo-go 3.3.1 引入 全新 Client New API,基于 Option Pattern 重新设计客户端初始化与调用模型,为后续多协议、Triple 与高级能力演进奠定统一基础。
- ✅ 初始化路径清晰可读
- ✅ 能力组合显式可控
- ✅ 天然支持 Triple 与多协议
- ✅ 更易测试、更易封装
- ✅ 符合 Go 社区工程实践
示例源码见: https://github.com/apache/dubbo-go-samples/tree/main/async
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 正在从“协议实现”升级为“高性能 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 在以下方面显著增强:
- 更低网络延迟
- 更强弱网适应能力
- 更好的工程与运维友好度
示例源码见: https://github.com/apache/dubbo-go-samples/tree/main/http3
// 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)
}
}// 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选项
示例源码见: https://github.com/apache/dubbo-go-samples/tree/main/config_center/apollo
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
Dubbo-go 3.3.1 不只是一次功能发布,而是一次 工程能力与架构方向的明确升级:
- New API:让客户端真正工程化
- Triple:迈向下一代高性能 RPC
- 配置与治理:让生产环境更安心
A cleaner API. A stronger Triple. Production-ready, future-oriented.
本次采集时无评论。