# SkyWalking 跨进程传播的头部协议
- 版本 3.0
SkyWalking 更像是一个 APM 系统, 而不是通用的分布式跟踪系统. 为了提高OAP的分析性能,头文件要比它们复杂得多. 您可以在其他商业APM系统中找到许多类似的机制。(有些甚至比我们的更复杂)
# 摘要
SkyWalking 跨进程传播的头部协议版本 3.0 也被命名为sw8协议,用于上下文传播.
# 标准头部项
标准标头应该是上下文传播的最低要求.
- 头部名称:
sw8
. - 头部值: 8 个字段,由
-
分割. 头部值的最大长度(默认)应该小于 2k.
值格式示例, XXXXX-XXXXX-XXXX-XXXX
# 值
头部值包含以下段, 所有字符串类型的值都是 BASE64 编码的.
- 必须项(s)
- 采样(Sample). 0 或 1. 0 表示上下文存在, 但是可以(也很可能)忽略. 1 表示此追踪需要采样并发送到后端.
- 追踪标识(Trace Id). 字符串(BASE64 编码). 由 . 分割的三个 long 类型值, 表示此追踪的唯一标识.
- 父追踪段 ID(Parent trace segment Id). 字符串(BASE64 编码). 字符串且全局唯一.
- 父 Span 标识. 整数. 从 0 开始. 此 Span ID 指向了父追踪段中的 Span.
- 父服务. 字符串(BASE64 编码). 长度不应小于或等于50个UTF-8编码的字符.
- 父服务实例标识. 字符串(BASE64 编码). 长度不应小于或等于50个UTF-8编码的字符.
- 父服务的端点. 字符串(BASE64 编码). 父追踪段中第一个入口span的操作名. 长度不应小于或等于50个UTF-8编码的字符.
- 本请求的目标地址. 字符串(BASE64 编码). 客户端用于访问目标服务的网络地址(不一定是 IP + 端口).
- 示例,
1-TRACEID-SEGMENTID-3-PARENT_SERVICE-PARENT_INSTANCE-PARENT_ENDPOINT-IPPORT
# 扩展头部项
扩展头部项是为高级特性设计的. 它提供了部署在上游和下游服务中的代理之间的交互功能。
- 头部名称:
sw8-x
- 头部值: 由
-
分割. 字段可扩展.
# 值
当前值包括的字段.
- 追踪模式. 空,0或1。默认为空或0。表示在这个上下文中生成的所有span应该跳过分析,
spanObject#skipAnalysis=true
。这个上下文应该在默认情况下传播到上游,除非它在跟踪过程中被更改.