链路追踪详解(三):分布式链路追踪标准的演进

这篇具有很好参考价值的文章主要介绍了链路追踪详解(三):分布式链路追踪标准的演进。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Google Dapper

Twitter Zipkin

Uber Jaeger

OpenTracing 和 OpenCensus

OpenTelemetry

小结


分布式链路追踪是现代云计算和微服务架构中一个关键技术,可以让开发者和运维团队理解和监控服务请求在复杂系统中的完整流转路径。分布式链路追踪技术的发展经历了从早期的专有解决方案到现代的开源和标准化的过程,本文讲解一下分布式链路追踪标准的演进过程。

Google Dapper

Google 于 2010 年发布的题为《Dapper,a Large-Scale Distributed Systems Tracing Infrastructure》的论文,是分布式链路追踪的一个重要里程碑。这篇论文详细描述了 Google 内部使用的分布式追踪系统的设计和实现方法。Dapper 的目标是提供低开销、应用级的链路追踪系统,能够收集请求在分布式系统的流转数据。该系统的设计和实现方式为后来的分布式追踪技术奠定了基础。

Dapper 的核心概念包括:

  • Span:表示一个操作或函数调用的时间跨度。
  • Trace:由多个 span 组成,代表一个请求的完整生命周期。
  • Sampling:为了降低数据收集的开销,Dapper 采用了抽样技术,只追踪一部分请求。

Twitter Zipkin

受到 Dapper 的启发,Twitter 开发了自己的分布式追踪系统 Zipkin。Zipkin 是第一个被广泛采用的开源的分布式链路追踪系统,提供了数据收集、存储和查询的功能,以及友好的 ui 界面来展示追踪信息。

Zipkin 的架构包括:

  • Collector:负责接收各服务发送的追踪数据。
  • Storage:追踪数据的存储系统,可以是 SQL 数据库、Cassandra 或 Elasticsearch。
  • API:提供数据查询的接口。
  • Web UI:用于展示追踪信息的系统。

Zipkin 的开源特性使其在社区中迅速流行,许多公司开始使用并贡献代码。

Uber Jaeger

Uber 在内部面临与 Twitter 类似的问题,于是开发了自己的链路追踪系统 Jaeger。Jaeger 在设计上受到了 Dapper 和 Zipkin 的启发,并引入了一些新的特性和概念,比如:

  • 自适应采样:可以动态调整采样率,以在性能和数据质量之间取得平衡。
  • 高级查询功能:提供了更加强大和灵活的查询能力。
  • 端到端追踪:跟踪请求从开始到结束的完整路径。

Jaeger 后来也被开源,并且成为云原生计算基金会(CNCF)的托管项目。Jaeger 的加入进一步加强了分布式链路追踪技术在云原生生态系统中的地位,并得到了更广泛的社区支持。成为了该领域的重要项目。

OpenTracing 和 OpenCensus

随着分布式链路追踪技术的日益流行,有一个问题也日益突出:不同的链路追踪系统和工具之间缺乏兼容性,如果使用了一个链路追踪系统,就很难切换到另一个了。为了解决这个问题,产生了两个重要的项目:OpenTracing 和 OpenCensus。

OpenTracing 旨在提供一套统一的、厂商无关的链路追踪 API 和规范,定义了一套标准的接口,允许开发者在不同的链路追踪系统之间切换而无需修改代码。OpenTracing 的目标是成为链路追踪数据的中间层,让链路追踪工具的选择成为运行时决策而不是设计时决策。OpenTracing 包括了 API 规范、实现该规范的框架和库以及项目文档。

OpenCensus 是由 Google 发起的项目,与 OpenTracing 类似的是都支持 Trace。但相比 OpenTracing 增加了更多的功能,包括新增了对 Metrics 的支持,不仅制定了规范还实现了 Agent 和 Collector。

虽然 OpenTracing 和 OpenCensus 有着相似的目标,但它们在实现方式和社区支持上存在差异,这也导致了一定程度的分裂。

OpenTelemetry

为了解决 OpenTracing 和 OpenCensus 之间的分歧并统一标准,两个项目合并成为了 OpenTelemetry 项目。OpenTelemetry 旨在建立一个全面的可观测性工具集,包括了 Metrics、Tracing、Logs 和日志收集功能。OpenTelemetry 与厂商、平台无关,不提供后端服务。用户可根据自己的需求将数据导出到不同后端,例如 Prometheus、Zipkin、Jaeger 和各云厂商的可观测服务。

OpenTelemetry的关键特性包括:

  • 统一的 API 和 SDK:定义了 Metrics、Tracing、Logs 几种类型的标准,并提供了相关的适配了各种语言的 SDK
  • 多语言支持:支持多种编程语言和框架。
  • 可插拔架构:可以轻松地将数据导出到不同的后端分析工具。

