基础概念
追踪(Trace)
是指一个请求或者一个操作从开始到结束的完整路径。它涵盖了分布式系统中所有相关组件的调用关系和性能信息。
跨度(Span)
是Trace的组成部分之一。Span代表一次调用或操作的单个组件,可以是一个方法调用、一个HTTP请求或者其他类型的操作。Span细分如下三种类型:
- Entry Span:入栈Span,Segment的入口,当请求进入服务时会创建EntrySpan 类型的Span,一个Segment有且仅有一个Entry Span。
- Local Span:通常用于记录一个本地方法的调用。
- Exit Span:出栈Span,Segment的出口,当请求离开当前服务、进入其他服务时会创建 ExitSpan 类型的Span,一个Segment可以有若干个Exit Span。
追踪片段(Tracesegemnt)
是一个进程或线程内的所有操作的集合,即包含若干个Span。
Trace、Tracesegment 和 Span 的关系
一个Trace由多个TraceSegment 构成,一个TraceSegment 是由多个 Span 构成的。
我们可以理解:一个Trace 包括三个服务,service1 、service2 和service3,3个service 分别对应3个Tracesegemnt,即tracesegemnt1,tracesegemnt2,tracesegemnt3,而在每个tracesegemnt中都会依次执行下面的span
- Create entry span
- Extract ContextCarrier
- Stop exit span
- Create exit span
- Stop entry span
这里的ContextCarrier是 Context 上下文的搬运工(Carrier),实现Serializable 接口,负责在进程之间搬运TracingContext 的一些基本信息。
一张图搞定三者关系
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!