基于混沌实验的分布式系统测试方法及系统与流程

文档序号:19879054发布日期:2020-02-08 06:46阅读:707来源:国知局
基于混沌实验的分布式系统测试方法及系统与流程

本申请涉及分布式系统技术领域,尤其涉及一种基于混沌实验的分布式系统测试方法及系统。



背景技术:

随着分布式系统日益庞大、服务间的依赖错综复杂且很难评估单个服务故障对整个系统的影响,并且请求链路长、监控告警不完善导致发现问题、定位问题难度增大,同时业务和技术迭代快,如何持续保障系统的稳定性受到很大的挑战。

测试领域涉及的故障测试手段缺失,导致测试人员无法主动守护分布式系统的高可用。当高可用的生产问题出现时,测试人员无法模拟故障场景。

因此,如何实现分布式系统多种故障场景的模拟,提高分布式系统测试的准确性和高效性成为本领域亟需解决的重要课题。



技术实现要素:

针对现有技术中的问题,本申请提出了一种基于混沌实验的分布式系统测试方法及系统,能够提高分布式系统测试的准确性和高效性,进而提高分布式系统的高可用性。

为了解决上述技术问题,本申请提供以下技术方案:

第一方面,本申请提供一种基于混沌实验的分布式系统测试方法,包括:

根据预获取的目标实验场景确定该目标实验场景对应的故障类型,以及根据所述目标实验场景确定目标分布式系统对应的至少一个目标程序;

基于所述故障类型在多个预设的混沌实验工具中择一作为对应的目标混沌实验工具;

应用所述目标混沌实验工具,将所述目标实验场景下的故障类型对应的故障信息添加至所述目标程序;

执行添加有所述故障信息后的目标程序,并根据对应的执行结果与预设的标准结果确定所述预获取的目标实验场景对应的实验结果。

进一步地,所述预设的混沌实验工具包括:chaosblade代理工具和自定义代理工具。

进一步地,在所述根据对应的执行结果与预设的标准结果确定所述预获取的目标实验场景对应的实验结果之后,还包括:输出所述预获取的目标实验场景对应的实验结果并显示。

进一步地,在所述根据对应的执行结果与预设的标准结果确定所述预获取的目标实验场景对应的实验结果之后,还包括:根据预获取的待删除实验场景确定该待删除实验场景对应的待删除故障类型,以及根据所述待删除实验场景确定目标分布式系统对应的至少一个待删除故障信息的程序;基于所述待删除故障类型在多个所述预设的混沌实验工具中择一作为对应的待删除混沌实验工具;应用所述待删除混沌实验工具,删除所述待删除故障信息的程序中的所述待删除实验场景下的待删除故障类型对应的待删除故障信息。

进一步地,所述应用所述目标混沌实验工具,将所述目标实验场景下的故障类型对应的故障信息添加至所述目标程序,包括:应用所述目标混沌实验工具和动态字节码技术修改所述目标程序的字节码。

第二方面,本申请提供一种基于混沌实验的分布式系统测试系统,包括:

第一确定装置,用于根据预获取的目标实验场景确定该目标实验场景对应的故障类型,以及根据所述目标实验场景确定目标分布式系统对应的至少一个目标程序;

目标混沌工具确定装置,用于基于所述故障类型在多个预设的混沌实验工具中择一作为对应的目标混沌实验工具;

添加故障信息装置,用于应用所述目标混沌实验工具,将所述目标实验场景下的故障类型对应的故障信息添加至所述目标程序;

执行装置,用于执行添加有所述故障信息后的目标程序,并根据对应的执行结果与预设的标准结果确定所述预获取的目标实验场景对应的实验结果。

进一步地,所述预设的混沌实验工具包括:chaosblade代理工具和自定义代理工具。

进一步地,所述的基于混沌实验的分布式系统测试系统,还包括:输出装置,用于输出所述预获取的目标实验场景对应的实验结果并显示。

进一步地,所述的基于混沌实验的分布式系统测试系统,还包括:第二确定装置,用于根据预获取的待删除实验场景确定该待删除实验场景对应的待删除故障类型,以及根据所述待删除实验场景确定目标分布式系统对应的至少一个待删除故障信息的程序;获取待删除混沌实验工具装置,用于基于所述待删除故障类型在多个所述预设的混沌实验工具中择一作为对应的待删除混沌实验工具;删除装置,用于应用所述待删除混沌实验工具,删除所述待删除故障信息的程序中的所述待删除实验场景下的待删除故障类型对应的待删除故障信息。

