# repos_asf_dubbo-go-samples **Repository Path**: mirrors_community_gitbox_apache/repos_asf_dubbo-go-samples ## Basic Information - **Project Name**: repos_asf_dubbo-go-samples - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-29 - **Last Updated**: 2026-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Dubbo-Go Samples ![CI](https://github.com/apache/dubbo-go-samples/workflows/CI/badge.svg) 中文 | [English](README.md) 一组可运行的 Dubbo-go 示例,涵盖配置、注册中心、可观测性、互操作性、服务网格等场景。 请参考 [HOWTO_CN.md](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 的使用。 * `custom`:实现自定义的客户端和服务端 Filter。 * `hystrix`:使用 `hystrix-go` 演示 Dubbo-go 调用中的熔断保护。 * `sentinel`:演示基于 Sentinel Filter 的流控、隔离和熔断能力。 * `polaris/limit`:使用 Polaris 实现 TPS 限流。 * `token`:演示消费端与提供端之间基于 token 的请求校验。 * `tpslimit`:演示 Dubbo-go 内置 TPSLimit Filter,以及自定义限流和拒绝处理策略。 * `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 服务互操作,适用于无接口信息场景。 * `graceful_shutdown`:Triple 优雅停机示例,用于验证长连接通知、请求排空,以及相关停机时间参数。 * `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 应用的日志使用示例。 * `logger/default`:默认打印到控制台。 * `logger/level`:设置日志隔离级别。 * `logger/rolling`:输出到文件。 * `logger/custom`:自定义 logger。 * `logger/trace-integration`:集成 OpenTelemetry trace 信息,自动将 trace_id、span_id 等信息注入日志。 * `observability`:Dubbo-go 可观测性相关样例。 * `observability/integration`:端到端可观测性集成验证样例,组合 Nacos 服务发现、Dubbo Triple 链路追踪、OpenTelemetry Collector、Prometheus/Grafana 以及带 Trace 关联的日志。 * `observability/prometheus_grafana`:展示如何采集并暴露 Dubbo-go 服务指标,支持 Prometheus Push 和 Pull 两种模式;同时包含用于清理 Push 模式僵尸指标的 `pgw-cleaner` 工具。 * `observability/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 使用示例。 * `router/polaris`:在 Dubbo-go 中快速体验北极星的服务路由能力。 * `router/static_config/tag`: 静态配置的 tag router 示例。 * `router/static_config/condition`: 静态配置的 condition router 示例。 * `rpc`:Dubbo-go 支持的多种 RPC 协议示例。 * `rpc/dubbo`:Dubbo 协议示例,包含 Java–Go 互操作。 * `rpc/grpc`:基于 gRPC 协议的示例。 * `rpc/jsonrpc`:基于 JSON-RPC 协议的示例。 * `rpc/triple`:Triple 协议示例,涵盖多种序列化方式。 * `rpc/triple/openapi`:演示如何为 Triple 协议服务启用 OpenAPI 文档,包括多版本服务和非 IDL 服务的注册。 * `rpc/rest`:基于 REST 协议的示例。 * `streaming`:流式 RPC 调用示例,并包含了Dubbo-go与Dubbo-java同时使用流式传输的互操作示例。 * `task`:任务调度与执行示例。 * `timeout`:Dubbo-go 超时处理示例。 * `triple_header_trailer`:演示 Triple 请求 metadata/attachments 以及基于 `http.Header` 暴露的响应 header / trailer。 * `tls`:演示如何在 Dubbo-go 中使用 TLS(基于 X.509 证书),实现客户端与服务端之间的加密通信和/或双向认证,同时包含 Go 与 Java 的互操作示例。 * `transaction/seata-go`:基于 `seata-go` 的分布式事务示例。 ### 工具 * `pgw-cleaner`:用于在 Prometheus Push 模式下清理僵尸指标的运维工具。 ## 集成测试运行流程 当前仓库使用脚本驱动的集成测试流程: 1. `start_integrate_test.sh`:执行完整样例列表(与 CI 一致)。 2. `integrate_test.sh `:执行单个样例。 ### 执行全量集成测试 ```bash ./start_integrate_test.sh ``` 该脚本会: * 启动根目录 `docker-compose.yml` 依赖服务。 * 进行依赖健康检查。 * 按样例列表逐个调用 `./integrate_test.sh ...`。 * 在结束时(成功或失败)回收依赖容器。 ### 执行单个样例 ```bash ./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-client` 和 `go-client`,验证 Go/Java 互通。 ## 如何参与贡献 如果你希望添加更多示例,请按以下步骤进行: 1. 新建一个子目录,并为你的示例取一个合适的名称。如果不确定如何组织代码,可以参考现有示例的目录结构和[HOWTO.md](HOWTO.md)。 2. 在提交 PR 之前,请确保示例能正常运行;提交 PR 后,也请确保 GitHub CI 能通过。可以参考已有示例了解如何编写和执行测试。 3. 在你的示例目录下提供一个 `README.md`,说明该示例的功能及运行方式。