一文搞定SkyWalking 中Trace、Tracesegment 和 Span 的关系,非常重要!

发布时间:2024年01月11日

基础概念

追踪(Trace)

是指一个请求或者一个操作从开始到结束的完整路径。它涵盖了分布式系统中所有相关组件的调用关系和性能信息。

跨度(Span)

是Trace的组成部分之一。Span代表一次调用或操作的单个组件,可以是一个方法调用、一个HTTP请求或者其他类型的操作。Span细分如下三种类型:

  1. Entry Span:入栈Span,Segment的入口,当请求进入服务时会创建EntrySpan 类型的Span,一个Segment有且仅有一个Entry Span。
  2. Local Span:通常用于记录一个本地方法的调用。
  3. 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

  1. Create entry span
  2. Extract ContextCarrier
  3. Stop exit span
  4. Create exit span
  5. Stop entry span

这里的ContextCarrier是 Context 上下文的搬运工(Carrier),实现Serializable 接口,负责在进程之间搬运TracingContext 的一些基本信息。

一张图搞定三者关系

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!

文章来源:https://blog.csdn.net/liwenxiang629/article/details/135522955
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。