- 版本 2.0
SkyWalking 跨进程传播的头部协议版本 2.0 也叫做 sw6 协议. 第二版的协议与第一版协议(亦即 sw3)有相同的目的. 就是确保上下文得以正常传播.
两个版本的差异主要来自 SkyWalking 的演进, 包括
- 服务网格和语言并不总是一样, 头部中的某些信息应该是可选的
- 需要 BASE64 编码
- 包括了采样标记
- 头部名称:
sw6
- 头部值: 由
-
分割, 各部分如下. 头部值的最大长度(默认)应该小于 2k.
值格式示例, XXXXX-XXXXX-XXXX-XXXX
头部值包含以下段, 所有字符串类型的值都是 BASE64 编码的.
- 必须项
- 采样(Sample). 0 或 1. 0 表示上下文存在, 但是可以(也很可能)忽略. 1 表示此追踪需要采样并发送到后端.
- 追踪标识(Trace Id). 字符串(BASE64 编码). 由
.
分割的三个 long 类型值, 表示此追踪的唯一标识. - 父追踪段 ID(Parent trace segment Id). 字符串(BASE64 编码). 由
.
分割的三个 long 类型值, 表示父服务中的追踪段的唯一标识. - 父 Span 标识(Parent span Id). 整数. 从 0 开始. 此 Span ID 指向了父追踪段中的 Span.
- 父服务实例标识(Parent service instance Id). 整数. 父服务的实例 ID.
- 入口服务实例标识(Entrance service instance Id). 整数. 入口服务的实例 ID.
- 本请求的目标地址(Target address of this request). 字符串(BASE64 编码). 客户端用于访问目标服务的网络地址(不一定是 IP + 端口). 该值可以使用压缩收集器服务来获得一个 id(整数) 来代表这个字符串, 如果你使用字符串, 则字符串必须以
#
开始, 否则直接使用整数 ID.
- 可选项
当代理/SDK 没有这些信息时, 或者头部大于阈值(默认 2k)时, 可选项可以不存在头部值中
- 追踪的入口端点. 字符串(BASE64 编码).
字符串(BASE64 编码). 客户端用于访问目标服务的网络地址(不一定是 IP + 端口). 该值可以使用压缩收集器服务来获得一个 id(整数) 来代表这个字符串, 如果你使用字符串, 则字符串必须以
#
开始, 否则直接使用整数 ID. - 父服务的端点. 字符串(BASE64 编码).
字符串(BASE64 编码). 客户端用于访问目标服务的网络地址(不一定是 IP + 端口). 该值可以使用压缩收集器服务来获得一个 id(整数) 来代表这个字符串, 如果你使用字符串, 则字符串必须以
#
开始, 否则直接使用整数 ID.
- 简单版本,
1-TRACEID-SEGMENTID-3-5-2-IPPORT
- 完整版本
1-TRACEID-SEGMENTID-3-5-2-IPPORT-ENTRYURI-PARENTURI