链路追踪详解(五):链路传播 Header 详解

链路追踪作为分布式系统中不可或缺的一部分,可以帮助开发和运维人员了解请求在系统中的流转链路,快速定位问题和识别性能瓶颈。而链路传播 Header 是实现跨服务调用链跟踪的关键机制,通过链路传播 Header,使得跟踪信息在不同服务间的透明传递,从而构建出完整的请求链路。

文章持续更新中,微信搜索【路多辛】优质文章

链路传播 Header 的作用

在分布式系统中,请求通常会经过多个组件和服务。为了实现链路追踪,需要在请求流转过程中传递一些特定的 Header 信息。这些 Header 用于标识和关联不同服务之间的请求,从而构建完整的请求链路。这些 Header 如同“信使”,确保请求在跨越多个微服务时,上下文信息(如追踪ID、span ID等)能够被准确无误地传递下去。

链路传播 Header 的主要作用包括:

  • 传递 Trace ID 和 Span ID:确保每个服务都能识别和关联请求。
  • 传递采样决策:决定是否对请求进行采样和记录。
  • 传递上下文信息:传递与请求相关的上下文信息,如用户信息、请求参数等。

常见的三种链路传播 Header 标准

1、W3C Trace Context

W3C Trace Context 是一个开放标准,用于定义链路传播 Header 的格式和语义。旨在提供一种统一的方式,在不同的链路追踪系统和服务之间传递追踪信息,opentelemetry 就遵守了这个标准。W3C Trace Context 包括两个主要的 Header:

    • traceparent:用于传递 Trace ID、Span ID 和采样决策。
    • tracestate:用于传递与请求相关的上下文信息。

traceparent Header 的格式如下:

traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
  • 版本号(Version):前两位表示版本号,目前为 00。
  • Trace ID:接下来的 32 位表示 Trace ID。
  • Span ID:接下来的 16 位表示 Span ID。
  • 采样决策(Trace Flags):最后两位表示采样决策,01 表示采样,00 表示不采样。

tracestate Header 用于传递与请求相关的上下文信息。格式如下:

tracestate: congo=t61rcWkgMzE

tracestate Header 可以包含多个键值对,每个键值对由逗号分隔,每个键值对的格式为 key=value。

2、B3 Propagation

B3 Propagation 是由 Twitter 开发的一个链路传播 Header 标准,广泛应用于 Zipkin 等链路追踪系统。B3 Propagation 包括以下几个 Header:

  • X-B3-TraceId:传递 Trace ID。
  • X-B3-SpanId:传递 Span ID。
  • X-B3-ParentSpanId:传递父 Span ID。
  • X-B3-Sampled:传递采样决策。1 表示采样,0 表示不采样。
  • X-B3-Flags:传递调试标志。1 表示开启调试,0 表示关闭调试。

3、Jaeger Propagation

Jaeger 是一个开源的链路追踪系统,支持多种链路传播 Header 标准,包括 W3C Trace Context 和 B3 Propagation。Jaeger 还定义了一种自有的链路传播 Header 格式:

  • uber-trace-id:传递 Trace ID、Span ID、父 Span ID 和采样决策。

uber-trace-id Header 的格式如下:

uber-trace-id: 4bf92f3577b34da6a3ce929d0e0e4736:00f067aa0ba902b7:0020000000000001:01
  • Trace ID:前 32 位表示 Trace ID。
  • Span ID:接下来的 16 位表示 Span ID。
  • 父 Span ID:接下来的 16 位表示父 Span ID。
  • 采样决策:最后两位表示采样决策,01 表示采样,00 表示不采样。

小结

链路传播 Header 是实现效链路追踪的基础,通过一系列精心设计的 Header 字段,在服务间传递必要的追踪信息,为系统监控、故障排查和性能优化提供了强大支持。随着微服务架构的普及和云原生技术的发展,链路追踪的重要性日益凸显,深入理解和正确应用链路传播 Header,已成为现代软件开发与运维不可或缺的技能之一。

文章持续更新中,微信搜索【路多辛】优质文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用Python控制终端打印字体的颜色和格式

利用Python控制终端打印字体的颜色和格式—操作详解(ANSI转义序列) 一、问题描述二、ANSI转义序列三、具体代码和显示效果(看懂这段代码,以后可随心控制字体的打印格式) 欢迎学习交流! 邮箱: z……

驾驭Vim的扩展宇宙:插件管理器全攻略

驾驭Vim的扩展宇宙:插件管理器全攻略 在Vim的世界里,插件是扩展编辑器功能、提升开发效率的神器。Vim-plug和Vundle是两款流行的Vim插件管理器,它们使得安装、更新和管理插件变得前所未有的简单。本文将带你深入了解Vim插件管理器的使用&…

单片机+DS18B20温度控制程序仿真与原理图PCB文件 可设上下限

资料下载地址:单片机DS18B20温度控制程序仿真与原理图PCB文件 可设上下限 目录 1、项目介绍 2、实物图 ​3、电路原理图 ​4、仿真原理图 ​5、部分代码 1、项目介绍 基于51单片机温度控制,使用18b20来做温度传感器,四位共阳数码管显…

【消息队列】Kafka学习笔记

概述 定义 传统定义: 一个分布式的, 基于发布订阅模式的消息队列, 主要应用于大数据实时处理领域新定义: 开源的分布式事件流平台, 被用于数据管道/流分析/数据集成 消息队列的使用场景 传统消息队列的主要应用场景包括: 削峰: 解耦: 异步: 两种模式 点对点模式 发布/订…