进一步地,所述添加故障信息装置,包括:修改字节码模块,用于应用所述目标混沌实验工具和动态字节码技术修改所述目标程序的字节码。

第三方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的基于混沌实验的分布式系统测试方法的步骤。

第四方面,本申请一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现所述的基于混沌实验的分布式系统测试方法的步骤。

由上述技术方案可知,本申请提供一种基于混沌实验的分布式系统测试方法及系统。其中,该方法包括:根据预获取的目标实验场景确定该目标实验场景对应的故障类型,以及根据所述目标实验场景确定目标分布式系统对应的至少一个目标程序;基于所述故障类型在多个预设的混沌实验工具中择一作为对应的目标混沌实验工具;应用所述目标混沌实验工具,将所述目标实验场景下的故障类型对应的故障信息添加至所述目标程序;执行添加有所述故障信息后的目标程序,并根据对应的执行结果与预设的标准结果确定所述预获取的目标实验场景对应的实验结果,能够自动识别应用进行多维度的混沌实验服务自动触发系统的脆弱面的效果,实能够现分布式系统的高可用性且在不影响被测系统源码的情况下改变程序的可用性、输入值和返回值,制造jvm层混沌,能够解决分布式系统的高可用领域无系统性和自动化守护技术的问题,提高分布式系统测试的准确性、自动化程度和灵活度,降低内存使用率,进而提高分布式系统的高可用性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请第一实施例中的基于混沌实验的分布式系统测试方法的流程示意图;

图2是本申请第二实施例中的基于混沌实验的分布式系统测试方法中步骤201至203的流程示意图;

图3是本申请第三实施例中的基于混沌实验的分布式系统测试系统的结构示意图;

图4是本申请第四实施例中的基于混沌实验的分布式系统测试系统的结构示意图;

图5是本申请具体应用实例中的基于混沌实验的分布式系统测试系统与被测系统的连接关系的结构示意图;

图6是本申请具体应用实例中的控制管理装置的结构示意图;

图7是本申请具体应用实例中的实验场景单元的结构示意图;

图8是本申请具体应用实例中的发布装置的结构示意图;

图9是本申请具体应用实例中的控制处理装置的结构示意图;

图10是本申请具体应用实例中的代理装置的结构示意图;

图11是本申请具体应用实例中基于混沌实验的分布式系统测试方法的流程图;

图12为本申请实施例的电子设备9600的系统构成示意框图。

具体实施方式

为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

混沌实验是在分布式系统上进行的实验,能够揭示分布式系统中存在的未知弱点,建立对系统抵御生产环境中失控条件的能力以及信心,即时发现分布式系统中存在的问题,提高分布式系统的安全性。但是,现有的混沌实验适用的故障类型不全面、执行过程比较复杂。为了解决分布式系统的高可用领域无系统性、自动化守护技术痛点,本申请通过混沌工程的反脆弱技术和字节码技术实现混沌实验的基于混沌实验的分布式系统测试方法及系统,提供一站式混沌实验案例选型以及实验结果分析服务,达到自动识别应用进行多维度的混沌实验服务自动触发系统的脆弱面的效果。通过对系统的os层注入服务器混沌测试服务、应用层某些服务动态的注入运行期混沌测试服务,验证系统是否按照预期设定的策略执行达到系统的高可用能力和自动化守护能力。

基于此,本申请提供一种基于混沌实验的分布式系统测试系统,在实际应用中,进行基于混沌实验的分布式系统测试的部分可以在如上述内容所述的服务器侧执行,也可以所有的操作都在所述客户端设备中完成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备中完成,所述客户端设备还可以包括处理器。

上述的客户端设备可以具有通信模块(即通信单元),可以与远程的服务器进行通信连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通信链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。

所述服务器与所述客户端设备之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。所述网络协议例如可以包括tcp/ip协议、udp/ip协议、http协议、https协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的rpc协议(remoteprocedurecallprotocol,远程过程调用协议)、rest协议(representationalstatetransfer,表述性状态转移协议)等。

