下面是一份 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 架构口诀

“一收二模三分析,四存五查六展示”

  1. :Receiver 接收数据
  2. :Stream 定义数据模型
  3. :Analyzer 分析处理
  4. :Storage 写入外部存储
  5. :Query 提供查询接口
  6. :UI 展示结果
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