详解 Apache SkyWalking 的跨进程传播协议

简介

SkyWalking 跨进程传播协议是用于上下文的传播,本文介绍的版本是3.0,也被称为为sw8协议。

Header项

Header应该是上下文传播的最低要求。

  • Header名称:sw8.
  • Header值:由-分隔的8个字段组成。Header值的长度应该小于2KB。
Header值

Header值中具体包含以下8个字段:

  1. 采样(Sample),0 或 1,0 表示上下文存在, 但是可以(也很可能)被忽略;1 表示这个追踪需要采样并发送到后端。
  2. 追踪ID(Trace Id),是 BASE64 编码的字符串,其内容是由 . 分割的三个 long 类型值, 表示此追踪的唯一标识。
  3. 父追踪片段ID(Parent trace segment Id),是 BASE64 编码的字符串,其内容是字符串且全局唯一。
  4. 父跨度ID(Parent span Id),是一个从 0 开始的整数,这个跨度ID指向父追踪片段(segment)中的父跨度(span)。
  5. 父服务名称(Parent service),是 BASE64 编码的字符串,其内容是一个长度小于或等于50个UTF-8编码的字符串。
  6. 父服务实例标识(Parent service instance),是 BASE64 编码的字符串,其内容是一个长度小于或等于50个UTF-8编码的字符串。
  7. 父服务的端点(Parent endpoint),是 BASE64 编码的字符串,其内容是父追踪片段(segment)中第一个入口跨度(span)的操作名,由长度小于或等于50个UTF-8编码的字符组成。
  8. 本请求的目标地址(Peer),是 BASE64 编码的字符串,其内容是客户端用于访问目标服务的网络地址(不一定是 IP + 端口)。
Header值示例

上面的说明太干了,我们来举一个具体的例子,可以更好的理解。

有两个服务,分别叫onemore-aonemore-b,用户通过HTTP调用onemore-a/onemore-a/get,然后onemore-a/onemore-a/get又通过HTTP调用onemore-b/onemore-b/get,流程图就是这样的:

那么,我们在onemore-b/onemore-b/get的Header中就可以发现一个叫做sw8的key,其值为:

1-YTRlYzZmYzhjY2FiNGJiNGI2ODIwNjQ2OThjYzk3ZTYuNzQuMTYyMTgzODExMDQ1NTAwMDk=-YTRlYzZmYzhjY2FiNGJiNGI2ODIwNjQ2OThjYzk3ZTYuNzQuMTYyMTgzODExMDQ1NTAwMDg=-2-b25lbW9yZS1h-ZTFkMmZiYjYzYmJhNDMwNDk5YWY4OTVjMDQwZTMyZmVAMTkyLjE2OC4xLjEwMQ==-L29uZW1vcmUtYS9nZXQ=-MTkyLjE2OC4xLjEwMjo4MA==

-字符进行分割,可以得到:

  1. 1,采样,表示这个追踪需要采样并发送到后端。
  2. YTRlYzZmYzhjY2FiNGJiNGI2ODIwNjQ2OThjYzk3ZTYuNzQuMTYyMTgzODExMDQ1NTAwMDk=,追踪ID,解码后为:a4ec6fc8ccab4bb4b682064698cc97e6.74.16218381104550009
  3. YTRlYzZmYzhjY2FiNGJiNGI2ODIwNjQ2OThjYzk3ZTYuNzQuMTYyMTgzODExMDQ1NTAwMDg=,父追踪片段ID,解码后为:a4ec6fc8ccab4bb4b682064698cc97e6.74.16218381104550009
  4. 2,父跨度ID。
  5. b25lbW9yZS1h,父服务名称,解码后为:onemore-a
  6. ZTFkMmZiYjYzYmJhNDMwNDk5YWY4OTVjMDQwZTMyZmVAMTkyLjE2OC4xLjEwMQ==,父服务实例标识,解码后为:e1d2fbb63bba430499af895c040e32fe@192.168.1.101
  7. L29uZW1vcmUtYS9nZXQ=,父服务的端点,解码后为:/onemore-a/get
  8. MTkyLjE2OC4xLjEwMjo4MA==,本请求的目标地址,解码后为:192.168.1.102:80

扩展Header项

扩展Header项是为高级特性设计的,它提供了部署在上游和下游服务中的探针之间的交互功能。

  • Header名称:sw8-x
  • Header值:由-分割,字段可扩展。
扩展Header值

当前值包括的字段:

  1. 追踪模式(Tracing Mode),空、0或1,默认为空或0。表示在这个上下文中生成的所有跨度(span)应该跳过分析。在默认情况下,这个应该在上下文中传播到服务端,除非它在跟踪过程中被更改。
Apache SkyWalking 是一个开源的应用性能监控和观测平台,它支持分布式系统、微服务架构和容器化环境的性能监控。通过监控系统的请求流和调用链,它可以帮助开发者和运维人员快速定位和解决性能问题,提高应用的稳定性和可靠性。 《Apache SkyWalking实战PDF》是一本关于使用 Apache SkyWalking 进行应用性能监控实践的电子书。该书通过详细介绍 SkyWalking 的工作原理、部署和配置方法,以及如何使用 SkyWalking 进行性能监控和问题排查,帮助读者全面了解和掌握 SkyWalking的使用技巧。 《Apache SkyWalking实战PDF》主要包括以下内容: 1. Apache SkyWalking 的概述和特性:介绍了 SkyWalking 的基本原理和功能,包括请求追踪、性能指标监控、告警和日志分析等。 2. SkyWalking 的部署和配置:详细介绍了如何在各种环境下(包括单机和分布式环境)部署和配置 SkyWalking,包括安装和运行 SkyWalking 服务器和探针。 3. 实践案例和示例:通过实际的案例和示例,展示了如何使用 SkyWalking 进行性能监控和问题排查。包括如何分析请求的调用链、如何根据性能指标进行优化、如何发现和解决性能瓶颈等。 4. SkyWalking 的进阶内容:介绍了 SkyWalking 的高级功能和扩展,如分布式追踪、服务拓扑图、故障定位和容量规划等。 通过阅读《Apache SkyWalking实战PDF》,读者可以了解如何快速搭建和使用 SkyWalking 进行应用性能监控,提高应用的性能和可靠性,解决和预防性能问题。这对于开发者、运维人员和系统架构师来说都是一本实用的参考书。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

万猫学社

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

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

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

打赏作者

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

抵扣说明:

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

余额充值