流量控制方法、装置、电子设备及可读存储介质与流程

文档序号:20203507发布日期:2020-03-27 20:53阅读:213来源:国知局
流量控制方法、装置、电子设备及可读存储介质与流程

本公开的实施例涉及网络技术领域,尤其涉及一种流量控制方法、装置、电子设备及可读存储介质。



背景技术:

随着互联网技术的迅速发展,越来越多的用户使用互联网进行信息查询、网络购物等。当客户端的使用人数较多时,会给服务器造成很大的流量压力。

目前,通常在服务器配置一定的流控规则,进行流量控制,以减轻服务器的流量压力。例如,可以在服务器设置一个阈值,当流量超出该阈值时,服务器向客户端发送错误码,客户端接收到错误码后在一段时间内停止向服务器发送网络请求。

然而,流控规则需要配置在nginx(反向代理服务器)中,虽然nginx可以阻断客户端请求发送到服务器,但是流量压力将会转移到nginx,可能造成nginx宕机。



技术实现要素:

本公开的实施例提供一种流量控制方法、装置、电子设备及可读存储介质,用以提供更加合理的限流方案,在减轻服务器流量压力的同时,提高客户端的访问效率。

根据本公开的实施例的第一方面,提供了一种流量控制方法,所述方法包括:

根据当前访问请求对应的访问接口返回的超文本传输协议http状态码,检测所述当前访问请求是否满足第一限流条件,若所述当前访问请求满足所述第一限流条件,则对所述当前访问请求触发第一限流操作;

若所述当前访问请求不满足所述第一限流条件,则根据所述当前访问请求对应的累计访问次数、以及预置访问次数与预置惩罚时间之间的对应关系,检测所述当前访问请求是否满足第二限流条件,若所述当前访问请求满足所述第二限流条件,则对所述当前访问请求触发第二限流操作。

根据本公开的实施例的第二方面,提供了一种流量控制装置,所述装置包括:

第一限流模块,用于根据当前访问请求对应的访问接口返回的超文本传输协议http状态码,检测所述当前访问请求是否满足第一限流条件,若所述当前访问请求满足所述第一限流条件,则对所述当前访问请求触发第一限流操作;

第二限流模块,用于若所述当前访问请求不满足所述第一限流条件,则根据所述当前访问请求对应的累计访问次数、以及预置访问次数与预置惩罚时间之间的对应关系,检测所述当前访问请求是否满足第二限流条件,若所述当前访问请求满足所述第二限流条件,则对所述当前访问请求触发第二限流操作。

根据本公开的实施例的第三方面,提供了一种电子设备,包括:

处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现前述流量控制方法。

根据本公开的实施例的第四方面,提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述流量控制方法。

本公开的实施例提供了一种流量控制方法、装置、电子设备及可读存储介质,所述方法包括:根据当前访问请求对应的访问接口返回的超文本传输协议http状态码,检测所述当前访问请求是否满足第一限流条件,若所述当前访问请求满足所述第一限流条件,则对所述当前访问请求触发第一限流操作;若所述当前访问请求不满足所述第一限流条件,则根据所述当前访问请求对应的累计访问次数、以及预置访问次数与预置惩罚时间之间的对应关系,检测所述当前访问请求是否满足第二限流条件,若所述当前访问请求满足所述第二限流条件,则对所述当前访问请求触发第二限流操作。

通过本公开提供的方法,能够在客户端的访问接口,根据具体情况对访问请求进行限流,从而能够不在反向代理服务器上配置流控规则的同时,避免超额访问请求达到服务端,优化了限流控制的方案。另外,本公开通过对客户端访问接口进行监控的方式进行限流,避免了对客户端内务的复杂接入,以及对未经用户界面触发的网络请求,如轮询最新的网络配置,获取实验组策略,根据接口应答自动触发的接口请求等,也能够进行监控。

附图说明

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

图1示出了本公开的一个实施例中的流量控制方法的步骤流程图;

图2示出了在本公开的一个实施例中的流量控制装置的结构图;

图3示出了本公开的一个实施例提供的电子设备的结构图。

具体实施方式

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

