一种限流方法及装置与流程

文档序号:13212764阅读:229来源:国知局
一种限流方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种限流方法及装置。



背景技术:

限流是一种常用的系统保护措施。在系统响应用户业务请求时,会产生一定的访问流量,通常系统中都具备限流器功能,以实现对系统中的业务流量进行控制以防止业务流量过大而超过系统处理能力,使系统宕机。具备限流器功能的系统含有限流器令牌桶模块,在限流器的令牌桶中存有一定数量的令牌,系统每响应一次业务请求,便从限流器令牌桶中扣除一定数量的令牌,当限流器令牌桶中令牌数量不足时,便停止响应该业务请求,以实现对该业务请求的限流。

然而,现有的限流方式多为单阈值限流,即设置一个固定的每秒分发令牌数(tokenpersecond,tps)阈值,当业务请求的每秒请求令牌数大于预设的tps时,便不允许该终端继续获取令牌。这种限流方式过于简单粗暴,不适应于系统的动态变化。例如,当系统增加新的服务器时,其能够承载更高的业务流量,此时若继续沿用原有的tps阈值,便无法充分利用系统的负载能力,造成了资源浪费。

综上所述,现有的限流方案存在着无法适应系统的动态变化的问题。



技术实现要素:

本发明提供一种限流器建立方法及装置,用以解决现有技术中存在无法适应系统的动态变化的问题。

本发明实施例提供一种限流方法,包括:

在系统状态发生变化时,获取服务响应时延;所述服务响应时延为设定时间周期内系统响应一次服务请求所用的平均时延;

在所述服务响应时延超过预设时延时,按预设规则调整周期分发令牌数直至所述服务响应时延达到所述预设时延;所述周期分发令牌数用于指示所述系统在一个周期内处理的服务请求的数量;所述预设规则为波浪式调整所述周期分发令牌数且在每个波段中所述周期分发令牌数的减少量大于所述周期分发令牌数的增加量。

可选的,所述按预设规则调整周期分发令牌数直至所述服务响应时延达到所述预设时延,包括:

在m个周期内减少所述周期分发令牌数直至所述服务响应时延达到或低于所述预设时延,其中,第m-1个周期的周期分发令牌数与第m个周期的周期分发令牌数的差值为第一令牌数;m为大于1的正整数;

在所述服务响应时延低于所述预设时延时,根据所述第一令牌数和预设周期数n按周期增加所述周期分发令牌数直至所述服务响应时延超过或达到所述预设时延;n为大于1的正整数;

在所述服务响应时延超过所述预设时延时,返回在m个周期内减少所述周期分发令牌数直至所述服务响应时延达到或低于所述预设时延的步骤。

可选的,根据所述第一令牌数和预设周期数n按周期增加所述周期分发令牌数,包括:

根据所述第一令牌数和所述预设周期数n的比值确定每个周期的周期分发令牌增加数;

在所述第一令牌数能够被n整除,且前n-1个周期的服务响应时延低于所述预设时延时,将所述第n个周期的周期分发令牌增加数按照至少两个周期逐步增加,直至所述服务响应时延超过或达到所述预设时延。

可选的,获取服务响应时延后,还包括:

在所述服务响应时延未超过所述预设时延,且所述周期分发令牌数小于周期请求令牌数时,增加所述周期分发令牌数,直至所述服务响应时延超过或达到所述预设时延,或,所述周期分发令牌数不小于所述周期请求令牌数时为止;所述周期响应令牌数与所述系统在该周期内收到的服务请求数量相对应。

可选的,在所述服务响应时延未超过所述预设时延,且所述周期分发令牌数小于周期请求令牌数时,增加所述周期分发令牌数,包括:

在所述服务响应时延未超过所述预设时延,且所述周期分发令牌数小于周期请求令牌数时,指数级或对数级增加所述周期分发令牌数。

本发明实施例提供一种限流装置,包括:

