Spection Trace 语义
Trace
代表一个调用链.
通常, 一个 Trace 可以被理解为一系列span 组成的有向无环图(DAG), span 之间的边称为 Reference.
Span
Span
表示一个跨进程的 RPC 或者进程内部的一个过程.
每个span 可以包含一些状态:operate_name
start_timestampe
end_timestamp
Tags
: 一系列 kv 集合Logs
: 一系列 kv 集合,并且携带时间戳SpanContext
:Reference
: 通过 SpanContext 关联其他 Span
SpanContext
SpanContext 封装了一个可以用来指向特定 Span 的状态,用于在进程间(内)传递. 通过在进程间传递,在分布式环境中构建一个DAG图.
span 必须去提供方法访问 SpanContext
,SpanContext
代表跨越进程边界,传递到下级Span的状态.(包含 trace_id
span_id
sampled
元组).
SpanContext
在跨越进程边界,和在追踪图中创建边界的时候会使用.
Logs
每个Span
可以进行多次Logs操作,每一次Logs操作, 都需要一个带时间戳
的时间名称, 以及可选的任意大小的存储结构.
Standard LogKeys
Tags
每个 Span
可以有多个键值对(key:value)形式的Tags
, Tags
是没有时间戳的,支持简单的对Span
进行注解和补充.
Baggage
Baggage
是存储在 SpanContext
中的一个键值对(SpanContext)集合. 它会在一条追踪链路上的所有span内全局传输. 在这种情况下, Baggage
会随着Trace一同传播.(Baggage
可理解为随着trace
运行过程传送的行李).
Baggage
拥有强大功能,也会有很大的消耗. 由于Baggage的全局传输,如果包含的数量量太大,或者元素太多,它将降低系统的吞吐量或增加RPC的延迟.
Reference
Reference 有两种类型:
- ChildOf
- FollowsFrom
OpenTracing语义标准
The OpenTracing Semantic Specification
The OpenTracing Semantic Specification-github