实施例一

参照图1,其示出了本公开的一个实施例中的流量控制方法的步骤流程图,包括:

步骤101、根据当前访问请求对应的访问接口返回的超文本传输协议http状态码,检测所述当前访问请求是否满足第一限流条件,若所述当前访问请求满足所述第一限流条件,则对所述当前访问请求触发第一限流操作;

步骤102、若所述当前访问请求不满足所述第一限流条件,则根据所述当前访问请求对应的累计访问次数、以及预置访问次数与预置惩罚时间之间的对应关系,检测所述当前访问请求是否满足第二限流条件,若所述当前访问请求满足所述第二限流条件,则对所述当前访问请求触发第二限流操作。

本公开实施例的流量控制方法可应用于客户端,所述客户端具体包括但不限于:智能手机、平板电脑、电子书阅读器、mp3(动态影像专家压缩标准音频层面3,movingpictureexpertsgroupaudiolayeriii)播放器、mp4(动态影像专家压缩标准音频层面4,movingpictureexpertsgroupaudiolayeriv)播放器、膝上型便携计算机、车载电脑、台式计算机、机顶盒、智能电视机、可穿戴设备等等。

本公开实施例在每个客户端的网络请求出口处安装可执行所述流量控制方法的拦截器,用于对客户端发出的所有访问请求进行监控。

需要说明的是,本公开所述的访问请求可以是通过客户端向服务器发起的任何访问请求,如连接请求、数据获取请求、检索请求等等,访问请求通过对应的访问接口发起,同一访问请求对应同一访问接口,在实际应用中,不同客户端同一访问请求也对应同一访问接口,如10个用户均通过各自的客户端向服务器发起了获取话题热度排行榜的访问请求,由于这10个用户向通过客户端发起的是同一访问请求,因此,这10个访问请求对应同一访问接口。本公开中,访问接口可以理解为业务逻辑处理流程,即针对访问请求的处理方法,针对相同的访问请求,在同一业务处理逻辑中处理,因此,其访问接口也相同。

本公开的一个可选实施例中,所述根据所述当前访问请求对应的累计访问次数、以及预置访问次数与预置惩罚时间之间的对应关系,检测所述当前访问请求是否满足第二限流条件的步骤之前,所述方法还包括:

获取所述当前访问请求对应的访问接口的预置限流数列,所述预置限流数列中包括预置访问次数与预置惩罚时间之间的对应关系。

本公开实施例中,在通过客户端发起当前访问请求时,可以根据访问请求确定对应的访问接口,再根据访问接口确定对应的预置限流数列,预置限流数列与访问接口对应,发起同一访问请求的客户端获得的是同一访问接口对应的同一预置限流数列。可选地,可以通过网络参数配置系统horn在服务器提供一个接口服务,其中配置有各接口对应的预置限流数列,客户端可以通过访问请求对应的访问接口,从horn配置中获取对应的预置限流数列。

本公开实施例中,预置限流数列中包括预置访问次数与预置惩罚时间的对应关系,其中,预置访问次数可以是客户端发起当前访问请求的次数,惩罚时间可以是限制流量的时间,为了减轻服务器的压力,保证服务器的处理效率,当客户端发起当前访问请求的次数较多时,可以在一定时间内限制当前访问请求的发送,因此,预置限流数列表示预置访问请求的次数与限制流量的时间的关系。

在实际应用中,对预置限流数列的长度不做限制,最大可以到2147483647,可选地,预置限流数列的位数满足int类型即可,int是一种数据类型,在编程语言中是用于定义整数类型变量的标识符,例如,预置限流数列可以是a=[0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4……],其中,可以用数值的位数表示预置访问次数,数值表示预置惩罚时间,可选地,预置限流数列可以用指数级增长的数值表示惩罚时间,如,a=[0,0,0,0,0,1,1,1,1,2,2,2,2,4,4,4,4,8,8,8,8,16,16,16,16……],以2n增长,从而能够保证惩罚力度随访问次数的累计大幅度增高,以更好地避免异常流量。

