Page 13 - 《软件学报》2021年第5期
P. 13
殷康璘 等:基于混沌工程的微服务韧性风险识别和分析 1237
MRMM 中的 3 个韧性度量维度对实验中发现的服务降级进行度量,并与预设的服务韧性目标比较:如果服务降
级的程度超出了服务韧性目标所预设的阈值,则说明这次混沌实验中所引入的系统环境扰动是严重影响系统
服务性能的韧性风险,该次混沌实验中生成收集得到系统服务性能数据和系统资源性能数据将作为韧性风险
分析的依据.
3 微服务架构系统的韧性风险分析
如本文引言中所述,本文提出的韧性风险分析方法将避免对微服务架构系统本身的额外开发成本,以无监
督的方法分析一个韧性风险如何影响目标系统并引发服务降级.该方法将以被识别的韧性风险所对应的混沌
实验中收集的系统性能数据为依据,通过因果搜索算法构建系统性能指标之间的因果关系图,随后根据系统性
能数据的上升和下降变化对因果关系图中的各条边赋予权重,最终输出若干由系统性能指标构成的韧性风险
的影响链路,这些影响链路将按照因果关系边的权重排序.微服务架构系统的运维人员可以根据韧性风险的影
响链路中涉及到的系统性能指标设计对应的系统优化方案.韧性风险分析方法的整体流程如图 3 所示.
Fig.3 Process of resilience risk analysis
图 3 韧性风险分析过程
3.1 混沌实验数据收集
对于每一个被识别的韧性风险,其对应的混沌实验执行过程中的服务性能和资源性能的历史数据将作为
韧性风险如何产生服务降级的分析依据.本文提出的韧性风险分析方法所分析的目标为系统各项性能指标之
间的因果变化关系,因此会在每一次混沌实验中将通过监控工具收集目标系统在该次混沌实验中的系统性能
数据集{timestamp,K 1 ,K 2 ,…,K n },其中,timestamp 为时间戳,K 1 ,…,K n 为在该时间戳下的各项系统性能指标.图 4 为
一个样例的混沌实验数据集,其中,第 1 列为每一行性能数据对应的 Unix 时间戳,第 2 列开始的每一列表示某一
项系统性能指标(如第 3 列为 cart 服务的平均请求延时,单位为 s),某一行某一列的数据表示该行第 1 列时间戳
下捕获到的该列所对应的系统性能指标的实际值.
Fig.4 A sample chaos experiment dataset
图 4 混沌实验数据集样例