详解 Apache SkyWalking 跨进程传播协议
简介
SkyWalking 跨进程传播协议是用于上下文的传播,本文介绍的版本是3.0,也被称为为sw8协议。
Header项
Header应该是上下文传播的最低要求。
- Header名称:
sw8. - Header值:由
-分隔的8个字段组成。Header值的长度应该小于2KB。
Header值
Header值中具体包含以下8个字段:
- 采样(Sample),0 或 1,0 表示上下文存在, 但是可以(也很可能)被忽略;1 表示这个追踪需要采样并发送到后端。
- 追踪ID(Trace Id),是 BASE64 编码的字符串,其内容是由
.分割的三个 long 类型值, 表示此追踪的唯一标识。 - 父追踪片段ID(Parent trace segment Id),是 BASE64 编码的字符串,其内容是字符串且全局唯一。
- 父跨度ID(Parent span Id),是一个从 0 开始的整数,这个跨度ID指向父追踪片段(segment)中的父跨度(span)。
- 父服务名称(Parent service),是 BASE64 编码的字符串,其内容是一个长度小于或等于50个UTF-8编码的字符串。
- 父服务实例标识(Parent service instance),是 BASE64 编码的字符串,其内容是一个长度小于或等于50个UTF-8编码的字符串。
- 父服务的端点(Parent endpoint),是 BASE64 编码的字符串,其内容是父追踪片段(segment)中第一个入口跨度(span)的操作名,由长度小于或等于50个UTF-8编码的字符组成。
- 本请求的目标地址(Peer),是 BASE64 编码的字符串,其内容是客户端用于访问目标服务的网络地址(不一定是 IP + 端口)。
Header值示例
上面的说明太干了,我们来举一个具体的例子,可以更好的理解。
有两个服务,分别叫onemore-a和 onemore-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==
文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。
以-字符进行分割,可以得到:
- 1,采样,表示这个追踪需要采样并发送到后端。
- YTRlYzZmYzhjY2FiNGJiNGI2ODIwNjQ2OThjYzk3ZTYuNzQuMTYyMTgzODExMDQ1NTAwMDk=,追踪ID,解码后为:a4ec6fc8ccab4bb4b682064698cc97e6.74.16218381104550009
- YTRlYzZmYzhjY2FiNGJiNGI2ODIwNjQ2OThjYzk3ZTYuNzQuMTYyMTgzODExMDQ1NTAwMDg=,父追踪片段ID,解码后为:a4ec6fc8ccab4bb4b682064698cc97e6.74.16218381104550009
- 2,父跨度ID。
- b25lbW9yZS1h,父服务名称,解码后为:onemore-a
- ZTFkMmZiYjYzYmJhNDMwNDk5YWY4OTVjMDQwZTMyZmVAMTkyLjE2OC4xLjEwMQ==,父服务实例标识,解码后为:e1d2fbb63bba430499af895c040e32fe@192.168.1.101
- L29uZW1vcmUtYS9nZXQ=,父服务的端点,解码后为:/onemore-a/get
- MTkyLjE2OC4xLjEwMjo4MA==,本请求的目标地址,解码后为:192.168.1.102:80
扩展Header项
扩展Header项是为高级特性设计的,它提供了部署在上游和下游服务中的探针之间的交互功能。
- Header名称:
sw8-x - Header值:由
-分割,字段可扩展。
文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。
扩展Header值
当前值包括的字段:
- 追踪模式(Tracing Mode),空、0或1,默认为空或0。表示在这个上下文中生成的所有跨度(span)应该跳过分析。在默认情况下,这个应该在上下文中传播到服务端,除非它在跟踪过程中被更改。
微信公众号:万猫学社
微信扫描二维码
关注后回复「电子书」
获取12本Java必读技术书籍

