源码角度了解Skywalking之各个模块
源码角度了解Skywalking之各个模块
Skywalking是个APM系统,所谓APM就是Application Performance Management,应用性能管理,Skywalking是基于OpenTracing进行开发的,APache顶级项目,并且是国产开源项目,当今国际风云变幻莫测,支持国产毋庸置疑,同时Skywalking的一大特点是使用了探针技术,支持多语言,所以学习Skywalking很有必要。
微服务监控指标:
Metrics衡量指标:包括QPS等等信息,这些指标一般使用Promethus这些系统进行监控
Logging日志:一般服务中打印的日志使用ElasticSearch进行存储,通过Kibana可视化工具对日志进行查询分析
Tracing链路追踪:这个在微服务中非常重要,尤其是分析一个请求调用了哪些服务,在调用哪个服务出现错误的时候一般使用Tracing来进行分析追踪
Skywalking的核心功能:UI界面,Agent探针:探针负责采集我们上面说的这些指标,通过rpc的方式上报后Skywalking服务器,还有就是OAP,OAP就是用来接收探针收集的信息,然后转化存储到ElasticSearch等存储中。
我们基于Skywalking6.x的代码进行分析,下面我们先看一下Skywalking的源码有哪些模块,方便我们后期对源码的阅读和理解
模块分析
oap-server
oap-server:这是Skywalking的OAP的实现模块,有很多子模块,具体我们看一下
- exporter:这个模块负责数据的导出
- oal-grammar:oal语言的语法,
- oal-rt:oal类生成引擎
- server-alarm-plugin:报警插件
- server-cluster-plugin:集群信息插件,包括etcd、kubernetes、nacos、Zookeeper等等服务的插件
- server-configuration:这是负责管理OAP配置信息,包括Apollo的配置、nacos、etcd、Zookeeper等等
- server-core:OAP服务核心模块
- server-library:公共模块部分
- server-query-plugin:这一块是对查询的处理,处理的是SKywalking前台发过来的查询请求
- server-receiver-plugin:接收请求,包括Metrics、istio、jvm、mesh、trace等等插件,用来把数据写入Skywalking中
- server-starter:这是OAP的starter启动模块
- server-storage-plugin:存储插件,也就是支持什么存储,有ElasticSearch、zipkin、jdbc等等,这些存储形式的插件也很丰富。
其他模块
apm-application-toolkit:应用工具箱,提供对各种日志的接口接入,比如logback、log4j、trace等等
apm-commons:公共组件,包括apm-datacarrier和apm-util模块,apm-datacarrier是缓存组件,apm-util是开发过程中用到的工具类
探针
apm-sniffer:这下面有几个模块
- apm-agent:只有一个类 ,SkyWalkingAgent类,这是基于java agent机制实现的Skywalking代理的入口
- apm-agent-core: 这就是核心模块,也是我们圆满分析的重点模块,
- apm-sdk-plugin:插件的sdk模块,包括activeMq、dubbo、ElasticSearch等等模块,非常多
- apm-test-tools:测试工具模块
- apm-toolkit-activation:这里是apm-application-toolkit模块的具体实现模块
apm-protocol:顾名思义是协议相关,上面我们说到探针采集完数据后通过rpc上报给服务端,期间用到是传输协议就是在这个模块进行定义的
前后台
apm-webapp:这是Skywalking前端界面对应的后台
Skywalking-UI:这就是Skywalking的前端项目了,这个项目被单拉出来了,实现前后端分离。
总结
从Skywalking项目的源码我们可以看出来,Skywalking的三个核心模块一个是探针技术,一个是OAP基础,OAP模块中有很多子模块,也支持很多与其他技术的对接,非常丰富,还有就是提供了前端界面,这也证明Skywalking确实是一款比较好的APM框架,值得深入学习。
- 点赞
- 收藏
- 关注作者
评论(0)