English | 中文
Apache Dubbo-go 是一款高性能、功能丰富的微服务框架。作为 Apache Dubbo 生态的 Go 语言实现,它充分利用 Golang 的并发特性,助力开发者在云原生时代构建扩展性强、可靠性高的分布式应用。
在全新的 v3.3.x 系列版本中,Dubbo-go 已从传统的 RPC 框架演进为云原生智能微服务治理平台,引入了深度的 AI 集成与 Proxyless Mesh(无代理网格)能力。
您可以访问 官网 以获取更多信息。
- Go 1.24 或更高版本(建议使用最新版本以获得最佳性能与兼容性)。
使用以下命令安装 Dubbo-go:
go get dubbo.apache.org/dubbo-go/v3@latest
通过我们的 快速开始 (Helloworld) 示例,您可以在 5 分钟内掌握如何开发一个 RPC 应用。
过程如下方代码所示,非常简单:您使用 Protobuf 定义一个服务,提供您自己的服务实现,将其注册到服务器,然后启动服务器。
func (srv *GreetTripleServer) Greet(ctx context.Context, req *greet.GreetRequest) (*greet.GreetResponse, error) {
resp := &greet.GreetResponse{Greeting: req.Name}
return resp, nil
}
func main() {
srv, _ := server.NewServer(
server.WithServerProtocol(
protocol.WithPort(20000),
protocol.WithTriple(),
),
)
_ := greet.RegisterGreetServiceHandler(srv, &GreetTripleServer{})
if err := srv.Serve(); err != nil {
logger.Error(err)
}
}服务器启动并运行后,您可以通过 cURL 调用您的服务:
curl \
--header "Content-Type: application/json" \
--data '{"name": "Dubbo"}' \
http://localhost:20000/greet.GreetService/Greet或者,您也可以启动一个标准的 dubbo-go 客户端来调用该服务:
func main() {
cli, _ := client.NewClient(
client.WithClientURL("127.0.0.1:20000"),
)
svc, _ := greet.NewGreetService(cli)
resp, _ := svc.Greet(context.Background(), &greet.GreetRequest{Name: "hello world"})
logger.Infof("Greet response: %s", resp.Greeting)
}有关详细用法,请参阅示例。接下来,请访问官网,了解如何部署、监控和管理您的 dubbo-go 应用的流量。
- RPC 协议: Triple (兼容 gRPC 且对 HTTP 友好)、Dubbo、JSONRPC、HTTP/2、HTTP/3 (实验性)。
- 服务发现: Nacos、Zookeeper、Etcd、Polaris-mesh。
- 负载均衡: 自适应、随机、轮询、最少活跃调用、一致性哈希。
- 流量管理: 流量切分、超时设置、速率限制、金丝雀发布。
- 配置管理: YAML 文件、动态配置(Nacos、Apollo、Zookeeper 等),支持基于指纹去重的优化版文件监听。
- 可观测性: 指标(Prometheus)、追踪(OpenTelemetry v1.21.0+ 标准化 Span 名)、日志(完整的生命周期事件记录)。
- 高可用策略: 故障转移 (Failover)、快速失败 (Failfast)、失败安全/失败自动恢复 (Failsafe/Failback)、广播 (Broadcast)、并行调用 (Forking)。
- 跨语言互通: 通过 Triple 协议泛化调用、版本通配符匹配等技术,实现与 Java 版 Dubbo 的完美互通。
常用开发工具位于 tools/ 目录。
| 工具 | 用途 |
|---|---|
| dubbogo-cli | 创建 demo/应用脚手架、安装配套工具、查看元数据并调试服务。 |
| protoc-gen-go-triple | 从 protobuf 服务定义生成 dubbo-go Triple 绑定代码。 |
| protoc-gen-triple-openapi | 从 Triple protobuf 服务生成 OpenAPI v3 文档。 |
| imports-formatter | 按 dubbo-go 分组规则整理 Go import 块。 |
| dubbo-go-schema | 为 dubbo-go YAML 配置提供 JSON Schema 补全与校验。 |
- dubbo-go-samples
- dubbo-go-pixiu: 作为代理解决 Dubbo 多语言互通问题
- 与 Dubbo Java 互通
- 控制台 (Console),开发中
- dubbo-go-extensions,建设中
- 官方网站: https://dubbo.apache.org/
- 官方文档: https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/
- 问题反馈: GitHub Issues
关于提交补丁和贡献流程的详细信息,请访问 CONTRIBUTING。
通过钉钉或微信加入我们的讨论组。
如果您正在使用 apache/dubbo-go 并且它对您有所帮助,或者您想为 Dubbo-go 贡献代码,请将您的公司添加到用户列表,让我们了解您的需求。
Apache Dubbo-go 软件基于 Apache 许可证 2.0 版本进行许可。详情请参阅 LICENSE 文件。