获取单元,用于在系统状态发生变化时,获取服务响应时延;所述服务响应时延为设定时间周期内系统响应一次服务请求所用的平均时延;

处理单元,用于在所述服务响应时延超过预设时延时,按预设规则调整周期分发令牌数直至所述服务响应时延达到所述预设时延;所述周期分发令牌数用于指示所述系统在一个周期内处理的服务请求的数量;所述预设规则为波浪式调整所述周期分发令牌数且在每个波段中所述周期分发令牌数的减少量大于所述周期分发令牌数的增加量。

可选的,所述处理单元具体用于:

在m个周期内减少所述周期分发令牌数直至所述服务响应时延达到或低于所述预设时延,其中,第m-1个周期的周期分发令牌数与第m个周期的周期分发令牌数的差值为第一令牌数;m为大于1的正整数;

在所述服务响应时延低于所述预设时延时,根据所述第一令牌数和预设周期数n按周期增加所述周期分发令牌数直至所述服务响应时延超过或达到所述预设时延;n为大于1的正整数;

在所述服务响应时延超过所述预设时延时,返回在m个周期内减少所述周期分发令牌数直至所述服务响应时延达到或低于所述预设时延的步骤。

可选的,所述处理单元具体用于:

根据所述第一令牌数和所述预设周期数n的比值确定每个周期的周期分发令牌增加数;

在所述第一令牌数能够被n整除,且前n-1个周期的服务响应时延低于所述预设时延时,将所述第n个周期的周期分发令牌增加数按照至少两个周期逐步增加,直至所述服务响应时延超过或达到所述预设时延。

可选的,所述处理单元还用于:

在所述服务响应时延未超过所述预设时延,且所述周期分发令牌数小于周期请求令牌数时,增加所述周期分发令牌数,直至所述服务响应时延超过或达到所述预设时延,或,所述周期分发令牌数不小于所述周期请求令牌数时为止;所述周期响应令牌数与所述系统在该周期内收到的服务请求数量相对应。

可选的,所述处理单元具体用于:

在所述服务响应时延未超过所述预设时延,且所述周期分发令牌数小于周期请求令牌数时,指数级或对数级增加所述周期分发令牌数。

本发明实施例提供一种计算设备,包括:

存储器,用于存储程序指令;

处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述任一种方法。

本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行上述任一种方法。

综上所述,本发明实施例提供一种限流方法及装置,包括:在系统状态发生变化时,获取服务响应时延;服务响应时延为设定时间周期内系统响应一次服务请求所用的平均时延;在服务响应时延超过预设时延时,按预设规则调整周期分发令牌数直至服务响应时延达到预设时延;周期分发令牌数用于指示系统在一个周期内处理的服务请求的数量;预设规则为波浪式调整周期分发令牌数且在每个波段中周期分发令牌数的减少量大于周期分发令牌数的增加量。系统状态不同,其处理服务请求的能力也会有所不同,而服务响应时延是系统处理服务请求能力的直观体现,服务响应时延过长说明系统周期处理服务请求的数量过多,服务响应时延过短说明系统尚有余力在一定周期内处理更多的服务请求,即在不同的系统状态下,同一服务响应时延可能对应着不同的周期分发令牌数。因此,通过服务响应时延动态调整令牌数能够更好地适应不同系统状态下系统对服务请求的限流,而且,采用波浪式调整周期分发令牌数的形式可以以逐渐递进的方式趋近于在某一系统状态下,预设时延对应的周期分发令牌数,这种调整方式更加稳定、高效。

附图说明

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

图1为本发明实施例提供的一种限流方法流程示意图;

图2为本发明实施例提供的一种按预设规则调整周期分发令牌数的方法流程示意图;

图3为本发明实施例提供的一种周期分发令牌数增长曲线示意图;

图4为本发明实施例提供的一种周期分发令牌数增长曲线示意图;

