当前位置:首页 > 科技  > 软件

分布式链路追踪,一文帮你掌握它!

来源: 责编: 时间:2024-07-09 18:20:45 700观看
导读随着互联网的快速发展,诸如云计算、微服务、开源工具和基于容器交付等技术,使得应用程序在日益复杂的环境中更加分散,因此,追踪请求在分布式系统中链路变得至关重要。那么,什么是分布式追踪?它又是如何工作的呢?本文我们将深

随着互联网的快速发展,诸如云计算、微服务、开源工具和基于容器交付等技术,使得应用程序在日益复杂的环境中更加分散,因此,追踪请求在分布式系统中链路变得至关重要。ySe28资讯网——每日最新资讯28at.com

那么,什么是分布式追踪?它又是如何工作的呢?本文我们将深入进行分析。ySe28资讯网——每日最新资讯28at.com

ySe28资讯网——每日最新资讯28at.com

什么是分布式追踪?

分布式追踪(Distributed Tracing)是一种用于监控和诊断分布式应用程序性能的技术。在分布式系统中,服务通常会被拆分成多个微服务,它们可能运行在不同的服务器或容器中,并通过网络相互通信。分布式追踪通过跟踪和记录请求在整个系统中的传播路径和性能数据,帮助开发人员和运维团队分析服务之间的调用关系、排查性能瓶颈和故障。ySe28资讯网——每日最新资讯28at.com

通常,分布式追踪系统会生成唯一标识每个请求的 TraceId,并记录每个服务处理请求的时间、耗时、调用链路等信息。这些数据可以用于生成可视化的调用图,帮助开发者理解系统内部各个服务之间的依赖关系和性能状况。如下图为一个简要的分布式系统追踪网:ySe28资讯网——每日最新资讯28at.com

ySe28资讯网——每日最新资讯28at.com

ySe28资讯网——每日最新资讯28at.com

为什么需要分布式追踪?

在单体应用程序时代,掌握系统中发生的情况相对简单,然而,分布式系统通常由多个独立的微服务组成,这些服务之间通过网络进行通信,服务的数量和相互依赖关系的增加使得问题的定位和解决变得更加复杂,这些复杂性给内部协作带来了巨大的挑战,同时也大大增加了问题排查的难度和成本。ySe28资讯网——每日最新资讯28at.com

因此,急需一种手段,能够在分布式系统中进行全链路追踪,所以分布式追踪就诞生了。ySe28资讯网——每日最新资讯28at.com

分布式追踪对于监视、调试和优化分布式软件架构(如微服务)至关重要,尤其是在动态微服务架构中,它通过收集和分析与请求触及的每个服务的每次交互的数据来追踪单个请求。ySe28资讯网——每日最新资讯28at.com

分布式追踪还可以帮助团队更快地了解每个微服务的执行情况,这种理解有助于他们快速解决问题,提高客户满意度,确保稳定的收入,并为团队保留创新时间。通过这种方式,企业可以充分利用现代应用程序环境提供的优势,同时最大限度地减少其固有的复杂性也可能带来的挑战。ySe28资讯网——每日最新资讯28at.com

分布式追踪有哪些类型?

分布式追踪系统主要有以下几种类型:ySe28资讯网——每日最新资讯28at.com

(1) 基于采样的追踪ySe28资讯网——每日最新资讯28at.com

采样方式又可以细分三种,其详情如下:ySe28资讯网——每日最新资讯28at.com

  • 全量采样(Full Tracing):对所有请求进行追踪记录。这种方式可以提供最全面的数据,但可能会带来较高的性能开销和存储需求。
  • 随机采样(Random Sampling):随机选择部分请求进行追踪。可以通过设置采样率(如10%)来控制追踪的请求比例,减少开销。
  • 基于策略的采样(Policy-based Sampling):根据特定的规则或策略进行采样,如对特定类型的请求、特定用户或特定时间段的请求进行追踪。

(2) 基于调用链的追踪ySe28资讯网——每日最新资讯28at.com

基于调用链也可以分为两种方式,其详情如下:ySe28资讯网——每日最新资讯28at.com

  • 端到端追踪(End-to-End Tracing):从请求的入口到最终响应的整个过程中,对所有涉及的服务和组件进行追踪。
  • 局部追踪(Local Tracing):只对某个服务或组件的内部调用进行追踪,适用于关注特定服务性能的场景。

