任何一项服务后边都有着无数子系统和组件的支撑,子系统之间也互相依赖关联,其中任意一个环节出现问题都可能对上游链路产生影响。
输入每个系统的依赖关系,调用对应系统的耗时,用这些数据分析端到端链路的数目和链路上最长的耗时。
【输入】 搜集到的系统耗时和依赖列表
5 4 // 表示有5个系统和 4个依赖关系
3 // 调用1号系统耗时 3 ms
2 // 调用2号系统耗时 2 ms
10 // 调用3号系统耗时 10 ms
5 // 调用4号系统耗时 5 ms
7 // 调用5号系统耗时 7 ms
1 2 // 1号系统依赖2号系统
1 3 // 1号系统依赖3号系统
2 5 // 2号系统依赖5号系统
4 5 // 4号系统依赖5号系统
【输出】 调用链路的数目 和最大的耗时, 这里有三条链路1->2->5,1->3, 4->5,最大的耗时是1到3的链路 3+10 = 13,无需考虑环形依赖的存在。
3 13
- 思路,可以将各个系统当做图的各个顶点,然后根据依赖关系(有向边)构造出图,由于不考虑环形依赖,因此实际上得到的是一个森林。然后遍历这片森林,得到所有的路径。
网友评论