图5为本发明实施例提供的一种可行的实现方式中每秒分发令牌数变化示意图;

图6为本发明实施例提供的一种限流装置结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

图1为本发明实施例提供的一种限流方法流程示意图,如图1所示,包括以下步骤:

s101:在系统状态发生变化时,获取服务响应时延;服务响应时延为设定时间周期内系统响应一次服务请求所用的平均时延。

s102:在服务响应时延超过预设时延时,按预设规则调整周期分发令牌数直至服务响应时延达到预设时延;周期分发令牌数用于指示系统在一个周期内处理的服务请求的数量;预设规则为波浪式调整周期分发令牌数且在每个波段中周期分发令牌数的减少量大于周期分发令牌数的增加量。

应理解,本发明实施例所提及的系统可以接收服务请求并响应服务请求,即响应了一次服务请求。系统可以接收一种或多种服务的服务请求,本发明实施例以下对服务请求的描述默认为同一种服务请求,对于多种服务请求的情况,也可以在本发明实施例所公开的技术方案的基础上实现,因此也应包含于本发明实施例中,具体实现方式可以是每种服务请求各自单独限流,也可以是系统根据每种服务请求的请求状况对服务请求进行具有关联性的限流,等等,本发明实施例对此不再一一赘述。

在s101中,实际使用中的系统并不是一成不变的,例如,系统进行了扩展,又例如,系统部分数据处理能力丧失等等。系统状态的变化也会导致系统处理服务请求的能力发生变化,例如,系统进行了扩展,那在周期时间内便能处理更多的服务请求。本发明实施例中,用系统的服务响应时延反应系统处理服务请求的能力,具体实施过程中,采用设定时间周期内响应服务请求用时的平均值作为系统的服务响应时延,例如,系统在周期内响应了100个服务请求,则将响应这100个服务请求的平均用时作为系统的服务响应时延。一般,设定时间周期为1s,即,周期分发令牌数为tps,为了简洁描述,本发明实施例以下对设定时间周期都简称为周期。

在s102中,周期分发令牌数是对系统收到的服务请求进行限流的直接手段,周期分发令牌数直接决定了系统在一个周期内能够相应服务请求的数量,例如周期分发令牌数为100,响应一个服务请求对应扣除2个令牌,那么系统在一个周期只能响应50个服务请求,此时,即使系统的处理能力仍有富余,系统也不会响应更多的服务请求。在服务响应时延超过预设时延时,说明系统处理服务请求的能力已无法应付此时周期时间内收到的服务请求,系统需要进一步限流,此时,按预设规则调整周期分发令牌数直至服务响应时延达到预设时延,具体的,波浪式调整周期分发令牌数且在每个波段中周期分发令牌数的减少量大于周期分发令牌数的增加量,整体上调整过程减少了周期分发令牌数使得系统在周期时间内需要响应的服务请求的数量,系统能够为每一个服务请求分配更多的资源,从而缩短了系统的服务响应时延。合理调整周期分发令牌数便能使系统服务响应时延达到预设时延。采用波浪式调整,可以减少迅速减少或增加周期分发令牌数对系统的影响,使系统更加稳定,同时,在服务响应时延超过或低于预设时延时,又能及时减少或增加周期分发令牌数,因此又可以更加高效地趋近于该系统状态下预设时延对应的周期分发令牌数。在本发明实施例中,预设时延可以是根据服务质量要求设定的时延值,也可以是对系统进行压测而获得的时延值,还可以是根据经验确定的时延值,当然也可以是综合以上手段或其它手段而确定的时延值,本申请对此并不多作限定。

系统状态不同,其处理服务请求的能力也会有所不同,而服务响应时延是系统处理服务请求能力的直观体现,服务响应时延过长说明系统周期处理服务请求的数量过多,服务响应时延过短说明系统尚有余力在一定周期内处理更多的服务请求,即在不同的系统状态下,同一服务响应时延可能对应着不同的周期分发令牌数。因此,通过服务响应时延动态调整令牌数能够更好地适应不同系统状态下系统对服务请求的限流,而且,采用波浪式调整周期分发令牌数的形式可以以逐渐递进的方式趋近于在某一系统状态下,预设时延对应的周期分发令牌数,这种调整方式更加稳定、高效。

