这个项目能做什么
Apache Dubbo-go 是 Apache Dubbo 的 Go 实现,这是一个高性能的 RPC 和微服务框架,旨在与其他语言的 Dubbo 实现互操作。它利用 Go 的并发特性来支持服务治理,例如服务发现、负载均衡和流量管理。
支持的协议包括 Dubbo、JSONRPC、Triple(兼容 gRPC)、gRPC、HTTP、HTTP2 以及实验性的 HTTP/3,这有助于在异构环境中的集成。列出的服务发现集成包括 Nacos、Zookeeper、Etcd 和 Polaris-mesh。负载均衡策略包括自适应、随机、轮询、最少活跃和一致性哈希。流量管理涵盖流量拆分、超时、限流和金丝雀发布。配置可以来自 YAML 文件或动态源,如 Nacos、Apollo 和 Zookeeper。可观测性选项包括 Prometheus 指标、OpenTelemetry 追踪以及带有服务注册生命周期事件的日志记录。高可用策略包括故障转移、快速失败、故障安全/故障恢复、可用、广播和分叉。
README 强调了通过 Triple 协议泛化调用、组/版本通配符匹配以及 TLS API 重新设计与 Apache Dubbo(Java)的互操作性。最近的版本侧重于 API 整合、Triple 协议能力、应用级元数据、服务治理、并发安全和发布工具。版本 3.3.2 移除了旧版配置包,转而使用全局包,并修复了竞态条件、过期快照和资源泄漏问题。版本 3.3.1 增加了基于内容缓存的配置热重载、实验性 HTTP/3、Apollo 集成和 Triple OpenAPI 生成。版本 3.3.0 引入了脚本路由、多目标条件路由、Triple 保活和连接池,以及 Nacos 多类别订阅。
入门需要 Go 1.24 或更高版本。安装通过 `go get dubbo.apache.org/dubbo-go/v3@latest` 进行。一个快速示例展示了使用 Protobuf 定义服务、实现它、使用 Triple 协议在端口上将其注册到服务器并提供服务。然后可以通过 cURL 使用 HTTP 上的 JSON 调用该服务,或通过标准 dubbo-go 客户端调用。示例可在 dubbo-go-samples 仓库中找到。
开发工具位于 `tools/` 目录:dubbogo-cli 用于脚手架搭建、安装配套工具、检查元数据和调试;protoc-gen-go-triple 用于从 protobuf 定义生成 Triple 绑定;protoc-gen-triple-openapi 用于生成 OpenAPI v3 文档;imports-formatter 用于 Go 导入分组;dubbo-go-schema 用于 YAML 配置验证;以及一个比较 Dubbo-Go、Dubbo-Java 和 gRPC 的基准测试套件。
生态系统包括 dubbo-go-samples、作为多语言互操作代理的 dubbo-go-pixiu、Dubbo Java 互操作教程以及 Dubbo Admin 控制台。文档可在官方 Dubbo 网站和 Go SDK 部分获取。该项目采用 Apache License 2.0 许可,欢迎通过 GitHub 问题和邮件列表贡献。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。