Page 11 - 《软件学报》2021年第5期
P. 11
殷康璘 等:基于混沌工程的微服务韧性风险识别和分析 1235
据标注标签.参考上述研究工作,本文在韧性风险的分析过程中同样使用了因果关系搜索算法来构建目标微服
务系统中性能指标之间的依赖关系.
本文作者在先前的研究工作 [14] 中提出了微服务韧性度量模型 MRMM,该模型使用了性能降级程度、降级
恢复时间和降级损失这 3 个度量维度度量了一次系统环境扰动产生的服务降级中系统性能的变化,以体现系
统环境扰动对微服务架构系统的影响程度,如图 2 所示.以 MRMM 为基础,该研究提出了一种韧性需求的表示
方法,通过目标导向的需求模型体现出微服务架构中韧性目标、韧性风险和韧性机制之间的关系.然而,如何识
别出一个微服务架构系统中的韧性风险并对其进行分析,并没有在该研究的讨论范围内.
Fig.2 Three resilience metrics in MRMM
图 2 MRMM 中的 3 个韧性度量指标
2 微服务架构系统韧性风险的识别方法
基于混沌工程的实践方法和微服务韧性度量模型 MRMM [14] ,本文提出了针对微服务架构系统的韧性风险
识别方法.相对于传统的软件风险评估模型中人为识别软件风险的方法,该方法将利用混沌工程工具中已实现
的系统扰动事件类型,以随机的方式自动构建出大量混沌实验,持续地对目标微服务架构系统进行混沌实验,并
以预先设立的韧性度量目标判断某种系统环境扰动是否为韧性风险,实现了一种针对韧性风险的发现策略,并
免去了人为穷尽并验证各服务中不同系统资源类型的各种环境扰动对目标系统影响的人工成本.具体的混沌
实验实例详见本文第 4.2 节的案例研究部分.
2.1 假设与前提
本文所提出的微服务系统韧性风险识别方法具有以下假设和前提.
(1) 目标微服务架构系统遵循 DevOps 的开发模式,系统拥有完整的自动化构建、部署体系.
(2) 目标微服务架构系统已完成了首次迭代,并有一个可部署执行的版本.
(3) 目标微服务架构系统中,所有系统服务的实时服务性能数据可以通过工具采集.
(4) 目标微服务架构系统由于本身的性能设计缺陷导致的服务性能下降不在本文的研究范围内.
(5) 本文将仅考虑单个系统环境扰动对微服务架构系统的影响,对于多种扰动对服务的组合影响,将在本
文的后续研究中进一步探讨.
2.2 韧性风险识别方法
本文提出的韧性风险识别方法将包含以下几个步骤.
(1) 确立服务性能基线
通过设立由 MRMM 的 3 项度量指标构成的服务韧性目标,可以描述出一个微服务架构系统预期达到的服
务韧性.当一个服务发生的某次服务降级所测量得到的服务韧性超出了其服务韧性目标的阈值范围,导致该次
服务降级的扰动将被识别为微服务架构的韧性风险.MRMM 中的各项韧性度量指标均通过计算服务实际性能
与服务性能基线的差异得到,因此在韧性风险识别过程的开始阶段,需要对目标微服务架构系统所提供的每个
系统服务建立服务性能基线,以判断服务是否处于服务降级状态.确立服务性能基线的过程中包含两个步骤.
a) 确定服务性能指标.