分布式链路追踪—SkyWalking

news2024/9/21 14:41:22

文章目录

  • 1. 总览
  • 2. 为什么要使用分布式链路追踪
  • 3. 了解OpenTracing
    • OpenTracing数据模型
  • 4. 使用分布式链路追踪的好处
  • 5. SkyWalking相关问题思考
    • 5.1 如何自动采集数据
    • 5.2 如何跨进程传递
    • 5.3 traceId如何保证全局唯一
    • 5.4 请求量大,采集数据对性能的影响

1. 总览

在这里插入图片描述

2. 为什么要使用分布式链路追踪

在微服务架构中会存在以下问题:

  1. 排查问题难度大,周期长
  2. 特定场景难复现
  3. 系统性能瓶颈分析较难(如请求耗时、异常、响应慢的原因)

3. 了解OpenTracing

OpenTracing 提供了一套标准:提供与平台和厂商无关的API

OpenTracing数据模型

  1. Trace:一个完整的请求链路
  2. Span:内部的每一次调用过程,需要有开始时间和结束时间
  3. SpanContext:Trace的全局上下文信息,包含traceId

4. 使用分布式链路追踪的好处

  1. 自动采集数据
  2. 数据分析,可形成一条完整的调用链
  3. 数据可视化:每个组件的性能可视化(可展示耗时、状态、IP的等等),能够帮助我们很好地定位系统的瓶颈,即使找到问题所在

5. SkyWalking相关问题思考

5.1 如何自动采集数据

SkyWalking采用插件化+javaagent的形式实现了span数据的自动采集,做到对代码无侵入性

5.2 如何跨进程传递

数据包含header和body,body存放着业务数据,可以把链路数据context通过数据的header进行传递

5.3 traceId如何保证全局唯一

采用本地生成ID的方式:雪花算法。由于雪花算法存在时间回调的问题,会导致ID重复。故SkyWalking针对此问题的解决方案如下:

每生成一个id,都会将生成id的时间戳记录下来(lastTimestamp),如果发现当前时间比记录下来的lastTimestamp还小,就说明发生了时间回调,此时就会生成一个随机数作为traceId。

5.4 请求量大,采集数据对性能的影响

SkyWalking默认设置3秒采样3次,其余请求不采样。但是为了保证服务调用不在同一个时间节点上,导致部分数据丢失,SkyWalking做了如下处理:

如果上游携带有Context,就说明上游采样了,则下游也会强制进行采样,以此来保证来链路的完整性。

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

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

相关文章

ES6 总结