具体通过下述各个实施例进行说明。

图1是本申请一实施例提供的基于混沌实验的分布式系统测试方法的流程示意图,如图1所示,本申请实施例提供的基于混沌实验的分布式系统测试方法包含有:

步骤101:根据预获取的目标实验场景确定该目标实验场景对应的故障类型,以及根据所述目标实验场景确定目标分布式系统对应的至少一个目标程序。

具体地,实验场景为实验模拟的具体场景,实验靶点(即实验发生的组件)不同,实验场景也不同。一个实验场景包含有场景名称、场景所需参数和一些实验规则匹配器等。

举例来说,所述预获取的目标实验场景包含有:

cpu满载实验场景(流量调度实验场景):上游高并发下,扩容下游服务,在服务实例初始化时,cpu负载高,导致上游服务受影响;容错方案:当服务实例机器负载高时,自动切流到正常机器。cpu满载实验场景对应的故障类型为cpu满载故障类型。

服务延时实验场景(实例隔离场景):多次调用下游一个服务实例超时;容错方案:会隔离或者下线此服务实例,防止请求路由到此服务实例。服务延时实验场景对应的故障类型为服务延时故障类型。

iohang住实验场景(限流场景):下游服务因为iohang住,不提供服务;容错方案:隔离此下游服务,对请求进行限流操作。iohang住实验场景对应的故障类型为iohang住故障类型。

oraclejdk方法抛异常实验场景:程序内部方法调用异常;容错方案:捕获异常并处理异常。oraclejdk方法抛异常实验场景对应的故障类型为oraclejdk方法抛异常故障类型。

所有实验场景均存储在标准实验场景案例库中,所述标准实验场景案例库可以存储在基于混沌实验的分布式系统测试系统中,也可以存储在单独的一个服务器中。实验场景可根据实际情况进行设定,本申请对此不作限制。另外,可根据实际需要从标准实验场景案例库中获取对应的目标实验场景,本申请也对此不作限制。所述目标程序为待添加故障信息的程序,目标程序中添加故障信息后能够目标分布式系统中录入目标实验场景。

步骤102:基于所述故障类型在多个预设的混沌实验工具中择一作为对应的目标混沌实验工具。

所述预设的混沌实验工具包含有:chaosblade代理工具和自定义代理工具。

chaosblade代理工具是一种开源的代理工具,所述自定义代理工具是一种通过动态字节码实现的代理工具,名字可设为monkeyagent。这2种代理工具对应的故障类型可以不同,举例来说:chaosblade适用于cpu满载故障类型和服务延时故障类型等,自定义代理工具适用于iohang住故障类型和oraclejdk方法抛异常故障类型等。

在本申请一个实施例中,所述自定义代理工具用于将故障清单中无法被所述chaosblade代理工具执行的故障类型对应的故障信息添加至对应的目标程序,当然也可以用于将所述故障清单中能够被所述chaosblade代理工具执行的故障类型对应的故障信息添加至对应的目标程序,其中,所述故障清单中包含有预设的所述分布式系统对应的全部的试验场景下的故障类型。

如果当前故障类型是两种代理工具都能够去执行实现混沌实验的,那么可以同时间针对分布式系统的不同的实验场景下的这个故障类型,应用两个工具同时执行对应的混沌实验,以有效减少测试时间,节省测试效率。

步骤103:应用所述目标混沌实验工具,将所述目标实验场景下的故障类型对应的故障信息添加至所述目标程序。

具体地,所述故障信息为预设的一段代码,目标程序加入该代码后的能够使目标分布式系统处于目标实验场景下。所述预设的一段代码可根据实际需要进行设置,本申请对此不作限制。

步骤104:执行添加有所述故障信息后的目标程序,并根据对应的执行结果与预设的标准结果确定所述预获取的目标实验场景对应的实验结果。

具体地,所述预设的标准结果可根据实际需要进行设置,本申请对此不作限制。

本申请实施例提供的基于混沌实验的分布式系统测试方法,能够提高代理工具的灵活选择,增加分布式系统测试的准确性和高效性,进而提高分布式系统的高可用性。