在上述s102中,按预设规则调整周期分发令牌数直至服务响应时延达到预设时延,可选的,本发明实施例提供一种可行的快速降低缓慢上升的调整周期分发令牌数的实现方式,如图2所示,为本发明实施例提供的一种按预设规则调整周期分发令牌数的方法流程示意图,包括以下步骤:

s201:在m个周期内减少周期分发令牌数直至服务响应时延达到或低于预设时延,其中,第m-1个周期的周期分发令牌数与第m个周期的周期分发令牌数的差值为第一令牌数;m为大于1的正整数。

在s201中,减少周期分发令牌数有可能会经过多个周期,比如在第一个周期减少了一定数量的周期分发令牌数,但此时服务响应时延仍高于预设时延,此时便需继续降低周期分发令牌数。可选的,可以在每一个周期都按照预设比例降低周期分发令牌数,可由以下公式一表示:

nnew=n×p/100(公式一)

其中,nnew为一个周期减小后的周期分发令牌数,而n为一个周期减小前的周期分发令牌数,p为减小的比例。

持续降低周期分发令牌数,从而减小系统在一个周期内需要处理的服务请求数量,使得系统处理每一个任务的速度加快,系统的服务响应时延缩短,直至系统的服务响应时延达到或低于预设时延。在系统的服务响应时延达到预设时延时,便停止对周期分发令牌数的调整,采用此时的周期分发令牌数对系统限流。应理解,本发明实施例虽然以一个周期作为调整周期分发令牌数的时间单位,但具体实施过程中,也可根据具体使用情况以二个或其它任意个周期作为调整分发令牌数的时间单位,只需保证调整周期分发令牌数的时间单位保持一致即可,以下同理不再赘述。

s202:在服务响应时延低于预设时延时,根据第一令牌数和预设周期数n按周期增加周期分发令牌数直至服务响应时延超过或达到预设时延;n为大于1的正整数。

在s202中,当系统的服务响应时延低于预设时延时,说明此时的周期分发令牌数还未完全发挥系统的处理能力,应反过来增加周期分发令牌数。在本发明实施例中,按周期增加的方式增加周期分发令牌数,具体为,根据第一令牌数和预设周期数n确定每个周期增加的周期分发令牌数,按照所确定的每个周期增加的周期分发令牌数逐步增加周期分发令牌数直至服务响应时延超过或达到预设时延,其中,第一令牌数为s201共经历m个周期的情况下,第m-1个周期的周期分发令牌数与第m个周期的周期分发令牌数的差值。一个可行的具体实例,若s201中,第m-1个周期的周期分发令牌数为100,第m个周期的周期分发令牌数为40,则第一令牌数为60,在此基础上,若s202中,预设周期数为3,则可以确定每个周期增加的周期分发令牌数为20,之后,在第一个周期的周期分发令牌数为60,若此时服务响应时延仍低于预设时延,则在第二个周期的周期分发令牌数为80,反之,则停止增加周期分发令牌数。

s203:在服务响应时延超过预设时延时,返回在m个周期内减少周期分发令牌数直至服务响应时延达到或低于预设时延的步骤。

在s203中,当服务响应时延超过预设时延时,说明此时系统一个周期内处理的服务请求数量超出了系统的处理能力,应降低周期分发令牌数,此时,返回s201,直至服务响应时延达到预设时延。应理解,每次循环过程中,公式一中p的数值可以相同也可以不同,本发明实施例对此不再一一赘述。