本公开实施例中,在访问请求发起后,可以先判断当前访问请求是否满足第一限流条件,第一限流条件可以是服务器明确当前不能提供服务的情况,此时,服务器可能处于超载、重启、宕机等无法接收、处理访问请求的阶段,客户端可以根据服务器返回到访问接口的超文本传输协议http状态码,从而获知当前服务器的状态,如,服务器返回http状态码418,此时可以根据http状态码确定服务器处于无法处理当前访问请求的状态,可以对客户端的访问请求进行第一限流操作,即根据服务器状态拦截客户端访问请求的发出,等待服务器重新提供服务。

当判断当前访问请求不满足第一限流条件时,可以根据当前访问请求对应的累计访问次数以及预置限流数列,判断当前访问请求是否满足第二限流条件,若满足则对当前访问请求进行第二限流操作,即根据访问请求对应的累计访问次数拦截客户端的访问请求,可选地,当进行第二限流操作时,客户端网络层可以模拟返回http状态码,如http状态码418,用做用户界面(userinterface,ui)异常展示,以提示用户出现了相关问题。

本公开实施例中,第一限流操作是由服务器的状态确认的,可以认为是被动触发限流,第二限流操作是由当前访问请求对应的累计访问次数确定的,而累计访问次数可以从监测访问接口访问请求的发起情况统计得到,因此可以认为是主动触发的限流。

可选地,本公开实施例可以选择是否进行访问请求的限流,在流量较大时,可以进行限流以避免出现服务器过载,在流量较小时,可以不进行限流以降低客户端的运行压力,其中,可以将访问请求的限流是否启用的信息配置在horn中,在访问请求的限流启用时,可以对当前访问请求进行上述判断、限流操作。

另外,为了提高限流操作确定的效率,本公开中先根据服务器的反馈进行第一限流条件即被动触发限流的判断,当不满足时才进行第二限流条件即主动触发限流的判断,由于被动限流的逻辑简单直接,判断流程短,主动限流的逻辑更加精细、复杂,判断流程较长,因此,先判断是否触发被动限流,在判断是否触发主动限流,从而提高限流判断的效率。

由此,本公开可以将服务端响应结果(http状态码)和客户端的当前访问请求量两个方面作为判断是否进行限流的依据。其中,通过服务端方面的判断,可以避免只判断客户端的单点数据,造成无法判断服务端是否过载的情况发生,可以避免信息孤岛。通过客户端方面的判断,可以监控到从客户端发出的所有访问请求,例如可以监控到未经过ui(userinterface,用户界面)触发的访问请求,进而可以避免出现遗漏。

本公开的一个可选实施例中,所述根据所述当前访问请求对应的累计访问次数、以及预置访问次数与预置惩罚时间之间的对应关系,检测所述当前访问请求是否满足第二限流条件的步骤,包括:

步骤s11、根据所述当前访问请求对应的累计访问次数,查询所述预置限流数列中的预置访问次数与预置惩罚时间之间的对应关系,得到所述当前访问请求对应的惩罚时间;

步骤s12、若所述当前访问请求对应的惩罚时间大于0,且所述当前访问请求与上一次访问请求的时间间隔在所述惩罚时间内,则确定所述当前访问请求满足第二限流条件;

所述对所述当前访问请求触发第二限流操作的步骤,包括:

步骤s13、在所述惩罚时间内,禁止所述客户端针对所述访问接口的访问请求。

本公开实施例中,预置限流数列中包括预置访问次数与预置惩罚时间的对应关系,通过查询所述预置限流数列中的预置访问次数与预置惩罚时间之间的对应关系,可以得到当前访问请求对应的惩罚时间。具体地,可以是将当前访问请求对应的累计访问次数,与预置限流数列中的预置访问次数进行匹配,确定相匹配的预置访问次数对应的预置惩罚时间为当前访问请求对应的惩罚时间,可以根据惩罚时间确定当前访问请求是否满足第二限流条件,如当前访问请求对应的累计访问次数为10,则根据预置限流数列a=[0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4……]第10位的数值2,确定当前访问请求对应的惩罚时间为2秒。

