基于动态代理的故障模拟方法、装置、设备及可读存储介质制造方法及图纸

技术编号:19702556 阅读:24 留言:0更新日期:2018-12-08 14:15
本发明专利技术公开了一种基于动态代理的故障模拟方法,包括:接收用户进行故障模拟的服务请求;通过查找服务代理注册表判断服务请求中服务是否被注册代理;其中,服务代理注册表中存储有被代理服务、故障注入代码以及代理对象的映射关系;如果是,根据服务代理注册表中存储的映射关系以及服务请求对被代理服务以及故障注入代码进行配置,生成代理对象;调用代理对象进行故障模拟。该方法可以实现在系统运行时进行系统故障注入,同时保障系统的安全性;本发明专利技术还公开了一种基于动态代理的故障模拟装置、设备及可读存储介质。

【技术实现步骤摘要】
基于动态代理的故障模拟方法、装置、设备及可读存储介质
本专利技术涉及系统管理领域,特别涉及一种基于动态代理的故障模拟方法、装置、设备及可读存储介质。
技术介绍
随着软件部署规模的扩大,系统的功能的细化,系统间耦合度和链路复杂度不断加强,在软件测试工作中,经常需要模拟故障来测试系统的稳定性。目前模拟故障主要通过对系统执行违规操作或添加程序断点来模拟故障。其中,违规操作虽然可以触发系统故障,但是触发的故障的精确度难以把控,容易对系统造成不可挽回的损害,而且并不是所有的故障都可以通过一些违规操作触发;通过添加程序断点的方式可以精确的模拟故障,并且不会对系统造成损害,但是添加断点必须在开发环境中进行,必须有未编译的源码,在实际已经部署运行的系统或无法直接获取未编译的源码情况下均不能实现,局限性较强,而目前对软件的故障模拟大多数是基于部署完成的实际应用的软件,这种方法则不能实现。因此,如何实现在系统运行时进行系统故障注入,同时保障系统的安全性,是本领域技术人员需要解决的技术问题。
技术实现思路
本专利技术的目的是提供一种基于动态代理的故障模拟方法,该方法通过在系统上创建动态代理,基于动态代理进行故障注入,可以实现在不改变原有的系统结构的前提下精准可控地进行故障模拟;本专利技术的另一目的是提供一种基于动态代理的故障模拟装置、设备及可读存储介质。为解决上述技术问题,本专利技术提供一种基于动态代理的故障模拟方法,包括:接收用户进行故障模拟的服务请求;通过查找服务代理注册表判断所述服务请求中服务是否被注册代理;其中,所述服务代理注册表中存储有被代理服务、故障注入代码以及代理对象的映射关系;如果是,根据所述服务代理注册表中存储的映射关系以及所述服务请求对被代理服务以及故障注入代码进行配置,生成代理对象;调用所述代理对象进行故障模拟。优选地,所述根据所述服务代理注册表中存储的映射关系以及所述服务请求对被代理服务以及故障注入代码进行配置包括:生成所述服务请求对应的被代理服务;通过服务代理注册表和故障注入模块中定义的脚本将故障注入所述被代理的服务中的预设监测点。优选地,所述生成所述服务请求对应的被代理服务包括:通过Java的反射机制远程调用原有的服务接口,得到被代理服务。优选地,所述基于动态代理的故障模拟方法还包括:当所述服务请求中服务未被注册代理时,配置所述服务请求中的服务。优选地,所述基于动态代理的故障模拟方法还包括:统计用户的服务请求以及对应的故障模拟结果,得到故障记录信息。本专利技术公开一种基于动态代理的故障模拟装置,包括:服务请求接收单元,用于接收用户进行故障模拟的服务请求;判断单元,用于通过查找服务代理注册表判断所述服务请求中服务是否被注册代理;其中,所述服务代理注册表中存储有被代理服务、故障注入代码以及代理对象的映射关系;代理对象配置单元,用于如果所述服务请求中服务被注册代理,根据所述服务代理注册表中存储的映射关系以及所述服务请求对被代理服务以及故障注入代码进行配置,生成代理对象;模拟单元,用于调用所述代理对象进行故障模拟。优选地,所述代理配置单元包括:代理服务生成子单元,用于生成所述服务请求对应的被代理服务;故障注入子单元,用于通过服务代理注册表和故障注入模块中定义的脚本将故障注入所述被代理的服务中的预设监测点。优选地,所述代理服务生成子单元用于:通过Java的反射机制远程调用原有的服务接口,得到被代理服务。本专利技术公开一种基于动态代理的故障模拟设备,包括:存储器,用于存储程序;处理器,用于执行所述程序时实现所述基于动态代理的故障模拟方法的步骤。本专利技术公开一种可读存储介质,所述可读存储介质上存储有程序,所述程序被处理器执行时实现所述基于动态代理的故障模拟方法的步骤。本专利技术所提供的基于动态代理的故障模拟方法,接收用户进行故障模拟的服务请求,服务请求比如删除失败、创建中止等,服务请求中服务指删除、创建等。服务代理注册表中存储有被代理服务、故障注入代码以及代理对象的映射关系,根据服务代理注册表判断服务请求中服务是否被注册代理,如果是,根据服务代理注册表中存储的映射关系以及服务请求对被代理服务以及故障注入代码进行配置,生成代理对象,代理对象是继承原有的服务逻辑注入自定义的故障代码的脚本,适用于已经部署运行的环境中,不会对已有系统做出任何改变,具有很高的安全性,调用代理对象进行故障模拟可以实现在运行时精确地进行系统故障注入,同时保障系统的安全性。本专利技术还公开了一种基于动态代理的故障模拟装置、设备及一种可读存储介质,具有上述有益效果,在此不再赘述。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本专利技术实施例提供的基于动态代理的故障模拟方法的流程图;图2为本专利技术实施例提供的基于动态代理的故障模拟装置的结构框图;图3为本专利技术实施例提供的基于动态代理的故障模拟装置的示意图;图4为本专利技术实施例提供的基于动态代理的故障模拟设备的结构框图;图5为本专利技术实施例提供的基于动态代理的故障模拟设备的结构示意图。具体实施方式本专利技术的核心是提供一种基于动态代理的故障模拟方法,该方法实现在系统运行时精确地进行系统故障注入,同时保障系统的安全性;本专利技术的另一核心是提供一种基于动态代理的故障模拟装置、设备及可读存储介质。为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。代理(Proxy)提供了对目标对象另外的访问方式,即通过代理对象访问目标对象,可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。动态代理是在程序运行时,运用反射机制动态创建而成的代理服务。本专利技术将动态代理引入系统的故障模拟,通过在原有系统结构的情况下生成代理服务,无需获知源代码,只需进行相应服务接口的调用即可生成与原服务功能服务相同的在代理服务,在代理服务中注入故障代码,在故障注入以及故障运行中均不会对已有系统做出任何改变,从而保证了系统的安全性。另外,进行故障注入时是基于服务逻辑,故障注入高效并且精确可控。本专利技术提出了一种基于动态代理的故障模拟方法,请参考图1,图1为本实施例提供的基于动态代理的故障模拟方法的流程图;该方法可以包括:步骤s100、接收用户进行故障模拟的服务请求。用户的服务请求比如“删除失败”、“文件读取错误”、“数据访问中断”等,其中的“删除”、“文件读取”以及“数据访问”即为服务请求中的服务。步骤s110、通过查找服务代理注册表判断服务请求中服务是否被注册代理;其中,服务代理注册表中存储有被代理服务、故障注入代码以及代理对象的映射关系。注册表中存储的只是映射关系,而并不存储具体的代码,通过查找注册表可以对与其相关的服务、代码以及代理服务等进行搜索,引用调取还需要查找相关存储单元。当然,在保证查找本文档来自技高网...

