当周末躺在被窝里,点外卖时;双 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 范畴的又一次成功运用。轨迹追踪理念早已被广泛应用于社会生活方方面面,比如物流订单追踪。一个快递包裹在发件站被赋予快递单号,沿途中转节点会记录该快递到达时间等信息,而用户通过快递单号就可以查询自己的包裹途径了哪些站点,耗时多久,是否存在滞留或丢件情况。下表对比了物流追踪与链路追踪的关联与差异性,以便各人理解。