【下一代分布式追踪】将Trace扩展到网络设备

下一代分布式追踪—将Trace扩展到网络设备

  • 一、技术背景
  • 二、研究动机
  • 三、方法
    • 数据采集:
    • 数据整合:
    • 路径重建:
    • 可视化与分析:
  • Foxhound,Foxhound
  • 四、典型案例
  • 五、结论

一、技术背景

随着云计算和微服务的普及,现代应用架构日趋复杂。为了有效监控、诊断和优化这些分布式系统,分布式追踪技术应运而生。传统的分布式追踪,如Zipkin、Jaeger和OpenTelemetry,已经能够很好地追踪应用程序中的请求路径,但它们主要关注应用层,而很少涉及网络层。

网络设备,如交换机、路由器和负载均衡器,在请求传输中起到至关重要的作用。然而,当问题发生时,传统的应用层追踪很难准确地指出问题是由网络设备还是应用程序引起的。

随着摩尔定律的终结,硬件性能的增长逐步放慢,将系统功能下放到网络,进行在网计算已经成为优化系统性能重要方式。但是当前的 Trace 和 INT 采集的数据,都不足以帮助工程师精确地诊断在网计算函数。本文将网络 INT 数据与x86 Trace 数据合并,将 Trace 扩展到网络层,实现对 INC 的跨层监控,帮助工程师诊断 INC 故障。

二、研究动机

为了更好地理解分布式系统中的性能瓶颈、延迟和错误来源,我们不仅需要知道应用程序中的请求路径,还需要了解网络设备如何处理这些请求。将Trace扩展到网络设备,可以提供从客户端到服务端整个请求路径的端到端可见性,从而帮助我们更准确地定位问题。

但是,当前的监控系统是为传统的网络或者应用的性能监控设计的,对 INC 的监控存在以下几种缺陷:

Trace 缺乏跨层的监控能力,无法关联服务器和交换机之间的监控数据。例如,对一个请求,当前的 Trace 的 Span 信息无法精确判断请求是由服务器执行的,还是由交换机执行,导致不能很好地处理 INC 的故障

在网遥测系统(INT)专注于以网络为中心的指标,忽略 RPC 的数据。网络遥测产生的记录不包括诊断 INC 必要的请求级别的数据(例如 RPC 延迟)

三、方法

数据采集:

首先,需要在网络设备上进行数据采集。这可以通过网络镜像、sFlow、NetFlow等技术实现。这些技术可以提供设备端口级别的流量数据,包括数据包大小、时间戳、源/目的IP和端口等信息。

数据整合:

将采集到的网络设备数据与现有的应用层追踪数据进行整合。这需要将两种数据源进行时间戳对齐,并根据源/目的IP和端口等信息将它们关联起来。

路径重建:

利用整合后的数据,可以重建整个请求路径,包括在网络设备中的传输路径。这可以帮助我们更全面地了解请求在分布式系统中的完整路径。

可视化与分析:

最后,通过可视化工具展示整个请求路径,并提供各种分析功能,如延迟分析、错误率分析等,从而帮助用户更快地定位和解决问题。

Foxhound,Foxhound

提出了一个为 INC 设计的的可观测性框架 Foxhound,Foxhound 的架构图如下图所示。Foxhound 的核心设计理念是:开发工程师在 INC 中注释数据,运维工程师在运行时查询可观测性数据。
在这里插入图片描述
假设当前想要诊断一个 INC 函数 NetCache 的故障,Foxhound 的工作流程如下:

  1. PDP 开发人员在 INC 中插入 Annotation,以指示感兴趣的变量

  2. 运维工程师将把所需的查询写入 Foxhound

  3. Foxhound 生成插桩代码并加载到交换机中

  4. Foxhound Shim 层使用唯一的 RPC 标识符(RPCID)标记出站查询请求数据包

4&5. 标记的数据包通过交换机

  1. 交换机将带 Annotation 的变量与标记数据包的RPCID一起存储在交换机ASIC上

  2. 交换机通过 PCI-link 将数据以 PDP Span 的形式导出到Foxhound框架。

  3. x86 服务器 Trace 也被导出到Foxhound框架

  4. 合并 x86 Trace 和 PDP Span

进而 Foxhound 实现了服务器的 Trace 和交换机的监控数据融合的过程,将 Trace 扩展到网络设备。

四、典型案例

假设一个分布式系统由多个微服务组成,这些微服务部署在不同的物理机上,并通过交换机和路由器进行通信。当某个用户反映系统响应慢时,我们可以利用扩展后的分布式追踪进行问题分析。

首先,我们可以通过应用层追踪找到请求的完整路径,包括它经过了哪些微服务和具体的处理时间。然后,结合网络设备数据,我们可以看到请求在网络设备中的传输路径和延迟。如果发现某个交换机或路由器的延迟异常高,那么就可以初步判断问题可能出在网络设备上。

接下来,我们可以进一步分析该网络设备的流量数据,查看是否有异常流量或配置错误。如果有,那么就可以采取相应的措施进行问题修复。

五、结论

将Trace扩展到网络设备,可以提供更全面的分布式系统可见性,帮助我们更准确地定位和解决性能问题。随着技术的不断发展,相信未来会有更多的工具和方法支持这种扩展,使分布式系统的监控和诊断变得更加容易和高效。

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

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

相关文章

【刷题题解】编辑距离

给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 这道题也是,一眼动态规划,乍一看感觉很复杂,仔细思考…

挑战杯 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于python 机器视觉 的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:3分 🧿 更多资…

基于ESP8266 开发板(MCU)遥控小车

