链路追踪详解(二):链路追踪技术的演进

目录

早期的链路追踪

分布式系统的挑战

链路追踪技术的诞生

链路追踪系统的开源和标准化

微服务架构对链路追踪技术的促进

云原生时代下的链路追踪技术

链路追踪技术未来的趋势

小结


链路追踪的发展历程可以追溯到几十年前,随着互联网技术的不断发展,链路追踪技术也在不断演进。

早期的链路追踪

在最早的计算机系统中,软件通常运行在单一的大型机或个人电脑上,系统的复杂性相对较低。那时,开发人员通常通过日志文件来追踪程序的执行流程。这种方法在小型和中等规模的系统中效果良好,但随着系统规模的扩大和分布式计算的兴起,就产生了严重的局限性。

分布式系统的挑战

20世纪90年代,随着互联网的兴起,分布式系统开始普及。在分布式系统中,一个请求可能需要经过多个服务的处理,这些服务分布在不同的服务器上,甚至分布在不同的数据中心。在某一个服务中记录的日志文件就记录不了请求的整个链路信息了,因为每个服务产生的日志只记录了服务自身的情况。

链路追踪技术的诞生

为了应对分布式系统的挑战,链路追踪技术应运而生。Google 在2010年发表了一篇关于其内部链路追踪系统 Dapper 的论文,这篇论文极大地推动了链路追踪技术的发展。Dapper 的设计理念和架构成为了链路追踪系统的标准和相关工具的基础。最初的链路追踪系统主要是由大型互联网公司内部开发的。如 Google 的 Dapper、Twitter 的 Zipkin 和 Uber 的 Jaeger 等,这些系统可以跨服务追踪请求,并将追踪数据集中存储、分析和可视化。

链路追踪系统的开源和标准化

随着 Dapper 论文的公开,社区开始基于这些理念开发开源的链路追踪系统。Zipkin 和 Jaeger 等工具受到社区的广泛欢迎,并逐渐成为业界的标准实践。

OpenTracing 和 OpenCensus 项目的出现,进一步推动了链路追踪技术的标准化。这些项目提供了一套标准的 API 和协议,使得不同的追踪工具和系统可以互相兼容。

OpenTracing 和 OpenCensus 于2019年5月合并为 OpenTelemetry(简称 Otel),使得链路追踪技术的标准进一步统一,目前主流的链路追踪系统都适配了这个标准,例如上文提到的 Zipkin 和 Jaeger。

微服务架构对链路追踪技术的促进

随着微服务架构的逐渐普及,使得链路追踪技术变得更加重要。在微服务架构中,一个业务流程可能涉及数十个甚至上百个微服务。在这种情况下,链路追踪成为了理解系统行为、诊断问题和优化性能的关键工具。

云原生时代下的链路追踪技术

在云原生时代,链路追踪技术成为了理解、监控和优化微服务架构的关键技术。随着云原生计算的兴起,服务网格(如 Istio 和 Linkerd)开始流行。服务网格提供了一种新的方式来处理服务间的通信,内置了链路追踪功能,使得在云环境中实现链路追踪变得更加容易。服务网格可以自动收集追踪数据,无需在每个服务中单独实现。

链路追踪技术未来的趋势

随着人工智能和机器学习技术的发展,未来的链路追踪系统可以减轻开发人员的负担,使他们不需要手动插入追踪代码,并且会提供更加深入的分析和洞见。智能化的链路追踪将能够自动识别系统中的问题,甚至在问题发生前预测和防范,帮助开发人员优化系统性能和资源分配。

小结

链路追踪技术的发展过程是不断适应新兴技术挑战、满足日益增长的系统复杂性需求的过程。从简单的日志文件到复杂的分布式追踪系统,链路追踪技术已经成为现代软件开发不可或缺的一部分,将继续随着技术的进步而进化。

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

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

相关文章

【Rust】结构体与枚举

