节点在线、应用在线、配置在线使用令牌查询
|
# 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. **内存队列堆积**:消费速度跟不上生产速度时内存持续增长
|