2026年链路追踪SkyWalking 架构了解

链路追踪SkyWalking 架构了解在分布式微服务架构中 一个请求往往需要跨越多个服务节点 当出现性能瓶颈或故障时 如何快速定位问题 链路追踪 Distributed Tracing 应运而生 SkyWalking 作为 Apache 顶级项目 是国产开源的全链路可观测性平台 APM 支持追踪 指标 日志三合一 本文将基于 SkyWalking 的典型架构图 详细拆解其核心组件 数据流转以及存储选型

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



在分布式微服务架构中,一个请求往往需要跨越多个服务节点。当出现性能瓶颈或故障时,如何快速定位问题?链路追踪(Distributed Tracing) 应运而生。SkyWalking 作为 Apache 顶级项目,是国产开源的全链路可观测性平台(APM),支持追踪、指标、日志三合一。本文将基于 SkyWalking 的典型架构图,详细拆解其核心组件、数据流转以及存储选型,帮助你从零理解链路追踪系统的工作原理。


假设一个下单请求经过了:网关 → 订单服务 → 库存服务 → 支付服务 → 仓储服务。当用户反馈"下单慢"时,传统日志无法快速定位是哪个服务、哪个方法耗时最长。链路追踪通过生成全局唯一的 TraceId,串联整个调用链,让每个环节的耗时、状态、异常一目了然。SkyWalking 除了支持分布式追踪,还集成了指标监控(Metrics)和服务网格(Service Mesh)观测能力。


SkyWalking 采用模块化设计,分为 探针(Agent)后端(OAP Server)存储(Storage)UI(Web 界面) 四大部分。下图基于用户提供的架构描述,绘制了完整的组件关系:
展示层
存储层
SkyWalking Observability Analysis Platform
数据采集层
gRPC/HTTP
gRPC
分析引擎
查询引擎
指标聚合
展示 Trace/Metrics
应用探针 Java/.NET/Node.js
OAP Server
















































































核心流程

  1. 探针采集数据(Trace、Metric、Log)通过 gRPC 或 HTTP 发送给 OAP Server。
  2. OAP Server 进行流式分析、聚合和索引,将结果写入存储
  3. UI 从 OAP Server 查询数据并可视化展示。

1. SkyWalking UI(前端界面)

提供可视化看板,主要功能包括:

  • Tracing 模块:展示分布式调用链列表,支持按时间、服务、端点、耗时等条件过滤。点击单个 Trace 可查看瀑布图(Span 详情)。
  • Metrics 模块:展示服务、实例、端点的 QPS、响应时间、成功率等指标曲线。
  • Service Mesh 模块:集成 Istio 等 Service Mesh 数据,展示 TCP 层面的流量拓扑和延迟。

UI 通过 HTTP 请求 OAP Server 的 Query Core 获取数据。

2. SkyWalking Observability Analysis Platform(OAP 后端)

这是 SkyWalking 的大脑,采用模块化核心(Analysis Core + Query Core),支持 流式处理批处理

核心模块 职责 Receiver 接收来自 Agent、Service Mesh、日志系统等的数据,支持 gRPC/HTTP 协议 Analysis Core 对原始数据进行解析、聚合、指标计算(如每分钟平均响应时间) Query Core 提供 RESTful 或 GraphQL 接口,供 UI 和外部系统查询存储中的指标和 Trace

OAP 本身无状态,可以水平扩展。它利用 L1(内存)和 L2(存储)两级缓存提高性能。

3. Storage Implementers(存储实现)

SkyWalking 支持多种存储后端,可根据数据量和性能要求选择:

存储 适用场景 特点 H2 本地演示/测试 嵌入式数据库,无需安装,不推荐生产 MySQL 中小规模生产(< 1000 TPS) 关系型数据库,需注意表分区和索引优化 TiDB 大规模,强一致性需求 分布式 NewSQL,水平扩展,兼容 MySQL 协议 ElasticSearch 最常用生产环境 全文检索快,适合海量 Trace 存储,支持滚动索引和 TTL 自动清理 Sharding System 自定义分片方案(如多个 MySQL 集群) 通过分片中间件实现写扩展

**实践:生产环境推荐 ElasticSearch 7+,配合 ILM(索引生命周期管理)自动清理过期数据。


SkyWalking 的探针使用 字节码增强(Byte-Buddy) 技术,无侵入地拦截常见框架(Spring Cloud、Dubbo、MySQL、Redis 等)的调用。

