SkyWalking / APM 集成
分布式系统的性能问题往往不是单点问题,而是涉及多个服务、多个组件的全链路问题。APM(Application Performance Monitoring)就是解决这个问题的工具。
分布式追踪的核心挑战
在分布式系统中,一个请求可能经过多个服务:
问题:
- 请求链路不透明
- 定位慢请求困难
- 无法了解跨服务依赖
SkyWalking 架构
核心组件
- Agent:埋点采集器,无侵入或轻侵入
- OAP(Observability Analysis Platform):后端分析平台
- UI:可视化界面
链路追踪原理
TraceID 生成与传播
每个请求有一个唯一的 TraceID,通过 HTTP Header 或 RPC 上下文传播。
Span 概念
Span 包含:
- Operation Name:操作名称
- Start Time / End Time:时间戳
- Tags:标签(如 HTTP URL、状态码)
- Logs:日志
- References:父子关系
数据模型
SkyWalking 接入
Java Agent 接入
Spring Boot 接入
pom.xml
手动埋点
APM 选型对比
链路追踪最佳实践
命名规范
异步处理
采样策略
agent.config
本章小结
APM 的核心价值:
- 全链路追踪:从入口到出口的完整链路
- 性能分析:定位慢请求的瓶颈
- 依赖分析:服务之间的调用关系
- 报警:性能指标异常时通知
SkyWalking 是功能完善的 APM 解决方案,适合中大型分布式系统。
延伸思考
APM 与链路追踪有什么区别?
APM(Application Performance Monitoring)是更大的概念,包括:
- 链路追踪(Distributed Tracing)
- 指标监控(Metrics)
- 日志聚合(Logging)
- 报警(Alerting)
链路追踪是 APM 的核心组件之一,但不是全部。完整的 APM 方案应该整合以上所有能力。