一种幂等有效性检测方法、装置及设备
本申请涉及计算机数据处理技术领域,尤其涉及一种幂等有效性检测方法、装置及设备。
背景技术
应用程序在运行过程中,经常会遇到重复提交某一业务请求的情况,例如,在因网络故障等问题导致用户无法收到业务请求响应结果时,用户重新发起该业务请求而导致的重复提交的情况,或者,因前端抖动而造成的重复提交的情况。为保证应用程序的正常运行,通常需保证对用于请求某资源的业务请求执行一次或者多次请求时,对该业务请求所请求的资源产生的影响是相同的,即需保证应用程序具有幂等性。目前,在对应用程序的幂等有效性进行检测时,通常需先通过人工分析,确定出一个待测业务接口,然后将该待测业务接口已接收且已响应过的业务请求,再次发送至该待测业务接口,并接收该待测业务接口再次反馈的响应结果,通过人工分析、理解再次反馈的响应结果所表达的内容,以识别该待测业务接口是否具有幂等性,检测效率较低。
基于此,需要提供运行效率较高的幂等有效性检测方案。
发明内容
有鉴于此,本申请实施例提供了一种幂等有效性检测方法、装置及设备,用于解决需要提供运行效率较高的幂等有效性检测方案的问题。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种幂等有效性检测方法,包括:
获取已发送的业务请求;所述已发送的业务请求是第一应用程序已发送至第二应用程序的待测业务接口的业务请求,并且针对所述已发送的业务请求,所述待测业务接口已反馈第一响应结果;
将所述已发送的业务请求,再次发送至所述待测业务接口,直至发送次数达到预设阈值,所述预设阈值大于等于2;
获取所述待测业务接口反馈的各个第二响应结果,所述第二响应结果是所述第二应用程序响应于再次发送的所述已发送的业务请求而生成的响应结果;
判断所述各个第二响应结果是否一致,得到第一判断结果;
根据所述第一判断结果,确定所述待测业务接口的幂等有效性。
本说明书实施例提供的一种幂等有效性检测装置,包括:
第一获取模块,用于获取已发送的业务请求;所述已发送的业务请求是第一应用程序已发送至第二应用程序的待测业务接口的业务请求,并且针对所述已发送的业务请求,所述待测业务接口已反馈第一响应结果;
业务请求发送模块,用于将所述已发送的业务请求,再次发送至所述待测业务接口,直至发送次数达到预设阈值,所述预设阈值大于等于2;
第二获取模块,用于获取所述待测业务接口反馈的各个第二响应结果,所述第二响应结果是所述第二应用程序响应于再次发送的所述已发送的业务请求而生成的响应结果;
第一判断模块,用于判断所述各个第二响应结果是否一致,得到第一判断结果;
幂等有效性确定模块,用于根据所述第一判断结果,确定所述待测业务接口的幂等有效性。
本说明书实施例提供的一种幂等有效性检测设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取已发送的业务请求;所述已发送的业务请求是第一应用程序已发送至第二应用程序的待测业务接口的业务请求,并且针对所述已发送的业务请求,所述待测业务接口已反馈第一响应结果;
将所述已发送的业务请求,再次发送至所述待测业务接口,直至发送次数达到预设阈值,所述预设阈值大于等于2;
获取所述待测业务接口反馈的各个第二响应结果,所述第二响应结果是所述第二应用程序响应于再次发送的所述已发送的业务请求而生成的响应结果;
判断所述各个第二响应结果是否一致,得到第一判断结果;
根据所述第一判断结果,确定所述待测业务接口的幂等有效性。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
获取已发送的业务请求,该已发送的业务请求是待测业务接口已接收且已反馈第一响应结果的业务请求;将该已发送的业务请求再次发送至待测业务接口,直至发送次数达到预设阈值;判断该待测业务接口反馈的与各个再次发送的所述已发送的业务请求所对应的各个第二响应结果是否一致,根据判断结果,确定该待测业务接口的幂等有效性。无需人工干预检测过程,可提高幂等有效性检测效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例一提供的一种幂等有效性检测方法的流程示意图;
图2为本说明书实施例二提供的一种准确性较高的幂等有效性检测方式的流程示意图;
图3为本说明书实施例三提供的对应于图1中方法的一种幂等有效性检测装置的结构示意图;
图4为本说明书实施例四提供的一种幂等有效性检测设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
在描述本发明之前,首先就本发明涉及的概念做简要说明。
幂等性(即等幂性):是指(除了出错或终止问题)执行单次或多次相同请求(Request)的效果是一样的,即对某个资源本身执行的多个相同请求所产生的影响与仅执行一次对该资源本身的请求所产生的影响相同。
接口(Interface):即面向对象编程语言中的接口,是指能够完成特定功能的,由若干属性和方法组织成的,相对独立的属性和方法的集合。
接口录制及回放:其中,录制是指对数据链路中请求操作行为进行记录;回放是指将一个接口已经接收过的请求消息再次发送至该接口一次。
业务熔断:即对目标业务熔断后,在后续接收到调用该目标业务的请求时,不再继续调用该目标业务,而是直接返回目标业务调用失败信息,快速释放资源。
如背景部分所述,目前在对应用程序的幂等有效性进行检测时,可以基于工作人员的人工操作及对响应结果的人工分析而实现。例如,在支付场景中,若需检测计费/收费应用软件(后续简称为“计收费应用软件”)中收费接口的幂等有效性,需工作人员从计收费应用软件的历史消息中,提取一条该收费接口已接收且已处理成功的付款请求,并对该付款请求进行回放,若该收费接口反馈的与回放的付款请求相对应的响应结果表示该计收费应用软件仅对用户账户扣款一次,则该收费接口具有幂等性。这种基于人工操作、分析的幂等有效性检测方法,不仅检测效率较低,且由于不同工作人员对于同一响应结果的理解的不同,或者由于工作人员工作疏忽、失误等因素,容易对待测业务接口的幂等有效性做出误判,影响检测结果的准确性。
针对这种问题,发明人注意到,在对某业务接口已接收且已响应过的业务请求进行多次回放时,若该业务接口具有幂等性,则该业务接口针对各个回放的业务请求而反馈的各个响应结果是一致的。通过数字化比对检测方法可以对各个响应结果进行比对,得到关于各个响应结果是否一致的比对结果,这种方法运行效率较高,其为提高检测方法的检测效率提供了实现基础。
有鉴于此,本发明提出,在检测待测业务接口的幂等有效性时,可以将该待测业务接口已接收且已反馈响应结果的业务请求,发送至该待测业务接口多次,通过判断该待测业务接口反馈的与各个再次发送的业务请求所对应的各个响应结果是否一致,以确定该待测业务接口的幂等有效性。无需人工干预检测过程,可提高幂等有效性检测效率。
至此就本发明涉及的概念及本发明实施例的基本原理做了简要说明,下面结合图1至图4就本发明的具体实现过程做进一步详细说明。
图1为本说明书实施例一提供的一种幂等有效性检测方法的流程示意图。从程序角度而言,流程的执行主体可以是搭载于服务器上的具有幂等有效性检测功能的检测应用程序。该方法可以应用于需对待测业务接口进行幂等有效性检测的场景,其中待测业务接口包括但不限于支持超文本传输协议(即HTTP)调用业务的接口、支持tr调用业务的接口或支持消息(即Message)调用业务的接口。如图1所示,该流程可以包括以下步骤:
步骤101:获取已发送的业务请求;所述已发送的业务请求是第一应用程序已发送至第二应用程序的待测业务接口的业务请求,并且针对所述已发送的业务请求,所述待测业务接口已反馈第一响应结果。
在本说明书实施例中,假定,第二应用程序是具有待测业务接口的应用程序。第一应用程序是用于生成所述已发送的业务请求的应用程序。第一应用程序可以将所述已发送的业务请求发送至第二应用程序的待测业务接口,具有幂等有效性检测功能的检测应用程序可以从第二应用程序处获取所述已发送的业务请求。具体的,所述检测应用程序可以获取所述已发送的业务请求所对应的全部请求参数,以便于再次发送所述已发送的业务请求。
在实际应用中,所述检测应用程序可以先获取待测业务接口已接收但未响应的业务请求,并等待所述待测业务接口将响应于该已接收但未响应的业务请求而生成的第一响应结果反馈出去,此时,该已接收但未响应的业务请求即为所述已发送的业务请求。其中,所述第一响应结果可以为表示该已接收但未响应的业务请求被处理成功的信息。
步骤102:将所述已发送的业务请求,再次发送至所述待测业务接口,直至发送次数达到预设阈值,所述预设阈值大于等于2。
步骤103:获取所述待测业务接口反馈的各个第二响应结果,所述第二响应结果是所述第二应用程序响应于再次发送的所述已发送的业务请求而生成的响应结果。
步骤104:判断所述各个第二响应结果是否一致,得到第一判断结果。
步骤105:根据所述第一判断结果,确定所述待测业务接口的幂等有效性。
在本说明书实施例中,若第二应用程序的待测业务接口具有幂等性,则各个第二响应结果应该是一致的,因此,可以根据第一判断结果,得到对待测业务接口的幂等有效性检测结果。所述根据所述第一判断结果,确定所述待测业务接口的幂等有效性,具体可以包括:当所述第一判断结果表示所述各个第二响应结果一致时,确定所述待测业务接口具有幂等性;当所述第一判断结果表示所述各个第二响应结果不一致时,确定所述待测业务接口不具有幂等性。
在本说明书实施例一中,已发送的业务请求是指待测业务接口已接收且已反馈第一响应结果的业务请求,通过多次将该已发送的业务请求发送至待测业务接口;判断该待测业务接口反馈的与各个再次发送的所述已发送的业务请求所对应的各个第二响应结果是否一致,以根据判断结果,确定该待测业务接口的幂等有效性。无需人工干预检测过程,可提高幂等有效性检测效率。
基于图1中的方法,在本说明书中还提供了该方法的一些具体实现方式,为便于描述,下文以该方法应用于需对记收费应用程序中的收费接口进行幂等有效性检测的场景为例,对该方法的具体实现方式进行介绍。可以理解,使用该方法生成针对记收费应用程序中收费接口的幂等有效性检测结果只是一种示例性的说明,并不应理解为对该方法的限定。
在本说明书实施例的一种实现方式中,提供了一种获取已发送的业务请求的方式。本实现方式可以基于接口录制技术实现。
具体的,所述获取已发送的业务请求,可以包括:录制第二应用程序的待测业务接口的数据,得到录制文件;根据所述录制文件,确定已发送的业务请求。
在本说明书实施例一的实现方式中,具有幂等有效性检测功能的检测应用程序具有对接口传输的数据进行录制及回放的功能。具体的,该检测应用程序可以录制第二应用程序的待测业务接口在一段时间内传输的数据,得到录制文件,所述录制文件包括该待测业务接口在一段时间内接收到的业务请求信息及该待测业务接口反馈的响应结果信息。
在实际应用中,可以从所述录制文件中确定出一个已接收且已反馈响应结果的业务请求作为所述已发送的业务请求。例如,假定,在检测应用程序对计收费软件的收费接口进行录制时,用户使用支付应用软件的客户端进行付款,对应的,支付应用软件向计收费软件的收费接口发送一个用于指示从该用户的支付账户余额中扣除10元钱的付款请求,该付款请求被处理成功,计收费软件通过收费接口将第一响应结果反馈至支付应用软件。基于该应用场景,得到的录制文件中可以包含用于指示从该用户的支付账户余额中扣除10元钱的付款请求的全部请求参数,及针对该付款请求生成的包含付款单号及付款成功标识的第一响应结果信息。此时,根据所述录制文件,可以将用于指示从用户的支付账户余额中扣除10元钱的付款请求确定为已发送的业务请求。
相应的,在本说明书实施例中还提供了一种再次发送所述已发送的业务请求至待测业务接口的实现方式。本实现方式可以基于接口回放技术实现。
具体的,所述将所述已发送的业务请求,再次发送至所述待测业务接口,直至发送次数达到预设阈值,可以包括:对所述已发送的业务请求进行回放,直至回放次数等于预设阈值。
在本说明书实施例一的实现方式中,可以从录制文件中确定出已发送的业务请求的全部请求参数,以基于所述全部请求参数对所述已发送的业务请求进行回放,从而将所述已发送的业务请求再次发送至待测业务接口。具体的,可以对所述已发送的业务请求进行回放;每对所述已发送的业务请求回放一次,则对回放次数加1,判断所述回放次数是否等于预设阈值,若否,则继续对所述已发送的业务请求进行回放,直至回放次数等于预设阈值。
在实际应用中,可以根据实际需求设置预设阈值。具体的,预设阈值越小,则检测效率越高。而适当增大预设阈值,可以相应增大获得的第二响应结果的个数,基于数量较大的第二响应结果确定出的检测结果的可信度也较高。
在本说明书实施例一的上述实现方式中,提供了基于对接口的录制及回放技术,获取已发送的业务请求及多次发送所述已发送的业务请求至待测业务接口的方式,该方式通用性好,且无需人工操作,即可实现对已发送的业务请求的多次回放,可提高幂等有效性检测方法的运行效率。
在实际应用中,由于需保证待测业务接口具有幂等性,以确保该待测业务接口所提供业务的正常进行。当待测业务接口不具有幂等性时,需采取措施降低因待测业务接口不具有幂等性而产生的风险及影响。目前,通常需基于工作人员的经验对存在运行风险的业务接口进行处理,这种风险处理方案效率较低,且由于需基于操作者的处理经验实现,导致风险处理方案的一致性及有效性较低。因此,本说明书中提供了多种对不具有幂等性的待测业务接口进行管控的实现方式,以提高风险管控方式的运行效率。其中,一种实现方式是:直接生成用于指示停用待测业务接口的指令;另一种实现方式可以是:进行报警以通过其他应用程序控制停用待测业务接口。
在上述第一种实现方式中,在所述第一判断结果表示所述各个第二响应结果不一致,确定所述待测业务接口不具有幂等性之后,还可以包括:
生成管控指令,所述管控指令可以用于指示停用预设业务接口,所述预设业务接口包括所述待测业务接口或与所述待测业务接口相关的业务接口。
在上述第二种实现方式中,在所述第一判断结果表示所述各个第二响应结果不一致,确定所述待测业务接口不具有幂等性之后,还可以包括:
生成第一报警信息,所述第一报警信息可以用于指示所述待测业务接口不具有幂等性。
向应急管控服务器发送所述第一报警信息,以便于所述应急管控服务器根据所述第一报警信息生成管控指令,所述管控指令可以用于指示停用预设业务接口,所述预设业务接口包括所述待测业务接口或与所述待测业务接口相关的业务接口。
在上述两种实现方式中,所述停用预设业务接口意为:所述预设业务接口在后续接收到业务请求时,不再调用后续接收的业务请求所请求的业务。与所述待测业务接口相关的业务接口可以为与所述待测业务接口所提供的业务相关的业务接口。例如,当待测业务接口为计收费软件的收费接口时,该收费接口提供收费业务,与该收费业务相关的业务接口还可以包括各个银行的扣款接口。
针对上述两种实现方式,在采用第一种实现方式时,通过令检测应用程序自行生成用于指示停用待测业务接口的指令,以控制停用不具有幂等性的待测业务接口和/或与所述待测业务接口相关的业务接口,控制方法简单,且实效性好。在采用第二中实现方式时,检测应用程序对不具有幂等性的业务接口进行报警,以通过其他应用程序控制停用该待测业务接口和/或与该待测业务接口相关的业务接口,可减少检测应用程序的复杂度,便于检测应用程序的开发及维护。
针对上述两种实现方式中的管控指令可以对应于多种管控方式。一种是,所述管控指令具体可以用于指示熔断所述预设业务接口所提供的业务。另一种是,所述管控指令具体可以用于指示暂缓处理所述预设业务接口已接收但未响应的业务请求。
其中,熔断所述预设业务接口所提供的业务意为,所述预设业务接口在接收到后续的业务请求时,可以不再调用后续的业务请求所请求的资源,而是直接返回请求失败信息。暂缓处理所述预设业务接口已接收但未响应的业务请求意为,所述预设业务接口在接收到后续的业务请求时,可以对后续接收的业务请求进行缓存,并在接收到允许处理缓存中的业务请求后,再对缓存的业务请求进行处理,从而实现对所述预设业务接口已接收但未响应的业务请求的暂缓处理。
在实际应用中,所述管控指令可以用于指示对全部预设业务接口执行相同的管控方式,所述管控指令也可以用于指示对不同的预设业务接口执行不同的管控方式。具体的,可以根据实际需求确定管控指令对各个预设业务接口的管控方式。例如,可以根据各个预设业务接口的响应等级,确定管控指令的管控方式。例如,假定,响应等级越小的预设业务接口对应的所允许的响应最大时长越小。若响应等级为一级的预设业务接口所允许的最大响应时长为1秒,响应等级为二级的预设业务接口所允许的最大响应时长为2分钟。为确保在允许的响应时限内,对不具有幂等性的响应等级为一级的待测业务接口接收到的业务请求进行响应,且不继续处理所述接收到的业务请求,可以令管控指令指示熔断该待测业务接口所提供的业务;此时,该管控指令还可用于指示熔断其他响应等级为二级的预设业务接口,或者,该管控指令还可用于指示暂缓处理其他响应等级为二级的预设业务接口。
在上述实现方式中,提供了管控指令的多种管控方式,通过熔断预设业务接口所提供的业务,可以令预设业务接口在不处理后续接收的业务请求的情况下,迅速反馈响应信息,既可以降低因待测业务接口不具有幂等性而导致的风险,又可以迅速释放资源,避免导致预设业务接口所在应用系统的资源耗尽问题,同时,还可以降低用户对应响应结果的等待时间,提高了用户体验。通过暂缓处理所述预设业务接口已接收但未响应的业务请求,并在后续条件允许时,对暂缓处理的业务请求进行响应,可以降低业务请求失败率,保证业务运行平稳性,及用户对预设业务接口所在应用的运行稳定性的评价。
在实际应用中,由于网络抖动等因素,可能导致待测业务接口对再次发送的所述已发送的业务请求响应异常,此时,待测业务接口反馈的第二响应结果并不能用于判断该待测业务接口的幂等性。若不对因网络抖动等因素生成的表示响应异常的第二响应结果进行区分,则会影响幂等有效性检测结果的准确性。因此,本说明书实施例二中还提出了一种准确性较高的幂等有效性检测方式,如图2所示,该方式包括如下步骤:
步骤201:获取已发送的业务请求;所述已发送的业务请求是第一应用程序已发送至第二应用程序的待测业务接口的业务请求,并且针对所述已发送的业务请求,所述待测业务接口已反馈第一响应结果。
步骤202:将所述已发送的业务请求,再次发送至所述待测业务接口,直至发送次数达到预设阈值,所述预设阈值大于等于2。
步骤203:获取所述待测业务接口反馈的各个第二响应结果,所述第二响应结果是所述第二应用程序响应于再次发送的所述已发送的业务请求而生成的响应结果。
步骤204:确定所述各个第二响应结果的结果类型;所述结果类型包括:业务请求处理成功类型、业务请求处理失败类型或业务请求处理异常类型中的至少一种。
步骤205:判断结果类型为业务请求处理异常类型的第二响应结果的个数是否为零,得到第二判断结果。
步骤206:当所述第二判断结果表示结果类型为业务请求处理异常类型的第二响应结果的个数为零时,判断所述各个第二响应结果是否一致,得到第一判断结果。当所述第一判断结果表示所述各个第二响应结果一致时,跳转至步骤步骤208;当所述第一判断结果表示所述各个第二响应结果不一致时,跳转至步骤209。
步骤207:当所述第二判断结果表示结果类型为业务请求处理异常类型的第二响应结果的个数不为零时,确定本次幂等有效性检测无效。
步骤208:确定所述待测业务接口具有幂等性。
步骤209:确定所述待测业务接口不具有幂等性。
在本说明书实施例二中,步骤步骤201-步骤203、步骤206、步骤208-步骤209的实现方式与实施例一中步骤步骤101-步骤105实现方式可以相同,此处不再赘述。
其中,结果类型为业务请求处理成功类型的第二响应结果为用于表示所述已发送的业务请求被处理成功的信息,例如,对于支付应用软件向计收费软件的收费接口再次发送的付款请求,其结果类型为业务请求处理成功类型的第二响应结果可以为包含付款单号及付款成功标识的信息。
结果类型为业务请求处理失败类型的第二响应结果为用于表示因请求参数异常或待测业务接口所属应用程序故障导致的对所述已发送的业务请求处理失败的信息,例如,该第二响应结果可以为指示因付款金额超过用户账户单笔额度限制而付款失败的信息。
结果类型为业务请求处理异常类型的第二响应结果为用于表示由于网络故障等因素导致的无法处理所述已发送的业务请求的信息,例如,该第二响应结果可以为包含未知错误标识或网络故障码的信息。
在实际应用中,假定,再次发送所述已发送的业务请求的次数为两次,得到两个第二响应结果。若第一个第二响应结果表示对所述已发送的业务请求所请求的资源仅执行一次处理,通过对第一个第二响应结果分析,可知,该待测业务接口具有幂等性。第二个第二响应结果表示发生网络抖动故障。在本应用场景中,由于两个第二响应结果不一致,因此,若采用实施例一中的方法对待测业务接口进行判别时,会错误的将待测业务接口确定为不具有幂等性。而在实施例二中,通过识别各个第二响应结果的结果类型,当存在结果类型为业务请求处理异常类型的第二响应结果时,确定本次幂等有效性检测无效,可以提高对待测业务接口的幂等有效性检测结果的准确性。
由于通常需保证对各个业务请求的处理成功率不低于目标值,因此,若第二响应结果的结果类型为业务请求处理失败类型,则该待测业务接口的运行稳定性存在风险。基于此,本说明书中还提供了一种有利于提升待测业务接口运行稳定性的方法的实现方式。
具体的,在步骤步骤206之后,或步骤步骤208之后,还可以包括如下步骤:
判断结果类型为业务请求处理失败类型的第二响应结果的个数是否为零,得到第三判断结果。
当所述第三判断结果表示结果类型为业务请求处理失败类型的第二响应结果的个数不为零时,生成第二报警信息,所述第二报警信息用于指示所述待测业务接口的稳定性存在风险。
在本说明书实施例二的实现方式中,当存在结果类型为业务请求处理失败类型的第二响应结果时,对所述待测业务接口的稳定性存在风险这一情况进行报警,可为提升待测业务接口及其所属应用程序的运行稳定性提供便利。
在实际应用中,由于需人工启动检测操作,耗时较长,导致检测及时性较差,且由于需人工识别新增的待测业务接口,容易遗漏。因此,在本说明书中还提供了基于实施例一或实施例二中内容的一些具体实现方式,以提升对待测业务接口的检测及时性。
具体的,在步骤步骤101或步骤步骤201之前,还可以包括:获取新增待测业务接口;将所述新增待测业务接口,增加至待测业务接口列表。
所述获取已发送的业务请求,具体可以包括:根据预设周期,从所述待测业务接口列表中的一个待测业务接口处,获取已发送的业务请求。
在实际应用中,可以自动获取新增的待测业务接口,并将新增的待测业务接口增加至待测业务接口列表。根据预设周期,对待测业务接口列表中的各个待测业务接口建立检测任务,当启动所述检测任务时,执行实施例一或实施例二中的幂等有效性检测步骤对待测业务接口进行检测。
在本实现方式中,通过根据预设周期,自动的对各个待测业务接口进行周期性检测,无需人工干预,可提高检测效率及检测实时性。
其中,所述获取新增待测业务接口,具体可以包括:
从应用程序管理服务器处,获取第一应用程序集合,所述第一应用程序集合包括:第二应用程序及第三应用程序,所述第二应用程序是所述待测业务接口列表中的待测业务接口所属的应用程序,所述第三应用程序为待增加至所述待测业务接口列表中的待测业务接口所属的应用程序。
根据所述待测业务接口列表,确定第二应用程序集合,所述第二应用程序集合包括所述第二应用程序。
根据所述第二应用程序集合,从所述第一应用程序集合中确定出第三应用程序集合,所述第三应用程序集合包括所述第三应用程序。
将所述第三应用程序集合中全部应用程序的待测业务接口,确定为新增待测业务接口。
在上述获取新增待测业务接口的实现方式中,应用程序管理服务器用于管理需要进行幂等有效性检测的应用程序。具体的,进行幂等有效性检测的应用程序可以接入应用程序管理服务器,以便于检测应用程序从所述应用程序管理服务器处获取需要进行幂等有效性检测的应用程序的信息,得到第一应用程序集合。
检测应用程序可记录已经建立检测任务的待测业务接口所属的应用程序作为第二应用程序集合中的应用程序。通过对第一应用程序集合及第二应用程序集合取差集,确定出第三应用程序集合。
在实际应用中,可以将第三应用程序集合中的全部应用程序的待测业务接口,确定为新增待测业务接口。例如,当第三应用程序集合中的应用程序采用Spring框架时,可以将第三应用程序集合中全部应用程序的Servlet层接口确定为新增待测业务接口,已确保获取的新增待测业务接口的全面性。
在上述实现方式中,可以实现对新增待测业务接口的自动识别,无需人工分析,实时性好,且获取的新增待测业务接口较全面。
基于同样的思路,本说明书实施例三还提供了上述方法对应的装置。图3为本说明书实施例三提供的对应于图1中方法的一种幂等有效性检测装置的结构示意图。如图3所示,该装置可以包括:
第一获取模块301,用于获取已发送的业务请求;所述已发送的业务请求是第一应用程序已发送至第二应用程序的待测业务接口的业务请求,并且针对所述已发送的业务请求,所述待测业务接口已反馈第一响应结果。
业务请求发送模块302,用于将所述已发送的业务请求,再次发送至所述待测业务接口,直至发送次数达到预设阈值,所述预设阈值大于等于2。
第二获取模块303,用于获取所述待测业务接口反馈的各个第二响应结果,所述第二响应结果是所述第二应用程序响应于再次发送的所述已发送的业务请求而生成的响应结果。
第一判断模块304,用于判断所述各个第二响应结果是否一致,得到第一判断结果。
幂等有效性确定模块305,用于根据所述第一判断结果,确定所述待测业务接口的幂等有效性。
在本说明书实施例三中,通过业务请求发送模块302多次将该已发送的业务请求发送至待测业务接口;通过第一判断模块304判断该待测业务接口反馈的与各个再次发送的所述已发送的业务请求所对应的各个第二响应结果是否一致,以令幂等有效性确定模块305可以根据判断结果,确定该待测业务接口的幂等有效性。该幂等有效性检测装置无需人工干预检测过程,可提高幂等有效性检测效率。
在本说明书实施例三中,第一获取模块301具体可以用于录制第二应用程序的待测业务接口的数据,得到录制文件;根据所述录制文件,确定已发送的业务请求。
在本说明书实施例三中,所述装置还可以包括:报警信息生成模块及第一报警信息发送模块。
其中,所述报警信息生成模块,可以用于在所述第一判断结果表示所述各个第二响应结果不一致,确定所述待测业务接口不具有幂等性时,生成第一报警信息,所述第一报警信息用于指示所述待测业务接口不具有幂等性。
其中,所述第一报警信息发送模块,可以用于向应急管控服务器发送所述第一报警信息,以便于所述应急管控服务器根据所述第一报警信息生成管控指令,所述管控指令用于指示停用预设业务接口,所述预设业务接口包括所述待测业务接口或与所述待测业务接口相关的业务接口。
在本说明书实施例三中,所述装置还可以包括:管控指令生成模块。所述管控指令生成模块可以用于在所述第一判断结果表示所述各个第二响应结果不一致,确定所述待测业务接口不具有幂等性时,生成管控指令,所述管控指令用于指示停用预设业务接口,所述预设业务接口包括所述待测业务接口或与所述待测业务接口相关的业务接口。
在本说明书实施例三中,所述装置还可以包括:结果类型确定模块、第二判断模块及检测无效确定模块。
其中,所述结果类型确定模块可以用于:确定所述各个第二响应结果的结果类型;所述结果类型包括:业务请求处理成功类型、业务请求处理失败类型或业务请求处理异常类型中的至少一种。
其中,第二判断模块可以用于:判断结果类型为业务请求处理异常类型的第二响应结果的个数是否为零,得到第二判断结果。
其中,检测无效确定模块可以用于:当所述第二判断结果表示结果类型为业务请求处理异常类型的第二响应结果的个数不为零时,确定本次幂等有效性检测无效。
在本说明书实施例三中,所述装置还可以包括:第三判断模块及第二报警信息生成模块。
其中,第三判断模块可以用于:判断结果类型为业务请求处理失败类型的第二响应结果的个数是否为零,得到第三判断结果。
其中,第二报警信息生成模块可以用于:当所述第三判断结果表示结果类型为业务请求处理失败类型的第二响应结果的个数不为零时,生成第二报警信息,所述第二报警信息用于指示所述待测业务接口的稳定性存在风险。
在本说明书实施例三中,所述装置还可以包括:第三获取模块及增加模块。
其中,第三获取模块可以用于:获取新增待测业务接口。
其中,增加模块可以用于:将所述新增待测业务接口,增加至待测业务接口列表。
所述第一获取模块具体可以用于:根据预设周期,从所述待测业务接口列表中的一个待测业务接口处,获取已发送的业务请求。
在本说明书实施例三中,所述第三获取模块具体可以用于:
从应用程序管理服务器处,获取第一应用程序集合,所述第一应用程序集合包括:第二应用程序及第三应用程序,所述第二应用程序是所述待测业务接口列表中的待测业务接口所属的应用程序,所述第三应用程序为待增加至所述待测业务接口列表中的待测业务接口所属的应用程序。
根据所述待测业务接口列表,确定第二应用程序集合,所述第二应用程序集合包括所述第二应用程序。
根据所述第二应用程序集合,从所述第一应用程序集合中确定出第三应用程序集合,所述第三应用程序集合包括所述第三应用程序。
将所述第三应用程序集合中全部应用程序的待测业务接口,确定为新增待测业务接口。
基于同样的思路,本说明书实施例还提供了上述方法对应的设备。图4为本说明书实施例四提供的一种幂等有效性检测设备的结构示意图。如图4所示,该设备400可以包括:
至少一个处理器410;以及,
与所述至少一个处理器通信连接的存储器430;其中,
所述存储器存储有可被所述至少一个处理器410执行的指令420,所述指令被所述至少一个处理器410执行,以使所述至少一个处理器410能够:
获取已发送的业务请求;所述已发送的业务请求是第一应用程序已发送至第二应用程序的待测业务接口的业务请求,并且针对所述已发送的业务请求,所述待测业务接口已反馈第一响应结果。
将所述已发送的业务请求,再次发送至所述待测业务接口,直至发送次数达到预设阈值,所述预设阈值大于等于2。
获取所述待测业务接口反馈的各个第二响应结果,所述第二响应结果是所述第二应用程序响应于再次发送的所述已发送的业务请求而生成的响应结果。
判断所述各个第二响应结果是否一致,得到第一判断结果。
根据所述第一判断结果,确定所述待测业务接口的幂等有效性。
在本说明书实施例四中,幂等有效性检测设备通过多次将该已发送的业务请求发送至待测业务接口;判断该待测业务接口反馈的与各个再次发送的所述已发送的业务请求所对应的各个第二响应结果是否一致,以根据判断结果,确定该待测业务接口的幂等有效性。无需人工干预检测过程,可提高幂等有效性检测效率。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,应包含在本申请的权利要求范围之内。