节点在线、应用在线、配置在线使用令牌查询
大石头 authored at 2021-12-16 19:49:30
4.07 KiB
Stardust
# APM-3 链路追踪统计服务 > 版本:v1.0 | 日期:2026-07-15 > 对应需求:APM-3 追踪统计服务 --- ## 概述 链路追踪统计服务是星尘监控中心的**核心性能瓶颈**,占用约 **80% 的系统资源**。本报告对该服务进行全面的架构分析,为后续性能优化提供基础。 ### 核心服务 | 服务名称 | 文件路径 | 职责描述 | |---------|---------|---------| | **TraceStatService** | `Stardust.Server/Services/TraceStatService.cs` | 追踪统计主服务,负责分钟/小时/日三级统计 | | **TraceItemStatService** | `Stardust.Server/Services/TraceItemStatService.cs` | 跟踪项统计服务 | | **AppDayStatService** | `Stardust.Server/Services/AppDayStatService.cs` | 应用日统计服务 | ### 架构图 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 客户端应用层 │ │ (各业务应用通过 Stardust SDK 上报追踪数据) │ └────────────────────────┬────────────────────────────────────────┘ │ HTTP POST /Trace/Report ↓ ┌─────────────────────────────────────────────────────────────────┐ │ TraceController (接入层) │ │ - 验证应用身份 → 过滤黑名单 → 批量插入 TraceData 和 SampleData │ └─────────┬───────────────────────┬───────────────────────────────┘ │ │ │ 触发统计 │ 触发统计 ↓ ↓ ┌─────────────────────┐ ┌──────────────────────┐ ┌──────────────┐ │ TraceStatService │ │ TraceItemStatService │ │ AppDayStat │ │ (核心统计引擎) │ │ (跟踪项统计) │ │ Service │ └─────────────────────┘ └──────────────────────┘ └──────────────┘ ↓ ↓ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ TraceMinuteStat | TraceHourStat | TraceDayStat │ │ (多级聚合统计表) │ └─────────────────────────────────────────────────────────────────┘ ``` ## 统计模式 ### 双模式计算 | 模式 | 周期 | 作用 | |------|------|------| | **流式计算** | 5 秒 | 处理内存队列,计算分钟级统计,保证实时性 | | **批计算** | 30 秒 | 从数据库聚合修正数据,保证最终一致性 | ### 延迟队列 - 使用延迟队列批量提交数据,降低数据库 UPDATE 压力 - 默认落盘周期:60 秒 - 重启时可能丢失未落盘数据 ## 关键性能瓶颈 1. **`GetOrAddItem` 热点锁**:高并发下字典查找的锁竞争 2. **大量小事务 INSERT**:单次上报可能产生数千条 TraceData 3. **分钟统计 UPDATE 冲突**:同一分钟粒度的多条并发更新 4. **大表查询**:TraceData 表按天分表但数据量极大 5. **内存队列堆积**:消费速度跟不上生产速度时内存持续增长