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 的前端。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM