IT袋

当前位置:主页 > 经验教程 > 系统教程 >

分布式追踪系统的原理及作用

分布式追踪系统的原理及作用 分布式追踪系统的原理与作用(3)

时间:2023-09-23 15:11:12 来源:IT袋 作者:苏晓敏
导读:分布式追踪系统的原理及作用,接下来我们来看 OpenTracing 的数据模型,主要有以下三个 Trace :一个完整请求链路 Span :一次调用过程(需要有开始时间和结束时间) SpanContext :Trace 的全局

分布式追踪系统的原理及作用

分布式追踪系统的原理及作用

接下来我们来看 OpenTracing 的数据模型,主要有以下三个

  • Trace:一个完整请求链路
  • Span:一次调用过程(需要有开始时间和结束时间)
  • SpanContext:Trace 的全局上下文信息, 如里面有traceId

理解这三个概念非常重要,为了让大家更好地理解这三个概念,我特意画了一张图

分布式追踪系统的原理及作用

如图示,一次下单的完整请求完整就是一个 Trace, 显然对于这个请求来说,必须要有一个全局标识来标识这一个请求,每一次调用就称为一个 Span,每一次调用都要带上全局的 TraceId, 这样才可把全局 TraceId 与每个调用关联起来,这个 TraceId 就是通过 SpanContext 传输的,既然要传输显然都要遵循协议来调用。如图示,我们把传输协议比作车,把 SpanContext 比作货,把 Span 比作路应该会更好理解一些。

理解了这三个概念,接下来我看看分布式追踪系统如何采集统一图中的微服务调用链

分布式追踪系统的原理及作用

我们可以看到底层有一个 Collector 一直在默默无闻地收集数据,那么每一次调用 Collector 会收集哪些信息呢。

  1. 全局 trace_id:这是显然的,这样才能把每一个子调用与最初的请求关联起来
  2. span_id: 图中的 0,1,1.1,2,这样就能标识是哪一个调用
  3. parent_span_id:比如 b 调用 d 的 span_id 是 1.1,那么它的 parent_span_id 即为 a 调用 b 的 span_id 即 1,这样才能把两个紧邻的调用关联起来。

有了这些信息,Collector 收集的每次调用的信息如下

相关阅读