一个典型的 Trace 生成流程

  1. 在服务 A 接收到 HTTP 请求时,Agent 创建 TraceSegment,生成全局唯一的 TraceId
  2. 每个 RPC 调用(如 A -> B)会创建 Span,记录开始/结束时间、标签(HTTP URL、状态码)。
  3. 通过 HTTP Header 或 gRPC Metadata 将 TraceIdParentSpanId 传递给服务 B。
  4. 服务 B 的 Agent 接收到 Header 后,继续创建子 Span,形成调用树。
  5. 所有 Span 数据通过 gRPC 异步上报到 OAP Server。

跨进程传播协议

SkyWalking 支持 SW8 协议(基于 Header 的传播),同时也兼容 W3C TraceContext,能够与其他 APM 系统互通。


菜单 核心功能 Dashboard 全局拓扑图、服务健康评分、最慢端点 Top N Topology 服务间依赖关系图,边上的数值表示流量和延迟 Trace 按 TraceId 查询或列表浏览,支持深度钻取 Profile 性能剖析(On-Thread Profiling),定位方法级热点 Log 集成日志(需配置 LAL),可按 TraceId 关联日志和调用链 Alarm 配置告警规则(如 3 分钟内响应时间超过 500ms),发送到 webhook

1. 下载与启动 OAP + UI

# 使用 Docker Compose 快速启动(包含 ES 存储) git clone https://github.com/apache/skywalking-docker.git cd skywalking-docker/8.9.0 docker-compose up -d # 访问 http://localhost:8080 查看 UI

2. Java Agent 接入

java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=my-order-service -Dskywalking.collector.backend_service=oap-server:11800 -jar my-app.jar

3. 查看效果

发起任意请求后,在 UI 的 Trace 页面即可看到调用链,包含每个 Span 的耗时和详情。


特性 SkyWalking 其他链路追踪系统(Jaeger / Zipkin) 多语言支持 Java, .NET, Node.js, Go, Python, C++ Jaeger 支持较多,Zipkin 主要 Java 指标聚合 原生支持,无需额外组件 需配合 Prometheus + Grafana 存储扩展 支持 ES, MySQL, TiDB, H2, 自研 Sharding Jaeger 主要 ES/Cassandra,Zipkin 主要 ES/MySQL 服务网格 原生支持 Istio(通过 Envoy 的 Access Log 集成) 需额外配置 UI 体验 功能丰富,自带拓扑图、性能剖析 相对简单 社区活跃度 Apache 顶级,国内用户广泛 Jaeger(CNCF)同样活跃

适用场景

  • 需要 全栈可观测性(Trace + Metrics + Log 联动) → SkyWalking
  • 已经使用 Prometheus 生态,仅需追踪 → Jaeger 或 Zipkin
  • 运行在 Service Mesh(Istio)环境 → SkyWalking 可无缝集成

根据你提供的架构描述,我们重新整理为如下结构:

 
          
    
            
┌─────────────────────────────────────────────────────────────────────┐ 

│ SkyWalking UI │ │ ┌─────────────┐ ┌─────────────┐ ┌────────────────────────────┐ │ │ │ Tracing │ │ Metrics │ │ Service Mesh │ │ │ │Traces in │ │ Service │ │ Receiver in gRPC/HTTP │ │ │ │diff formats │ │ Mesh │ │ │ │ │ └─────────────┘ └─────────────┘ └────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘

 │ │ HTTP/GraphQL ▼ 

┌─────────────────────────────────────────────────────────────────────┐ │ SkyWalking Observability Analysis Platform │ │ ┌──────────────────────────┐ ┌──────────────────────────────┐ │ │ │ Tracing │ │ Metric │ │ │ │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ │ │ │ │ Analysis Core │ │ │ │ Analysis Core │ │ │ │ │ └──────────────────┘ │ │ └────────────────────┘ │ │ │ │ ┌──────────────────┐ │ │ ┌────────────────────┐ │ │ │ │ │ Query Core │ │ │ │ Query Core │ │ │ │ │ └──────────────────┘ │ │ └────────────────────┘ │ │ │ └──────────────────────────┘ └──────────────────────────────┘ │ │ │ │ Storage Implementers │ └─────────────────────────────────────────────────────────────────────┘

 │ ▼ ┌───────┬───────┬───────┬────────────┬─────────────┐ │ MySQL │ TiDB │ H2 │ ElasticSearch│ Sharding │ │ │ │ │ │ System │ └───────┴───────┴───────┴──────────────┴─────────────┘

通过本文的讲解,相信你已经掌握了 SkyWalking 的整体架构、核心组件以及数据流转过程。在实际生产环境中,推荐使用 ElasticSearch 作为存储,并结合 Kubernetes 的 sidecar 模式部署 Agent,实现自动化链路采集。

参考链接

  • SkyWalking 官方文档
  • GitHub 仓库
  • 8.9.0 版本 Docker 示例

小讯
上一篇 2026-04-19 18:30
下一篇 2026-04-19 18:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/271717.html