掌桥专利:专业的专利平台
掌桥专利
首页

流量控制方法及相关装置

文献发布时间:2023-06-19 11:27:38


流量控制方法及相关装置

技术领域

本发明实施例涉及通信领域,尤其涉及一种流量控制方法及相关装置。

背景技术

在构建微服务架构的基础平台的过程中,API (Application ProgrammingInterface)网关是必不可少的核心组件之一。API网关为一组微服务提供统一的接口,在API网关可以对后端微服务接口的访问进行限流。

然而,现有的算法仅对调用方做了限流,而对系统本身及后端服务提供方均未作流量控制限制。而对于一个请求而言,直接在网关代理层进行限制,有可能网关到下游服务之间出现任何异常的话,对于该请求都认为是成功的调用,这就会造成流量结果的准确性不佳,造成流量控制的错误。

因此,如何提高流量控制的准确性,就成为亟需解决的技术问题。

发明内容

本发明实施例解决的技术问题是提供一种流量控制方法及相关装置,以提高流量控制的准确性。

为解决上述问题,本发明实施例提供一种流量控制方法,包括:

接收目标请求;

根据所述目标请求获取与所述目标请求对应的用户,并获取所述用户的当前库存流量;

当所述目标请求的目标流量小于或等于所述当前库存流量时,处理所述目标请求,并利用所述当前库存流量与所述目标流量的流量差更新所述当前库存流量,得到临时库存流量;

当所述目标请求未被成功处理时,利用所述临时库存流量与所述目标流量的流量和,更新所述临时库存流量,得到更新后的当前库存流量。

为解决上述问题,本发明实施例还提供一种流量控制装置,包括:

请求接收单元,适于接收目标请求;

流量获取单元,适于根据所述目标请求获取与所述目标请求对应的用户,并获取所述用户的当前库存流量;

请求处理单元,适于当所述目标请求的目标流量小于或等于所述当前库存流量时,处理所述目标请求,并利用所述当前库存流量与所述目标流量的流量差更新所述当前库存流量,得到临时库存流量;

请求统计单元,适于当所述目标请求未被成功处理时,利用所述临时库存流量与所述目标流量的流量和,更新所述临时库存流量,得到更新后的当前库存流量。

为解决上述问题,本发明实施例还提供一种电子设备,包括至少一个存储器和至少一个处理器;

所述存储器存储有程序,所述处理器调用所述程序,以执行前述的流量控制方法。

为解决上述问题,本发明实施例提供一种存储介质,所述存储介质存储有适于流量控制的程序,以实现前述的流量控制方法。

与现有技术相比,本发明的技术方案具有以下优点:

本发明实施例所提供的流量控制方法,包括:接收目标请求,并根据所述目标请求获取与所述目标请求对应的用户,获取所述用户的当前库存流量;当所述目标请求的目标流量小于或等于所述当前库存流量时,处理所述目标请求,并利用所述当前库存流量与所述目标流量的流量差更新所述当前库存流量,得到临时库存流量;当所述目标请求未被成功处理时,利用所述临时库存流量与所述目标流量的流量和,更新所述临时库存流量,得到更新后的当前库存流量。可以看出,本发明实施例所提供的流量控制方法,每次目标请求进来时,通过目标流量与当前库存流量的比较,确定是否进行目标请求的处理,可以保证目标请求能够被及时处理,而利用所述当前库存流量与所述目标流量的流量差更新所述当前库存流量,能够及时更新当前库存流量,利用临时库存流量对其他请求的流量进行控制,以降低目标请求成功处理后,更新后的当前库存流量(等于临时库存流量)减小,使得更新后的当前库存流量不能满足其他请求的流量要求,但其他请求已经被处理的情况的发生概率,提高当正在处理的目标请求未处理完成,有其他的请求进入时,流量控制的准确性;同时,在目标请求未被成功处理时,利用临时库存流量与目标流量的流量和,更新临时库存流量,得到更新后的当前库存流量,能够提高目标请求未被成功处理的情况下,当前库存流量的准确性,降低被错误地减小当前库存流量的概率,提高统计结果的准确性。

可选方案中,本发明实施例所提供的流量控制方法,还可以通过判断已使用流量与目标请求所需的目标流量之和是否小于或等于所述上限流量,以及所述目标请求的目标流量是否小于或等于所述当前库存流量来确定是否处理目标请求,从而当多个请求同时接入时,在当前库存流量被持续扣减的情况下,避免由于目标请求可能存在未成功处理的情况,且目标请求未成功处理的响应结果未返回时,因当前库存流量小于目标流量而对目标请求是否能够被处理作出错误判断,导致本应该被通过的目标请求无法通过,使得在目标请求调用过程中无需等待请求处理响应结果,保证了请求调用和请求结果统计可以并发进行,而不需等待上一个请求的响应结果,进一步提高统计结果的准确性。

