【Skywalking从入门到精通】第03篇:SkyWalking架构全景图——四大组件的前世今生

发布时间:2026/8/27 15:04:22

【Skywalking从入门到精通】第03篇:SkyWalking架构全景图——四大组件的前世今生
上一篇【第02篇】APM和可观测性到底是啥——写给所有被这两个词搞懵的开发者下一篇【第04篇】SkyWalking的三大设计哲学——面向协议、模块化、轻量化摘要架构图是技术系统的地图看懂了地图才不会在探索过程中迷路。SkyWalking的官方架构图看起来方方正正但里面藏着大量的设计智慧。本篇带你逐层拆解SkyWalking的四大核心组件理解探针如何收集数据、OAP如何分析处理、存储如何持久化、UI如何展示以及三大设计原则是如何贯穿整个架构的。一、一个简化的比喻医院监控系统在深入架构细节之前先用一个比喻建立整体感把SkyWalking想象成一套医院的实时健康监控系统探针Agent 贴在病人身上的传感器血压计、心率仪、血氧仪——负责采集数据不影响病人正常活动OAP Server 医院的监控中心——接收所有传感器数据分析计算发现异常存储实现 病历档案库——持久化保存所有历史数据供后续查询UI模块 医生工作站的大屏幕——直观展示所有数据支持医生快速决策这四个组件协同工作构成了完整的病人健康监控系统也就是我们的分布式系统APM平台。二、SkyWalking整体架构图先上大图建立整体认知┌─────────────────────────────────────────────────────────────────────┐ │ SkyWalking 整体架构 │ │ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ 探针层 (Probes) │ │ │ │ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │ Java │ │ .NET │ │ Node.js │ │ Service │ │ │ │ │ │ Agent │ │ Agent │ │ Agent │ │ Mesh │ │ │ │ │ │(JavaAgent│ │ │ │ │ │(Istio/ │ │ │ │ │ │字节码增强)│ │ │ │ │ │ Envoy) │ │ │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ └───────┼─────────────┼─────────────┼──────────────┼────────┘ │ │ │ gRPC协议上报│ │ │ │ │ ▼ ▼ ▼ ▼ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ OAP Server (分析平台) │ │ │ │ │ │ │ │ ┌────────────┐ ┌────────────┐ ┌───────────────────────┐ │ │ │ │ │ Receiver │ │ 流式计算 │ │ 查询内核 (GraphQL) │ │ │ │ │ │ (数据接收) │→ │ 内核 │→ │ │ │ │ │ │ │ │ │ (OAL计算) │ │ │ │ │ │ │ └────────────┘ └─────┬──────┘ └──────────┬────────────┘ │ │ │ └──────────────────────┬─┘──────────────────────┼─────────────┘ │ │ │ 存储接口 │ 查询接口 │ │ ▼ ▼ │ │ ┌───────────────────────────────┐ ┌───────────────────────────┐ │ │ │ 存储实现层 (Storage) │ │ UI 模块 │ │ │ │ │ │ (RocketBot/SkyWalking UI)│ │ │ │ ┌────┐ ┌──────┐ ┌─────────┐ │ │ │ │ │ │ │ H2 │ │ ES │ │ MySQL/ │ │ │ Dashboard / 拓扑图 / Trace│ │ │ │ │ │ │ │ │ TiDB │ │ │ 告警 / 性能剖析 │ │ │ │ └────┘ └──────┘ └─────────┘ │ │ │ │ │ └───────────────────────────────┘ └───────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘三、第一组件探针Probe探针是SkyWalking的数据采集层负责从各种不同的运行环境中收集遥测数据Telemetry Data。探针的类型SkyWalking支持多种类型的探针覆盖了现代分布式系统的主要技术栈1. 语言探针Language AgentsJava Agent最成熟、功能最完整的探针通过JavaAgent机制字节码增强实现对应用的无侵入监控.NET Agent由社区贡献支持.NET CoreNode.js Agent支持Node.js应用的追踪Go Agent支持Go语言应用PHP Agent支持PHP应用通过Swoole等框架2. Service Mesh探针通过Istio/Envoy的Telemetry数据接入无需语言探针适合已经部署了Service Mesh的环境3. 第三方框架探针Nginx Lua探针监控Nginx层的流量通过插件机制支持各种中间件Dubbo、Spring MVC、Redis、MySQL等Java Agent的工作原理简介Java Agent是SkyWalking最核心的探针实现它的无侵入性来自于JDK 1.5引入的JavaAgent机制// SkyWalking Agent启动入口// 在JVM启动时通过-javaagent参数触发premain方法publicclassSkyWalkingAgent{publicstaticvoidpremain(Stringarguments,Instrumentationinstrumentation){// 1. 初始化配置// 2. 扫描并加载所有插件定义// 3. 注册ClassFileTransformer在类加载时动态插入追踪代码instrumentation.addTransformer(newClassEnhancePluginDefine());}}关键点应用代码完全不需要修改只需在启动时加上-javaagent:/path/to/skywalking-agent.jar参数SkyWalking就会自动监控你的应用。这就是无侵入的含义。探针上报的数据探针向OAP Server上报三类数据注册信息服务注册服务名、实例信息Tracing数据TraceSegment调用链路片段Metrics数据某些版本通过OAL计算生成上报协议使用gRPC这也是SkyWalking面向协议设计的体现。四、第二组件OAP Server观测分析平台OAP是SkyWalking的大脑全称Observability Analysis Platform可观测性分析平台。它是整个系统最复杂的组件内部由三大子模块构成子模块1Receiver数据接收层Receiver负责接收各种探针上报的数据。由于SkyWalking面向协议设计Receiver可以接收多种格式的数据Receiver类型处理的数据gRPC ReceiverJava/多语言探针的gRPC上报数据HTTP ReceiverHTTP方式上报的数据可选Kafka Receiver通过Kafka传输的数据可选Istio ReceiverIstio的Mixer/ALS数据Zipkin Receiver兼容Zipkin格式的数据子模块2流式计算内核OAL引擎这是OAP最精华的部分。接收到的原始Trace数据需要被聚合计算成各种指标某个服务的平均响应时间某个接口的P99延迟某个服务实例的错误率服务间的调用拓扑关系这些计算不能用关系数据库做因为数据量太大。SkyWalking设计了专有的OALObservability Analysis Language这是一种编译型DSL脚本语言用来定义如何对原始数据进行流式聚合计算。第七模块会详细讲OAP内部数据流 原始Trace → Receiver → OAL引擎 → Metrics结果 │ ├→ 服务指标 (响应时间/错误率) ├→ 实例指标 ├→ Endpoint指标 └→ 服务间拓扑关系子模块3查询内核GraphQL APIOAP对外提供GraphQL协议的查询接口UI模块通过这个接口获取所有数据。为什么选GraphQL而不是RESTful官方给出了明确的理由考虑到更好的扩展性、更加灵活的组合查询模式选择了GraphQL。GraphQL的预定义格式和多种查询组合使用为UI和第三方系统提供了良好的集成能力。GraphQL允许客户端精确地声明需要什么数据避免了RESTful API的Over-fetching和Under-fetching问题非常适合OAP这种数据多维度、查询模式复杂的场景。五、第三组件存储实现Storage存储层负责持久化OAP处理后的所有数据。SkyWalking的一个核心优势是存储可插拔——通过统一的存储接口支持多种存储后端┌──────────────────────────────────────────────────────────────┐ │ SkyWalking 存储选型对比 │ ├──────────────┬──────────┬────────────┬──────────────────────┤ │ 存储类型 │ 适用场景 │ 数据规模 │ 备注 │ ├──────────────┼──────────┼────────────┼──────────────────────┤ │ H2 (内置) │ 开发测试 │ 小不持久 │ 默认配置重启丢数据 │ ├──────────────┼──────────┼────────────┼──────────────────────┤ │ Elasticsearch│ 生产首选 │ 大 │ 官方推荐性能最优 │ ├──────────────┼──────────┼────────────┼──────────────────────┤ │ MySQL │ 中小规模 │ 中 │ DBA熟悉运维简单 │ ├──────────────┼──────────┼────────────┼──────────────────────┤ │ TiDB │ 中大规模 │ 大 │ MySQL兼容分布式 │ ├──────────────┼──────────┼────────────┼──────────────────────┤ │ InfluxDB │ 时序数据 │ 中 │ 专注指标存储 │ └──────────────┴──────────┴────────────┴──────────────────────┘存储层的可插拔设计让SkyWalking不依赖任何大数据技术栈这是它区别于Pinpoint强依赖HBase的根本所在。六、第四组件UI模块UI模块是面向运维人员和开发人员的可视化界面通过GraphQL协议从OAP查询数据提供以下核心视图Dashboard仪表板展示服务/实例/Endpoint的实时性能指标Topology拓扑图服务间调用关系的有向图直观展示系统架构Trace视图Span瀑布图展示单次请求的完整调用链路告警面板显示触发的告警规则和历史告警性能剖析代码级别的性能热点分析SkyWalking 7历史上SkyWalking的UI经历了几次更替5.x版本原始UI功能简单6.0.0-GA后切换为RocketBot UIVue.js实现功能大幅增强9.x版本全新设计的SkyWalking UI现代化设计更好的交互体验七、三大设计原则快速预览四大组件是架构的骨三大设计原则是架构的魂┌─────────────────────────────────────────────────────────────┐ │ SkyWalking 三大设计原则 │ │ │ │ ┌───────────────┐ │ │ │ 面向协议设计 │ → 探针协议、查询协议全部预先定义 │ │ │ │ 多语言探针基于同一协议互通 │ │ └───────────────┘ │ │ │ │ ┌───────────────┐ │ │ │ 模块化设计 │ → Module Provider 的可插拔架构 │ │ │ │ 每个功能都可以替换、扩展 │ │ └───────────────┘ │ │ │ │ ┌───────────────┐ │ │ │ 轻量化设计 │ → 不依赖大数据技术栈 │ │ │ │ 自研轻量级流计算框架 │ │ └───────────────┘ │ └─────────────────────────────────────────────────────────────┘每一条设计原则背后都有深刻的工程考量下一篇会逐一展开。本篇小结SkyWalking的架构清晰地分为四层探针层多语言无侵入数据采集OAP层接收 → 流式计算 → 存储 对外查询存储层可插拔支持ES/MySQL/TiDB等多种后端UI层GraphQL驱动的可视化界面三大设计原则面向协议/模块化/轻量化贯穿所有组件设计决策是理解SkyWalking的核心钥匙。下一篇我们深入三大设计哲学看看每一条背后的具体工程决策和权衡取舍。上一篇【第02篇】APM和可观测性到底是啥——写给所有被这两个词搞懵的开发者下一篇【第04篇】SkyWalking的三大设计哲学——面向协议、模块化、轻量化

