Page 25 - 《软件学报》2021年第5期
P. 25
殷康璘 等:基于混沌工程的微服务韧性风险识别和分析 1249
确度.本文中使用 precision(查准率)和 recall(查全率)作为评估韧性风险影响链路准确度的度量指标.由于本文
提出的分析方法最终输出排序后的多条链路,precision 和 recall 中 TP 的判断标准为输出的前 k 条链路是否命
中被引入的环境扰动,其对应的 precision 和 recall 值分别记作 precision k 和 recall k .FP(false positive)表示分析方
法输出的前 k 条链路中没有命中环境扰动;FN(false negative)表示分析方法输出前 k 条链路中没有命中环境扰
动,但是剩余的链路中命中了环境扰动.为了方便统计韧性风险影响链路是否命中了被引入的环境扰动,本文中
仅分析了直接与系统性能有关的环境扰动所对应的混沌实验数据集(环境扰动包括:将 CPU 利用率提升至
100%(CPUBurnout)、将内存占用率提示至 100%(Mem overload)、磁盘 IO 阻塞(disk I/O block)以及网络传输延
时(network Jam)).
• 通过因果关系搜索算法所构建的因果关系图是否准确?
在第 4.3 节的实验中,已证明了通过因果关系算法构建的性能指标因果关系图与 Sock-Shop 的实际服务调
用图基本一致.为模拟验证在服务数较多、调用关系较深情况下的因果搜索算法构建的因果关系图的准确性,
本文通过因果关系模拟工具 tetrad(http://www.phil.cmu.edu/projects/tetrad/)构建出包含不同数量节点和因果关
系边的因果关系图,并在假定的因果关系图上模拟大量数据.因果关系模拟算法将在模拟的数据中寻找变量之
间的因果关系,并将得到的因果关系与假定的因果关系进行比较,统计实际不存在的、存在但未识别的以及方
向识别错误的因果关系边数,以验证算法分析得到的因果关系的准确性.
表 9 展示了在不同节点和因果关系边数量下,因果关系搜索算法的准确度.从表 9 可以看出:因果搜索算法
能够识别出大部分的因果关系,与实际因果关系的准确度基本高于 90%.对于实际大规模微服务架构系统的验
证,将在本文的后续研究工作中进一步展开.
Table 9 Accuracy of the causality search algorithm under different number of nodes and edges
表 9 不同节点和边数量下因果关系搜索算法的准确度
节点数 边数 实际不存在的因果关系边数 未识别的因果关系边数 方向错误的因果关系边数 Precision Recall
10 20 1 0 0 0.95 1
10 30 0 0 0 1 1
15 30 2 5 0 0.92 0.83
15 45 3 8 0 0.93 0.82
20 40 3 10 0 0.91 0.75
20 60 5 9 0 0.91 0.85
30 60 10 12 1 0.81 0.78
30 90 7 11 0 0.92 0.88
50 100 9 15 2 0.88 0.83
50 150 10 12 1 0.92 0.91
• 针对服务韧性设计的因果关系边权重赋值方法是否能够优化对韧性风险的分析过程?
本文中比较了本文提出的因果关系边权重赋值方法和现有文献中使用的因果关系边权重赋值方法所得到
的因果关系链路的准确度,以验证本文提出的针对韧性风险的因果关系边权重赋值方法的有效性,被比较的权
重赋值方法有:
(1) 3σ检测:通过 3σ规则判断系统性能是否发生了异常,并将系统性能的时间序列数据转换成仅包含 0 和
1 的性能异常序列.随后,以性能异常序列计算性能指标之间的皮尔森系统作为因果关系边的权重.该
方法为 Microscope [64] 中使用的方法.
(2) 阈值关联:为了与 CauseInfer [65] 中对离散系统性能指标的因果关系分析方法比较,在本案例研究中,将
为每一类型的系统性能指标设立若干的阈值,并根据阈值将连续的性能指标序列转换成离散序列.随
后,同样使用皮尔森系数为因果关系边构建权重.
(3) 直接关联:按照 CloudRanger [63] 中的方法,直接使用两个性能指标数据的皮尔森系数作为因果关系边
的权重.
各因果关系边权重赋值方法在不同类型的环境扰动下对最终输出的因果关系链的准确度的影响见表 10.
从表 10 中可以看出,本文提出的针对系统性能变化的因果关系边权重的赋值方法在分析韧性风险上相对于其