【深度学习】python之人工智能应用篇——图像生成技术(一)

说明: 两篇文章根据应用场景代码示例区分,其他内容相同。 图像生成技术(一):包含游戏角色项目实例代码、图像编辑和修复任务的示例代码和图像分类的Python代码示例 图像生成技术(二)&#xff1a…

SaaS产品运营:维护四个不同类型的合作伙伴的实战指南

在SaaS(软件即服务)行业的竞争中,与合作伙伴建立并维护良好关系至关重要。不同类型的合作伙伴对于产品的推广、市场覆盖和用户增长都起着不同的作用。如何有效维护这四种类型合作伙伴?看个案例一起学习吧。 一、合作伙伴的四种类型…

golang time.Time 时间格式 format 布局字符 layout 整理

go语言中的时间格式字符串和我们常见的其他语言不太一样, 他的格式化字符串是一个时间,即2006-01-02 15:04:05 , 细心的你可能会发现,这个是一个很特别的时间, 他的每一段都是唯一的,这个特别的时间的格式和…

基于ChatMemory打造AI取名大师

当我们真正开发一款应用时,存储用户与大模型的历史对话是非常重要的,因为大模型需要利用到这些历史对话来理解用户最近一句话到底是什么意思。 比如你跟大模型说“换一个”,如果大模型不基于历史对话来分析,那么大模型根本就不知…

恭喜!Z医生喜提世界名校—斯坦福大学访问学者邀请函

➡️【院校简介】 斯坦福大学(Stanford University),全称为小利兰斯坦福大学,简称“斯坦福”,位于美国加州旧金山湾区南部帕罗奥多市境内,临近高科技园区硅谷,是私立研究型大学,全球…

HarmonyOS Next开发学习手册——内存管理(GC)

GC(全称 Garbage Collection),即垃圾回收。在计算机领域,GC就是找到内存中的垃圾,释放和回收内存空间。当前主流编程语言实现的GC算法主要分为两大类:引用计数和对象追踪(即Tracing GC&#xff…

threejs的学习(二)

上次我们说了如何搭建环境,并成功显示了一个静止的方块, 1.通过轨道控制器查看方块,同时添加坐标轴辅助器 main.js import * as THREE from "../assets/js/three.module"; import { OrbitControls } from "../../../three.j…

零拷贝技术(zero copy),DMA,mmap,sendfile

在一些高性能的IO场景下我们经常能听到零拷贝技术,这是个不错的话题。 零拷贝指的是内核态与用户态之间的数据拷贝,而这两个区域的数据拷贝只能依靠CPU,但是CPU最重要的作用应该是运算。 一、DMA的由来 在没有DMA之前,磁盘的IO…

全国211大学名单及排名

序号 名称 省份 985 211 双一流 1 北京大学 北京 是 是 是 2 清华大学 北京 是 是 是 3 复旦大学 上海 是 是 是 4 上海交通大学 上海 是 是 是 5 浙江大学 浙江 是 是 是 6 国防科技大学 湖南 是 是 是 7 中国人民大学 北京 是 …

Vue.js中的虚拟DOM

一.节点和状态 在我们平常对DOM操作的时候,之前在vue没有诞生之前,以命令式的方式对DOM进行操作,页面上的每一个元素都可以看做成一个节点状态。 二.剔除和渲染 框架都有自己渲染的方式,假设一个页面的状态,随着Ajax请求的放松,状态发生改变,有以下的两种方式供你选择&#…

C语言 do while循环练习 上

do while循环 do循环语句; while(表达式); 例: do while里的break do while里的continue 练习 1.计算n的阶乘 1*2*3*424 2.计算1!2!3!.......10! 3.在一个有序数组中查找具体的某个数字h&#x…

吴恩达AI系列:教你如何用Langchain封装一本书

教你快速上手AI应用——吴恩达AI系列教程 人工智能风靡全球,它的应用已经渗透到我们生活的方方面面,从自动驾驶到智能家居,再到医疗辅助和量化交易等等。他们逐渐改变了我们的生活方式,然而,对于许多人来说,AI仍然是一个神秘且无法理解的领域。 为了帮助更多的人理解并掌握AI…

一篇文章带你彻底搞懂十大经典排序之——快速排序

一、递归实现快速排序 1.基本思想 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比两一部分的关键字小,则课分别对这两部分记录继续进行排序,已达到整个序列有序。 2.算法描述 快速排序使用分治法来吧一个“串”…

QT中利用qss来创建一个圆角矩形窗口,并利用Qt::WA_TranslucentBackground属性解决留白问题

1、效果 2、实现 QWidget#centralwidget {border-radius: 30px solid default;border-image: url(:/images/bk<

探索认知智能的未来:知识图谱的崛起

知识图谱点燃语言模型的潜能 ©作者| 潇潇 来源|神州问学 一、 人工智能的三个层次 在人工智能的发展历程中&#xff0c;我们见证了从简单计算到复杂认知的飞跃。人工智能的发展可以概括为三个主要层次&#xff1a;计算智能、感知智能和认知智能。这三个层次不仅代表了技…

支持向量回归原理详解及Python代码示例

支持向量回归原理详解 支持向量回归&#xff08;Support Vector Regression, SVR&#xff09;是支持向量机&#xff08;SVM&#xff09;的一种扩展&#xff0c;用于回归问题。SVR通过寻找一个最佳的回归超平面&#xff0c;使得尽可能多的数据点落在超平面附近的ε-管内&#xf…