本文目录#

引言#

在微服务体系中,全链路追踪是定位性能瓶颈的关键。Spring Cloud Sleuth 与 Zipkin 提供开箱即用的 Trace 收集与展示能力。本文介绍追踪原理、生产化部署与优化策略。

Sleuth 工作原理#

  • 在入口处创建 Trace/Span,使用 B3/W3C Header 传播;
  • 支持 RestTemplate、WebClient、Feign、RabbitMQ、Kafka;
  • 对异步任务、线程池进行上下文传播;
  • 与 Micrometer Tracing 集成。

Zipkin 部署#

  • 存储后端:MySQL、Elasticsearch、Cassandra;
  • Collector:接收 HTTP/GRPC;
  • Query Service + UI 展示;
  • 可部署在 Kubernetes,并设置数据保留策略。

性能优化#

  • 采样率 spring.sleuth.sampler.probability 控制;
  • 对高流量接口进行概率采样或基于规则采样;
  • 设置 zipkin.storage.percentiles 支持延迟统计;
  • 使用 Kafka Collector 缓冲高并发数据。

深度实践#

  • 将 Trace ID 注入日志,便于日志追踪;
  • 使用 @NewSpan 自定义 Span;
  • 与 Gateway 集成,记录入口、出口;
  • 结合 Spring Cloud Task 记录批处理任务。

Observability 升级#

  • 升级到 Micrometer Tracing + OTEL Collector,兼容 Zipkin;
  • 引入 Service Map,结合 Grafana Tempo/Jaeger;
  • 添加业务标签(租户、订单号)提高定位效率。

总结#

Sleuth + Zipkin 提供了标准化的追踪方案。通过合理采样、可视化平台和上下文传播,能快速发现分布式系统中的瓶颈。

参考资料#


本作品系原创,采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,转载请注明出处。