【技术保护点】
1.一种基于动态代理的故障模拟方法,其特征在于,包括:接收用户进行故障模拟的服务请求;通过查找服务代理注册表判断所述服务请求中服务是否被注册代理;其中,所述服务代理注册表中存储有被代理服务、故障注入代码以及代理对象的映射关系;如果是,根据所述服务代理注册表中存储的映射关系以及所述服务请求对被代理服务以及故障注入代码进行配置,生成代理对象;调用所述代理对象进行故障模拟。

【技术特征摘要】
1.一种基于动态代理的故障模拟方法,其特征在于,包括:接收用户进行故障模拟的服务请求;通过查找服务代理注册表判断所述服务请求中服务是否被注册代理;其中,所述服务代理注册表中存储有被代理服务、故障注入代码以及代理对象的映射关系;如果是,根据所述服务代理注册表中存储的映射关系以及所述服务请求对被代理服务以及故障注入代码进行配置,生成代理对象;调用所述代理对象进行故障模拟。2.如权利要求1所述的基于动态代理的故障模拟方法,其特征在于,所述根据所述服务代理注册表中存储的映射关系以及所述服务请求对被代理服务以及故障注入代码进行配置包括:生成所述服务请求对应的被代理服务;通过服务代理注册表和故障注入模块中定义的脚本将故障注入所述被代理的服务中的预设监测点。3.如权利要求2所述的基于动态代理的故障模拟方法,其特征在于,所述生成所述服务请求对应的被代理服务包括:通过Java的反射机制远程调用原有的服务接口,得到被代理服务。4.如权利要求1所述的基于动态代理的故障模拟方法,其特征在于,还包括:当所述服务请求中服务未被注册代理时,配置所述服务请求中的服务。5.如权利要求1所述的基于动态代理的故障模拟方法,其特征在于,还包括:统计用户的服务请求以及对应的故障模拟结果,得到故障记录信息。6.一种基于动态代理的故障模拟装置,其特征在于,包括...

【专利技术属性】
技术研发人员:殷武烁袁鹏飞
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1