结构体struct 基础用法 一个存储用户账号信息的结构体: struct User {active: bool,username: String,email: String,sign_in_count: u64, }声明一个User的实例变量: struct User {active: bool,username: String,email: String,sign_in_count: u64,…

若依vue-修改标题和图标

因为我们拉下来的代码,图标和logo是若依的,这和我们需要做出来的效果有差别 这个时候就需要去对应的文件内去修改标题和图标 (主要就是这两个地方的图标和标题) 修改菜单里面的logo以及文字 修改文字 位置: src/layout/component/Sidebar/Logo.vue 此处的title文字是定义在…

ESXi vSAN 整合多主机磁盘

VSAN 与 RAID区别: vSAN 可以管理 ESXi 主机,且只能与 ESXi 主机配合使用。一个 vSAN 实例仅支持一个群集。vSAN 不需要外部网络存储来远程存储虚拟机文件,例如光纤通道 (FC) 或存储区域网络 (SAN) 使用传统存储,存储管理员可以…

如何给echarts的legend设置不同的样式和位置 legend分组显示

legend分组显示 给每一个图例设置不一样的位置和样式 样式如下 demo代码 option {title: {text: Stacked Line},tooltip: {trigger: axis},// legend写为数组可以给一些给某些组分配一些不一样的样式legend: [{data: [// 使用svg画任意的图形{name:Email,icon: path://"…

科学与工程计算基础(数值计算)知识点总结

数值计算 第1章 概论1.2 数值计算中的误差1.2.1 误差的来源和分类1.2.2 误差与有效数字1.2.3 数值运算的误差估计 1.3 误差定性分析和避免误差危害1.3.1 算法的数值稳定性1.3.3 避免误差危害 1.4 数值计算中算法设计的技术1.5 习题1.5.1 判断题1.5.2 计算题 第2章 插值法2.2 拉…

Helm3部署kubeview资源可视化工具

一、KubeView 介绍 KubeView 是一个 Kubernetes 集群可视化工具和可视化资源管理器。它提供了跨命名空间的 Kubernetes 对象的完整概述,以及它们如何通过直观的 UI 和资源对象相互连接。它允许用户在集群内部运行命令,并查看集群内部的资源使用情况、容器…

详解原生Spring中的控制反转和依赖注入-构造注入和Set注入

😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…

力扣labuladong一刷day18天差分数组

力扣labuladong一刷day18天差分数组 文章目录 力扣labuladong一刷day18天差分数组一、370. 区间加法二、1109. 航班预订统计三、1094. 拼车 一、370. 区间加法 题目链接:https://leetcode.cn/problems/range-addition/ 思路:这种频繁改变数组的值&#…

pandas教程:US Baby Names 1880–2010 1880年至2010年美国婴儿姓名

文章目录 14.3 US Baby Names 1880–2010(1880年至2010年美国婴儿姓名)1 Analyzing Naming Trends(分析命名趋势)评价命名多样性的增长“最后一个字母”的变革变成女孩名字的男孩名字(以及相反的情况) 14.3…

【CAN通信】CanTrcv和EcuM的关系及不同类型的Can收发器主要使用场景

目录 前言 正文 1.CanTrcv_SetOpMode被哪个模块调用,在什么场景下调用? 1.1 CanSM模块切换CanTrcv模块状态

Drool 7 SpreadSheet Decision Template 笔记

1 Excel Decision table 1.1 很棒的示意图,来自https://blog.csdn.net/justlpf/article/details/128109731 1.2 参考URL 1.2.1 https://blog.csdn.net/justlpf/article/details/128109731 1.3 多sheet 模式 默认是用第一个sheet如果要支持多sheet,需…

查看各ip下的连接数

netstat -n | awk /^tcp/ {print $5} | awk -F: {print $1} | sort | uniq -c| sort -rn netstat -n:显示所有的网络连接,不包括任何服务名的解释。awk /^tcp/ {print $5}:使用awk命令过滤出tcp协议的连接,并打印出每个连接的第五…

docker限制容器内存的方法

在服务器中使用 docker 时,如果不对 docker 的可调用内存进行限制,当 docker 内的程序出现不可预测的问题时,就很有可能因为内存爆炸导致服务器主机的瘫痪。而对 docker 进行限制后,可以将瘫痪范围控制在 docker 内。 因此&#…

如何运行C/C++程序

一、在线运行C/C 码曰 - 让代码在云端多飞一会:这是一个支持C/C,Java,Python等多种语言的在线编程,编译运行,粘贴分享的平台。你可以在这里输入你的代码,点击运行按钮,就可以看到输出结果。你也…

BGP笔记全

自治系统---AS 定义:由一个单一的机构或者组织所管理的一系列IP网络及其设备所构成的集合。 AS划分的原因 如果整张网络很大,路由数量进一步增加,路由表规模变得太大,会导致路由收敛速度变慢,设备性能消耗加大&#…

智能优化算法应用:基于猫群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于猫群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于猫群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.猫群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

Kubernetes基础(九)-标签管理

1 概述 Label(标签)是Kubernetes系统中一个比较重要的概念,给某个资源对象(Node、Pod、Service等)定义一个Label,就相当于给它打了一个标签,然后可以通过Label Selector(标签选择器…

Layui框架弹出框form表单中单选按钮状态不刷新

1、问题描述 如下图:当我们点击编辑按钮的时候,实现如果性别(stu_sex)的值为0男生被选中,如果性别的值为1,女生被选中。但是在使用Layui框架的过程中,发现性别的单选按钮无法实现刷新,使用不正常。 1.1、…

记录:Unity脚本的编写7.0

目录 连接数据库编写脚本查看效果查增删 有段时间没有更新了,现在有点空,就继续写一下unity的脚本,这次就来写一下关于unity连接数据库的内容 连接数据库 无论是什么语言与应用场景,总有一项东西是绕不开的,那就是数据…

使用 ZFPlayer 播放视频的注意点

一 静音功能 通过调用系统的AVPlayer.muted来实现的 - (void)setMuted:(BOOL)muted {_muted muted;self.player.muted muted;if (self.audioMuteChange) {self.audioMuteChange(self, muted);}... }播放进度条 /// 滑杆 property (nonatomic, strong, readonly) ZFSliderV…