分布式链路追踪之SkyWalking

本文介绍了分布式链路追踪的重要性,特别是在微服务架构中定位性能问题的挑战。文章详细阐述了SkyWalking的工作原理和核心模块,包括自动采集span数据、跨进程传递context、traceId的全局唯一性以及性能影响的解决方案。通过SkyWalking,可以实现对分布式调用链的监控和性能分析,提供数据可视化,帮助开发者快速定位问题。
摘要由CSDN通过智能技术生成

一 链路追踪简介

  在微服务架构中,一次请求往往涉及到多个模块,多个中间件,多台机器的相互协作才能完成。这一系列调用请求中,有些是串行的,有些是并行的,那么如何确定这个请求背后调用了哪些应用,哪些模块,哪些节点及调用的先后顺序?如何定位每个模块的性能问题?本文将为你揭晓答案。
  衡量一个接口的性能好坏,一般我们至少会关注以下三个指标

  • 接口的RT (响应时间) 你怎么知道?
  • 是否有异常响应?
  • 主要慢在哪里?

1.1 传统的单体架构

在初期,公司刚起步的时候,可能多会采用如下单体架构,对于单体架构我们该用什么方式来计算以上三个指标呢?
在这里插入图片描述
最容易想到的显然是用 AOP:
在这里插入图片描述

1.2 微服务架构

在单体架构中由于所有的服务,组件都在一台机器上,所以相对来说这些监控指标比较容易实现,不过随着业务的快速发展,单体架构必然会朝微服务架构发展,如下:
在这里插入图片描述
如果有用户反馈某个页面很慢,我们知道这个页面的请求调用链是 A -----> C -----> B -----> D,此时如何定位可能是哪个模块引起的问题。每个服务 Service A,B,C,D 都有好几台机器。怎么知道某个请求调用了服务的具体哪台机器呢?
在这里插入图片描述
如图所示可发现微服务接口调用存在以下几个问题:

  • 排查问题难度大,周期长
  • 特定场景难复现
  • 系统性能瓶颈分析较难

分布式调用链就是为了解决以上几个问题而生,它主要的作用如下:

  • 自动采取数据
  • 分析数据产生完整调用链:有了请求的完整调用链,问题有很大概率可复现
  • 数据可视化:每个组件的性能可视化,能帮助我们很好地定位系统的瓶颈,及时找出问题所在

通过分布式追踪系统能很好地定位如下请求的每条具体请求链路,从而轻易地实现请求链路追踪,每个模块的性能瓶颈定位与分析。
在这里插入图片描述

1.3 分布式调用链路标准 - openTracing

知道了分布式调用链的作用,那我们来看下如何实现分布式调用链的实现及原理, 首先为了解决不同的分布式追踪系统 API 不兼容的问题,诞生了 OpenTracing 规范,OpenTracing 是一个轻量级的标准化层,它位于应用程序/类库和追踪或日志分析程序之间
在这里插入图片描述
这样 OpenTracing 通过提供平台无关,厂商无关的 API,使得开发人员能够方便地添加追踪系统的实现。
说到这大家是否想过 Java 中类似的实现?还记得 JDBC 吧,通过提供一套标准的接口让各个厂商去实现,程序员即可面对接口编程,不用关心具体的实现。这里的接口其实就是标准,所以制定一套标准非常重要,可以实现组件的可插拔。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值