对比s201和s202可见,对于依次相邻的一对下降阶段和增加阶段,一个周期内降低的周期分发令牌数必定大于一个周期内增加的周期分发令牌数,即本发明实施例采用的是一种快速下降缓慢上升的调整规则。采用快速下降的方法,可以在系统超出负载时快速减少系统一个周期内处理的服务请求数量,避免系统的崩溃或损坏,起到保护系统的作用。而采用缓慢上升的方法,可以更快地将周期分发令牌数趋近于该系统状态下,预设时延所对应的周期分发令牌数,从而使系统的周期分发令牌数更快地达到稳定值。

虽然上述方法可以在大多数情况下调整周期分发令牌数直至服务响应时延达到预设时延,但还存在一种特殊的情况,即在第n-1个增加周期分发令牌数之后服务响应时延仍低于预设时延,而第n个周期增加周期分发令牌数之后,周期分发令牌数又恢复成了第m-1个周期时的周期分发令牌数从而陷入了死循环。例如,第m-1个周期的周期分发令牌数为100,第m个周期的周期分发令牌数为40,则第一令牌数为60,在预设周期数为3的情况下,第二个周期的周期分发令牌数会增加至80,若此时的服务响应时延仍低于预设时延,便会继续增加周期分发令牌数,使得第三个周期的周期分发令牌数为100,此时的周期分发令牌数便是第m-1个周期时的周期分发令牌数,这样便陷入了死循环。为了防止这种情况发生,可选的,在根据第一令牌数和预设周期数n的比值确定每个周期的周期分发令牌增加数之后,在第一令牌数能够被n整除,且前n-1个周期的服务响应时延低于预设时延时,将第n个周期的周期分发令牌增加数按照至少两个周期逐步增加,直至服务响应时延超过或达到预设时延。继续以上述实例举例,在根据第一令牌数60和预设周期数3确定每个周期的周期分发令牌增加数为20之后,判断第一令牌数60能够被3整除且前两个周期的服务响应时延低于预设时延,此时将第三个周期的周期分发令牌增加数20按照至少两个周期逐步增加,例如,按照三个周期增加,每一周期增加7个周期分发令牌数。应理解,本发明实施例默认对第一令牌数和预设周期数之间的运算采用四舍五入规则,因此,在第一令牌数无法被预设周期数整除时,对于周期分发令牌数的调整一定不会陷入死循环。

系统状态发生变化时,不仅仅只存在服务响应时延超过预设时延的情况,还有可能出现服务响应时延未超过预设时延的情况,例如,系统初始化运行时,往往为了保护系统而对周期分发令牌数预设了一个较低的初始值,此时,便往往会出现服务响应时延低于预设时延的情况。当服务响应时延低于预设时延时,说明系统还有余力在一个周期内处理更多的服务请求,可选的,在服务响应时延未超过预设时延,且周期分发令牌数小于周期请求令牌数时,增加周期分发令牌数,直至服务响应时延超过或达到预设时延,或,周期分发令牌数不小于周期请求令牌数时为止;周期响应令牌数与系统在该周期内收到的服务请求数量相对应。在周期分发令牌数小于周期请求令牌数时,说明系统现在一个周期内未处理全部的服务请求,而刚好此时系统还有余力处理更多的服务请求,此时便可以增加系统的周期分发令牌数,直至服务响应时延超过或达到预设时延,或,周期分发令牌数不小于周期请求令牌数时为止,可以充分利用系统的处理能力以在满足预设时延的前提下尽可能多的处理更多的服务请求,提高用户的使用体验。应理解,此处为系统状态发生变化后,首次增加系统的周期分发令牌数,与前述波浪式调整中增加周期分发令牌数的阶段可区别对待。这是因为,在波浪式调整过程中,周期分发令牌数往往距离预设时延对应的周期分发令牌数非常接近,即在波浪式调整过程中每次增加周期分发令牌数的阶段中增加的周期分发令牌数往往非常小,而系统状态发生变化后,首次增加的周期分发令牌数较之会大得多。