相关新闻

DLSS Swapper完整指南:一站式智能游戏性能优化解决方案

DLSS Swapper完整指南:一站式智能游戏性能优化解决方案

2026/8/24 15:36:06

DLSS Swapper完整指南:一站式智能游戏性能优化解决方案 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 还在为游戏帧率不足而烦恼吗?想要获得更流畅的游戏体验却不知如何入手?DLSS S…

utdnsmasq源码解析:Rust实现的DNS缓存机制

utdnsmasq源码解析:Rust实现的DNS缓存机制

2026/8/27 3:53:51

utdnsmasq源码解析:Rust实现的DNS缓存机制 【免费下载链接】utdnsmasq utdnsmasq is a refactoring of dnsmasq. 项目地址: https://gitcode.com/openeuler/utdnsmasq 前往项目官网免费下载:https://ar.openeuler.org/ar/ utdnsmasq是openEuler项…

Web与APP反爬虫及业务风控核心技术解析与实战指南

Web与APP反爬虫及业务风控核心技术解析与实战指南

2026/8/27 1:21:02

1. 项目概述:从“攻防”视角看现代应用安全最近和几个做数据分析和安全测试的朋友聊天,大家不约而同地提到了同一个痛点:现在想从一些主流的APP或者网站上规规矩矩地拿点公开数据,怎么感觉比“闯关”还难?不是请求被莫…

