SkyWalking OAP Server 模块架构图(中文标注)
SkyWalking OAP Server采用模块化架构设计,主要包含数据接收器、流处理、分析引擎、存储层和查询服务等核心模块。数据通过Agent上报后,经过接收、解析、分析处理,最终存储到Elasticsearch等外部存储中。系统采用插件化设计,支持多种协议和数据源,通过GraphQL API为UI提供查询服务。整个架构实现了从数据采集、处理到展示的完整观测链路。
·
下面是一份 Apache SkyWalking OAP Server 模块架构图(中文标注版),帮助你从宏观上理解 OAP 的组件构成、数据流向和核心设计思想。
📌 说明:此架构图为 SkyWalking 9.x 版本(如 9.7.0) 的典型设计,适用于生产环境理解。
🧱 SkyWalking OAP Server 模块架构图(中文标注)
+-------------------------------------------------------------+
| SkyWalking OAP Server |
| (Observability Analysis Platform) |
+-------------------------------------------------------------+
| |
| +----------------+ +----------------------+ |
| | Receiver |<----| Data from Agents | |
| | (数据接收器) | | (gRPC/HTTP, Protobuf)| |
| +-------+--------+ +----------------------+ |
| | |
| | 原始数据 (Segments, Metrics, Logs) |
| v |
| +----------------+ |
| | Stream & |<--------------------------------------+
| | Scope | 数据模型定义 |
| | (数据流与模型) | (Trace, Service, Instance...) |
| +-------+--------+ |
| | |
| | 处理后的数据流 |
| v |
| +----------------+ +----------------------+ |
| | Analyzer |<----| Core Processing | |
| | (分析引擎) | | (核心处理逻辑) | |
| | | | | |
| | - Trace | | • 拼接调用链 | |
| | Segmentation| | • 构建拓扑图 | |
| | - Topology | | • 聚合指标 | |
| | Builder | | • 生成服务关系 | |
| | - Meter | | • 处理Prometheus指标 | |
| +-------+--------+ +----------------------+ |
| | |
| | 聚合指标、调用链、拓扑数据 |
| v |
| +----------------+ |
| | Storage |<----+ |
| | (存储插件层) | | |
| +-------+--------+ | |
| | | |
| | 写入/读取 | |
| v | |
| +----------------+ | +----------------------------+
| | Storage |-----+ | External Storage |
| | Data Source | | (外部存储后端) |
| | (数据源适配) | | |
| +----------------+ | • Elasticsearch (推荐) |
| | • MySQL / TiDB |
| | • InfluxDB |
| | • TiKV |
| +----------------------------+
|
| +-------------------------------------------------+
| |
| v
| +----------------+ +----------------------------+
| | Query |<----| GraphQL API |
| | (查询服务) | | (供 UI 或外部系统调用) |
| +-------+--------+ +----------------------------+
| |
| | 查询结果 (JSON)
| v
| +----------------+
| | UI / Client |
| | (前端或外部系统) |
| +----------------+
|
+-------------------------------------------------------------+
🔍 模块详解(中文说明)
模块 | 英文名 | 职责说明 |
---|---|---|
Receiver | 数据接收器 | 接收 Agent 通过 gRPC/HTTP 上报的原始数据(如链路片段、指标、日志)。支持多种协议:receiver-trace , receiver-metrics , receiver-logging 等。 |
Stream & Scope | 数据流与模型 | 定义可观测性数据的统一模型,如 TraceSegment , Service , Instance , Endpoint , Database 等。是所有分析的基础。 |
Analyzer | 分析引擎 | OAP 的“大脑”,负责: • 将多个 Segment 拼接成完整 Trace • 构建服务拓扑图(Topology) • 聚合指标(QPS、P99、SLA) • 处理 Meter 指标(Prometheus 风格) |
Storage | 存储插件层 | 提供插件化存储接口,屏蔽底层差异。OAP 不关心数据存在哪,只通过接口读写。 |
Storage Data Source | 存储数据源 | 实际的外部存储系统,如 Elasticsearch(最常用)、MySQL、InfluxDB 等。数据持久化在此。 |
Query | 查询服务 | 提供 GraphQL API,供 SkyWalking UI 发起查询请求(如“获取最近10分钟的服务响应时间”)。 |
UI / Client | 前端或客户端 | SkyWalking Web UI 或第三方系统,通过 Query 模块获取数据并展示。 |
🔁 核心数据流(从上报到展示)
1. Agent 上报原始数据
↓
2. Receiver 接收(gRPC)
↓
3. Stream 模块解析为 SkyWalking 内部模型
↓
4. Analyzer 分析处理:
- 构建拓扑
- 聚合指标
- 拼接调用链
↓
5. Storage 插件写入 Elasticsearch / MySQL
↓
6. UI 发起 GraphQL 查询
↓
7. Query 模块从 Storage 读取数据
↓
8. 返回 JSON,UI 渲染 Dashboard / Trace / Logs
🧩 设计亮点(Architecture Principles)
特性 | 说明 |
---|---|
插件化架构 | 所有模块(Receiver、Storage、Analysis)均可插拔,便于扩展 |
无状态 OAP | OAP Server 本身不存储状态,可水平扩展,通过共享 Storage 实现高可用 |
多租户支持 | 通过 namespace 隔离不同团队/项目的监控数据 |
高吞吐低延迟 | 使用 gRPC + Protobuf + 异步处理,支持大规模集群 |
流式处理模型 | 数据像流水线一样经过多个处理器,职责清晰,易于维护 |
📦 实际目录结构参考(OAP Server)
apache-skywalking-apm-bin/
├── oap-libs/ # 核心依赖
├── oap-server/
│ ├── server-bootstrap/ # 启动入口
│ ├── server-core/ # 核心逻辑(Stream, Query, Cluster)
│ ├── server-receiver-plugin/ # Receiver 插件(trace, metrics, logging)
│ ├── server-analysis/ # Analyzer 模块
│ ├── server-storage-plugin/ # 存储插件(ES, MySQL, etc)
│ ├── server-query-plugin/ # GraphQL 查询实现
│ └── config/
│ ├── application.yml # 主配置
│ └── alarm-settings.yml # 告警规则
├── webapp/ # UI 静态文件
└── bin/oap.sh # 启动脚本
✅ 总结:OAP 架构口诀
“一收二模三分析,四存五查六展示”
- 收:Receiver 接收数据
- 模:Stream 定义数据模型
- 析:Analyzer 分析处理
- 存:Storage 写入外部存储
- 查:Query 提供查询接口
- 示:UI 展示结果
更多推荐
所有评论(0)