题目描述

中间件有一个链路分析产品,可以统计微服务间的链路调用,请实现这样一个方法,编程语言不限:

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的节点)
  • 无需考虑中间链路