You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by "Alanxtl (via GitHub)" <gi...@apache.org> on 2025/12/22 08:33:07 UTC
[D] Dubbo-go-Pixiu 3.3.1 Release doc 发版文档 [dubbo-go]
GitHub user Alanxtl created 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 @HSenCode @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 @HSenCode @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 notifications@dubbo.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@dubbo.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org
Re: [D] Dubbo-go-Pixiu 3.3.1 Release doc 发版文档 [dubbo-go]
Posted by "Alanxtl (via GitHub)" <gi...@apache.org>.
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 notifications@dubbo.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@dubbo.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org
Re: [D] Dubbo-go 3.3.1 Release doc 发版文档 [dubbo-go]
Posted by "Alanxtl (via GitHub)" <gi...@apache.org>.
GitHub user Alanxtl edited a discussion: Dubbo-go 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 notifications@dubbo.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@dubbo.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org