Manus 揭秘自己的7大核心技术:上下文工程架构设计与落地经验

Manus 揭秘自己的7大核心技术:上下文工程架构设计与落地经验

2026/8/27 14:58:05

前言 随着 AI 智能体技术的快速发展,如何高效构建和优化 AI 智能体系统已成为业界关注的焦点。本文是对 7月19日 Manus 联合创始人兼首席科学家季逸超(Yichao ‘Peak’ Ji)在撰写的《Context Engineering for AI Agents: Lessons from Buildi…

基于相似性推理的博弈论方法:多智能体协作中的理性合作策略

基于相似性推理的博弈论方法:多智能体协作中的理性合作策略

2026/8/27 14:58:05

多个大模型智能体在协作时,经常遇到一个经典困境:每个模型都只优化自己的目标,结果整体表现反而更差。最近研究里被反复提到的一个思路,是用博弈论来解释基础模型之间的交互,并通过相似性推理(Similarity I…

【AI大模型实战】企业RAG实战之探索Function Calling(函数调用)实现智能客服系统,看到就是赚到!!

【AI大模型实战】企业RAG实战之探索Function Calling(函数调用)实现智能客服系统,看到就是赚到!!

2026/8/27 14:58:05

前言 RAG赋予大模型访问私有知识库的能力,而Function Calling则使其能够读取和写入数据库。这两种能力的协同作用,将使智能客服变得更加智能、高效和个性化。 1.Function Calling可以解决什么问题? RAG虽然解决了知识覆盖问题,但对…

TOPSIS逼近理想解排序法:多属性决策的科学量化工具与实战应用

TOPSIS逼近理想解排序法:多属性决策的科学量化工具与实战应用

2026/8/27 14:58:05

1. 项目概述:从“拍脑袋”到“算分数”,决策分析的科学化工具在项目评审、人才选拔、产品选型这些日常工作中,我们常常面临一个难题:面对一堆各有优劣的选项,到底该怎么选?过去,我们可能依赖“感…

数学建模竞赛实战:从需求预测到路径规划的物资管理方案设计

数学建模竞赛实战:从需求预测到路径规划的物资管理方案设计

2026/8/27 14:58:05

1. 项目概述:从赛题到现实,一次数据驱动的管理推演刚拿到2022年研究生数学建模竞赛F题“COVID-19疫情期间生活物资的科学管理问题”时,我第一反应是,这不仅仅是一道数学题,更是一个被高度抽象和浓缩的现实管理难题。它…

【小白教程】一文讲清楚大模型中8个关键词及原理:LLM、Transformer、GPT、Bert、预训练、微调、深度学习、Token

【小白教程】一文讲清楚大模型中8个关键词及原理:LLM、Transformer、GPT、Bert、预训练、微调、深度学习、Token

2026/8/27 14:48:04

什么是大模型? 你是不是脑子里浮现的是 OpenAI、ChatGPT、DeepSeek?还有各式各样能跳个舞、可以翻个跟头的机器人?再深入点的,还能说出训练与推理。 有没有一种感觉:就是身边的信息都在声嘶力竭的鼓吹大模型正在改变世…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/27 11:10:02

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/27 7:25:23

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/26 17:50:58

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

2026/8/27 0:07:12

1. 项目概述:从零构建一个企业级的AI服务网关 最近在帮一个做内容审核的团队做技术架构升级,他们原来的业务里,每天有几十万张图片和短视频需要过审,最初是接了几个开源的AI模型自己部署,但效果和性能一直不太稳定。后…

LeetCode Hot100(51-60)算法精解与面试技巧

LeetCode Hot100(51-60)算法精解与面试技巧

2026/8/27 0:07:12

1. 题目背景与核心价值"hot100(51-60)"这个标题看起来像是某个编程题库或算法练习集中的一组题目编号。在技术社区中,类似命名通常指向LeetCode、牛客网等平台的热门题目集合。作为刷过300题的算法老手,我理解这类题目的核心价值在于&#xff…

CRC校验实战:从模2除法到HJ212协议排错

CRC校验实战:从模2除法到HJ212协议排错

2026/8/27 0:07:12

1. 为什么一个“校验码”能扛住工业现场90%的数据 corruption? 你有没有遇到过这样的场景:嵌入式设备通过RS-485上传温湿度数据,上位机偶尔收到一帧乱码——温度显示成-273℃,湿度跳到999%,但串口波形看起来完全正常&a…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/26 18:07:30

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/26 17:57:52

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…