分布式追踪概述¶
版本: 2.6.11
最后更新: 2026-06-09
配置路径:src/main/resources/config/tracing/tracing-base.yml
JAiRouter 集成了基于 OpenTelemetry 的分布式追踪系统,提供完整的请求链路追踪、性能监控和故障诊断能力。
功能特性¶
🔍 全链路追踪¶
- 请求级别追踪:从客户端请求到后端服务调用的完整链路追踪
- 服务间调用监控:自动记录微服务间的调用关系和耗时
- 异步操作追踪:支持响应式编程中的异步操作上下文传播(通过
AsyncTracingProcessor) - 数据库查询追踪:监控数据库操作和慢查询检测
- 组件级追踪:集成限流器、熔断器、负载均衡器的追踪支持
📊 采样策略¶
- 比率采样:基于百分比的随机采样策略(默认:0.1,v2.7.9 优化后减少 90% 开销)
- 规则采样:基于服务名称、操作类型、请求路径的规则采样
- 自适应采样:根据系统负载和错误率动态调整采样率
- 父采样:遵循父追踪的采样决策
- 动态配置:支持运行时调整采样策略,无需重启服务
🏷️ 上下文管理¶
- 追踪标识:自动生成和管理 Trace ID 和 Span ID
- MDC 集成:通过
TracingMDCManager将追踪信息自动注入到日志中 - 上下文传播:通过
ReactiveTracingContextHolder在响应式流中自动传播追踪上下文 - 元数据标签:支持自定义标签和业务属性
- 结构化日志:通过
StructuredLogger输出 JSON 格式的日志
🎯 性能监控¶
- 响应时间统计:记录请求处理耗时和各阶段性能指标
- 错误率监控:统计和分析错误发生情况
- 吞吐量分析:监控系统处理能力和负载情况
- 慢查询检测:自动识别和报告性能瓶颈
- 内存管理:通过
TracingMemoryManager和 LRU 缓存智能管理追踪数据 - 性能优化:通过
TracingPerformanceMonitor自动检测瓶颈
追踪架构¶
graph TB
subgraph "客户端层"
Client[客户端应用]
end
subgraph "网关层"
Gateway[API网关]
TFilter[TracingWebFilter]
end
subgraph "应用层"
Router[模型路由服务]
TService[TracingService]
TContext[TracingContext]
end
subgraph "后端层"
Model[AI模型服务]
Database[(数据库)]
end
subgraph "监控层"
Collector[追踪收集器]
Storage[(追踪存储)]
UI[追踪查询界面]
end
Client -->|HTTP请求| Gateway
Gateway -->|请求转发| TFilter
TFilter -->|创建Span| TService
TService -->|上下文管理| TContext
TService -->|路由请求| Router
Router -->|调用服务| Model
Router -->|数据查询| Database
TService -->|导出追踪| Collector
Collector -->|存储| Storage
Storage -->|查询| UI
TFilter -.->|上下文传播| Router
Router -.->|子Span| Model核心组件¶
TracingService¶
追踪服务的核心组件,负责: - 创建和管理 Span 生命周期 - 处理追踪上下文的创建、传播和清理 - 集成采样策略进行智能采样 - 提供追踪数据的导出和存储接口 - 性能统计和优化触发
TracingWebFilter¶
Web 过滤器组件,实现: - HTTP 请求的自动追踪包装 - 追踪上下文的创建和注入 - 响应式流中的上下文传播 - 请求和响应的自动标注
SamplingStrategyManager¶
采样策略管理,支持: - 多种采样算法的实现和切换 - 动态采样率调整 - 基于规则的智能采样 - 采样决策的性能优化 - 运行时配置更新
TracingMemoryManager¶
内存管理组件,提供: - 追踪数据的 LRU 缓存 - 内存压力监控 - 自动垃圾回收触发 - 缓存命中/未命中统计
AsyncTracingProcessor¶
异步追踪处理组件: - 基于队列的追踪数据处理 - 批量导出到追踪收集器 - 高负载下的优雅降级 - 处理统计和监控
TracingPerformanceMonitor¶
性能监控组件: - 实时瓶颈检测 - 优化建议生成 - 健康状态监控 - 性能报告生成
StructuredLogger¶
结构化日志组件: - JSON 格式日志输出 - 追踪上下文注入 - 多种日志构建器(请求、响应、错误、性能、安全等) - 自定义字段支持
安全组件¶
- TracingSecurityManager:追踪数据访问控制
- TracingSanitizationService:敏感数据清洗
- TracingEncryptionService:追踪数据加密
数据流程¶
sequenceDiagram
participant Client as 客户端
participant Filter as TracingWebFilter
participant Service as TracingService
participant Context as TracingContext
participant Backend as 后端服务
participant Collector as 追踪收集器
Client->>Filter: HTTP 请求
Filter->>Service: 创建根Span
Service->>Context: 设置追踪上下文
Service->>Backend: 执行业务逻辑
Backend->>Service: 返回结果
Service->>Context: 更新Span信息
Service->>Collector: 导出追踪数据
Context->>Filter: 清理上下文
Filter->>Client: 返回响应
Note over Service,Collector: 异步导出,不影响请求性能
Note over Context: 自动管理生命周期集成优势¶
🚀 性能优化¶
- 异步导出:追踪数据异步处理,不影响业务请求性能
- 内存管理:智能的 Span 缓存和过期清理机制
- 批量处理:支持追踪数据的批量收集和传输
🛡️ 可靠性保障¶
- 故障隔离:追踪系统故障不影响业务功能
- 降级策略:支持追踪功能的优雅降级
- 资源限制:内置资源使用监控和保护机制
🔧 运维友好¶
- 零侵入集成:通过过滤器和 AOP 实现自动追踪
- 可观测性:提供追踪系统自身的监控指标
- 故障诊断:详细的错误信息和调试日志
应用场景¶
微服务链路分析¶
在微服务架构中,追踪系统能够: - 可视化服务调用关系和依赖图 - 识别服务间的性能瓶颈 - 分析服务故障的影响范围 - 优化服务部署和资源分配
性能问题诊断¶
通过分布式追踪,可以: - 定位慢请求的具体环节 - 分析数据库查询性能 - 识别代码热点和优化机会 - 监控系统容量和扩展需求
故障根因分析¶
追踪数据有助于: - 快速定位错误发生的源头 - 分析错误传播路径 - 评估故障影响范围 - 验证修复措施的有效性
业务流程优化¶
基于追踪分析,能够: - 优化关键业务流程 - 改进用户体验 - 降低系统运营成本 - 提升服务质量
REST API 端点¶
查询 API (/api/tracing/query)¶
GET /trace/{traceId}- 获取追踪链路详情GET /search- 搜索追踪数据(支持多条件筛选)GET /recent- 获取最近的追踪记录GET /services- 获取服务统计信息GET /statistics- 获取追踪统计信息POST /export- 导出追踪数据POST /cleanup- 清理过期追踪数据GET /operations- 获取操作列表GET /health- 查询服务健康检查GET /performance/stats- 获取性能统计GET /performance/latency- 获取延迟分析GET /performance/errors- 获取错误分析GET /performance/throughput- 获取吞吐量分析
性能 API (/api/tracing/performance)¶
GET /stats- 获取性能统计信息GET /processing-stats- 获取异步处理统计GET /memory-stats- 获取内存使用统计GET /health- 获取追踪系统健康状态GET /bottlenecks- 检测性能瓶颈GET /suggestions- 获取优化建议GET /report- 生成性能报告POST /optimize- 触发性能优化POST /tuning- 执行性能调优POST /memory/gc- 触发垃圾回收POST /memory/check- 执行内存检查POST /processing/flush- 刷新处理缓冲区GET /metrics/dashboard- 获取监控仪表板数据GET /alerts/active- 获取活跃告警
执行器 API (/api/tracing/actuator)¶
GET /status- 获取追踪系统状态GET /health- 获取健康状态GET /config- 获取追踪配置PUT /config- 更新追踪配置(支持运行时更新)POST /sampling/refresh- 刷新采样策略GET /stats- 获取追踪统计信息POST /enable- 启用追踪POST /disable- 禁用追踪GET /export- 导出追踪数据POST /clear-cache- 清理追踪缓存