基于组件化分布式系统的故障注入仿真测试方法及系统与流程

文档序号:25607336发布日期:2021-06-25 14:06阅读:118来源:国知局
基于组件化分布式系统的故障注入仿真测试方法及系统与流程

1.本发明涉及仿真测试技术领域,特别是基于组件化分布式系统的故障注入仿真测试方法。


背景技术:

2.组件化就是基于可重用的目的,将一个大的软件系统按照分离关注点的形式,拆分成多个独立的组件,主要目的就是减少耦合,把系统拆分成多个组件,分离组件边界和责任,便于独立升级和维护。分布式就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。分布式意味着可以采用更多的普通计算机组成分布式集群对外提供服务。计算机越多,cpu、内存、存储资源等也就越多,能够处理的并发访问量也就越大。汇总起来就是将一个大的软件系统按照分离关注点的形式,拆分成多个独立的组件,然后我们把不同的组件部署到不同的机器上,各个组件之间通过远程服务调用等方式进行通信。以一个分布式的系统对外提供服务。分布式系统天生有着各种相互依赖,可以出错的地方数不胜数,处理不好就会导致业务受损,或者是其他各种无法预期的异常行为。混沌工程领域目前这些工具的使用方式千差万别,有些工具上手难度大,学习成本高,实验能力单一。混沌工程原则强烈建议用户在生产环境上进行混沌工程实验,因为实验越接近生产环境,从结果中学到的越多,但是有可能导致故障影响不可控,此时就需要引入故障注入仿真测试。


技术实现要素:

3.为解决上述问题,本发明的目的是提供基于组件化分布式系统的故障注入仿真测试方法及系统。
4.本发明实施例中采用以下方案实现:提供基于组件化分布式系统的故障注入仿真测试方法,避免了在生产环境中进行实验可能造成不良的影响,按照以下步骤实现:步骤s1、故障规格分析,对被测系统可能出现的故障模式集合进行定义,对故障模式的基本属性、故障模式之间的内部关系以及故障模式与系统功能、结构、测试的外部关系进行分析,作为测试中的故障抽样、故障仿真、故障注入和故障评估的依据;步骤s2、失效情景建立,应对目标系统可能出现的潜在故障情况建立失效情景;步骤s3、故障注入方案确定,考虑外部总线消息通信、信号传输情况,提交的每个失效情景确定故障注入的相关接口fip,即将每种故障映射到具体特定硬件通道、软件组件或代码位置,根据提交的失效情景审查和故障注入点反馈,完成失效情景的故障注入方案;步骤s4、仿真模型建模,在故障规格分析与定义的基础上,针对故障规格中定义的故障特征、故障关系,结合测试的需要进一步抽取出故障仿真规格,由此产生指导故障注入的故障仿真模型;步骤s5、运行实验,借助工具取值执行本次试验或者写脚本执行测试;步骤s6、分析结果,测试完成后,将稳态指标与干扰注入系统后收集的指标进行比
较;若与测量结果存在差异,则故障注入仿真测试测试已经成功,可以继续加固系统,避免现实世界中的类似事件不会导致大问题;或者稳定状态可以保持,则没有问题。
5.本发明一实施例中,所述步骤s2进一步具体为:了解系统问题历史和软件设计规格,综合考虑故障注入对象、类型、时间和故障类型,描述系统中可能导致系统失效的故障、触发事件和系统相关状态因素,建立失效情景。
6.本发明一实施例中,所述步骤s3进一步具体为:对于给定的每个失效情景,开发团队采用sfmea方法,对每种失效情景中的故障模式与影响进行分析;根据对目标系统功能、结构特性分析,确定可能导致该失效情景的fip信息用于故障注入,并建立fip位置的功能、结构映射关系;明确目标系统处理该故障所采用的检测/恢复动作。
7.本发明一实施例中,所述步骤s4进一步具体为,故障仿真模型是在交联环境特性分析基础上,根据被测软件以及交联环境的需求信息而创建的仿真模型,模拟现实多样化真实世界的事件,建立测试计划。
8.本发明一实施例中,所述步骤s5进一步具体为:所述工具为netflix