(3) 基于日志的追踪ySe28资讯网——每日最新资讯28at.com

  • 日志增强型追踪(Log-enhanced Tracing):在现有的日志系统中添加追踪信息,通过日志来还原请求的调用链路和性能数据。
  • 独立追踪系统(Standalone Tracing System):使用专门的追踪系统和工具来收集和分析追踪数据,如Jaeger、Zipkin等。

(4) 基于事件的追踪ySe28资讯网——每日最新资讯28at.com

  • 同步事件追踪(Synchronous Event Tracing):对同步调用链进行追踪,适用于传统的同步HTTP请求场景。
  • 异步事件追踪(Asynchronous Event Tracing):对异步调用链进行追踪,适用于基于消息队列、异步任务等场景。

分布式追踪的原理

分布式追踪的工作原理涉及多个组件和步骤,我们通过以下 7个主要流程进行分析:ySe28资讯网——每日最新资讯28at.com

(1) 唯一标识ySe28资讯网——每日最新资讯28at.com

在分布式追踪中,一般都会存在两个重要的唯一标识:Trace ID 和 Span ID。ySe28资讯网——每日最新资讯28at.com

  • Trace ID:每个请求被分配一个唯一的 Trace ID,用于标识整个请求的生命周期。
  • Span ID:每个服务在处理请求时,会生成一个 Span ID,用于标识该服务的处理单元,一个 Trace ID下可以包含多个 Span。

(2) 追踪上下文传递ySe28资讯网——每日最新资讯28at.com

当一个请求从一个服务传递到另一个服务时,Trace ID 和 Span ID 会放置在请求头中传递,以确保追踪上下文在整个调用链中保持一致。ySe28资讯网——每日最新资讯28at.com

例如,在 HTTP请求中,追踪信息可以通过特定的 HTTP头(如 X-B3-TraceId, X-B3-SpanId 等)传递。ySe28资讯网——每日最新资讯28at.com

(3) 生成和记录SpanySe28资讯网——每日最新资讯28at.com

每个服务在接收到请求时,会生成一个 Span,记录该请求的开始时间、结束时间、处理时长、调用的下游服务等信息。Span 还可以包含标签(tags)和日志(logs),用于记录额外的上下文信息,如请求参数、错误信息等。ySe28资讯网——每日最新资讯28at.com

(4) 数据收集和传输ySe28资讯网——每日最新资讯28at.com

每个服务会将生成的 Span 数据发送到集中式追踪收集器(Collector),可以通过多种方式传输数据,如 HTTP、gRPC 等。数据收集器接收到 Span 数据后,会对其进行处理、存储和聚合。ySe28资讯网——每日最新资讯28at.com

(5) 数据存储ySe28资讯网——每日最新资讯28at.com

收集到的追踪数据通常会存储在分布式存储系统中,如 Elasticsearch、Cassandra、Jaeger内置存储等,以支持高效的查询和分析。ySe28资讯网——每日最新资讯28at.com

(66) 数据分析和可视化ySe28资讯网——每日最新资讯28at.com

通过追踪系统的用户界面或可视化工具,用户可以查询和分析追踪数据,生成调用图、时间线图等,直观地展示请求的路径和各个服务的性能。常见的可视化工具包括 Jaeger UI、Zipkin UI 等,它们提供了丰富的过滤、搜索和分析功能。ySe28资讯网——每日最新资讯28at.com

(7) 集成和扩展ySe28资讯网——每日最新资讯28at.com

分布式追踪系统通常提供多种 SDK 和集成工具,支持在不同的编程语言和框架中嵌入追踪代码。还可以与其他监控和日志系统集成,形成统一的可观测性平台,如与 Prometheus、Grafana、ELK 等工具集成。ySe28资讯网——每日最新资讯28at.com

通过上述步骤,分布式追踪系统能够全面地跟踪和分析请求在分布式系统中的传播路径和性能,帮助开发者和运维人员深入理解系统的行为和性能,以下为一张简要的追踪原理图:ySe28资讯网——每日最新资讯28at.com