概述 笔记内容为参考《JavaScript 高级程序设计 (第4版)》相关内容进行 ES6 部分知识的总结。主要涉及的知识是变量声明、对象解构、函数和对象的扩展内容、集合引用类型的扩展和面向对象编程等。 ES6 学习系列笔记 ES6 总结Symbol、Map、SetES6 中的类(class&am…

LeetCode刷题集(三)(26 删除有序数组中的重复项)

学习目标: 基本掌握LeetCode中的26删除有序数组中的重复项 学习内容:LeetCode 26删除有序数组中的重复项 题目描述: 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 &#xff0c…

刘二大人《Pytorch深度学习实践》第十一讲卷积神经网络(高级篇)

文章目录 Inception-v1实现Skip Connect实现 Inception-v1实现 Inception-v1中使用了多个11卷积核,其作用: (1)在大小相同的感受野上叠加更多的卷积核,可以让模型学习到更加丰富的特征。传统的卷积层的输入数据只和一种尺寸的卷积核进行运算&…

windows系统本地批量预览svg图标

一、为何需要此操作 目前前端使用图标大致分为两类: iconfont方式:通过引入在线或者下载到本地的iconfont.css类文件实现显示图标第二类是封装图标组件,通过传入指定的svg名称快速生成图标 目前第二种是比较方便的,不需要频…

【记录】Truenas Scale|中危漏洞,需要SMB签名

部分内容参考:等保测试问题——需要SMB签名(SMB Signing not Required) 以及 ChatGPT。 Truenas常用SMB服务,但默认并不开启SMB签名。这样具有中间人攻击的风险。 一、漏洞详情 1.1 漏洞报告 漏洞提示如下: 1.2 漏洞介绍 SMB是一个协议名…

Mybatis-Plus -01 Mybatis-Plus入门

Mybatis-Plus入门 1 Mybatis-Plus1.1 Mybatis-Plus简介1.2 Mybatis-Plus特性1.3 Mybatis-Plus框架结构1.1 Mybatis-Plus简介1.2 Mybatis-Plus特性1.3 Mybatis-Plus框架结构 2 Mybatis-Plus 快速入门2.1 数据库准备2.2 导入mybatis-plus依赖2.3 Spring整合MP2.4 编写实体类2.5 编…

i.MX8MP平台开发分享(gicv3篇)-- set_handle_irq及中断路由过程分析

专栏目录:专栏目录传送门 平台内核i.MX8MP5.15.71 文章目录 set_handle_irqhard中断入口 set_handle_irq(gic_handle_irq);set_handle_irq 这个函数的功能很简单,将gic_handle_irq设置为中断处理函数。在发生中断异常后,内核就会切入到这个…

060201面积-定积分在几何学上的应用-定积分的应用

文章目录 1 平面图形的面积1.1 直角坐标情形1.2 极坐标情形1.2.1 极坐标的定义1.1.2 曲边扇形的面积 结语 1 平面图形的面积 1.1 直角坐标情形 ①平面图形由 y f ( x ) , y 0 , x a , y b yf(x),y0,xa,yb yf(x),y0,xa,yb围成图像的面积,如下图1.1-1所示&#…

防洪决策指挥系统(Axure高保真原型)

使用Axure制作的rp高保真原型防洪决策指挥系统可用于行业参考、实际业务需求开发、学习交流使用,本原型需求可以作为开发使用,业务需求均为作者本人行业经验。本系统包括水系展示系统、城区调度决策系统、实时监测预警和防洪调度四大功能模块的界面。 原…

MICCAI 2023 FLARE国际竞赛:打造腹部泛癌CT分割Foundation Models

竞赛官网 CodaLab - Competitionhttps://codalab.lisn.upsaclay.fr/competitions/12239 背景介绍 腹部器官是相当常见的患癌部位,例如结直肠癌和胰腺癌,分别位列癌症死亡率排名的第二位和第三位。Computed tomography (CT) 成像可以为医生提供重要的诊…

前端错误合集

Uncaught Reference Error: xx is not defined 未捕获的引用错误:未定义xx 原因 1.关键字写错了 解决办法 1.修改成正确的关键字 NAN 计算错误 原因 计算时数据类型不同 解决办法 使用数据类型相同的数据进行计算 Uncaught SyntaxError: Invalid left-h…

计算广告(十四)

营销是一个涉及产品、服务或品牌从概念到消费者的全过程的商业活动。它包括分析市场需求、识别潜在消费者、制定和实施策略以满足他们的需求、创造价值和实现销售。营销的目标是在满足客户需求的同时,实现企业的利润和业务增长。 营销涉及以下几个关键环节&#xf…

vim编辑器的使用介绍

文章目录 vim编辑器的使用介绍vim的缓存、恢复与打开时的警告信息vim的额外功能可视化区块多文件编辑多窗口功能vim的关键词补全功能vim环境设置与记录:~/.vimrc、~/.viminfovim的环境设置参数 vim常用的命令示意图 其他vim使用注意事项中文编码的问题DOS与Linux的换…

【PyTorch】课堂测试一:线性回归的求解

作者🕵️‍♂️:让机器理解语言か 专栏🎇:PyTorch 描述🎨:PyTorch 是一个基于 Torch 的 Python 开源机器学习库。 寄语💓:🐾没有白走的路,每一步都算数&#…

如何在自定义数据集上训练YOLOv8的各个模型

YOLOv8效果图(可以应用到图片和视频): 四个模式命令 yolo taskdetect modepredict modelmodel/yolov8n.pt sourceinput/test.mp4 showTrueyolo tasksegment modepredict modelmodel/yolov8x-seg.pt sourceinput/zidane.jpg showTrueyolo tas…

JavaSE-part2

文章目录 Day07 IO流1.IO流1.1背景介绍1.2File类1.2.1常用方法 1.3IO流原理1.4IO流的分类1.4.1InputStream 字节输入流1.4.1.1FileInputStream1.4.1.2FileOutPutStream1.4.1.3练习 1.4.2Reader and Writer1.4.2.1FileReader1.4.2.2FileWriter 1.4.3节点流和处理流1.4.3.1处理流…

MSNet网络结构与代码搭建深入解读

模型结构 1、首先,将多光谱遥感图像的波段分为可见光和不可见光两组,然后进行分组同步特征提取; 代码 先看总体结构,主代码 __init__定义了声明MSNet模型有哪些类,MSNet的forward方法规定数据如何在层之间流动。 1、首先是获得图片的输入尺寸input_size = (rgbnnd.size(…

Python数据结构与算法-动态规划(钢条切割问题)

一、动态规划(DP)介绍 1、从斐波那契数列看动态规划 (1)问题 斐波那契数列递推式: 练习:使用递归和非递归的方法来求解斐波那契数列的第n项 (2)递归方法的代码实现 import time # 递…

Spark----RDD(弹性分布式数据集)

RDD 文章目录 RDDRDD是什么?为什么需要RDD?RDD的五大属性WordCount中的RDD的五大属性如何创建RDD?RDD的操作两种基本算子/操作/方法/API分区操作重分区操作聚合操作四个有key函数的区别 关联操作排序操作 RDD的缓存/持久化cache和persistchec…

Java学习-MySQL-DQL数据查询-联表查询JOIN

Java学习-MySQL-DQL数据查询-联表查询JOIN 1.分析需求,查找那些字段 2.分析查询的字段来自哪些表 3.确定使用哪种连接查询 4.确定交叉点 5.确定判断条件 操作描述inner join返回左右表的交集left join返回左表,即使右表没有right join返回右表&#xf…