本公开实施例中,当确定当前访问请求对应的惩罚时间后,若当前访问请求对应的惩罚时间大于0,且所述当前访问请求与上一次访问请求的时间间隔在所述惩罚时间内,则认为当前访问请求满足第二限流条件,触发第二限流操作。其中,第二限流操作可以是禁止在惩罚时间内针对该访问接口发起对应的访问请求。如当确定当前访问请求对应的惩罚时间为2秒时,由于2秒大于0,因此,当前访问请求符合第二限流条件,此时,可以拦截当前访问请求,并在两秒内禁止客户端针对所述访问接口的访问请求。

本公开的一个可选实施例中,所述获取当前访问请求对应的访问接口的预置限流数列的步骤之前,所述方法还包括:

步骤s21、接收所述客户端针对所述访问接口对应的当前访问请求;

步骤s22、计算所述当前访问请求对应的累计访问次数;

步骤s23、若所述当前访问请求与上一次访问请求的时间间隔大于或等于预设间隔,则对所述当前访问请求对应的累计访问次数执行减少操作;

步骤s24、若所述当前访问请求与上一次访问请求的时间间隔小于所述预设间隔,则对所述当前访问请求对应的累计访问次数执行增加操作。

本公开实施例中,当前访问请求对应的累计访问次数可以通过访问请求之间的时间间隔进行累计计算,可选地,预置限流数列a=[0,0,0,0,0,1,1,1,1,2,2,2,2],由预置限流数列a可知,a[0]到a[4]都是0,所以前5次访问请求惩罚时间是0秒,无需等待,a[5]到a[8]都是1,所以第6次到第9次访问请求的惩罚时间是1秒,a[9]到a[12]都是2,所以第10次到第13次请求的惩罚时间是2秒,使用一个变量记录当前请求位于预置限流数列的位置pos,当前访问请求与上一次访问请求的时间间隔大于或等于预设间隔时,位置pos数减1,当前访问请求与上一次访问请求的时间间隔小于预设间隔时,位置pos数加1。可选地,预设间隔可以是2秒、3秒、4秒等,以预设间隔为2秒为例。如当前访问请求是第10次请求,也即当前访问请求对应的累计访问次数为10次,在数列a中,a[0]表示第1次,当前访问请求在限流数量a中对应的位置为:pos=9,由于a[9]=2,则当前访问请求的惩罚时间应该是2秒。如果当前访问请求与上一次访问请求的时间间隔为2秒,则可以对所述当前访问请求对应的累计访问次数执行减少操作,如执行减1操作,那么当前访问请求的位置pos=pos-1=8,由于a[8]=1,则当前访问请求的惩罚时间可以更新为1秒。又如,如果当前访问请求与上一次访问请求的时间间隔为18秒,则当前访问请求的位置pos=pos-18/2=0,由于a[0]=0,则当前访问请求的惩罚时间可以更新为0秒,同时将当前访问请求对应的累计访问次数减少至0。如果当前访问请求与上一次访问请求的时间间隔为1秒,由于1秒小于当前访问请求对应的预设间隔2秒,因此,可以对当前访问请求对应的累积访问次数执行增加操作,如执行加1操作,那么当前访问请求的pos=pos+1=10,由于a[10]=2,因此,当前访问请求对应的惩罚时间为2秒。

本公开的一个可选实施例中,所述根据所述访问接口返回的超文本传输协议http状态码,检测所述当前访问请求是否满足第一限流条件的步骤,包括:

步骤s31、若检测到所述访问接口返回的http状态码为预设状态码,则确定所述当前访问请求满足第一限流条件;

所述对所述当前访问请求触发第一限流操作的步骤,包括:

步骤s32、在预设时间段内,禁止所述客户端针对所述访问接口的访问请求。

本公开实施例中,当访问接口接收到的服务器返回的http状态码为预设状态码时,则确认服务器此时可能处于超载、重启、宕机等状态,无法进行访问请求处理,其中,预设状态码可以是4**的状态码,表示客户端错误,请求包含语法错误或无法完成请求,如403,服务器理解客户端的请求,但是拒绝执行此请求;413,客户端请求的实体过大,服务器无法处理,拒绝请求;418,服务器在重启过程中等等,或者可以是5**的状态码,表示服务器内部错误,无法进行请求处理,如500,服务器内部错误,无法完成请求;503,由于超载或系统维护,服务器暂时的无法处理客户端的请求等等,当确认接收到的状态码表示当前服务器无法处理客户端的访问请求时,即认为当前访问请求满足第一限流条件。

