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]

Reply via email to