simianarmy、chaosblade、chaos mesh。
9.本发明还提供基于组件化分布式系统的故障注入仿真测试系统,用于仿真测试,所述系统包括故障规格分析模块、失效情景建立模块、故障注入方案确定模块、仿真模型建模模块、实验运行模块和结果分析模块;所述故障规格分析模块,用于对被测系统可能出现的故障模式集合进行定义,对故障模式的基本属性、故障模式之间的内部关系以及故障模式与系统功能、结构、测试的外部关系进行分析,作为测试中的故障抽样、故障仿真、故障注入和故障评估的依据;所述失效情景建立模块,用于应对目标系统可能出现的潜在故障情况建立失效情景;所述故障注入方案确定模块,用于考虑外部总线消息通信、信号传输情况,提交的每个失效情景确定故障注入的相关接口fip,即将每种故障映射到具体特定硬件通道、软件组件或代码位置,根据提交的失效情景审查和故障注入点反馈,完成失效情景的故障注入方案;所述仿真模型建模模块,用于在故障规格分析与定义的基础上,针对故障规格中定义的故障特征、故障关系,结合测试的需要进一步抽取出故障仿真规格,由此产生指导故障注入的故障仿真模型;所述实验运行模块,用于借助工具取值执行本次试验或者写脚本执行测试;所述结果分析模块,用于测试完成后,将稳态指标与干扰注入系统后收集的指标进行比较;若与测量结果存在差异,则故障注入仿真测试测试已经成功,可以继续加固系统,避免现实世界中的类似事件不会导致大问题;或者稳定状态可以保持,则没有问题。
10.本发明一实施例中,所述失效情景建立模块进一步具体为:了解系统问题历史和软件设计规格,综合考虑故障注入对象、类型、时间和故障类型,描述系统中可能导致系统失效的故障、触发事件和系统相关状态因素,建立失效情景。
11.本发明一实施例中,所述故障注入方案确定模块进一步具体为:对于给定的每个失效情景,开发团队采用sfmea方法,对每种失效情景中的故障模式与影响进行分析;根据对目标系统功能、结构特性分析,确定可能导致该失效情景的fip信息用于故障注入,并建
立fip位置的功能、结构映射关系;明确目标系统处理该故障所采用的检测/恢复动作。
12.本发明一实施例中,仿真模型建模模块进一步具体为:故障仿真模型是在交联环境特性分析,根据被测软件以及交联环境的需求信息而创建的仿真模型,模拟现实多样化真实世界的事件,建立测试计划。
13.本发明一实施例中,所述实验运行模块进一步具体为:所述工具为netflix

