SkyWalking 源码的整体结构

SkyWalking 源码的整体结构如下图所示:

1、apm-application-toolkit 模块:SkyWalking 提供给用户调用的工具箱。

该模块提供了对 log4j、log4j2、logback 等常见日志框架的接入接口,提供了 @Trace 注解等。
apm-application-toolkit 模块类似于暴露 API 定义,对应的处理逻辑在 apm-sniffer/apm-toolkit-activation 模块中实现。

2、apm-commons 模块:SkyWalking 的公共组件和工具类。

其中包含两个子模块,apm-datacarrier 模块提供了一个生产者-消费者模式的缓存组件(DataCarrier),无论是在 Agent 端还是 OAP 端都依赖该组件。
apm-util 模块则提供了一些常用的工具类,例如,字符串处理工具类(StringUtil)、占位符处理的工具类(PropertyPlaceholderHelper、PlaceholderConfigurerSupport)等等。


3、apm-protocol 模块:该模块中只有一个 apm-network 模块,我们需要关注的是其中定义的 .proto 文件,定义 Agent 与后端 OAP 使用 gRPC 交互时的协议。

4、apm-sniffer 模块:apm-sniffer 模块中有 4 个子模块:

apm-agent 模块:其中包含了刚才使用的 SkyWalkingAgent 这个类,是整个 Agent 的入口。

apm-agent-core 模块:SkyWalking Agent 的核心实现都在该模块中。

apm-sdk-plugin 模块:SkyWalking Agent 使用了微内核+插件的架构,该模块下包含了 SkyWalking Agent 的全部插件,

apm-toolkit-activation 模块:apm-application-toolkit 模块的具体实现。

5、apm-webapp 模块:SkyWalking Rocketbot 对应的后端。

6、oap-server 模块:SkyWalking OAP 的全部实现都在 oap-server 模块,其中包含了多个子模块,
exporter 模块:负责导出数据。

server-alarm-plugin 模块:负责实现 SkyWalking 的告警功能。

server-cluster-pulgin 模块:负责 OAP 的集群信息管理,其中提供了接入多种第三方组件的相关插件,

server-configuration 模块:负责管理 OAP 的配置信息,也提供了接入多种配置管理组件的相关插件,

server-core模块:SkyWalking OAP 的核心实现都在该模块中。

server-library 模块:OAP 以及 OAP 各个插件依赖的公共模块,其中提供了双队列 Buffer、请求远端的 Client 等工具类,这些模块都是对立于 SkyWalking OAP 体系之外的类库,我们可以直接拿走使用。

server-query-plugin 模块:SkyWalking Rocketbot 发送的请求首先由该模块接收处理,目前该模块只支持 GraphQL 查询。

server-receiver-plugin 模块:SkyWalking Agent 发送来的 Metrics、Trace 以及 Register 等写入请求都是首先由该模块接收处理的,不仅如此,该模块还提供了多种接收其他格式写入请求的插件,

server-starter 模块:OAP 服务启动的入口。

server-storage-plugin 模块:OAP 服务底层可以使用多种存储来保存 Metrics 数据以及Trace 数据,该模块中包含了接入相关存储的插件,

7、skywalking-ui 目录:SkyWalking Rocketbot 的前端。

posted @ 2021-06-22 16:13  表演给自己看的认真  阅读(1090)  评论(0编辑  收藏  举报