本公开实施例中,在确认访问请求满足第一限流条件后,可以针对当前访问请求执行第一限流操作,其中,可选地,可以是在预设时间段内,禁止所述客户端针对所述访问接口的访问请求,即可以禁止当前访问请求通过对应访问接口发送,并在之后的预设时间段内禁止相同访问请求通过对应访问接口,预设时间段可以是根据服务器所处状态确定的,如服务器目前处于宕机状态,需要5分钟时间重启,因此,可以设置预设时间段为5分钟,根据第一限流操作在5分钟内禁止访问请求通过对应访问接口发送,等待服务器重启成功后,再解除第一限流操作,减缓无效访问对服务器引起的冲击,进而可以提高客户端的访问效率。

其中,可选地,服务器的重启时间可以是通过统计数据获得的所有服务器的平均重启时间,或超过预设比例(如80%)的服务器重启的平均时间,或者,服务器也可以在返回的http状态码中附带服务器重启需要的时间,从而灵活调整第一限流操作中的预设时间段,避免等待时间过长、效率降低,或等待时间过短、服务器未重启完毕。

本公开的一个可选实施例中,所述获取当前访问请求对应的访问接口的预置限流数列的步骤之前,所述方法还包括:

步骤s41、根据所述访问接口对应的历史访问数据,统计所述访问接口对应的每秒查询率;

步骤s42、根据所述访问接口对应的每秒查询率,确定预置访问次数与预置惩罚时间之间的对应关系;

步骤s43、根据所述预置访问次数与预置惩罚时间之间的对应关系,生成所述访问接口对应的预置限流数列。

本公开实施例中,各访问接口对应的预置限流数列是根据各访问接口的请求规律得到的,获取各访问接口对应的历史访问数据,再统计历史访问数据中的每秒查询率,当前时间段内请求即每秒查询率超限额后,逐步增长访问请求间隔作为惩罚时间,对于恶意的频繁访问请求,可以逐步大幅度增加惩罚时间,加大惩罚力度,将历史访问数据中的历史累计访问次数作为预置访问次数,与预置惩罚时间对应生成访问接口对应的预置先例数列。

具体地,在生成预置限流数列时,本公开实施例首先确定惩罚时间为0的预置访问次数,即确认当前访问接口对应的累计访问次数达到多少时,开始进行第二限流操作。可选地,可以根据每秒查询率,确定预置访问次数与预置惩罚时间之间的对应关系。例如,每秒查询率小于60时,如果1分钟内访问接口的访问请求没有明显规律,则惩罚时间为0的个数可以等于每秒查询率对应的数值,如每秒查询率为20,则累计访问次数1至20的惩罚时间为0,这样一分钟内正常的访问请求情况都不会受到影响,偶尔出现超出限额的情况,也只会命中惩罚时间为1秒的轻微惩罚,不会造成较大的影响。

本公开的一个可选实施例中,所述生成所述访问接口对应的预置限流数列的步骤之后,所述方法还包括:

步骤s51、根据所述访问接口对应的每秒查询率,确定所述访问接口的访问请求分布特征;

步骤s52、根据所述访问请求分布特征,调整所述访问接口的预置限流数列中预置惩罚时间为0的预置访问次数。

本公开实施例中,可以根据每秒查询率确定访问接口的访问请求分布特征,如,当一分钟内每秒查询率与一分钟内各秒实际查询量方差较小时,可以认为分布特征较为均匀,当一分钟内每秒查询率与一分钟内各秒实际查询量方差较大时,可以认为分布特征较为集中。可选地,还可以根据所述访问请求分布特征,调整所述访问接口的预置限流数列中预置惩罚时间为0的预置访问次数。例如若分布特征较为均匀,则可以适当减少0的个数,此时正常的时间间隔足够预置限流数列恢复到原点,避免持续累计;如果分布特征较为集中,那么可以适当增加0的个数,以避免访问请求集中爆发,造成累计访问次数短时间内迅速增大,导致误伤。

