Skip to content

Latest commit

 

History

History
264 lines (215 loc) · 9.78 KB

File metadata and controls

264 lines (215 loc) · 9.78 KB

Apache Dubbo for Golang

CI go.dev reference Go Report Card license


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 应用的流量。

功能特性

dubbo-go-architecture

  • 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 补全与校验。

生态系统

社区与文档

关于提交补丁和贡献流程的详细信息,请访问 CONTRIBUTING

联系我们

通过钉钉或微信加入我们的讨论组。

invite.png

如果您正在使用 apache/dubbo-go 并且它对您有所帮助,或者您想为 Dubbo-go 贡献代码,请将您的公司添加到用户列表,让我们了解您的需求。

查看更多用户案例

许可证

Apache Dubbo-go 软件基于 Apache 许可证 2.0 版本进行许可。详情请参阅 LICENSE 文件。