ySe28资讯网——每日最新资讯28at.com

分布式追踪的挑战

尽管分布式追踪为企业提供了许多优势,但在实现和维护过程中面临一些挑战,包括技术复杂性、性能开销、数据管理等方面,以下是一些主要的挑战:ySe28资讯网——每日最新资讯28at.com

(1) 性能开销ySe28资讯网——每日最新资讯28at.com

追踪数据的收集、传输和存储会带来额外的性能开销,特别是在高并发和大规模系统中,这种开销可能会影响系统的整体性能。ySe28资讯网——每日最新资讯28at.com

(2) 数据量大ySe28资讯网——每日最新资讯28at.com

分布式系统中的每个请求可能涉及多个服务,每个服务都会生成追踪数据,导致数据量非常庞大。有效地存储、管理和查询这些数据是一项重大挑战。ySe28资讯网——每日最新资讯28at.com

(3) 全链路追踪的难度ySe28资讯网——每日最新资讯28at.com

确保追踪上下文在整个调用链中传递一致性是一个复杂的问题,尤其是在跨语言、跨平台和跨团队的系统中。任何一个环节出现问题,都会导致追踪数据的不完整或不准确。ySe28资讯网——每日最新资讯28at.com

(4) 采样策略的选择ySe28资讯网——每日最新资讯28at.com

在高流量系统中,不可能对每个请求都进行追踪,需要选择合适的采样策略来平衡追踪数据的代表性和系统的性能开销。制定和调整采样策略需要对系统有深入的了解。ySe28资讯网——每日最新资讯28at.com

(5) 可视化和分析ySe28资讯网——每日最新资讯28at.com

大量的追踪数据需要有效的可视化和分析工具来帮助开发者和运维人员理解系统的行为和性能。设计和实现高效的可视化工具是一个挑战。ySe28资讯网——每日最新资讯28at.com

(6) 数据一致性和可靠性ySe28资讯网——每日最新资讯28at.com

确保追踪数据的准确性和一致性,避免数据丢失或错误,尤其是在系统发生故障或网络不稳定的情况下。ySe28资讯网——每日最新资讯28at.com

(7) 跨团队协作ySe28资讯网——每日最新资讯28at.com

实现和维护分布式追踪需要开发、运维、安全等多个团队的协作。不同团队之间的沟通和协调是一个重要的挑战。ySe28资讯网——每日最新资讯28at.com

(8) 隐私和安全ySe28资讯网——每日最新资讯28at.com

追踪数据可能包含敏感信息,确保数据的隐私和安全是必须的。需要采取适当的措施来保护数据不被未经授权的访问和泄露。ySe28资讯网——每日最新资讯28at.com

(9) 适应多样化技术栈ySe28资讯网——每日最新资讯28at.com

现代分布式系统通常使用多种编程语言、框架和平台。需要支持多样化技术栈的追踪工具和标准,以确保在不同环境中的一致性和兼容性。ySe28资讯网——每日最新资讯28at.com

(10) 成本管理ySe28资讯网——每日最新资讯28at.com

存储和处理大量追踪数据可能带来高昂的成本。需要有效的成本管理策略,如数据压缩、归档和自动删除过期数据等。通过识别和应对这些挑战,可以更好地实现和维护分布式追踪系统,从而充分发挥其在性能监控和故障诊断中的优势。ySe28资讯网——每日最新资讯28at.com

分布式追踪工具

对于分布式追踪工具,市面上主要有三类:自研,开源,商业版。以下是一些常用的分布式追踪工具:ySe28资讯网——每日最新资讯28at.com

(1) ZipkinySe28资讯网——每日最新资讯28at.com

Zipkin是 Twitter基于 Java语言开发的开源分布式追踪系统,支持多种语言和框架,易于集成。Zipkin提供简单的用户界面,用于查看和分析追踪数据,支持多种存储后端,如 MySQL、Elasticsearch等。ySe28资讯网——每日最新资讯28at.com

(2) SkyWalkingySe28资讯网——每日最新资讯28at.com

SkyWalking 是一个开源的应用性能监控和分布式追踪系统,由国内 Apache基金会成员吴晟创立。它支持多种语言,包括Java、C#、Go等,能够监控和追踪分布式系统中的调用链路。ySe28资讯网——每日最新资讯28at.com