在上述实施例的基础上,进一步地,为了提高应对分布式系统故障的预控能力和可视化程度,在本申请实施例提供的基于混沌实验的分布式系统测试方法中,在所述根据对应的执行结果与预设的标准结果确定所述预获取的目标实验场景对应的实验结果之后还包含有:

输出所述预获取的目标实验场景对应的实验结果并显示。

图2为本申请第二实施例提供的基于混沌实验的分布式系统测试方法的流程示意图,如图2所示,为了进一步节省内存空间,提高删除故障信息的灵活度和自动化程度,在上述各实施例的基础上,进一步地,在所述根据对应的执行结果与预设的标准结果确定所述预获取的目标实验场景对应的实验结果之后,还包含有:

步骤201:根据预获取的待删除实验场景确定该待删除实验场景对应的待删除故障类型,以及根据所述待删除实验场景确定目标分布式系统对应的至少一个待删除故障信息的程序。

具体地,所述预获取的待删除实验场景可根据实际需要进行设定,本申请对此不作限制。从目标分布式系统中的所有已执行的实验场景中选择至少一个实验场景作为所述预获取的待删除试验场景。

步骤202:基于所述待删除故障类型在多个所述预设的混沌实验工具中择一作为对应的待删除混沌实验工具。

步骤203:应用所述待删除混沌实验工具,删除所述待删除故障信息的程序中的所述待删除实验场景下的待删除故障类型对应的待删除故障信息。

在上述实施例的基础上,进一步地,为了在不修改程序功能逻辑的基础上提高分布式系统测试的实时性并降低分布式系统测试过程中代码的冗余,提高代码的性能,在本申请实施例提供的基于混沌实验的分布式系统测试方法中,所述应用所述目标混沌实验工具,将所述目标实验场景下的故障类型对应的故障信息添加至所述目标程序,包含有:

应用所述目标混沌实验工具和动态字节码技术修改所述目标程序的字节码。

图3为本申请第三实施例提供的基于混沌实验的分布式系统测试系统的结构示意图,从软件层面来说,如图3所示,为了提高分布式系统测试的准确性和高效性,进而提高分布式系统的高可用性,本申请提供一种用于实现上述基于混沌实验的分布式系统测试方法中全部或部分内容的基于混沌实验的分布式系统测试系统的实施例,本实施例提供的基于混沌实验的分布式系统测试系统包含有第一确定装置31、目标混沌工具确定装置32、添加故障信息装置33和执行装置34,其中:

第一确定装置31,用于根据预获取的目标实验场景确定该目标实验场景对应的故障类型,以及根据所述目标实验场景确定目标分布式系统对应的至少一个目标程序。

目标混沌工具确定装置32,用于基于所述故障类型在多个预设的混沌实验工具中择一作为对应的目标混沌实验工具。

添加故障信息装置33,用于应用所述目标混沌实验工具,将所述目标实验场景下的故障类型对应的故障信息添加至所述目标程序。

执行装置34,用于执行添加有所述故障信息后的目标程序,并根据对应的执行结果与预设的标准结果确定所述预获取的目标实验场景对应的实验结果。

所述预设的混沌实验工具包含有chaosblade代理工具和自定义代理工具。

在上述实施例的基础上,进一步地,在本申请实施例提供的基于混沌实验的分布式系统测试系统中还包含有:

输出装置,用于输出所述预获取的目标实验场景对应的实验结果并显示。

图4为本申请第四实施例提供的基于混沌实验的分布式系统测试系统的结构示意图,如图4所示,在上述各实施例的基础上,进一步地,所述基于混沌实验的分布式系统测试系统还包含有第二确定装置a41、获取待删除混沌实验工具装置a42和删除装置a43:

第二确定装置a41,用于根据预获取的待删除实验场景确定该待删除实验场景对应的待删除故障类型,以及根据所述待删除实验场景确定目标分布式系统对应的至少一个待删除故障信息的程序。

获取待删除混沌实验工具装置a42,用于基于所述待删除故障类型在多个所述预设的混沌实验工具中择一作为对应的待删除混沌实验工具。

删除装置a43,用于应用所述待删除混沌实验工具,删除所述待删除故障信息的程序中的所述待删除实验场景下的待删除故障类型对应的待删除故障信息。

在上述实施例的基础上,进一步地,在本申请实施例提供的基于混沌实验的分布式系统测试系统,所述添加故障信息装置包含有:

修改字节码模块,用于应用所述目标混沌实验工具和动态字节码技术修改所述目标程序的字节码。

为了进一步提高分布式系统测试的准确性和高效性,进而提高分布式系统的高可用性,本申请提供一种基于混沌实验的分布式系统测试系统的具体应用实例。

(一)基于混沌实验的分布式系统测试系统的具体应用实例

图5为本申请具体应用实例中基于混沌实验的分布式系统测试系统与被测系统连接的结构示意图,由图5可知,本申请通过混沌实验以及动态字节码技术实现一站式的混沌测试服务平台系统,即上述基于混沌实验的分布式系统测试系统,包含有控制管理装置1、发布装置2、控制处理装置3和代理装置4。具体地,所述基于混沌实验的分布式系统测试系统可以与被测系统在同一服务器中,也可以独立在一个或多个服务器中。

其中控制管理装置1接收用户录入的被测系统信息后与发布装置2进行交互,通过发布装置2将代理装置4安装到被测系统5。控制管理装置1接收到用户录入的实验场景后与控制处理装置3进行交互获取参数、规则和预期结果等数据并进行混沌实验场景的后台组装后,将控制命令传达给代理装置4,代理装置4根据控制命令执行混沌实验并将实验结果反馈给控制处理装置3,控制处理装置3将实验结果进行处理后传给控制管理装置1进行展示。具体包含有如下内容:

图6为控制管理装置的结构示意图,如图6所示,控制管理装置1:本装置实现信息配置单元11、实验场景单元12、实验预期单元13、实验结果单元14和自动化接口单元15功能。用户需要在信息配置单元11设置被测系统的基本环节信息供发布装置2调用;用户需在标准实验场景案例库中进行实验选择,图7为实验场景单元的结构示意图,如图7所示,实验场景单元包含有:入口服务混沌子单元120、下游服务混沌子单元121、应用进程混沌子单元122、消息服务混沌子单元123、数据缓存混沌子单元124、数据存储混沌子单元125和系统运维混沌子单元126。实验场景单元12根据分布式系统架构自动选择混沌测试服务场景进行故障注入将实验场景信息传递给控制处理装置3,并在实验结束后展示实验结果。用户第二种自动化调用混沌服务是通过自动化接口单元15,将混沌服务接入自动化案例达到自动化混沌实验的能力。

图8为发布装置的结构示意图,如图8所示,发布装置2:本装置实现组装下载单元21和组装启动单元22功能。发布装置2接到控制管理装置1传入的被测系统的ip地址后,将代理装置4发布到目前机器上进行安装和发布。

图9为控制处理装置的结构示意图,如图9所示,控制处理装置3:本装置实现介质选择单元31、组装推送单元32和计算结果单元33功能。主要是用于命令的分发、注入故障的状态记录、故障注入和解除操作的逻辑、权限校验,以及相关的代理装置4的返回信息接收处理功能。控制处理装置3会和部署在目标系统上的代理装置4进行通信,将命令推送到代理装置4上执行,代理装置4执行命令后返回的内容通过控制处理装置3和代理装置4的长连接传回控制处理装置3,控制管理装置会根据实验结果以及实验案例库进行对比运算后将实验结果返回控制管理装置1。

图10为代理装置的结构示意图,如图10所示,代理装置4:本装置实现启动单元41、chaosblade执行单元42、chaosblade推送单元43、自定义agent执行单元44和自定义agent推送单元45功能。代理装置4在被测试应用中与控制处理装置3进行实时交互,实现程序行为的控制。chaosblade执行单元是基于开源的混沌工程工具chaosblade实现对系统层的故障注入,负责对控制处理装置3进行交互,通过控制处理装置3传输的命令对被测系统进行混沌实验的具体操作,并通过chaosblade推送单元将实验结果传输给控制处理装置3。agent负责对目标系统做代理并且做字节码增强,具体代理的方法可以通过传输的命令来控制,代理方法后对方法做动态的字节码增强,这种字节码增强具有无侵入、实时生效、动态可插拔的特点。binder程序主要是通过发布装置4传递过来的被测系统的启动端口(serverport)找到目标系统的jvm进程,之后执行动态绑定,完成运行期代码增强的功能。