附图说明

图1是本发明实施例所提供的流量控制方法的一流程示意图;

图2是本发明实施例所提供的流量控制方法的另一流程示意图;

图3是本发明实施例所提供的流量控制方法的又一流程示意图;

图4是本发明实施例所提供的流量控制方法的又一流程示意图;

图5是本发明实施例所提供的流量控制装置的一框图;

图6是本发明实施例提供的设备一种可选硬件设备架构。

具体实施方式

现有技术中,仅对调用方做了限流,导致对成功处理的请求统计结果的准确性不佳。

经分析,现有结果只是对进的请求进行限制,并没有对出的请求进行限制,相当于请求没有状态。在一种方式中,如果对响应结果进行统计计数,因响应结果是有时延的,受限于上述技术的算法,没有办法对响应结果进行计算,只能对请求进行计算,因此造成流量统计结果的准确性不佳。

为了提高流量控制的准确性,本发明实施例提供了一种流量控制方法,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

作为一种可选实现,图1示出了本发明实施例所提供的流量控制方法的一流程示意图。

参照图1,该流程可以包括:

步骤S10: 接收目标请求;

所述目标请求所对应的用户包括用户信息和接口信息。为了拓宽用户的业务场景,每个用户可以有很多的APP应用,每个APP应用中的请求都带有用户信息和接口信息,当然具体的APP应用的请求可以带有一个用户的应用信息。

当然,用户还可以是用户组的形式,例如,一个用户组下面有甲乙丙丁4个用户,每个用户均可以带有多个应用信息。当采用用户组的形式时,可以对用户组配置限制条件,用户组下面的每个用户均可以调取该限制条件,方便用户的限制条件配置。

步骤S11:根据所述目标请求获取与所述目标请求对应的用户,获取所述用户的当前库存流量。

当目标请求过来时,首先需要获取该目标请求对应的用户信息。在一种具体实施例中,可以按照用户维度提前配置用户信息,在所述目标请求中,包括所述用户的标识信息,所述系统中配置有对应所述标识信息的用户信息,在获取所述目标请求后,可以基于用户的标识信息在系统中获取对应的用户信息。当然,在其他实施例中,用户信息的获取也可以是从请求中带有的信息获取得到。

步骤S12:判断所述目标请求的目标流量是否小于或等于所述当前库存流量,若否,执行步骤S13,否则执行步骤S14。

当前库存流量用于判断该目标请求过来时,是否还有足够的流量用于处理该目标请求,因此,还需要确定目标请求的目标流量,当然,目标流量可以是目标请求参数中带有的流量值,每次目标请求的目标流量可以不相同,当然每次目标请求的目标流量也可以是固定流量。如果当前库存流量大于目标流量,表明可以允许当前目标请求通过,否则该目标请求不允许通过。

需要说明的是,如果对目标请求的处理结果进行统计,需要是对统计结果可获得的量化的数据进行统计,因此目标请求进来时需要带有量化的数据,且目标请求进来时的量化的数据与统计结果的量化的数据相对应。如果统计目标请求的参数,需要依赖协议约定,目标请求进来的时候带有的参数,跟目标请求处理结果响应返回的时候带有的参数一致。

目标流量指的是目标请求所需要的流量值,由于每次目标请求的目标流量可以不相同,每次目标请求的流量值是未知的,如果想获知目标请求的流量值,需要进行协议约定,因此对于每一次目标请求带有的参数都需要进行流量约定,每次请求的目标流量可以相同也可以不同,比如,第一次请求的目标流量约定为100M,第二次请求的目标流量约定为200M。

同理,在另一实施例中,所述目标流量可以包括固定时长,所述目标请求包括时长请求,所述时长请求对应包时业务。例如,目标请求过来的时候整体的调用功能是解析一段音频,那么目标请求的参数必须带有参数的音频时长,比如是10分钟,那么待目标请求处理完毕后,响应结果也对应带有响应的结果参数,已经处理的时长是10分钟。

可以看出,本发明实施例所提供的流量控制方法,既可以对应包流量的场景,又可以对应时间的场景,丰富了业务场景,能够满足用户多样化的流量控制要求。

