论文标题丨AID: Efficient Prediction of Aggregated Intensity of Dependency in Large-scale Cloud Systems
论文来源丨ASE 2021
论文链接丨https://arxiv.org/abs/2109.04893
源码链接丨https://github.com/opspai/aid

TL;DR

考虑到目前大部分方法都是基于分布式链路追踪数据得到服务间的调用关系,然后再进行根因定位。论文声称首次提出 AID (Aggregated Intensity of service Dependency) 方法来预测服务间的依赖强度。AID 首先从 spans 数据中生成一系列服务依赖候选对,再从 spans 数据中聚合多个指标来表示服务的状态,然后基于指标来计算不同候选对的相似性,最后聚合所有的相似度值来得到服务间的依赖强度。实验部分在开源微服务系统 train-ticket 和生成环境系统中验证了 AID 可有效准确地预测服务间的依赖强度。

Algorithm/Model

AID 方法的整体框架如下图所示:

AID 模型

主要包含以下三步:

  • Candidate Selection

    从 spans 数据中的 spanid 和 parentid 找出调用的下游服务形成候选依赖集合。

    Trace 示例
  • Service Status Generation

    从 spans 数据中提取三个指标来描述每个微服务的状态:

    • Number of Invocations:调用数量
    • Duration of Invocations:调用延迟
    • Error of Invocations:调用失败量
    时序表示服务状态
  • Intensity Prediction

    1. 首先计算候选服务对间对应的指标序列相似性,计算方法在 DTW 上进行改进提出 DSW;计算流程如下所示

      DSW 算法
    2. 然后将相似性分数归一化求平均即为最后聚合的依赖强度;

      I(Pi,Ci)=13status Sdstatus (Pi,Ci),S={ invo , err ,dur}I^{\left(P_{i}, C_{i}\right)}=\frac{1}{3} \sum_{\text {status } \in S} d_{\text {status }}^{\left(P_{i}, C_{i}\right)}, S=\{\text { invo }, \text { err }, d u r\}

Experiments

实验部分用到的数据集如下:

数据集统计

考虑不同相似度指标的影响,没有其它对比 baselines。

实验结果

Thoughts

  • 整体 motivation 说清楚但是感觉方法本身没什么实际价值,trace span 信息足够考虑依赖关系和定位。❌
  • Fig.3 举例完全是反作用,依赖关系不强明显是没有调用量,故障发生时候看依赖关系强的没什么作用。❌