simianarmy,或chaosblade,或chaos mesh。
14.本发明的有益效果:本发明提供基于组件化分布式系统的故障注入仿真测试方法,1、在复杂的分布式系统中,无法阻止这些故障的发生,应该致力于在这些异常行为被触发之前,尽可能多地识别风险,让分布式系统更加健壮。针对性地对这些故障进行加固,防范,从而避免故障发生时所带来的严重后果。
15.2、这种通过实验的验证方法可以为我们打造更具弹性的系统,同时让我们更透彻的掌握系统运行时的各种行为规律。我们能够在不断打造更具弹性(弹性:系统应对故障、从故障中恢复的能力)系统的同时,树立运行高可用分布式系统的信心3、在生产环境中进行实验,离生产环境越近的实验是会有风险的,所以仿真测试方法提供了仿真环境,采用模拟生产流量的方式,尽量和生产流量相似,来验证实验场景和工具的可靠性,避免了在生产环境中进行实验可能给客户造成不必要的影响。尽管部分短期负面影响不可避免,但冒这个风险的代价总会比将来大规模中断所带来的灾难要小。
附图说明
16.图1是基于组件化分布式系统的故障注入仿真测试方法的流程框图。
17.图2是基于组件化分布式系统的故障注入仿真测试方法的原理框图。
18.图3是基于组件化分布式系统的故障注入仿真测试系统的系统框图。
具体实施方式
19.下面结合附图对本发明做进一步说明。
20.请参阅图1至图2,本发明提供基于组件化分布式系统的故障注入仿真测试方法,按照以下步骤实现:步骤s1、故障规格分析,对被测系统可能出现的故障模式集合进行定义,对故障模式的基本属性、故障模式之间的内部关系以及故障模式与系统功能、结构、测试的外部关系进行分析,作为测试中的故障抽样、故障仿真、故障注入和故障评估的依据;步骤s2、失效情景建立,应对目标系统可能出现的潜在故障情况建立失效情景;步骤s3、故障注入方案确定,考虑外部总线消息通信、信号传输情况,提交的每个失效情景确定故障注入的相关接口fip (faultinjectionpoint),即将每种故障映射到具体特定硬件通道、软件组件或代码位置,根据提交的失效情景审查和故障注入点反馈,完成失效情景的故障注入方案;步骤s4、仿真模型建模,在故障规格分析与定义的基础上,针对故障规格中定义的故障特征、故障关系,结合测试的需要进一步抽取出故障仿真规格,由此产生指导故障注入的故障仿真模型;步骤s5、运行实验,借助工具取值执行本次试验或者写脚本执行测试;
步骤s6、分析结果,测试完成后,将稳态指标与干扰注入系统后收集的指标进行比较;若与测量结果存在差异,则故障注入仿真测试测试已经成功,可以继续加固系统,避免现实世界中的类似事件不会导致大问题;或者稳定状态可以保持,则没有问题;所述步骤s2进一步具体为:了解系统问题历史和软件设计规格,综合考虑故障注入对象(如需要针对哪些接口、任务进行注入)、类型、时间和故障类型,描述系统中可能导致系统失效的故障、触发事件和系统相关状态因素,建立失效情景;基于系统问题历史的失效场景主要检查当前软件版本是否已经对原有导致问题的故障有效解决;基于软件设计规格的失效情景主要针对系统体系结构和规格需求,考虑潜在故障是否会导致系统发生失效;所述步骤s3进一步具体为:对于给定的每个失效情景,开发团队采用sfmea (softwarefailuremodeandefectanalysis)方法,对每种失效情景中的故障模式与影响进行分析;根据对目标系统功能、结构特性分析,确定可能导致该失效情景的fip信息用于故障注入(该调用点用于故障注入),并建立fip位置的功能、结构映射关系;明确目标系统处理该故障所采用的检测/恢复动作;根据开发团队提交的失效情景审查和故障注入点反馈,测试团队最终完成每种失效情景的故障注入方案;故障注入方案应提供4部分信息:1、目标系统故障注入点fip信息;2、根据fip与目标系统功能、结构映射关系,注入故障而导致的可能失效;3、目标系统对该fip注入故障所采取的相应检测/恢复动作;4、可触发该fip、描述负载输入的测试用例;所述步骤s4进一步为:故障仿真模型在交联环境特性分析基础上,根据被测软件以及交联环境的需求信息而创建的仿真模型,模拟现实多样化真实世界的事件,建立测试计划,与测试对象的干系人充分沟通,进而联合执行测试过程;为了使仿真系统可以正常运行,除了上述必须的移植工作外,硬件初始化和配置文件也是必须的;为验证移植成功,需要查看看移植代码是否能正常工作,首先不加任何应用代码来测试移植好的仿真系统,也就是说先测试内核自身的运行情况是否良好,这样做的原因有两个:首先不希望将事情复杂化,其次是如果测试时发现问题,可以明白是移植本身的问题,而不是代码产生了问题,内核运行良好时,再添加应用任务;所述步骤s5进一步具体为:所述工具为netflix

