文章目录
SkyWalking
微服务链路追踪SkyWalking
一般的系统中,微服务会有几十上百个,微服务的调用是错综复杂的,如果其中一个微服务挂了,在线上环境中排查问题是比较困难的,我们不能永远执行降级方法。如果人员离职,新接收项目的开发人员,理清服务的调用链路也耗时耗力,更不用说定位问题解决问题了。
对于一个大型的几十上百个微服务构成的微服务架构系统,通常会遇到下面一些问题,比如:
- 如何串联整个调用链路,快速定位问题?
- 如何缕清各个服务之间的依赖关系?
- 如何进行各个微服务接口的性能分析?
- 如何跟踪整个业务流程的调用处理顺序?
SkyWalking介绍
skyWalking是一个国产开源框架,2015年开源,2017年假如Apache孵化器。skyWalking是分布式系统的应用程序性能监视工具,专门为微服务、云原生架构和基于容器(Docker、k8s、mesos)架构而设计。包括了分布式追踪、性能指标分析、应用和服务依赖分析等。
链路追踪框架对比
- Zipkin是Twitter开源的调用链路分析工具,目前基于Spingcloud sleuth得到了广泛的应用,特点是轻量,部署简单。
- Pinpoint一个韩国团队开源的产品,运用了字节码增强技术,只需要在启动时添加启动参数即可,对代码无侵入,目前支持Java和PHP语言,底层采用HBase来存储数据,探针收集的数据粒度非常细,但性能损耗大,因其出现的时间较长,完成度也很高,应用的公司较多
- Skywalking是本土开源的基于字节码注入的调用链路分析以及应用监控分析工具,特点是支持多种插件,UI功能较强,接入端无代码侵入。
- CAT是由大众点评开源的,基于Java语言开发,目前提供Java、C/C++、Node.js、Python、Go等语言的客户端,监控数据会全量统计,国内很多公司在用,例如美团点评、携程、拼多多等,CAT跟下边要介绍的Zipkin都需要在应用程序中埋点,对代码侵入性强。
Skywalking功能介绍
- 多种监控手段,可以通过语言探针和service mesh获得监控的数据
- 支持多重语言的自动探针,包括JAVA, .NET Core和NodeJS
- 轻量高效,无需大数据平台和大量的服务器资源
- 模块化,UI ,存储,集群管理都有多种机制可选
- 支持告警
- 优秀的可视化解决方案
SkyWalking的组成部分
- SkyWalking agent和业务系统绑定在一起,负责收集各种监控数据
- SkyWalking oapservice是服务处理监控数据的,比如接收是SkyWalking agent的监控数据,并存储在数据库中;接收SkyWalking webapp的前端请求,从数据库查询数据,并返回给前端。SkyWalking通常以集群的形式存在。
- SkyWalking webapp,前端界面,用于展示数据
- 数据库,用于存储监控数据,比如mysql,slasticsearch等