另外,如果每秒查询率大于60,那么可能访问接口大部分异常,此时可以先对程序逻辑进行检查,避免冗余,如果程序逻辑正常,那么可以适当增加0的个数,使其等于每秒查询率的数值。

本公开实施例中,还可以通过埋点、监控,在各个访问接口查看其限流数据,如果触发第二限流操作的频率达到预设频率,同时影响了业务数据正常流通,那么可能出现严重误伤的情况,反而影响了服务器处理访问请求的效率,此时可以适当增加0的个数,以放松惩罚力度,如果频繁触发第二限流操作对业务数据的正常流通没有影响,那么可以认为触发第二限流操作的频率是正常的,可选地,也可能是惩罚力度过松,惩罚时间过短造成频繁触发第二限流操作,此时可以适当增加惩罚时间,从而加重惩罚。

本公开的一个可选实施例中,述检测所述当前访问请求是否满足第一限流条件的步骤之前,所述方法还包括:

检测所述当前访问请求与上一次访问请求的时间间隔是否在第一限流的预设时间段内,若是,则对所述当前访问请求触发第一限流操作。

本公开实施例中,针对当前访问请求,在确认其是否满足第一限流条件或第二限流条件之前,可以先确认当前访问请求是否在第一限流的预设时间段内,或当前访问请求是否在第二限流的惩罚时间内,可选地,可以在访问请求触发第一限流操作,或访问请求触发第二限流操作时,记录其触发时间,当客户通过该访问接口再次发起请求时,检测当前访问请求的发起时间与上一次访问请求的发起时间之间的时间间隔,当时间间隔小于第一限流操作的预设时间段或小于第二限流操作的惩罚时间时,可以认为当前访问请求在第一限流的预设时间段内,或在第二限流操作的惩罚时间内,从而对当前访问请求触发第一限流操作或第二限流操作。

综上,通过本公开提供的方法,能够在客户端的访问接口,根据具体情况对访问请求进行限流,从而能够不在反向代理服务器上配置流控规则的同时,避免超额访问请求达到服务端,优化了限流控制的方案。同时通过对客户端访问接口进行监控的方式进行限流,从而避免了对客户端内务的复杂接入,对未经用户界面触发的网络请求,如轮询最新的网络配置,获取实验组策略,根据接口应答自动触发的接口请求等,也能够进行监控。

实施例二

参照图2,其示出了在本公开的一个实施例中的流量控制装置200的结构图,所述装置应用于客户端,具体包括:

第一限流模块201,用于根据当前访问请求对应的访问接口返回的超文本传输协议http状态码,检测所述当前访问请求是否满足第一限流条件,若所述当前访问请求满足所述第一限流条件,则对所述当前访问请求触发第一限流操作;

第二限流模块202,用于若所述当前访问请求不满足所述第一限流条件,则根据所述当前访问请求对应的累计访问次数、以及预置访问次数与预置惩罚时间之间的对应关系,检测所述当前访问请求是否满足第二限流条件,若所述当前访问请求满足所述第二限流条件,则对所述当前访问请求触发第二限流操作。

可选地,所述装置还包括:

获取模块,用于获取所述当前访问请求对应的访问接口的预置限流数列,所述预置限流数列中包括预置访问次数与预置惩罚时间之间的对应关系。

可选地,所述第二限流模块202,包括:

惩罚时间获取子模块,用于根据所述当前访问请求对应的累计访问次数,查询所述预置限流数列中的预置访问次数与预置惩罚时间之间的对应关系,得到所述当前访问请求对应的惩罚时间;

第二限流条件判断子模块,用于若所述当前访问请求对应的惩罚时间大于0,且所述当前访问请求与上一次访问请求的时间间隔在所述惩罚时间内,则确定所述当前访问请求满足第二限流条件;

第二限流子模块,用于在所述惩罚时间内,禁止所述客户端针对所述访问接口的访问请求。