链路追踪详解(三):分布式链路追踪标准的演进,后端系列知识讲解,微服务系列知识详解,分布式,链路追踪,后端

OpenTelemetry 的目标是成为分布式链路追踪和监控的事实标准,通过提供一个全面的解决方案,试图适应不断发展的分布式系统的需求。

小结

从 Dapper 到 OpenTelemetry,分布式链路追踪技术经经历了从专有到开源,再到标准化的过程。这一过程反映了行业对于系统可观测性的不断追求,OpenTelemetry 作为分布式链路追踪的事实标准,代表了这个领域未来的技术方向。文章来源地址https://www.toymoban.com/news/detail-753116.html

到了这里,关于链路追踪详解(三):分布式链路追踪标准的演进的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 进阶分布式链路追踪

                            https://item.jd.com/14337086.html​编辑https://item.jd.com/14337086.html “ RocketMQ 消息中间件实战派上下册”是我既“ Spring Cloud Alibaba 微服务架构实战派上下册”之后,又一本历时超过 1 年半的巨无霸技术实战类型的书籍。 为了提高读者阅读本书的体验性,本书

    2024年02月02日
    浏览(45)
  • 分布式链路追踪概述

    随着系统设计变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、分布式数据库、分布式缓存等,使得后台服务构成了一种复杂的分布式网络。往往前端的一个请求需要经过多个微服务、跨越多个数据中心才能最终获取到结果,如下图 并且随着业务的不断扩张,服

    2024年02月13日
    浏览(40)
  • 分布式链路追踪

    随着互联网业务快速扩展,软件架构也日益变得复杂,为了适应海量用户高并发请求,系统中越来越多的组件开始走向分布式化,如单体架构拆分为微服务、服务内缓存变为分布式缓存、服务组件通信变为分布式消息,这些组件共同构成了繁杂的分布式网络。 在大型系统的微

    2024年02月16日
    浏览(42)
  • 什么是分布式链路追踪

    随着互联网业务快速扩展,软件架构也日益变得复杂,为了适应海量用户高并发请求,系统中越来越多的组件开始走向分布式化,如单体架构拆分为微服务、服务内缓存变为分布式缓存、服务组件通信变为分布式消息,这些组件共同构成了繁杂的分布式网络。 在大型系统的微

    2024年02月16日
    浏览(49)
  • 微服务之分布式链路追踪

    在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。 在分布式与微服务场景下,

    2024年04月22日
    浏览(40)
  • SkyWalking分布式链路追踪学习

    实际生产中,面对几十个、甚至成百上千个的微服务实例,如果一旦某个实例发生宕机,如果不能快速定位、提交预警,对实际生产造成的损失无疑是巨大的。所以,要对微服务进行监控、预警,对微服务的调用链路进行监控,迅速定位问题 SkyWalking下载 SkyWalking官网 elastic

    2024年02月07日
    浏览(41)
  • 分布式链路追踪如何跨线程

    我们希望实现全链路信息,但是代码中一般都会异步的线程处理。 我们可以对以前的 Runable 和 Callable 进行增强。 可以使用 ali 已经存在的实现方式。 TransmittableThreadLocal (TTL) 解决异步执行时上下文传递的问题 核心的实现思路如下: 1)异步执行前,把当前线程的 MDC 信息放入

    2024年02月07日
    浏览(43)
  • 分布式链路追踪之SkyWalking

      在微服务架构中,一次请求往往涉及到多个模块,多个中间件,多台机器的相互协作才能完成。这一系列调用请求中,有些是串行的,有些是并行的,那么如何确定这个请求背后调用了哪些应用,哪些模块,哪些节点及调用的先后顺序?如何定位每个模块的性能问题?本

    2023年04月20日
    浏览(52)
  • 【JAVA】分布式链路追踪技术概论

    目录 1.概述 2.基于日志的实现 2.1.实现思想 2.2.sleuth 2.2.可视化 3.基于agent的实现 4.联系作者 当采用分布式架构后,一次请求会在多个服务之间流转,组成单次调用链的服务往往都分散在不同的服务器上。这就会带来一个问题: 故障难以溯源。 发起请求,然后请求报错,到底

    2024年02月04日
    浏览(48)
  • 【分布式链路追踪技术】sleuth+zipkin

    目录 1.概述 2.搭建演示工程 3.sleuth 4.zipkin 5.插拔式存储 5.1.存储到MySQL中 5.2.用MQ来流量削峰 6.联系作者 当采用分布式架构后,一次请求会在多个服务之间流转,组成单次调用链的服务往往都分散在不同的服务器上。这就会带来一个问题: 故障难以溯源。 发起请求,然后请求

    2024年02月04日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包