具体实施方式
下面结合附图对本申请的具体实施方式进行说明。
发明人在发明过程中注意到:
对于限流措施中直接返回的方式,会直接放弃掉本系统的服务能力,降低了设备利用率;
对于限流措施中限制流量的方式,虽然可以使用本系统的服务能力,但是由于这个限制是固定的,以每分钟600次为例,在系统实际运行的过程中,有可能每分钟600次还是超过系统的承载能力,也可能每分钟600次还不能完全的发挥被保护系统的服务能力,因此,该方式也不能充分发挥设备利用率。
基于此,本申请实施例中提供了限制外部应用程序调用服务的方法,也即限流措施,该方案能够根据实际运行的数据实现动态改变限流措施,充分发挥设备利用率。下面进行说明,
图1为限制外部应用程序调用服务的方法实施流程示意图,如图所示,限流可以包括如下步骤:
步骤101、确定外部应用程序调用的服务;
步骤102、获取外部应用程序调用该服务的次数及响应时间;
步骤103、根据该服务调用次数及平均响应时间,按预设策略限制该外部应用程序调用服务的次数。
实施中,步骤101的确定调用的服务、以及步骤102调用该服务的次数及响应时间,外部应用程序调用服务实质上是去计算设备上请求数据交互,因此,仅需在该计算设备上监控来请求的数据以及自身返回数据的时间,即可获得步骤101、102中所需的信息。
下面对步骤103的实施进行说明。
实施中,根据该服务调用次数及平均响应时间,按预设策略限制该外部应用程序调用服务的次数,可以包括:
根据该服务调用次数及响应时间确定平均响应时间;
确定所述平均响应时间在预设时间阈值范围中对应的调用服务的次数;
按所述次数限制该外部应用程序调用服务的次数。
具体的,可以根据外部应用程序在调用服务时能够接受的响应时间来预先设置一个时间阈值范围,如可接受响应时间为t,则可以将该范围设为[1.1t,0.8t],在该范围内每个响应时间都对应有一个调用服务的次数,按该次数限制该外部应用程序调用服务的次数即可。
也可以简单的实施为:在小于0.8t时,就在限流次数的基础上增加一个固定数量,如10次;而在大于1.1t时,则在限流次数的基础上减少一个固定数量,如10次。
实施中,根据调用次数及响应时间确定平均响应时间,是按预设规则确定一段时间,根据该段时间内的调用次数及响应时间确定的平均响应时间。
具体的,可以按预设规则确定一段时间,例如30分钟,确定的是在一段时间内的平均响应时间,然后再去确定其在预设时间阈值范围中对应的调用服务的次数。
具体实施中,要记录平均响应时间,则需要记录响应次数,和每次响应时间,只有记录这两个数据才能得到平均响应时间。但是如果这两个记录的时间跨度太大,会使得平均响应时间不能够准确描述当前系统的服务能力(比如,因为某些原因应用系统在8:00-10:00每次响应时间较长,而在11:00-13:00每次响应时间较短),因此需要选择某一段时间内的响应次数和每次响应时间进行平均。
例中的30分钟,一般情况下可以选择系统启动后,间隔30分钟时间进行平均计算,比如系统0点启动,则会在0:30计算一次,1:00计算一次,1:30计算一次。另外,实施中0点30的计算可以是根据从0:00-0:30这段时间内的响应次数,及每次响应时间进行的,1:00的计算可以是根据0:30-1:00这段时间内的调用次数和响应时间进行的。具体实践中,如何设定,本领域技术人员根据实际需要结合系统的实际情况利用预设规则去确定即可。
以上述实施例为例,则可以在一定时间(如30分钟)内,当平均响应时间小于可接受响应时间的固定倍数(如0.8倍)时,则将限流次数加固定数量(如10次)。
实施中,根据该服务调用次数及响应时间确定平均响应时间,是在调用次数达到预设次数阈值时确定的;和/或,在限制该外部应用程序调用服务的次数后,在经过预设时间后确定的。
具体的,确定平均响应时间的时刻可以有两种:
一种是启动限流措施时,也即在调用次数达到预设次数阈值时确定平均响应时间;
一种是当本次调整结束,经过预设的时间后开始下一次调整,需要获取平均响应时间时,也即在限制该外部应用程序调用服务的次数后,在经过预设时间后确定的。例如,以上述实施例为例,该种情况下,在一定时间内(如30分钟)平均响应时间小于可接受响应时间的固定倍数(如0.8倍),则将限流次数加固定数量(如10次),到更高的数量,继续观察,在经过预设时间后再次确定平均响应时间进行下一次调整。如果平均响应时间大于可接受响应时间的1.1倍,则减少拦截次数(如10次),达到较小的数量,观察预设的一段时间后,再次确定平均响应时间继续进行下一次调整。通过调整后继续观察一段时间,再根据系统服务实际运行情况,循环调整,便能够根据实际运行的数据实现动态改变限流措施,充分发挥设备利用率。
实施中,获取外部应用程序调用该服务的次数及响应时间,可以是在需对该服务的调用次数进行限制时进行获取的。
具体的,在实际拦截发生后,会首先查看是否启动限流措施,也即是否需要对该服务的调用次数进行限制;如果已经启动,则可以开始记录调用次数,判断是否达到限流次数;如果达到,则可以进行下一步的判断当前服务调用的平均响应时间。
下面再以实例进行说明,以便更好地理解如何实施。
图2为限流措施实施流程示意图,其中,用以示例的时间阈值范围为[1.1t,0.8t],如图所示,实施中可以如下:
实施前可以设定三个参数,1、是否启动限流;2、当前服务初始启动限流次数;3、当前服务可接受的响应时间,实施中可以根据该三个参数实施各步骤。并且,还可以设置一个拦截方案,拦截限流服务的每一次调用,记录限流服务的每一次响应时间。
步骤201、判断是否启动限流措施,是则转入步骤203,否则转入步骤202;
具体的,在实际拦截发生后,查看是否启动限流,如果已经启动,则记录限流次数,判断是否达到限流次数。
步骤202、记录响应时间并返回;
步骤203、判断是否达到预设的次数阈值,是则转入步骤205,否则转入步骤204;
步骤204、记录响应时间并返回;
具体的,下述实施中,如果达到,则判断当前服务调用的平均响应时间。如果在一定时间内(如30分钟)平均响应时间小于可接受响应时间的固定倍数(如0.8倍),则将限流次数加固定数量(如10次),到较大的数量。如果平均响应时间大于可接受响应时间的1.1倍,则减少限流次数(如10次),到较小的数量。
步骤205、判断平均响应时间是否小于预设的响应时间的0.8倍,是则转入步骤206,否则转入步骤207;
步骤206、调高限流次数;
步骤207、判断平均响应时间是否大于预设的响应时间的1.1倍,是则转入步骤208,否则转入步骤209;
步骤208、调低限流次数;
步骤209、限制访问并返回。
然后,继续观察,根据系统服务实际运行情况,循环上述步骤。
基于同一申请构思,本申请实施例中还提供了一种限制外部应用程序调用服务的装置,由于该装置解决问题的原理与一种限制外部应用程序调用服务的方法相似,因此该设备的实施可以参见方法的实施,重复之处不再赘述。
图3为限制外部应用程序调用服务的装置结构示意图,如图所示,包括:
确定模块301,用于确定外部应用程序调用的服务;
获取模块302,用于获取外部应用程序调用该服务的次数及响应时间;
限流模块303,用于根据该服务调用次数及平均响应时间,按预设策略限制该外部应用程序调用服务的次数。
实施中,限流模块可以包括:
响应时间确定单元,用于根据该服务调用次数及响应时间确定平均响应时间;
调用次数确定单元,用于确定所述平均响应时间在预设时间阈值范围中对应的调用服务的次数;
限流单元,用于按所述次数限制该外部应用程序调用服务的次数。
实施中,响应时间确定单元可以进一步用于按预设规则确定一段时间,根据该段时间内的调用次数及响应时间确定平均响应时间。
实施中,响应时间确定单元可以进一步用于在调用次数达到预设次数阈值时确定平均响应时间;和/或,在限制该外部应用程序调用服务的次数后,在经过预设时间后确定平均响应时间。
实施中,获取模块进一步可以用于在需对该服务的调用次数进行限制时,获取外部应用程序调用该服务的次数及响应时间。
为了描述的方便,以上所述装置的各部分以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各模块或单元的功能在同一个或多个软件或硬件中实现。
由上述实施例可以看出:在本申请实施例提供的技术方案中,可以首先针对某一个系统服务,设置三个参数,1、是否启动限流,2、当前服务初始启动限流次数,3、当前服务可接受的响应时间;再提供一个拦截方案,此方案可以是一个切面方案,该方案下,拦截所有对当前服务的调用,记录服务响应时间。而在实际拦截发生后,会首先查看是否启动限流,如果已经启动,则记录限流次数,判断是否达到限流次数,比如设置的限流次数为每分钟600次,则查看当前时间范围内是否达到每分钟600次,如果达到,则判断当前服务调用的平均响应时间,如果在一定时间内(如30分钟)平均响应时间小于可接受响应时间的固定倍数(如0.8倍),则将限流次数加固定数量(如10次),到更高的数量,继续观察。如果平均响应时间大于可接受响应时间的1.1倍,则减少拦截次数(如10次),达到较小的数量,观察一段时间后,继续上述流程。通过上述方案,就可以在采用限流措施后,及时的根据响应时间这一参量来调整调用次数,而不仅限于只依靠设定的调用次数或者直接放弃的方式,使得设备能够被充分利用。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。