本模块agent基于动态字节码的attach技术实现jvm运行中启动,agent从控制处理装置3获取需要改变执行行为的程序清单,然后利用动态字节码的方式修改jvm中已加载的该程序的字节码,在程序的入口、返回前、出现异常时等特定位置注入大对象故障、报文超长故障、调用超时故障代码进行混沌实验。任何一个程序都可以抽象成程序入参、程序内部逻辑代码、返回参数3个部分。图11为注入故障信息后的目标程序示意图,参见表1,本系统向程序中注入的代码,在不改变程序功能逻辑的情况下注入了故障。

表1

(二)基于混沌实验的分布式系统测试方法的具体应用实例

图11为本申请具体应用实例中基于混沌实验的分布式系统测试方法的流程图,如图11所述,为了在不影响被测系统源码的情况下改变程序的可用性、输入值和返回值以制造jvm层混沌,提高分布式系统测试的准确性和高效性,进而提高分布式系统的高可用程度,结合上述混沌实验的分布式系统测试装置的具体应用实例,本申请提供一种基于混沌实验的分布式系统测试方法具体应用实例,具体包含有如下内容:

阶段s1:实验环境准备阶段。

该阶段中实现代理装置4的发布和启动操作,具体如下:

步骤s101:启动被测系统。

具体地,可以是测试人员启动被测试的应用系统,也可以是基于混沌实验的分布式系统测试系统接收启动指令,启动被测试的应用系统。

步骤s102:配置系统信息。

具体地,在控制管理装置1中输入被测系统ip以及jvm启动端口,并将配置信息发送给发布装置2。

步骤s103:组装下载命令。

具体地,在组装下载命令后还包含有组装启动命令;也就是说,发布装置2将代理装置部署到目标系统。

步骤s103之后执行,步骤s104或步骤s105。

步骤s104:chaosblade方式启动。

步骤s105:自定义agent方式启动。

也就是说,代理装置启动。

阶段s2:实验执行阶段。

该阶段中测试人员在控制管理装置选择实验场景以及实验预期,这些信息通过控制处理装置实时推送到代理装置中进行实验并得出结果,具体如下:

步骤s201:配置实验场景。

具体地,可以是测试人员在控制管理装置中选择实验场景;也可以是基于混沌实验的分布式系统测试系统接收配置指令确定对应的实验场景。

步骤s202:配置实验预期。

具体地,在步骤s201执行后,控制管理装置会提示测试人员选择实验预期;控制管理模块接收实验预期配置指令确定对应的实验预期。

步骤s203:判断选择chaosblade或自定义agent。

具体地,所述自定义agent即上述自定义代理工具。

也就是说,在步骤s202执行后,控制处理装置会收到推送信息并在程序中选择实验介质。所述实验介质即待注入故障信息的程序。

若选择chaosblade,则执行步骤s204至s206。

步骤s204:推送chaosblade命令和混沌运行介质清单。

具体地,所述混沌运行介质清单为所述待注入故障信息的程序的总和。

步骤s205:执行chaosblade命令。

也就是说,代理装置接收到实验命令后进行实验命令的执行。

步骤s206:推送chaosblade执行结果。

也就是说,代理装置将实验结果推送给控制处理装置。

若选择自定义agent,则执行步骤s207至s211。

步骤s207:推送自定义agent命令和混沌运行介质清单。

步骤s208:自定义agent执行程序。

步骤s209:将动态字节码注入到程序。

步骤s210:修改程序,制造混沌实验场景。

步骤s211:推送自定义agent执行结果。

在步骤s206或步骤s211之后执行步骤s212:

步骤s212:对比实验预期计算实验结果。

具体地,控制处理装置通过实验结果和预期结果以及标准案例库的数据进行对比运算后,将实验结果返回给控制管理装置。

步骤s213:展示实验结果。

具体地,控制管理装置将实验结果进行展示。

阶段s3:实验销毁阶段,该阶段中测试人员在实验结束后,希望系统恢复到实验前的状态的阶段。具体如下:

步骤s301:配置销毁实验场景。

具体地,可以是测试人员在控制管理装置中选择需要销毁的实验场景,也可以是,基于混沌实验的分布式系统测试系统接收销毁配置指令确定对应的需要销毁的实验场景。