详解 Apache SkyWalking 跨进程传播协议的更多相关文章
- 图文详解 Android Binder跨进程通信机制 原理
图文详解 Android Binder跨进程通信机制 原理 目录 目录 1. Binder到底是什么? 中文即 粘合剂,意思为粘合了两个不同的进程 网上有很多对Binder的定义,但都说不清楚:Bin ...
- 详解 Apache SkyWalking OAP 的分布式计算
SkyWalking的OAP(Observability Analysis Platform,观测分析平台)是一个用于链路数据的分布式计算系统. 因为它巧妙的设计,使得在链路数据计算和聚合过程中,不需 ...
- 《TCP-IP详解卷3:TCP 事务协议、HTTP、NNTP和UNIX域协议》【PDF】下载
TCP-IP详解卷3:TCP 事务协议.HTTP.NNTP和UNIX域协议>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062539 ...
- 嵌入式Linux应用程序开发详解------(创建守护进程)
嵌入式Linux应用程序开发详解 华清远见 本文只是阅读文摘. 创建一个守护进程的步骤: 1.创建一个子进程,然后退出父进程: 2.在子进程中使用创建新会话---setsid(): 3.改变当前工作目 ...
- .Neter玩转Linux系列之五:crontab使用详解和Linux的进程管理以及网络状态监控
一.crontab使用详解 概述:任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类: (1)系统工作:有些重要的工作必须周而 复始地执行. (2)个别用户工作:个别用户可能希望执 行 ...
- 详解Tomcat核心配置、http协议
Tomcat服务器 Tomcat配置与部署(IDEA) https://www.cnblogs.com/gonghr/p/14731266.html Tomcat手工创建和打包第一个Web工程 在ap ...
- 详解Apache服务与高级配置,(主配置文件每行都有描述)
HTTP服务---> http://httpd.apache.org/(官方网站) httpd service :纯粹的web服务器,同时开源(不是GPL). 特性:1.在进程特性上通常是事先 ...
- Linux命令详解-Apache网站服务器配置和管理
1.Apache网站服务器配置和管理 1.源码包安装 2.rpm包安装 rpm –a | grep httpd 3.启动服务 service httpd start 4.配置文件: /etc/http ...
- 详解SpringBoot应用跨域访问解决方案
一.什么是跨域访问 说到跨域访问,必须先解释一个名词:同源策略.所谓同源策略就是在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同.Host(ip)相同.端口相同的条件,否则访问将被禁止,该访 ...
随机推荐
- NOI Online 提高组 题解
来补坑了-- 个人认为三道题难度差不多-- 还有要说一嘴,为啥我在其他网站代码都好好的,复制到 cnblogs 上 Tab 就成 8 空格了?不过也懒得改了. T1 序列 首先,遇到这种加一减一还带附 ...
- odoo视图 “动作” 里添加菜单按钮:案例
####################################################################################odoo中常用方法,在动作里面添 ...
- CRC校验原理和verilog实现方法(二)
1 前言 在 前面的博客 CRC校验原理和verilog实现方法(一) 中,介绍了CRC校验的原理和手动计算过程.本文说一下我在学习CRC校验FPGA实现的一点心得体会. 2 线性反馈移位寄存器 ...
- 大数据学习(15)—— B+树和LSM
这一节介绍数据库存储引擎常用的两种数据结构.作为关系型数据库的代表,MySql的InnoDB使用B+树来存储索引.作为NoSQL的代表,HBase使用的LSM树,我们来看看两者有什么区别. B+树 B ...
- QT 如何在调试时能进入源码方式(MacOS)
最近在学习QT, 遇到一些crash, 也没看过QT源码啊, 就想类似Java一样, 在出错时进入源码跟踪一下, 但是QT和Java太不一样了, 死活进不去. 研究了几天, 发现本来是很简单的事情, ...
- 使用Fileupload完成文件的上传下载
目录 使用Fileupload完成文件的上传下载 为什么需要进行文件上传下载? 引入jar包 文件上传 注意事项 编写一个简单的文件上传jsp页面 编写Servlet Student类用于封装数据,后 ...
- 通过cmake在Android中调用c语言,且三方应用通过so库调用c语言
1. 新建JniUtils类实现native方法 2. 在build中执行clean project 再rebuild project 生成class文件. 注意:最新版本的AndroidStud ...
- CF427B
没人用ST表么?他比线段树快. 考虑先把ST表跑下来,然后循环一遍区间的起点,看一下这个区间的最大值,和 \(t\) 比较一下即可. 然后这题就做完了.ST表裸题. int f[2000010][21 ...
- 虚拟基站(VRS)
虚拟参考站技术(Virtual Reference Station,简称VRS)也称虚拟基准站技术,是一种网络实时动态测量实时动态测量(RTK)技术,通过在某一区域内建立构成网状覆盖的多个GPS基 ...
- 字节跳动Android面试凉凉,挥泪整理面筋,你不看看吗?
想在金九银十找工作的现在可以开始准备了,这边给大家分享一下面试会遇到的问题. 找工作还是需要大家不要担心,由于我们干这一行的接触人本来就不多,难免看到面试官会紧张,主要是因为怕面试官问的答不上来,答不 ...