源码角度了解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框架,值得深入学习。

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 欢迎关注我❤️,点赞👍🏻,评论🤤,转发🙏
  2. 有不当之处欢迎批评指正。