题目描述
中间件有一个链路分析产品,可以统计微服务间的链路调用,请实现这样一个方法,编程语言不限:
public List<String> getShortestInvocationChain(Map<String, List<String>> serviceInvocations, Map<String, Integer> invocationsTime)
输入参数
serviceInvocations
: 表示微服务调用关系- 例如:
{ "a": ["b", "c", "d"], "b": ["d", "e"], "e": ["f"], ... }
- 表示服务a调用了服务b、c和d,服务b调用了服务d和e,服务e调用了服务f
- 例如:
invocationsTime
: 表示微服务自身调用耗时- 例如:
{ "a": 10, "b": 20, "c": 30 }
- 表示服务a的调用耗时为10,服务b的调用耗时为20,服务c的调用耗时为30
- 例如:
返回值
- 返回微服务最短调用链路,例如:
["a", "b", "e", "f"]
- 表示从服务a开始,经过服务b和e,最终调用服务f的链路是最短的
约束条件
- 仅从起点考虑即可(入度为0的节点)
- 无需考虑中间链路