1、概述
在分布式服务时代,服务之间的请求域调用不再是简单的直连方式,注册中心的出现,让服务治理更加便利,也对服务之间的链路追踪提出了更高的要求。
分布式链路追踪就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等
理论支撑。目前比较主流的链路追踪产品都是启发于google发表的Dapper,Dapper阐述了分布式系统,特别是微服务架构中链路追踪的概念、数据表示、埋点、传递、收集、存储与展示等技术细节。
标准化。OpenTracing(http://opentracing.io/)是一个分布式跟踪框架。OpenTracing通过提供平台无关、厂商无关的API,使得开发人员能够方便的添加(或更换)追踪系统的实现。目前OpenTracing正在为全球的分布式追踪,提供统一的概念和数据标准。
2、追踪理论 - Dapper
为了实现链路追踪,dapper提出了trace,span,annotation的概念。
Trace的含义比较直观,就是链路,指一个请求经过后端所有服务的路径,每一条链路都用一个全局唯一的traceid来标识。
span之间存在着父子关系,上游的span是下游的父span,每个span由spanid和parentid来标识,spanid在一条链路中唯一。
一个span一般由client和server两个部分的信息组成。按照时间顺序来解释,client节点(或者是调用方)首先发出请