可选地,所述装置还包括:

接收模块,用于接收所述客户端针对所述访问接口对应的当前访问请求;

累计模块,用于计算所述当前访问请求对应的累计访问次数;

所述累计模块,还用于若所述当前访问请求与上一次访问请求的时间间隔大于或等于预设间隔,则对所述当前访问请求对应的累计访问次数执行减少操作;

所述累计模块,还用于若所述当前访问请求与上一次访问请求的时间间隔小于所述预设间隔,则对所述当前访问请求对应的累计访问次数执行增加操作。

可选地,所述第一限流模块201,包括:

第一限流条件判断子模块,用于若检测到所述访问接口返回的http状态码为预设状态码,则确定所述当前访问请求满足第一限流条件;

第一限流子模块,用于在预设时间段内,禁止所述客户端针对所述访问接口的访问请求。

可选地,所述装置还包括:

统计模块,用于根据所述访问接口对应的历史访问数据,统计所述访问接口对应的每秒查询率;

对应模块,用于根据所述访问接口对应的每秒查询率,确定预置访问次数与预置惩罚时间之间的对应关系;

预置限流数列生成模块,用于根据所述预置访问次数与预置惩罚时间之间的对应关系,生成所述访问接口对应的预置限流数列。

可选地,所述装置还包括:

特征确定模块,用于根据所述访问接口对应的每秒查询率,确定所述访问接口的访问请求分布特征;

参数调整模块,用于根据所述访问请求分布特征,调整所述访问接口的预置限流数列中预置惩罚时间为0的预置访问次数。

可选地,所述装置还包括:

第一限流触发模块,用于检测所述当前访问请求与上一次访问请求的时间间隔是否在第一限流的预设时间段内,若是,则对所述当前访问请求触发第一限流操作。

综上所述,本公开的实施例提供了一种流量控制装置,所述装置包括:第一限流模块,用于根据当前访问请求对应的访问接口返回的超文本传输协议http状态码,检测所述当前访问请求是否满足第一限流条件,若所述当前访问请求满足所述第一限流条件,则对所述当前访问请求触发第一限流操作;第二限流模块,用于若所述当前访问请求不满足所述第一限流条件,则根据所述当前访问请求对应的累计访问次数、以及预置访问次数与预置惩罚时间之间的对应关系,检测所述当前访问请求是否满足第二限流条件,若所述当前访问请求满足所述第二限流条件,则对所述当前访问请求触发第二限流操作。本公开实施例,能够在客户端的访问接口,根据具体情况对访问请求进行限流,从而能够不在反向代理服务器上配置流控规则的同时,避免访问请求达到服务端,优化了限流控制的方案。另外,本公开通过对客户端访问接口进行监控的方式进行限流,避免了对客户端内务的复杂接入,以及对未经用户界面触发的网络请求,如轮询最新的网络配置,获取实验组策略,根据接口应答自动触发的接口请求等,也能够进行监控。

本公开的实施例还提供了一种电子设备,参见图3,包括:处理器301、存储器302以及存储在所述存储器上并可在所述处理器上运行的计算机程序3021,所述处理器执行所述程序时实现前述实施例的流量控制方法。

本公开的实施例还提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述实施例的流量控制方法。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本公开的实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本公开的实施例的内容,并且上面对特定语言所做的描述是为了披露本公开的实施例的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本公开的实施例的示例性实施例的描述中,本公开的实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本公开的实施例要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本公开的实施例的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

本公开的实施例的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本公开的实施例的排序设备中的一些或者全部部件的一些或者全部功能。本公开的实施例还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序。这样的实现本公开的实施例的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本公开的实施例进行说明而不是对本公开的实施例进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本公开的实施例可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

以上所述仅为本公开的实施例的较佳实施例而已,并不用以限制本公开的实施例,凡在本公开的实施例的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本公开的实施例的保护范围之内。

以上所述,仅为本公开的实施例的具体实施方式,但本公开的实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开的实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的实施例的保护范围之内。因此,本公开的实施例的保护范围应以权利要求的保护范围为准。

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