simianarmy、chaosblade、chaos mesh。
21.请参阅图图2、图3,本发明还提供基于组件化分布式系统的故障注入仿真测试系统,用于仿真测试,所述系统包括故障规格分析模块、失效情景建立模块、故障注入方案确定模块、仿真模型建模模块、实验运行模块和结果分析模块;所述故障规格分析模块,用于对被测系统可能出现的故障模式集合进行定义,对故障模式的基本属性、故障模式之间的内部关系以及故障模式与系统功能、结构、测试的外部关系进行分析,作为测试中的故障抽样、故障仿真、故障注入和故障评估的依据;所述失效情景建立模块,用于应对目标系统可能出现的潜在故障情况建立失效情景;所述故障注入方案确定模块,用于考虑外部总线消息通信、信号传输情况,提交的每个失效情景确定故障注入的相关接口fip,即将每种故障映射到具体特定硬件通道、软件组件或代码位置,根据提交的失效情景审查和故障注入点反馈,完成失效情景的故障注入
方案;所述仿真模型建模模块,用于在故障规格分析与定义的基础上,针对故障规格中定义的故障特征、故障关系,结合测试的需要进一步抽取出故障仿真规格,由此产生指导故障注入的故障仿真模型;所述实验运行模块,用于借助工具取值执行本次试验或者写脚本执行测试;所述结果分析模块,用于测试完成后,将稳态指标与干扰注入系统后收集的指标进行比较;若与测量结果存在差异,则故障注入仿真测试测试已经成功,可以继续加固系统,避免现实世界中的类似事件不会导致大问题;或者稳定状态可以保持,则没有问题;所述失效情景建立模块进一步具体为:了解系统问题历史和软件设计规格,综合考虑故障注入对象、类型、时间和故障类型,描述系统中可能导致系统失效的故障、触发事件和系统相关状态因素,建立失效情景;所述故障注入方案确定模块进一步具体为:对于给定的每个失效情景,开发团队采用sfmea方法,对每种失效情景中的故障模式与影响进行分析;根据对目标系统功能、结构特性分析,确定可能导致该失效情景的fip信息用于故障注入,并建立fip位置的功能、结构映射关系;明确目标系统处理该故障所采用的检测/恢复动作;根据开发团队提交的失效情景审查和故障注入点反馈,测试团队最终完成每种失效情景的故障注入方案;故障注入方案应提供4部分信息:1、目标系统故障注入点fip信息;2、根据fip与目标系统功能、结构映射关系,注入故障而导致的可能失效;3、目标系统对该fip注入故障所采取的相应检测/恢复动作;4、可触发该fip、描述负载输入的测试用例;测试场景包括以下故障注入测试类型:依赖性故障、主机型故障、操作系统内存故障、网络故障、服务层故障;仿真模型建模模块进一步具体为:故障仿真模型是在交联环境特性分析,根据被测软件以及交联环境的需求信息而创建的仿真模型,模拟现实多样化真实世界的事件,建立测试计划,与测试对象的干系人充分沟通,进而联合执行测试过程;为了使仿真系统可以正常运行,除了上述必须的移植工作外,硬件初始化和配置文件也是必须的;为验证移植成功,需要查看看移植代码是否能正常工作,首先不加任何应用代码来测试移植好的仿真系统,也就是说先测试内核自身的运行情况是否良好,这样做的原因有两个:首先不希望将事情复杂化,其次是如果测试时发现问题,可以明白是移植本身的问题,而不是代码产生了问题,内核运行良好时,再添加应用任务;所述实验运行模块进一步具体为:所述工具为netflix

simianarmy,或chaosblade,或chaos mesh,但并不仅以此为限。
22.本发明具有以下工作原理:通过仿真建模方式对目标系统运行的交联环境(与运行目标软件的系统交互的交联设备系统)实现交联环境仿真,为目标系统运行时提供负载输入,同时采用设备间故障注入技术,实现对外部总线(是cpu与内存ram、rom和输入/输出设备接口之间进行通讯的通路,也称系统总线)消息通信、信号传输进行故障注入,模拟潜在故障来改变目标系统的行为,实现目标系统在预期失效情景下的测试。这是一种经过实验可以确保系统的可用性,用
来提高技术架构弹性能力的复杂技术手段或者方法。宗旨在将故障扼杀在襁褓之中,也就是在故障造成中断之前将它们识别出来。通过主动制造故障,测试系统在各种压力下的行为,识别并修复故障问题,避免造成严重后果。使用该方法可以在整个系统中在随机位置引发故障,并且会随机终止在仿真生产环境中运行的虚拟机实例和容器,避免了在生产环境中进行实验可能给客户造成不必要的影响。尽管部分短期负面影响不可避免。通过这个方法,开发们可以快速了解他们正在构建的服务是否健壮,是否可以弹性扩容,是否可以处理计划外的故障。
23.以上所述仅为本发明的较佳实施例,不能理解为对本申请的限制,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1