步骤S13: 停止执行所述目标请求。

当所述目标请求的目标流量大于所述当前库存流量时,说明该用户的当前库存流量已经不能满足该目标请求的需要,那么该目标请求不会被处理,即停止执行目标请求。

步骤S14:处理所述目标请求,并利用所述当前库存流量与所述目标流量的流量差更新所述当前库存流量,得到临时库存流量。

本文所述的处理所述目标请求,即执行所述目标请求。

当所述目标请求的目标流量不大于所述当前库存流量时,说明该用户的当前库存流量仍然能够满足该目标请求的需要,处理所述目标请求。

同时,为了避免在目标请求执行过程中,有新的该用户的请求进入,导致新的请求的比较仍与当前库存流量进行比较而造成错误,需要在当前库存流量中扣除目标请求的目标流量,将扣除目标流量后的当前库存流量更新为临时库存流量。这样,当下一次请求进来时,该请求的目标流量需要跟临时库存流量进行比较。临时库存流量用于在下个请求到来时判断下个请求的目标流量是否超出临时库存流量,以保证下个请求到来时能够正确判断下个请求的目标流量是否超出当前库存流量。

需要说明的是,临时库存流量是一个变化值,临时库存流量会根据真实的目标请求处理结果的响应结果进行上下变动。因本发明实施例是基于目标请求的响应结果进行统计,由于每个接口的响应时间长短不一,需要耗费一定时长才会返回处理结果,然而,在这一定时长内,用户可能会发出多次请求。为了避免通过的请求量超出最大限制,不管目标请求是否成功,只要目标请求过来,就会先在当前库存流量中扣除目标请求的目标流量。

步骤S15:判断所述目标请求是否被成功处理,若是,执行步骤S16,否则执行步骤S17。

根据目标请求的实际处理结果,执行相对应的步骤。

步骤S16:将所述临时库存流量作为更新后的当前库存流量。

当目标请求被成功处理后,说明目标请求真实用去了目标流量,因此需要将临时库存流量作为更新后的当前库存流量。当下次请求过来时,比较下次请求的目标流量是否超出更新后的当前库存流量。

步骤S17:利用所述临时库存流量与所述目标流量的流量和,更新所述临时库存流量,得到更新后的当前库存流量。

如果目标请求未被成功处理,表明目标请求并未真实用去目标流量,因此应该在临时库存流量的基础上将允许目标流量通过时实时扣除的目标流量加回来,得到更新后的当前库存流量。

可以看出,本发明实施例所提供的流量控制方法,能够提高目标请求未被成功处理的情况下,当前库存流量的准确性,降低被错误地减小当前库存流量的概率,提高统计结果的准确性。

为了进一步提高统计结果的准确性,本发明实施例还提供一种流量控制方法,作为一种可选实现,图2示出了本发明实施例所提供的流量控制方法的另一流程示意图。

如图2所示,在一种具体实施例中,本发明实施例所提供的流量控制方法,包括如下步骤:

步骤S20:接收目标请求。

步骤S20的具体内容请参考图1所示的步骤S10的描述,在此不再赘述。

步骤S21:根据所述目标请求获取与其对应的用户,获取所述用户的当前库存流量,上限流量和已使用流量。

获取所述用户的当前库存流量的具体内容请参考图1所示的步骤S11。除了获取当前库存流量外,还获取用户的上限流量和已使用流量。其中,上限流量指的是用户总的请求的总的流量值。已使用流量指的是用户当前已处理的请求的总的流量值。

容易理解的是,在请求高发期时,如果用户在短时间内发出多个目标请求时,当前库存流量被持续扣减,当当前库存流量小于目标流量的时候,请求将不被处理。然而,由于目标请求可能存在未成功处理的情况,当请求未成功处理的响应结果未返回时,可能会出现对请求是否能够被处理作为错误判断,导致本应该被通过的目标请求无法通过。因此,通过获取用户的上限流量和已使用流量,能够更准确地获知该次请求是否被允许通过。

上限流量和已使用流量的获取方式与当前库存流量类似,在一种具体实施例中,可以按照用户维度提前配置用户信息,这样在请求过来时拉取配置信息,获知当前用户的上限流量和已使用流量。当然,在其他实施例中,上限流量和已使用流量也可以是从请求中带有的信息获取得到。

步骤S22:判断已使用流量与目标请求所需的目标流量之和是否小于或等于所述上限流量,若是,执行步骤S23,否则执行步骤S24。

