Skip to content

Discussion 3138

alanxtl edited this page Sep 20, 2026 · 1 revision

Dubbo-go 3.3.1 Release doc 发版文档

讨论目录 · GitHub 原讨论

  • 编号:#3138
  • 分类:General
  • 状态:打开 / 无已采纳答案
  • 创建:2025-12-22T08:33:02Z
  • 更新:2025-12-22T09:57:52Z
  • 作者:Alanxtl

社区原始记录;其中的建议、未决提案和版本描述需结合 版本与升级 核对。快照日期:2026-09-20。

讨论正文

🚀 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

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

// 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)
	}
}

🎯 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

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


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

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

// 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 选项

Apollo 配置中心示例

示例源码见: 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


🚀 立即体验


Final Words

Dubbo-go 3.3.1 不只是一次功能发布,而是一次 工程能力与架构方向的明确升级:

  • New API:让客户端真正工程化
  • Triple:迈向下一代高性能 RPC
  • 配置与治理:让生产环境更安心

A cleaner API. A stronger Triple. Production-ready, future-oriented.

评论与回复

本次采集时无评论。

Clone this wiki locally