步骤s302:判断选择chaosblade或自定义agent。

也就是说,控制处理装置会收到推送信息并在程序中选择销毁的实验。

若选择chaosblade,则执行步骤s303至s304。

步骤s303:推送chaosblade命令和混沌运行介质清单。

步骤s304:执行chaosblade销毁命令。

若选择自定义agent,则执行步骤s305至s306。

步骤s305:推送自定义agent命令和混沌运行介质清单。

步骤s306:执行自定义agent销毁命令。

代理装置接收到销毁命令后进行销毁动作。

从上述描述可知,本申请提供的基于混沌实验的分布式系统测试方法及系统,利用混沌工程技术并结合动态字节码技术实现了分布式系统的高可用混沌测试服务且在不影响被测系统源码的情况下改变程序的可用性、输入值、返回值制造jvm层混沌,解决分布式系统的高可用领域无系统性、自动化守护技术痛点。

从硬件层面来说,为了提高分布式系统测试的准确性和高效性,进而提高分布式系统的高可用性,本申请提供一种用于实现所述基于混沌实验的分布式系统测试方法中的全部或部分内容的电子设备的实施例所述电子设备具体包含有如下内容:

处理器(processor)、存储器(memory)、通信接口(communicationsinterface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现所述基于混沌实验的分布式系统测试系统以及用户终端等相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例用于实现所述基于混沌实验的分布式系统测试方法的实施例及用于实现所述基于混沌实验的分布式系统测试系统的实施例进行实施,其内容被合并于此,重复之处不再赘述。

图12为本申请实施例的电子设备9600的系统构成的示意框图。如图12所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图12是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。

在本申请一个或多个实施例中,基于混沌实验的分布式系统测试功能可以被集成到中央处理器9100中。其中,中央处理器9100可以被配置为进行如下控制:

步骤101:根据预获取的目标实验场景确定该目标实验场景对应的故障类型,以及根据所述目标实验场景确定目标分布式系统对应的至少一个目标程序。

步骤102:基于所述故障类型在多个预设的混沌实验工具中择一作为对应的目标混沌实验工具。

步骤103:应用所述目标混沌实验工具,将所述目标实验场景下的故障类型对应的故障信息添加至所述目标程序。

步骤104:执行添加有所述故障信息后的目标程序,并根据对应的执行结果与预设的标准结果确定所述预获取的目标实验场景对应的实验结果。

从上述描述可知,本申请的实施例提供的电子设备,能够提高分布式系统测试的准确性和高效性,进而提高分布式系统的高可用性。

在另一个实施方式中,基于混沌实验的分布式系统测试系统可以与中央处理器9100分开配置,例如可以将基于混沌实验的分布式系统测试系统配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现基于混沌实验的分布式系统测试功能。

如图12所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图12中所示的所有部件;此外,电子设备9600还可以包括图12中没有示出的部件,可以参考现有技术。

如图12所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。

其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。

输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为lcd显示器,但并不限于此。

该存储器9140可以是固态存储器,例如,只读存储器(rom)、随机存取存储器(ram)、sim卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为eprom等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。

存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。

通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。

基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。

上述描述可知,本申请的实施例提供的电子设备,提高分布式系统测试的准确性和高效性,进而提高分布式系统的高可用性。

本申请的实施例还提供能够实现上述实施例中的基于混沌实验的分布式系统测试方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的基于混沌实验的分布式系统测试方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:

步骤101:根据预获取的目标实验场景确定该目标实验场景对应的故障类型,以及根据所述目标实验场景确定目标分布式系统对应的至少一个目标程序。

步骤102:基于所述故障类型在多个预设的混沌实验工具中择一作为对应的目标混沌实验工具。

步骤103:应用所述目标混沌实验工具,将所述目标实验场景下的故障类型对应的故障信息添加至所述目标程序。

步骤104:执行添加有所述故障信息后的目标程序,并根据对应的执行结果与预设的标准结果确定所述预获取的目标实验场景对应的实验结果。

从上述描述可知,本申请实施例提供的计算机可读存储介质,能够提高分布式系统测试的准确性和高效性,进而提高分布式系统的高可用性。

本申请中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参见方法实施例的部分说明即可。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本申请中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1