步骤S22用于判断目标请求是否受限制。在一种具体实施例中,该判断过程是在缓存中实现的。通过lua脚本把用户信息和接口信息组合起来,可以通过设置包量信息的影响改变限制状态。

步骤S23:停止执行所述目标请求。

如果已使用流量与目标请求所需的目标流量之和超出了所述上限流量,表明该目标请求是受限制的,系统则返回提示,不对该目标请求作任何操作。

步骤S24:判断所述目标请求的目标流量是否小于或等于所述当前库存流量,若是,执行步骤S25,否则执行步骤S26。

如果已使用流量与目标请求所需的目标流量之和未超出所述上限流量,表明该目标请求是不受限制的。由于存在之前的请求的响应结果还未返回,已使用流量还未更新的可能,为了保证进来的请求都可以被处理,因此还需要进一步对当前库存流量进行判断。

容易理解的是,基于Redis(REmote DIctionary Server的lua脚本进行的请求,在Redis里面的所有请求均是单个线程执行的。多个请求也是排队执行的。当请求过快时,只要最后一个请求的目标流量不超过当前库存流量,就可以保证所有的请求都可以被处理。

可见,本发明实施例所提供的流量控制方法,通过判断已使用流量与目标请求所需的目标流量之和是否小于或等于所述上限流量,以及所述目标请求的目标流量是否小于或等于所述当前库存流量来确定是否处理目标请求,从而当多个请求同时接入时,在当前库存流量被持续扣减的情况下,避免由于目标请求可能存在未成功处理的情况,且目标请求未成功处理的响应结果未返回时,因当前库存流量小于目标流量而对目标请求是否能够被处理作出错误判断,导致本应该被通过的目标请求无法通过,使得在目标请求调用过程中无需等待请求处理响应结果,保证了请求调用和请求结果统计可以并发进行,而不需等待上一个请求的响应结果,进一步提高统计结果的准确性。

步骤S25:处理所述目标请求,并利用所述当前库存流量与所述目标流量的流量差更新所述当前库存流量,得到临时库存流量。

步骤S25的具体内容请参考图1所示的步骤S14的描述,在此不再赘述。

步骤S26:开启异常检测任务。

正常情况下,只要步骤S22的判断表明请求不受限制,在执行步骤S24第二次判断时就会保证目标请求的目标流量小于或等于所述当前库存流量。如果目标请求未受限制同时目标请求的目标流量大于所述当前库存流量,说明当前库存流量在扣减过程中出现了意外,有可能是统计信息缺失或者当前库存流量扣减过多等异常情况导致的,此时开启异常检测任务。

需要说明的是,当目标请求的目标流量大于所述当前库存流量时,会触发异常检测任务。该异常检测任务还可以设为定时任务。一个请求过来时会带有时间戳,两次请求的时间戳间隔大于某个预设指定时间时,也可以进行检测任务。当请求过来时,需要对请求的响应结果进行跟踪,如果该请求一直没有响应结果,可能是响应结果丢失,表示当前库存流量中预先扣除的目标流量未被加回。此时异常检测任务就会对当前库存流量进行补偿。例如,已使用流量为200M,上限流量为300M,目标流量为100M,此时的当前库存流量为0M,如果指定时间(例如5min)内没有响应结果。则认为响应结果丢失,补偿当前库存流量至100M。当然,由于各个请求的处理时长不一,该指定时间可以根据实际接口信息进行配置。步骤S27:判断所述目标请求是否被成功处理,若是,执行步骤S28,否则执行步骤S29。为了提高对成功处理的请求统计结果的准确性,需要对请求的响应结果进行跟踪,以确认目标请求是否被成功处理。

步骤S28:利用所述已使用流量和所述目标流量的流量和,更新所述已使用流量,并将所述临时库存流量作为更新后的当前库存流量。

如果目标请求被成功处理,那么需要将本次目标请求的目标流量统计到已使用流量中,更新已使用流量。并将更新后的已使用流量作为下次请求过来时的已使用流量。

同时,因目标请求被成功处理,将临时库存流量作为下次请求过来时的当前库存流量。

步骤S29:维持所述已使用流量不变,并利用所述临时库存流量与所述目标流量的流量和,更新所述临时库存流量,得到更新后的当前库存流量。

如果目标请求未被成功处理,说明该请求并没有成功调用,此时已使用流量不做更新,同时需要将当前流量库存中已扣除的目标流量加回。

本发明实施例所提供的流量控制方法,通过判断已使用流量与目标请求所需的目标流量之和是否小于或等于所述上限流量,以及所述目标请求的目标流量是否小于或等于所述当前库存流量来确定是否处理目标请求,从而当多个请求同时接入时,在当前库存流量被持续扣减的情况下,避免由于目标请求可能存在未成功处理的情况,且目标请求未成功处理的响应结果未返回时,因当前库存流量小于目标流量而对目标请求是否能够被处理作出错误判断,导致本应该被通过的目标请求无法通过,使得在目标请求调用过程中无需等待请求处理响应结果,保证了请求调用和请求结果统计可以并发进行,而不需等待上一个请求的响应结果,进一步提高统计结果的准确性。

根据上文可知,带有参数的请求依赖协议约定。因次数是不需要约定的,因此可以将目标流量设为定值,即每次请求的目标流量都是固定值,这样只需要统计请求的次数即可,避免了增加协议约定。

下面以图3为例,进行详细说明。图3是本发明实施例所提供的流量控制方法的又一流程图。

具体地,如图3所示,在一种可选实施例中,本发明实施例所提供的流量获取方法包括以下步骤:

步骤S30:接收目标请求。

步骤S30具体内容请参考图1中的步骤S10的内容,在此不再赘述。

步骤S31: 根据所述目标请求获取与其对应的用户,获取所述用户的当前库存次数。

当目标流量包括固定流量时,所述当前库存流量可以包括当前库存次数,所述当前库存次数为所述当前库存流量所包括的所述固定流量的整数倍数。

步骤S32: 判断当前库存次数是否大于0,若否,执行步骤S33,否则执行步骤S34。

接着判断所述当前库存次数是否大于0,如果库存大于0,则处理所述目标请求,并利用所述当前库存次数减1更新所述当前库存次数,得到临时库存次数;如果库存等于0,则停止执行所述目标请求。

步骤S32-步骤S34的内容请参考图1中的步骤S12-S14,在此不再赘述。

步骤S35: 判断所述目标请求是否被成功处理,若是,执行步骤S36,否则执行步骤S37。

根据目标请求的实际处理结果,执行相对应的步骤。

步骤S36:将所述临时库存次数作为更新后的当前库存次数。

当目标请求被成功处理后,需将所述临时库存次数作为更新后的当前库存次数。当下次请求过来时,判断更新后的当前库存次数是否大于0。

步骤S37:利用所述临时库存次数加1,更新所述临时库存次数,得到更新后的当前库存次数。

如果目标请求未被成功处理,则将预先扣除的库存次数加1,得到更新后的当前库存次数。

通过将目标流量设为固定流量,即每次请求的目标流量都是固定值,因次数是不需要约定的,当对请求的响应结果进行统计时,只需要统计请求的次数即可,避免了增加协议约定。

当然了,另一实施例中,当目标流量包括固定流量时,在获取所述用户的上限流量和已使用流量时,所述上限流量包括与所述固定流量的整数倍数所对应的上限次数,所述已使用流量包括所述已使用流量与所述固定流量的整数倍数所对应的已使用次数。

如此,当所述目标请求的已使用次数小于上限次数,且所述目标请求的当前库存次数大于0时,处理所述目标请求,并利用所述当前库存次数减1更新所述当前库存次数,得到所述临时库存次数;

当所述目标请求未被成功处理时,维持所述已使用次数不变,利用所述临时库存次数加1,更新所述临时库存次数,得到更新后的当前库存次数。

具体地,请参考图4,图4是本发明实施例所提供的流量控制方法的又一流程图。

步骤S40:接收目标请求。

步骤S40具体内容请参考图2中的步骤S20的内容,在此不再赘述。

步骤S41: 根据所述目标请求获取与其对应的用户,获取所述用户的当前库存次数,上限次数和已使用次数。

步骤S41具体内容请参考图2中的步骤S21的内容,在此不再赘述。

步骤S42: 判断已使用次数是否小于所述上限次数,若否,执行步骤S43, 停止执行所述目标请求,否则执行步骤S44。

步骤S42-S43的具体内容请参考图2中的步骤S22-S23的内容,在此不再赘述。

步骤S44: 判断当前库存次数是否大于0,若是,执行步骤S45,否则执行步骤S46,开启异常检测任务。

如果已使用次数是小于所述上限次数,表明该目标请求是不受限制的。由于存在之前的请求的响应结果还未返回,已使用次数还未更新的可能,为了保证进来的请求都可以被处理,因此还需要进一步对当前库存次数进行判断。

步骤S45:处理所述目标请求,并利用所述当前库存次数减1更新所述当前库存次数,得到所述临时库存次数。

如果当前库存次数大于0,说明该用户的当前库存次数仍然能够满足执行目标请求的需要,则处理所述目标请求。

同时,为了避免在目标请求执行过程中,有新的该用户的请求进入,导致新的请求的比较仍与当前库存次数进行比较而造成错误,需要在当前库存次数中扣除1,将扣除后的当前库存次数更新为临时库存次数。这样,当下一次请求进来时,需要对临时库存次数进行判断。临时库存次数用于在下个请求到来时判断是否还有库存用于下个请求,以保证下个请求到来时能够正确判断下个请求是否超出当前库存次数。

步骤S46:开启异常检测任务。

正常情况下,只要步骤S42的判断表明请求不受限制,在执行步骤S44第二次判断时就会保证当前库存次数能够满足处理不受限制的请求。如果目标请求未受限制同时当前库存次数等于0,说明当前库存次数在扣减过程中出现了意外,有可能是统计信息缺失或者当前库存次数扣减过多等异常情况导致的,此时开启异常检测任务。

需要说明的是,当当前库存次数等于0时,会触发异常检测任务。该异常检测任务还可以设为定时任务。一个请求过来时会带有时间戳,两次请求的时间戳间隔大于某个预设指定时间时,也可以进行检测任务。当请求过来时,需要对请求的响应结果进行跟踪,如果该请求一直没有响应结果,可能是响应结果丢失,表示当前库存次数中预先扣除的次数未被加回。此时异常检测任务就会对当前库存次数进行补偿。例如,已使用次数为80,上限次数为100,此时的当前库存次数为0,说明有20次请求未成功处理却未更新至当前库存次数,如果指定时间(例如5min)内没有响应结果,则认为响应结果丢失,补偿当前库存次数至20。当然,由于各个请求的处理时长不一,该指定时间可以根据实际接口信息进行配置。

步骤S47:判断所述目标请求是否被成功处理,若是,则执行步骤S48,否则执行步骤S49。

为了提高对成功处理的请求统计结果的准确性,需要对请求的响应结果进行跟踪,以确认目标请求是否被成功处理。

步骤S48:将所述临时库存次数作为更新后的当前库存次数。

如果目标请求被成功处理,那么需要将本次目标请求的处理结果统计到已使用次数中,更新已使用次数,并将更新后的已使用次数作为下次请求过来时的已使用次数。

同时,因目标请求被成功处理,将临时库存次数作为下次请求过来时的当前库存次数。

步骤S49:维持所述已使用次数不变,利用所述临时库存次数加1,更新所述临时库存次数,得到更新后的当前库存次数。

如果目标请求未被成功处理,说明该请求并没有成功调用,此时已使用次数不做更新,同时需要将当前库存次数中已扣除的次数加回,利用所述临时库存次数加1,更新所述临时库存次数,得到更新后的当前库存次数。

上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。

下面对本发明实施例提供的流量控制装置及组卷装置进行介绍,下文描述的流量控制装置可以认为是,设备为实现本发明实施例提供的流量控制方法所需设置的功能模块;下文描述的组卷装置可以认为是,设备为实现本发明实施例提供的流量控制方法所需设置的功能模块。下文描述的装置的内容可与上文描述的方法的内容相互对应参照。

在一种可选实现中,图5示出了本发明实施例提供的流量控制装置的一种可选框图,如图5所示,该流量控制装置可以包括:

请求接收单元100,适于接收目标请求;

流量获取单元200,适于根据所述目标请求获取与所述目标请求对应的用户,并获取所述用户的当前库存流量;

请求处理单元300,当所述目标请求的目标流量小于或等于所述当前库存流量时,适于处理所述目标请求,并利用所述当前库存流量与所述目标流量的流量差更新所述当前库存流量,得到临时库存流量;

请求统计单元400,当所述目标请求未被成功处理时,适于利用所述临时库存流量与所述目标流量的流量和,更新所述临时库存流量,得到更新后的当前库存流量。

所述目标请求所对应的用户包括用户信息和接口信息。为了拓宽用户的业务场景,每个用户可以有很多的APP应用,每个APP应用中的请求都带有用户信息和接口信息,当然具体的APP应用的请求可以带有一个用户的应用信息。

当然,用户还可以是用户组的形式,例如,一个用户组下面有甲乙丙丁4个用户,每个用户均可以带有多个应用信息。当采用用户组的形式时,可以对用户组配置限制条件,用户组下面的每个用户均可以调取该限制条件,方便用户的限制条件配置。

当目标请求过来时,流量获取单元200获取该目标请求对应的用户信息。在一种具体实施例中,可以按照用户维度提前配置用户信息,这样在请求过来时拉取配置信息,流量获取单元200就可以获知当前用户的当前库存流量。当然,在其他实施例中,用户信息的获取也可以是流量获取单元200从请求中带有的信息获取得到。

当所述目标请求的目标流量不大于所述当前库存流量时,说明该用户的当前库存流量仍然能够满足该目标请求的需要,请求处理单元300处理所述目标请求。

同时,为了避免在目标请求执行过程中,有新的该用户的请求进入,导致新的请求的比较仍与当前库存流量进行比较而造成错误,请求处理单元300在当前库存流量中扣除目标请求的目标流量,将扣除目标流量后的当前库存流量更新为临时库存流量。这样,当下一次请求进来时,该请求的目标流量需要跟临时库存流量进行比较。临时库存流量用于在下个请求到来时判断下个请求的目标流量是否超出临时库存流量,以保证下个请求到来时能够正确判断下个请求的目标流量是否超出当前库存流量。

需要说明的是,临时库存流量是一个变化值,临时库存流量会根据真实的目标请求处理结果的响应结果进行上下变动。因本发明实施例是基于目标请求的响应结果进行统计,由于每个接口的响应时间长短不一,需要耗费一定时长才会返回处理结果,然而,在这一定时长内,用户可能会发出多次请求。为了避免通过的请求量超出最大限制,不管目标请求是否成功,只要目标请求过来,就会先在当前库存流量中扣除目标请求的目标流量。

如果目标请求未被成功处理,表明目标请求并未真实用去目标流量,因此请求统计单元400应该在临时库存流量的基础上将允许目标流量通过时实时扣除的目标流量加回来,得到更新后的当前库存流量。

本发明实施例所提供的流量控制装置,可以保证目标请求能够被及时处理,降低目标请求成功处理后,更新后的当前库存流量(等于临时库存流量)减小,使得更新后的当前库存流量不能满足其他请求的流量要求,但其他请求已经被处理的情况的发生概率,提高当正在处理的目标请求未处理完成,有其他的请求进入时,流量控制的准确性;同时,在目标请求未被成功处理时,利用临时库存流量与目标流量的流量和,更新临时库存流量,得到更新后的当前库存流量,能够提高目标请求未被成功处理的情况下,当前库存流量的准确性,降低被错误地减小当前库存流量的概率,提高统计结果的准确性。

在一种具体实施例中,所述流量获取单元200还适于获取所述用户的上限流量和已使用流量;当所述已使用流量与所述目标请求所需的目标流量之和小于或等于所述上限流量,且所述目标流量小于或等于所述当前库存流量时,处理所述目标请求;当所述目标请求未被成功处理时,维持所述已使用流量不变,并利用所述临时库存流量与所述目标流量的流量和,更新所述临时库存流量,得到更新后的当前库存流量。

从而当多个请求同时接入时,在当前库存流量被持续扣减的情况下,避免由于目标请求可能存在未成功处理的情况,且目标请求未成功处理的响应结果未返回时,因当前库存流量小于目标流量而对目标请求是否能够被处理作出错误判断,导致本应该被通过的目标请求无法通过,使得在目标请求调用过程中无需等待请求处理响应结果,保证了请求调用和请求结果统计可以并发进行,而不需等待上一个请求的响应结果,进一步提高统计结果的准确性。

在一种具体实施例中,该流量控制装置可以包括异常检测单元,适于当所述已使用流量与所述目标请求所需的目标流量之和小于或等于所述上限流量,且所述目标流量大于所述当前库存流量时,开启异常检测任务。

如果目标请求未受限制同时目标请求的目标流量大于所述当前库存流量,说明当前库存流量在扣减过程中出现了意外,有可能是统计信息缺失或者当前库存流量扣减过多等异常情况导致的,此时异常检测单元开启异常检测任务。

在一种具体实施例中,所述请求统计单元400还适于当所述目标请求成功处理时,利用所述已使用流量和所述目标流量的流量和,更新所述已使用流量,并将所述临时库存流量作为更新后的当前库存流量。

在一种具体实施例中,所述请求处理单元300还适于当所述已使用流量与所述目标流量之和大于所述上限流量时,停止执行所述目标请求。

在一种具体实施例中,所述目标流量包括固定流量,所述当前库存流量包括当前库存次数,所述当前库存次数为所述当前库存流量所包括的所述固定流量的整数倍数;

请求处理单元300适于当所述当前库存次数大于0时,处理所述目标请求,并利用所述当前库存次数减1更新所述当前库存次数,得到所述临时库存次数;

请求统计单元400适于当所述目标请求未被成功处理时,利用所述临时库存次数加1,更新所述临时库存次数,得到更新后的当前库存次数。

因次数是不需要约定的,因此可以将目标流量设为定值,即每次请求的目标流量都是固定值,这样只需要统计请求的次数即可,避免了增加协议约定。

在一种具体实施例中,流量获取单元200还适于获取所述用户的上限流量和已使用流量,所述上限流量包括与所述固定流量的整数倍数所对应的上限次数,所述已使用流量包括所述已使用流量与所述固定流量的整数倍数所对应的已使用次数;请求处理单元300还适于当所述目标请求的已使用次数小于上限次数,且所述目标请求的当前库存次数大于0时,处理所述目标请求,并利用所述当前库存次数减1更新所述当前库存次数,得到所述临时库存次数;请求统计单元400还适于当所述目标请求未被成功处理时,维持所述已使用次数不变,利用所述临时库存次数加1,更新所述临时库存次数,得到更新后的当前库存次数。

通过判断已使用次数是否小于上限次数,以及当前库存次数是否大于0来确定是否处理目标请求,从而当多个请求同时接入时,在当前库存次数被持续扣减的情况下,避免由于目标请求可能存在未成功处理的情况,且目标请求未成功处理的响应结果未返回时,因当前库存次数小于等于0而对目标请求是否能够被处理作出错误判断,导致本应该被通过的目标请求无法通过,使得在目标请求调用过程中无需等待请求处理响应结果,保证了请求调用和请求结果统计可以并发进行,而不需等待上一个请求的响应结果,进一步提高统计结果的准确性。

本发明实施例还提供一种电子设备,该电子设备可以通过装载程序形式的上述流量控制方法,以实现本发明实施例提供的流量控制方法。本发明实施例所提供的电子设备,能够提高目标请求未被成功处理的情况下,当前库存流量的准确性,降低被错误地减小当前库存流量的概率,提高统计结果的准确性。

本发明实施例提供的电子设备的一种可选硬件结构可以如图6所示,包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4;

在本发明实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;

可选的,通信接口2可以为用于进行网络通信的通信模块的接口,如GSM模块的接口;

处理器1可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。

存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

其中,存储器3存储一条或多条计算机指令,所述一条或多条计算机指令被处理器1执行以实现本发明实施例提供的流量控制方法。

需要说明的是,上述的实现电子设备还可以包括与本发明实施例公开内容可能并不是必需的其他器件(未示出);鉴于这些其他器件对于理解本发明实施例公开内容可能并不是必需,本发明实施例对此不进行逐一介绍。

本发明实施例还提供一种存储介质,所述存储介质存储一条或多条计算机指令,所述一条或多条计算机指令用于实现本发明实施例提供的流量控制方法。

本发明实施例所提供的存储介质,能够提高目标请求未被成功处理的情况下,当前库存流量的准确性,降低被错误地减小当前库存流量的概率,提高统计结果的准确性。

上述本发明的实施方式是本发明的元件和特征的组合。除非另外提及,否则所述元件或特征可被视为选择性的。各个元件或特征可在不与其它元件或特征组合的情况下实践。另外,本发明的实施方式可通过组合部分元件和/或特征来构造。本发明的实施方式中所描述的操作顺序可重新排列。任一实施方式的一些构造可被包括在另一实施方式中,并且可用另一实施方式的对应构造代替。对于本领域技术人员而言明显的是,所附权利要求中彼此没有明确引用关系的权利要求可组合成本发明的实施方式,或者可在提交本申请之后的修改中作为新的权利要求包括。

本发明的实施方式可通过例如硬件、固件、软件或其组合的各种手段来实现。在硬件配置方式中,根据本发明示例性实施方式的方法可通过一个或更多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理器件(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器等来实现。

在固件或软件配置方式中,本发明的实施方式可以模块、过程、功能等形式实现。软件代码可存储在存储器单元中并由处理器执行。存储器单元位于处理器的内部或外部,并可经由各种己知手段向处理器发送数据以及从处理器接收数据。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是符合与本文所公开的原理和新颖特点相一致的最宽的范围。

虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种变动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

相关技术
  • 一种BUM流量控制方法、相关装置以及系统
  • 流量控制方法及相关装置
技术分类

06120112935497