遥控小车 ​ 遥控界面 ​ 【项目源码】 第一版ESP8266 https://github.com/liyinchigithub/esp8266_car_webServerhttps://github.com/liyinchigithub/esp8266_car_webServer 第二版ESP32 GitHub - liyinchigithub/esp32-wroom-car: 嵌入式单片机 ESP32 Arduino 遥控小车&a…

前端学习第4天

一、复合选择器 1.后代选择器 2.子代选择器 3.并集选择器 4.交集选择器 5.伪类选择器 1.伪类-超链接(拓展) 二、CSS特性 1.继承性 body放在style中 2.层叠性 3.优先级 属性 !important;(最高优先级) 1.优先级-叠加计算规则 2.em…

Linux 驱动开发基础知识——设备树的语法驱动开发基础知识(九)

个人名片: 🦁作者简介:学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:Vir2021GKBS 🐼本文由…

YoloV8改进策略:HAM混合注意力机制改进YoloV8|多种改进,多种姿势涨点|代码注释详解

摘要 HAM通过快速一维卷积来缓解通道注意机制的负担,并引入通道分离技术自适应强调重要特征。HAM作为通用模块,在CIFAR-10、CIFAR-100和STL-10数据集上实现了SOTA级别的分类性能。 论文链接:https://www.sciencedirect.com/science/article/abs/pii/S0031320322002667?vi…

python接口自动化之接口测试用例(详解)

简介 接口测试是软件测试中非常重要的一种测试类型,它主要针对系统的接口进行测试,检查接口之间的交互是否符合预期。在进行接口测试时需要注意以下几个方面: 接口测试用例设计 接口测试用例设计需要考虑到接口的输入、输出、边界条件、异常…

基于Springboot的兼职网(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的兼职网(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&#xff0…

《动手学深度学习(PyTorch版)》笔记7.2

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…

DevOps落地笔记-14|部署流水线:打造一站式部署的关键平台

上一课时我主要介绍了实现自动化测试的范围、流程和结构图,自动化测试是持续集成实践不可或缺的一部分,从而使得软件向高效率和高质量迈进了一大步。持续集成主要关注的是代码是否可以编译成功、是否可以通过单元测试和验收测试等。但持续集成并不能实现…

HubSpot营销自动化如何优化营销流程?

HubSpot营销自动化在优化营销流程、减少手动工作以及提高效率方面发挥着关键作用。以下是一些具体的方法和策略: 1. 自动化电子邮件营销: 利用HubSpot的电子邮件自动化功能,设置触发条件,使邮件发送根据用户行为或阶段自动进行。…

Spark 依赖包加载方式

1 Spark 依赖包来源 我们知道Spark application运行加载依赖有三个地方: systemClasspath:Spark安装时候提供的依赖包,${SPARK_HOME}/jars下的包。spark-submit --jars 提交的依赖包spark-submit --config "spark.{driver/executor}.e…

Java SPI 代码示例

Java Service Provider Interface 是JDK自带的服务提供者接口又叫服务发现机制更是一种面向接口的设计思想。即JDK本身提供接口类, 第三方实现其接口,并作为jar包或其他方式注入到其中, 在运行时会被JDK ServiceLoader 发现并加载&#xff0c…

骨传导是表示啥?骨传导耳机有什么优势

最近市场上兴起了一股骨传导耳机的热潮,它引起了广泛的关注并带来了许多用户的好奇:骨传导是表示啥?骨传导耳机有什么优势?接下来我们将深入探讨骨传导是表示啥以及骨传导耳机有什么优势。 骨传导是表示啥 简而言之,骨…

VSCode 安装LLDB调试器(OS X)并启动调试

插件:(LLDB插件安装) 安装这个版本不好弄错了,CodeLLDB(名字) 配置:(LLDB启动调试) {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更…

day32 买卖股票的最佳时机Ⅱ 跳跃游戏 跳跃游戏Ⅱ

题目1:122 买卖股票的最佳时机Ⅱ 题目链接:122 买卖股票的最大时机Ⅱ 题意 整数数组prices[i]表示某股票的第i天的价格,每天可买卖股票且最多持有1股股票,返回最大利润 利润拆分,拆分为每天的利润 每天的正利…

李沐《动手学深度学习》循环神经网络 经典网络模型

系列文章 李沐《动手学深度学习》预备知识 张量操作及数据处理 李沐《动手学深度学习》预备知识 线性代数及微积分 李沐《动手学深度学习》线性神经网络 线性回归 李沐《动手学深度学习》线性神经网络 softmax回归 李沐《动手学深度学习》多层感知机 模型概念和代码实现 李沐《…

从0开始搭建、上传npm包

从0开始搭建、上传npm包 1、上传一个简单获取水果价格的包创建 vite 项目在项目根目录 src 文件夹中创建 index.ts 文件,文件内容如下:在 main.ts 文件中导入、导出上面创建的方法创建 vite.config.ts 配置文件,文件内容如下配置 package.jso…

Matplotlib热力图的创意绘制指南【第54篇—python:Matplotlib热力图】

文章目录 Matplotlib热力图的创意绘制指南1. 简介2. 基本热力图3. 自定义颜色映射4. 添加注释5. 不同形状的热力图6. 分块热力图7. 多子图热力图8. 3D热力图9. 高级颜色映射与颜色栏设置10. 热力图的动态展示11. 热力图的交互性12. 标准化数据范围13. 导出热力图 总结&#xff…

【从0上手Cornerstone3D】如何使用CornerstoneTools中的工具之工具介绍

简单介绍一下在Cornerstone中什么是工具,工具是一个未实例化的类,它至少实现了BaseTool接口。 如果我们想要在我们的代码中使用一个工具,则必须实现以下两个步骤: 使用Cornerstone的顶层addTool函数添加未实例化的工具 将工具添…