基于上述对系统状态发生变化后,首次增加周期分发令牌数的特点的论述,本发明实施例提供两种不同的增加模式,以满足具体实施过程中不同系统服务特点的要求。可选的,在服务响应时延未超过预设时延,且周期分发令牌数小于周期请求令牌数时,指数级或对数级增加所述周期分发令牌数。对于指数级或对数级的具体实现方式,本发明实施例提供以下两个可行的公式并分别进行说明。

对于指数级增加周期分发令牌数,可采用如公式二所示的形式进行增加,

n2=n1s(公式二)

其中,n1为初始令牌数,n2为当前令牌数,s为经过的周期数。对于公式二,当s=12,n1=2时,可获得如图3所示的本发明实施例提供的一种周期分发令牌数增长曲线示意图。如图3所示,通过与线性增加的方式对比可见,指数级增加的方式可以快速增加周期分发令牌数,使周期分发令牌数迅速接近预设时延对应的周期分发令牌数,从而缩短系统调整周期分发令牌数的用时,使系统的周期分发令牌数更快地趋于稳定。

对于对数级增加周期分发令牌数,可采用如公式三所示的形式进行增加,

n2=log2(n1+s)s(公式三)

其中,n1为初始令牌数,n2为当前令牌数,s为经过的周期数。对于公式三,当s=100,n1=1时,可获得如图4所示的本发明实施例提供的一种周期分发令牌数增长曲线示意图。如图4所示,通过与线性增加的方式对比可见,对数级增加可以在前几个周期内快速增加周期分发令牌数至一定数值后转而缓慢增加周期分发令牌数,由于在前几个周期内快速增加因此对数级增加的方式并不会过多束缚系统的处理能力,而后续缓慢增加又可以防止由于周期分发令牌数增长过快致使系统过载甚至崩溃的问题。

由上述对系统状态发生变化后,首次增加周期分发令牌数的指数级和对数级两种增加模式的表述可见,指数级适用于对系统稳定性要求较小,资源消耗较低的服务类型,而对数级增加则适用于对系统稳定性要求较高、资源消耗较大的服务类型,例如交易处理、数据库写入等。具体实施过程中,可以根据不同服务类型的特点灵活使用上述两种增加模式,以获取最佳的使用效果。

为了更具体地说明本发明实施例所提供的技术方案,本发明实施例还提供以下一种可行的实现方式,应理解,以下一种可行的实现方式仅为举例说明,并不代表本发明实施例仅包括或仅适用于以下一种可行的实现方式。

图5为本发明实施例提供的一种可行的实现方式中每秒分发令牌数变化示意图,其中,横轴表示时间,纵轴表示每秒分发令牌数。请参考图5中每秒分发令牌数的变化,本发明实施例提供的一种可行的实现方式包括以下步骤:

步骤一:系统初始化,为系统中某一服务设定预设时延为t毫秒。

步骤二:运行系统,获取服务响应时延。

步骤三:在服务响应时延低于t毫秒且每秒请求令牌数大于每秒分发令牌数时,指数级增加每秒分发令牌数直至服务响应时延达到或超过预设时延。如图5中a所对应的曲线,初始的每秒分发令牌数为10,指数级增长到160,此时服务响应时延超过预设时延,停止增加每秒分发令牌数。

步骤四:在服务响应时延超过预设时延时,按照设定的减小比例减小周期分发令牌数,直至服务响应时延达到或低于预设时延,如图5中b所对应的曲线,在将每秒分发令牌数在增加到160后,服务响应时延超过预设时延,按照设定比例50%将每秒分发令牌数减小至80。

步骤五:在服务响应时延低于预设时延时,按预设周期数增加每秒分发令牌数。如图5中c所对应的曲线,在每秒分发令牌数减小至80后,第一令牌数为80,预设周期数为3,则每秒增加26个每秒分发令牌数。增加阶段第一秒,每秒分发令牌数为106,此时服务响应时延仍低于预设时延,在第二秒继续增加周期分发令牌数至132,此时服务响应时延超过预设时延,停止增加每秒分发令牌数。

