当周末躺在被窝里,点外卖时;双 11 的零点,疯狂提交订单时;假期和基友豪情开黑,五杀超神…在这个精彩纷呈的互联网世界里,这些应用背后又隐藏着什么?每一次点击活动在 IT 世界里会流经哪些节点,调用哪些服务,带来哪些变革?这一切庞杂且细密,超出了人力探索的边界,而分布式链路追踪就是追溯请求在 IT 系统间流转路径与状态的一门技能。接下来,让我们通过对分布式链路追踪的来了解这个 IT 世界!
说到分布式链路追踪,就绕不开分布式系统与微服务的兴起。早期 IT 系统非常简朴,险些全部程序都运行在同一个节点,相互之间也没有什么依赖。但随着硬件技能突飞猛进,硬件成本大幅下降,软件复杂度却越来越高。单一系统性能无法满意复杂的数据计算任务,而软件逻辑的复杂性也导致维护成本大幅上升。另外,单节点的可靠性也难以保障,不可避免的会偶尔出现宕机等活动,影响软件的可用性。 “性能、可维护性和可用性”这三大因素促使了分布式系统与微服务的诞生。
为了解决上述题目,人们很自然想到:既然一个硬件节点无法很好的运行软件,那能不可以或许通过多个节点来共同完成?而且为差别节点分派差别任务去进步服从。就好比通过差别脚色分工协同的汽车生产流水线,分布式系统与微服务的理念亦是如此,如下图所示。
随着系统的分布式程度越来越高,异常表象与根因之间的逻辑联系变得愈加模糊,题目诊断的难度急剧上升。好比 A、B 两个服务共享同一个数据库实例,当 A 服务在压测期间,大量占用数据库的服务端毗连和计算资源,会导致 B 服务出现毗连超时或相应变慢等题目。假如 B 服务是通过 C 服务间接依赖该数据库实例,题目的定位就会变得更加困难。
分布式链路追踪诞生的标志性事件就是 Google Dapper 论文的发表。2010 年 4 月,Benjamin H. Sigelman 等人在 Google Technical Report 上发表了《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》,揭开了分布式链路追踪的技能大幕,开启了一段全新技能浪潮。
Dapper 首先明白了分布式链路追踪的两个目标:恣意摆设和持续监测。进而给出了三个具体的计划准则:
Dapper 论文有两个重要的意义,一是详细阐述了分布式链路追踪的计划理念,为后来的实现者提供了重要的理论指导;二是通过 Dapper 在 Google 生产情况的大规模落地实践,证明了分布式链路追踪技能的企业级价值,为分布式链路追踪的推广作出了不可磨灭的贡献。
基本原理
分布式链路追踪并不是无中生有、凭空诞生的新概念,而是轨迹追踪在 IT 领域的又一次成功运用。轨迹追踪理念早已被广泛应用于社会生活方方面面,好比物流订单追踪。一个快递包裹在发件站被赋予快递单号,沿途中转节点会记录该快递到达时间等信息,而用户通过快递单号就可以查询自己的包裹途径了哪些站点,耗时多久,是否存在滞留或丢件情况。下表对比了物流追踪与链路追踪的关联与差别性,以便各人理解。