← 中文资源

简体中文版本

依赖图:在故障发生前看清影响范围

依赖图把分散的导入、服务调用和包清单连成一张关系网,让影响分析与风险评估变得可见。

阅读英文原文

边的含义决定价值

依赖图的价值取决于边的语义。一条边可以表示「编译依赖」「运行时调用」「读取数据」或「一同部署」,每种含义回答的问题都不同。把它们混进一张无向图,得到的只是好看却无法解释的示意图。画线之前,先给边命名。

构建图、运行时图与数据图

构建图来自包清单和 import 语句;运行时图来自链路追踪、服务网格遥测或网络流日志;数据图来自数据血缘元数据。它们有重叠但并不相同:一个库可以是构建依赖却从未在运行时被调用,一个服务也可能调用了别人却从未声明。要按问题选择对应的图。

影响分析

变更之前,沿图向前走:哪些服务依赖即将修改的组件,它们的关键程度如何?故障期间,沿图向后走:出故障的组件依赖了什么?例如,修改事件表的 schema 看似风险很低,直到图上显示有四个下游消费者,其中两个还没有负责人。

让图保持诚实

依赖图比示意图腐烂得更快,因为它宣称精确。每次部署都重建图,把推断出的边标记为推断,并记录每条边最后一次被观测到的时间。对在既定窗口内未出现在遥测中的边应当删除,但要保留归档,以便解释历史决策。

与架构图的对比

架构图向人传达意图,依赖图支持机器查询。架构图说「订单会调用支付」,依赖图回答「如果支付不可用十分钟,三百个服务里哪些会受影响」。成熟团队两者都保留,并用同一个事实来源生成。