步骤六:重复步骤四和步骤五直至服务响应时延达到预设时延。

综上所述,本发明实施例提供一种限流方法,包括:在系统状态发生变化时,获取服务响应时延;服务响应时延为设定时间周期内系统响应一次服务请求所用的平均时延;在服务响应时延超过预设时延时,按预设规则调整周期分发令牌数直至服务响应时延达到预设时延;周期分发令牌数用于指示系统在一个周期内处理的服务请求的数量;预设规则为波浪式调整周期分发令牌数且在每个波段中周期分发令牌数的减少量大于周期分发令牌数的增加量。系统状态不同,其处理服务请求的能力也会有所不同,而服务响应时延是系统处理服务请求能力的直观体现,服务响应时延过长说明系统周期处理服务请求的数量过多,服务响应时延过短说明系统尚有余力在一定周期内处理更多的服务请求,即在不同的系统状态下,同一服务响应时延可能对应着不同的周期分发令牌数。因此,通过服务响应时延动态调整令牌数能够更好地适应不同系统状态下系统对服务请求的限流,而且,采用波浪式调整周期分发令牌数的形式可以以逐渐递进的方式趋近于在某一系统状态下,预设时延对应的周期分发令牌数,这种调整方式更加稳定、高效。

基于相同的技术构思,本发明实施例还提供一种限流装置,该装置可执行上述任一方法实施例。图6为本发明实施例提供的一种限流装置结构示意图,如图6所示,限流装置600包括:获取单元601和处理单元602,其中,

获取单元601,用于在系统状态发生变化时,获取服务响应时延;服务响应时延为设定时间周期内系统响应一次服务请求所用的平均时延;

处理单元602,用于在服务响应时延超过预设时延时,按预设规则调整周期分发令牌数直至服务响应时延达到预设时延;周期分发令牌数用于指示系统在一个周期内处理的服务请求的数量;预设规则为波浪式调整周期分发令牌数且在每个波段中周期分发令牌数的减少量大于周期分发令牌数的增加量。

可选的,处理单元602具体用于:

在m个周期内减少周期分发令牌数直至服务响应时延达到或低于预设时延,其中,第m-1个周期的周期分发令牌数与第m个周期的周期分发令牌数的差值为第一令牌数;m为大于1的正整数;

在服务响应时延低于预设时延时,根据第一令牌数和预设周期数n按周期增加周期分发令牌数直至服务响应时延超过或达到预设时延;n为大于1的正整数;

在服务响应时延超过预设时延时,返回在m个周期内减少周期分发令牌数直至服务响应时延达到或低于预设时延的步骤。

可选的,处理单元602具体用于:

根据第一令牌数和预设周期数n的比值确定每个周期的周期分发令牌增加数;

在第一令牌数能够被n整除,且前n-1个周期的服务响应时延低于预设时延时,将第n个周期的周期分发令牌增加数按照至少两个周期逐步增加,直至服务响应时延超过或达到预设时延。

可选的,处理单元602还用于:

在服务响应时延未超过预设时延,且周期分发令牌数小于周期请求令牌数时,增加周期分发令牌数,直至服务响应时延超过或达到预设时延,或,周期分发令牌数不小于周期请求令牌数时为止;周期响应令牌数与系统在该周期内收到的服务请求数量相对应。

可选的,处理单元602具体用于:

在服务响应时延未超过预设时延,且周期分发令牌数小于周期请求令牌数时,指数级或对数级增加周期分发令牌数。

本发明实施例还提供一种计算设备,包括:

存储器,用于存储程序指令;

处理器,用于调用存储器中存储的程序指令,按照获得的程序执行上述任一实施例所提供的限流方法。

本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行上述任一实施例所提供的限流方法。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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