分布式追踪
分布式追踪是定位微服务链路瓶颈、分析请求路径的关键手段。Envoy 可作为全链路追踪的入口和出口,支持多种主流追踪系统。
分布式追踪原理
- 通过唯一 Trace ID 标记每个请求,沿调用链透传。
- 每个服务节点生成 Span,记录处理耗时、元数据等。
- 追踪系统汇总所有 Span,重建完整调用链。
支持的主流追踪系统
- Zipkin:开源分布式追踪系统,Envoy 原生支持。
- Jaeger:CNCF 项目,功能丰富,兼容 OpenTracing。
- SkyWalking:适合云原生场景,支持多语言探针。
- Datadog:商业化 APM,支持 Envoy 集成。
追踪头透传与采样配置
- Envoy 自动识别并透传常见追踪头(如 x-request-id、x-b3-*、traceparent 等)。
- 支持多种采样策略(全采样、概率采样等)。
配置示例(以 Zipkin 为例)
tracing:
http:
name: envoy.tracers.zipkin
typed_config:
"@type": type.googleapis.com/envoy.config.trace.v3.ZipkinConfig
collector_cluster: zipkin
collector_endpoint: /api/v2/spans
trace_id_128bit: true
shared_span_context: false
采样率配置:
http_connection_manager:
tracing:
random_sampling:
value: 100 # 采样率 100/10000 = 1%
工程实践建议
- 建议全链路统一采样策略,避免链路断裂。
- 关注 Trace ID 透传,确保跨服务追踪完整。
- 结合 metrics、logging 形成观测闭环。
- 合理设置采样率,兼顾成本与可观测性。
分布式追踪是微服务治理的利器,建议在生产环境全链路部署并持续优化。