2019新春支付宝红包技术大揭秘在线峰会将于03-07日开始,点击这里报名届时即可参与大牛互动。
SOFA Scalable Open Financial Architecture
是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。 SOFATracer
是一个用于分布式系统调用跟踪的组件,通过统一的 TraceId
将调用链路中的各种网络调用情况以日志的方式记录下来,以达到透视化网络调用的目的,这些链路数据可用于故障的快速发现,服务治理等。 本文为《剖析
| SOFATracer 框架》第一篇。《剖析 | SOFATracer 框架》系列由 SOFA
团队和源码爱好者们出品,项目代号:SOFA:TracerLab/,文章尾部有参与方式,欢迎同样对源码热情的你加入。
0. 前言
在单体应用时代,我们不需要花费时间去关心调用链路这个东西。
但是链路跟踪不仅仅是在分布式场景下才会有,即使是单体应用,同样也会存在调用链路。
例如,我们把应用中的每个服务接口作为一个链路节点,那么从请求进来到返回响应,把这个过程中多历经的所有的方法接口串联起来,就能组成一条完整的链路,如下图所示:
对于单体应用而言,如果访问一个资源没有成功,那么我们可以很快的锁定是哪一台机器,然后通过查询这台机器上的日志就能定位问题。
但是在微服务体系架构下,这种方式会显得非常无力。对于一个稍具规模的应用来说,一次请求可能会跨越相当多的服务节点,在这种情况下,如果一个请求没有得到成功的响应,就不能确定到底是哪个节点出了问题。
因此在面对这种复杂的大规模分布式集群来实现的服务体系来说,就需要一些可以帮助理解各个应用的线上调用行为、并可以分析远程调用的组件。
基于上述背景,蚂蚁金服开源了基于 OpenTracing 规范 (http://opentracing.io/documentation/pages/spec.html)实现的 SOFATracer 分布式链路跟踪组件,为实施大规模服务化体系架构场景下提供了链路跟踪的解决方案。
在介绍 SOFATracer 之前,先来了解一下 Opentracing 规范。
1. Opentracing 简介
首先来解释下 OpenTracing 是什么OpenTracing 致力于为分布式跟踪创建更标准化的API和工具,它由完整的API规范、实现该规范的框架、库