目录:
1、为什么需要链路追踪
2、链路追踪技术对比选型
3、集成skywalking
4、skywalking原理
为什么需要链路追踪
当我们把一个系统拆分为一个个的微服务之后,那么一个请求就可能需要多个服务协同才能完成。比如用户下单这个请求,就可能会涉及到商品服务、订单服务、支付服务、仓储服务。
假如整个流程是这样的:
在这个流程中无论哪个服务处理失败,都会导致下单这个操作不成功。那么如何能快速定位在哪个服务中发生了异常?这就需要链路追踪了。
链路追踪对比选型
目前使用的比较多的有:
1、cat——大众点评开源
2、zipkin——Twitter开源
3、skywalking——国内开发者吴晟开源
cat集成方案是通过代码埋点的方式来实现监控,比如: 拦截器,注解,过滤器等。对代码的侵入性很大,集成成本较高,但是它的功能比较完善。
zipkin是通过拦截请求,发送(HTTP,mq)数据至zipkin服务来实现监控,在性能方面相对差一点,数据分析功能也相对简单。spring-cloud-sleuth可以很好的集成zipkin , 代码无侵入,集成非常简单 。所以对于使用spring cloud体系的架构来说,zipkin还是挺适合的。
skywalking是通过java探针,字节码增强的方式来实现监控的,由于是个人开发者开源的,前面的版本bug比较多,但是后面加入到Apache孵化器后改善了很多。skywalking同样对代码无侵入,而且他界面和功能也完善,支持应用拓扑图及单个调用链查询。
集成skywalking
安装skywalking-oap
1、拉取skywalking-oap镜像
docker pull apache/skywalking-oap-server
2、启动skywalking-oap容器