基于Spring Cloud的分布式追踪系统Docker部署指南
2025-07-10 07:48:43作者:温艾琴Wonderful
本文将以thombergs/code-examples项目中的Spring Cloud分布式追踪系统为例,详细介绍如何使用Docker Compose部署一个完整的微服务追踪环境。这个部署方案包含了API服务、客户服务和OpenTelemetry收集器,能够帮助开发者快速搭建分布式追踪基础设施。
系统架构概述
该分布式追踪系统由三个核心组件构成:
- API服务:作为系统的入口点,监听8080端口
- 客户服务:提供业务功能,动态分配端口
- OpenTelemetry收集器:负责接收、处理和导出追踪数据
Docker Compose文件详解
版本声明
version: "3.5"
使用Docker Compose 3.5版本,该版本提供了良好的兼容性和功能支持。
服务定义
1. API服务
api-service:
build: api-service/
image: api-service:latest
ports:
- "8080:8080"
- build:指定构建上下文为api-service目录
- image:构建后的镜像名称和标签
- ports:将容器8080端口映射到主机8080端口,便于外部访问
2. 客户服务
customer-service:
build: ./customer-service/
image: customer-service:latest
ports:
- "8081"
- 与API服务类似,但端口映射仅指定容器端口,由Docker自动分配主机端口
- 这种配置适用于内部服务,不需要固定主机端口
3. OpenTelemetry收集器
collector:
image: logzio/otel-collector-traces
environment:
- LOGZIO_REGION=${LOGZIO_REGION}
- LOGZIO_TRACES_TOKEN=${LOGZIO_TRACES_TOKEN}
ports:
- "1777:1777"
- "9411:9411"
- "9943:9943"
- "6831:6831"
- "6832:6832"
- "14250:14250"
- "14268:14268"
- "4317:4317"
- "55681:55681"
- "8888:8888"
- 使用预构建的logzio/otel-collector-traces镜像
- 需要配置两个环境变量:区域和追踪令牌(通过环境变量传入)
- 开放多个端口以支持不同协议的追踪数据接收:
- 1777:Zipkin端口
- 9411:Zipkin API端口
- 6831/6832:Jaeger Thrift Compact/Binary协议
- 14250:Jaeger gRPC
- 14268:Jaeger HTTP
- 4317:OTLP gRPC
- 55681:OTLP HTTP
- 8888:健康检查和指标端口
部署实践指南
准备工作
- 安装Docker和Docker Compose
- 准备环境变量文件(.env),包含LOGZIO_REGION和LOGZIO_TRACES_TOKEN
- 确保各服务代码已准备就绪
启动系统
docker-compose up -d
此命令将:
- 构建api-service和customer-service镜像
- 拉取otel-collector-traces镜像
- 启动所有容器
验证部署
- 访问API服务:http://localhost:8080
- 检查收集器健康状态:http://localhost:8888
- 通过日志验证服务间通信和追踪数据
技术要点解析
分布式追踪原理
该系统实现了基于OpenTelemetry的分布式追踪,工作流程如下:
- 微服务生成追踪数据
- 通过OTLP或其他协议发送到收集器
- 收集器处理并转发到后端存储(如Logz.io)
- 用户通过可视化工具分析追踪数据
端口映射策略
- 对外服务(如API)使用固定主机端口
- 内部服务使用动态端口分配
- 收集器开放多种协议端口以提高兼容性
环境变量管理
敏感配置(如令牌)通过环境变量传入,避免硬编码,提高安全性。
常见问题解决
- 端口冲突:检查主机端口是否被占用,可修改映射配置
- 收集器启动失败:验证环境变量是否正确设置
- 服务间通信问题:检查网络配置和健康状态
- 追踪数据不完整:确认各服务是否正确配置了追踪导出
扩展建议
- 添加Prometheus和Grafana实现指标监控
- 集成日志收集系统(如ELK)
- 配置服务自动扩缩容
- 增加健康检查和就绪探针
通过本文介绍的Docker Compose部署方案,开发者可以快速搭建一个功能完整的Spring Cloud分布式追踪环境,为微服务系统的可观测性提供坚实基础。