skywalking里的span和segment都是什么意思

SkyWalking 的分布式追踪系统中,SpanSegment 是核心概念,分别代表追踪的最小单元和更大的逻辑块。它们的关系如下:


1. 什么是 Span?

定义

Span 是分布式追踪的最小单元,表示一次具体的操作或请求处理。每个 Span 包含关于操作的详细信息,比如执行的时间、状态、所属服务、操作类型等。

特征

  • 标识一个操作:如一次 HTTP 请求、数据库查询或方法调用。
  • 嵌套关系:Span 可以嵌套,父 Span 表示调用者,子 Span 表示被调用者。
  • 时间信息:记录操作的开始时间和结束时间,计算耗时。
  • 错误信息:如果操作失败,Span 会记录错误的具体信息。

关键字段

一个 Span 通常包含以下字段:

  • Span ID:Span 的唯一标识。
  • Operation Name:操作的名称,如 HTTP 方法名或 SQL 查询。
  • Parent Span ID:指向父 Span 的 ID,用于构建调用关系。
  • Start Time 和 End Time:记录操作的开始和结束时间。
  • Tags:额外的元信息,例如 URL、SQL 语句等。
  • Logs:记录关键事件,比如错误信息、阶段日志。

示例

一个 HTTP 服务的请求可以生成以下 Spans:

  1. 入口 Span:接收请求。
  2. 调用 Span:调用数据库。
  3. 出口 Span:调用下游服务。

2. 什么是 Segment?

定义

Segment 是追踪的逻辑单元,表示一个服务实例中对一次请求的完整处理过程。它由多个 Span 组成,通常是同一线程或服务中的操作集合。

特征

  • 属于单个服务实例:Segment 描述一个服务实例内的完整调用链。
  • 聚合多个 Span:Segment 包含服务内所有相关的 Span,比如入口、方法调用、出口等。
  • 跨线程支持:一个 Segment 可以跨多个线程(如异步调用)。
  • 全局唯一性:每个 Segment 在全局中唯一标识,关联到一个分布式追踪中的单次请求。

关键字段

一个 Segment 通常包含:

  • Segment ID:Segment 的唯一标识。
  • Service Name:所属服务的名称。
  • Service Instance ID:所属服务实例的标识。
  • Spans:该 Segment 包含的所有 Span。
  • Trace ID:关联的分布式追踪唯一标识。

示例

当一个 HTTP 请求进入服务 A 时,可能产生以下 Segment:

  1. 入口 Segment:记录请求的接收和处理过程。
  2. 调用 Segment:包含服务 A 调用下游服务或数据库的 Spans。

3. Span 和 Segment 的关系

  • Span 是 Segment 的组成部分:一个 Segment 包含多个 Span,每个 Span 表示一次具体的操作。
  • Segment 是 Trace 的组成部分:一个 Trace 由多个 Segment 组成,每个 Segment 代表一个服务实例对请求的处理。
  • 上下游关系:在分布式调用中,服务 A 的出口 Span 和服务 B 的入口 Span 通过 Trace ID 和上下文信息关联。

分布式追踪的层次结构

  1. Trace(追踪):全局唯一,表示一次完整的请求链路。
  2. Segment(片段):每个服务实例的处理片段。
  3. Span(操作单元):每个操作或方法调用。

4. 直观比喻

  • Span:是一个剧本中的一个场景(最小的操作单元)。
  • Segment:是剧本中某个角色的完整表演片段(一个服务实例内的操作集合)。
  • Trace:是整个剧本,包含所有角色的表演片段(多个服务实例的组合)。

5. 举例说明

一个用户请求经过多个服务的完整流程:

  • Trace ID: abc123(追踪整个流程)。
    • 服务 A:
      • Segment A:
        • Span A1:接收请求(入口)。
        • Span A2:调用数据库。
        • Span A3:调用服务 B(出口)。
    • 服务 B:
      • Segment B:
        • Span B1:接收服务 A 的请求(入口)。
        • Span B2:调用服务 C(出口)。
    • 服务 C:
      • Segment C:
        • Span C1:接收服务 B 的请求(入口)。

6. 总结

  • Span:记录单个操作,提供细粒度的性能和错误分析。
  • Segment:聚合多个 Span,表示一个服务实例中的完整请求处理。
  • Trace:通过 Span 和 Segment 组合,构建完整的分布式追踪链路。

SkyWalking 通过这些概念,帮助开发者深入分析分布式系统中的性能瓶颈和错误原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蘋天纬地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值