Skip to content

Latest commit

 

History

History
116 lines (91 loc) · 6.14 KB

File metadata and controls

116 lines (91 loc) · 6.14 KB

Dubbo-Go Samples

CI

中文 | English

一组可运行的 Dubbo-go 示例,涵盖配置、注册中心、可观测性、互操作性、服务网格等场景。

请参考 HOWTO_CN.md 获取详细运行说明。

内容概览

示例

  • async:回调(异步)与单向 RPC 调用示例。
  • apisix:Dubbo-go 集成 Apache APISIX 的示例。
  • book-flight-ai-agent:使用 AI Agent 实现机票预订的示例。
  • config_center:演示如何使用不同配置中心(如 Nacos、Zookeeper)进行配置管理。
  • config_yaml:展示如何使用 YAML 文件配置 Dubbo-go 应用。
  • context:演示如何通过 Go 的 context 在客户端与服务端之间传递用户数据(attachments)。
  • error:Dubbo-go 的错误处理示例。
  • filter:演示 Dubbo-go 中内置和自定义 Filter 的使用。
    • polaris/limit:使用 Polaris 实现 TPS 限流。
  • healthcheck:服务健康检查示例。
  • helloworld:Dubbo-go 最基础的 “Hello World” 示例,同时包含 Go 与 Java 的互操作示例。
  • http3:HTTP/3(QUIC)协议支持示例,演示如何通过 Triple 协议使用 HTTP/3 实现 Go 与 Java 服务之间的高性能通信,并支持 TLS 加密。
  • direct:不依赖注册中心的 Triple 点对点调用示例,并包含 Go 与 Java 的互操作示例。
  • game:游戏服务示例。
  • generic:泛化调用示例,支持 Dubbo-Go 与 Dubbo Java 服务互操作,适用于无接口信息场景。
  • integrate_test:Dubbo-go 示例的集成测试用例。
  • java_interop:展示 Java 与 Go Dubbo 实现之间的互操作能力。
    • non-protobuf-dubbo:基于经典 Dubbo 协议与非 Protobuf 负载(Hessian2 风格)的 Java/Go 互操作示例。
    • non-protobuf-triple:基于 Triple 协议与非 Protobuf 负载的 Java/Go 互操作示例。
    • protobuf-triple:基于 Triple 协议与共享 Protobuf 契约的 Java/Go 互操作示例。
    • service_discovery/interface:基于 Nacos 的接口级服务发现(Dubbo2 / Dubbo3 旧模型)Java/Go 互操作示例。
    • service_discovery/service:基于 Nacos 的应用级服务发现(Dubbo3 模型)Java/Go 互操作示例。
  • llm:将大模型(LLM)集成到 Dubbo-go 中的示例。
  • logger:Dubbo-go 应用的日志使用示例。
  • metrics:可观测性相关示例。
    • metrics/prometheus_grafana:展示如何采集并暴露 Dubbo-go 服务指标,支持 Prometheus Push 和 Pull 两种模式;同时包含用于清理 Push 模式僵尸指标的 pgw-cleaner 工具。
    • metrics/probe:演示 Dubbo-go 在 Kubernetes 场景下的探针端点(/live/ready/startup)及部署方式。
  • mesh:基于代理的服务网格示例,展示如何在 Kubernetes 上结合 Envoy 部署 Dubbo-go 服务。
  • online_boutique:基于 Dubbo-go 构建的微服务 “在线商城” 演示项目。
  • otel/tracing:使用 OpenTelemetry 的分布式链路追踪示例。
    • stdout:使用 stdout exporter 输出追踪数据。
    • otlp_http_exporter:使用 otlpHttpExporter 导出追踪数据,覆盖 dubbo / triple / jsonrpc 协议。
  • registry:使用不同服务注册中心(如 Nacos、Zookeeper)的示例。
  • retry:Dubbo-go RPC 调用重试机制示例。
  • router: Dubbo-go 各种 Router 调用示例。
    • router/tag: Dubbo-go 的 tag router 使用示例。
    • router/condition: Dubbo-go 的 condition router 使用示例。
    • router/script: Dubbo-go 的 script router 使用示例。
  • rpc:Dubbo-go 支持的多种 RPC 协议示例。
    • rpc/dubbo:Dubbo 协议示例,包含 Java–Go 互操作。
    • rpc/grpc:基于 gRPC 协议的示例。
    • rpc/jsonrpc:基于 JSON-RPC 协议的示例。
    • rpc/triple:Triple 协议示例,涵盖多种序列化方式。
  • streaming:流式 RPC 调用示例,并包含了Dubbo-go与Dubbo-java同时使用流式传输的互操作示例。
  • task:任务调度与执行示例。
  • timeout:Dubbo-go 超时处理示例。
  • tls:演示如何在 Dubbo-go 中使用 TLS(基于 X.509 证书),实现客户端与服务端之间的加密通信和/或双向认证,同时包含 Go 与 Java 的互操作示例。
  • transaction/seata-go:基于 seata-go 的分布式事务示例。

compatibility(旧版 Dubbo-go 示例)

  • compatibility/generic:泛化调用示例。
  • compatibility/polaris: Dubbo-go 与 polaris 集成示例.
    • compatibility/polaris/router: 在 dubbogo 中快速体验北极星的服务路由能力

工具

  • pgw-cleaner:用于在 Prometheus Push 模式下清理僵尸指标的运维工具。

集成测试运行流程

当前仓库使用脚本驱动的集成测试流程:

  1. start_integrate_test.sh:执行完整样例列表(与 CI 一致)。
  2. integrate_test.sh <sample-path>:执行单个样例。

执行全量集成测试

./start_integrate_test.sh

该脚本会:

  • 启动根目录 docker-compose.yml 依赖服务。
  • 进行依赖健康检查。
  • 按样例列表逐个调用 ./integrate_test.sh ...
  • 在结束时(成功或失败)回收依赖容器。

执行单个样例

./integrate_test.sh helloworld
./integrate_test.sh direct

integrate_test.sh 的主要步骤:

  1. 启动 go-server(以及可能存在的辅助 Go server)。
  2. 运行 go-client
  3. 运行 java-client(若存在且本机有 mvn)。
  4. 停止 go-server
  5. 启动 java-server(若存在),等待端口就绪。
  6. 再运行 java-clientgo-client,验证 Go/Java 互通。

如何参与贡献

如果你希望添加更多示例,请按以下步骤进行:

  1. 新建一个子目录,并为你的示例取一个合适的名称。如果不确定如何组织代码,可以参考现有示例的目录结构和HOWTO.md
  2. 在提交 PR 之前,请确保示例能正常运行;提交 PR 后,也请确保 GitHub CI 能通过。可以参考已有示例了解如何编写和执行测试。
  3. 在你的示例目录下提供一个 README.md,说明该示例的功能及运行方式。