(3) PinpointySe28资讯网——每日最新资讯28at.com

Pinpoint是由韩国 Naver开源的分布式追踪系统,专注于 Java和 PHP应用的监控和追踪,它能够详细记录服务的调用链路和性能数据,帮助开发者优化系统性能。ySe28资讯网——每日最新资讯28at.com

Pinpoint 提供直观的界面,方便用户分析和定位问题,支持自定义插件,方便集成到不同的系统中。适用于需要详细调用链路和性能数据的 Java和 PHP应用。ySe28资讯网——每日最新资讯28at.com

(4) CATySe28资讯网——每日最新资讯28at.com

CAT(Central Application Tracking)是由国内知名互联网公司美团点评开源的分布式追踪和监控系统,专注于应用性能监控和故障排查,它能够实时收集和分析系统中的调用链路和性能数据。ySe28资讯网——每日最新资讯28at.com

CAT能够实时收集和分析系统中的调用链路和性能数据,支持Java、C++、Node.js等多种语言,提供强大的可视化界面,帮助用户深入分析系统性能。适用于需要实时监控和故障排查的分布式系统。ySe28资讯网——每日最新资讯28at.com

(5) 其他ySe28资讯网——每日最新资讯28at.com

另外还有一些国外比较流行(可能在国内不常用)的追踪工具,比如:Jaeger,OpenTelemetry,AWS X-Ray,Azure Application Insights,Google Cloud Trace,Elastic APM等。ySe28资讯网——每日最新资讯28at.com

总结

本文分析了什么是分布式追踪?为什么需要分布式追踪以及分布式追踪如何工作的,其实,分布式追踪就是让错综复杂的分布式系统调用变得透明化和可视化。ySe28资讯网——每日最新资讯28at.com

有了分布式追踪,我们才能更好的掌握服务之间的调用关系,及时监控服务器的各项指标,当出现故障时可以快死定位,因此,分布式追踪是分布式系统中不可或缺的一项技术,在国内的中大型互联网公司,都有一个专门的部门在维护着这样的服务,足以可见其重要性。ySe28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-99903-0.html分布式链路追踪,一文帮你掌握它!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 五分钟挑战:Python while 循环的七种高效玩法!

下一篇: C# 验证PDF签名有效性的技术探讨

标签:
  • 热门焦点
  • K60至尊版狂暴引擎2.0加持:超177万跑分斩获性能第一

    K60至尊版狂暴引擎2.0加持:超177万跑分斩获性能第一

    Redmi的后性能时代战略发布会今天下午如期举办,在本次发布会上,Redmi公布了多项关于和联发科的深度合作,以及新机K60 Ultra在软件和硬件方面的特性,例如:“K60 至尊版,双芯旗舰
  • Flowable工作流引擎的科普与实践

    Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • JavaScript学习 -AES加密算法

    JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • 为什么你不应该使用Div作为可点击元素

    为什么你不应该使用Div作为可点击元素

    按钮是为任何网络应用程序提供交互性的最常见方式。但我们经常倾向于使用其他HTML元素,如 div span 等作为 clickable 元素。但通过这样做,我们错过了许多内置浏览器的功能。
  • 每天一道面试题-CPU伪共享

    每天一道面试题-CPU伪共享

    前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习C
  • 自律,给不了Keep自由!

    自律,给不了Keep自由!

    来源 | 互联网品牌官作者 | 李大为编排 | 又耳 审核 | 谷晓辉自律能不能给用户自由暂时不好说,但大概率不能给Keep自由。近日,全球最大的在线健身平台Keep正式登陆港交所,努力
  • 英特尔Xe-HP项目终止,将专注Xe-HPC/HPG系列显卡

    英特尔Xe-HP项目终止,将专注Xe-HPC/HPG系列显卡

    据10 月 31 日消息报道,英特尔高级副总裁兼加速计算系统和图形事业部总经理 表示,Xe-HP“ Arctic Sound” 系列服务器 GPU 已经应用于 oneAPI devcloud 云服
  • 电博会与软博会实现

    电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
Top
Baidu
map