使用篇丨链路追踪(Tracing)很简单:链路拓扑

文章介绍了在微服务架构中,如何通过链路拓扑来梳理复杂的依赖关系,包括依赖梳理、瓶颈点和影响面分析以及故障传播链的追踪。同时,讨论了不同聚合维度如应用、接口和业务的拓扑,以及实时聚合、离线聚合和预聚合等生成拓扑的方式。3D拓扑作为一种结合流量和资源的表示方法,有助于更全面地理解系统状态,但也存在信息过载的问题。
摘要由CSDN通过智能技术生成

最近一年,小玉所在的业务部门发起了轰轰烈烈的微服务化运动,大量业务中台应用被拆分成更细粒度的微服务应用。为了迎接即将到来的双十一大促重保活动,小玉的主管让她在一周内梳理出订单中心的全局关键上下游依赖,提前拉通各方对齐重保方案。这个任务可愁坏了小玉,平时她只与直接上下游业务方打交道,现在要梳理出订单中心完整的依赖路径,头发愁掉了一大把仍然不知道该如何下手。无奈之下,小玉再次求助于万能的小明。

针对小玉的问题,小明提出了一个想法,首先调用链可以追踪一次请求的完整调用路径,但是单条调用链无法反映出所有的调用分支,也无法通过流量大小体现出依赖的强弱,而逐条分析调用链的成本又太高。那么,是否可以通过程序将一批具有相同特征(比如经过某个应用,或者调用了某个接口)的调用链聚合成一颗树,通过分析这棵树的形态与流量,就可以快速梳理出关键节点与依赖路径,而这就是链路拓扑功能的雏形。

如上图所示,入口应用 A 依赖了多个不同深度的下游应用,并且每次调用的路径并不相同。为了梳理出应用 A 的完整调用依赖,可以将多条调用链聚合成一棵树,从根节点到叶子节点的每条路径都代表着一种流量流转路径,而节点的状态反映了流量的特征,比如次数、耗时、错误率等。通过调用链聚合,综合分析端到端流量路径与状态的方法就是链路拓扑。链路拓扑与调用链的关系就好比样本集与离散样本点,前者反映了整体的分布情况,可以有效避免单个样本随机性对评估结果的影响。

01 链路拓扑的经典应用场景

链路拓扑最核心的价值,就是通过分析节点间依赖路径与状态,提供强弱依赖梳理、瓶颈点分析、影响面分析、故障传播链分析等能力,下面我们来深入了解下这些经典用法。

(一)强弱依赖梳理

链路拓扑最典型、最被人熟知的应用场景就是依赖梳理,特别是在一个大型分布式系统中,数以万计的应用间依赖关系复杂到令运维同学怀疑人生。下图展示了 2012 年的淘宝核心链路应用拓扑,密密麻麻如蛛网般的依赖关系已经远远超出了人工梳理的范畴,而这种情况在微服务迅猛发展的当下并不少见。

在复杂业务环境中,不仅需要梳理出依赖关系图,还需要识别哪些是影响核心业务的强依赖,哪些是“无伤大雅”的弱依赖。针对强依赖要投入更多的人力与资源,建立更加完善的保障体系,比如电话告警,联合压测等。针对弱依赖,可以考虑是否能够移除,或者建立次一级的保障措施。

区分强弱依赖的方式主要有以下几种:

  1. 根据流量大小进行区分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值