CN107483351B - 一种限流方法及装置 - Google Patents

一种限流方法及装置 Download PDF

Info

Publication number
CN107483351B
CN107483351B CN201710571241.5A CN201710571241A CN107483351B CN 107483351 B CN107483351 B CN 107483351B CN 201710571241 A CN201710571241 A CN 201710571241A CN 107483351 B CN107483351 B CN 107483351B
Authority
CN
China
Prior art keywords
time delay
tokens
period
service response
preset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710571241.5A
Other languages
English (en)
Other versions
CN107483351A (zh
Inventor
唐伟
孙逸凡
贾冠宇
陈卓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Unionpay Co Ltd
Original Assignee
China Unionpay Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Unionpay Co Ltd filed Critical China Unionpay Co Ltd
Priority to CN201710571241.5A priority Critical patent/CN107483351B/zh
Publication of CN107483351A publication Critical patent/CN107483351A/zh
Application granted granted Critical
Publication of CN107483351B publication Critical patent/CN107483351B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/215Flow control; Congestion control using token-bucket
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]

Abstract

本发明公开了一种限流方法及装置,能够适应系统的动态变化,包括:在系统状态发生变化时,获取服务响应时延;服务响应时延为设定时间周期内系统响应一次服务请求所用的平均时延;在服务响应时延超过预设时延时,按预设规则调整周期分发令牌数直至服务响应时延达到预设时延;周期分发令牌数用于指示系统在一个周期内处理的服务请求的数量;预设规则为波浪式调整周期分发令牌数且在每个波段中周期分发令牌数的减少量大于周期分发令牌数的增加量。通过服务响应时延动态调整令牌数能够更好地适应不同系统状态下系统对服务请求的限流,而且,波浪式调整周期分发令牌数更加稳定、高效。

Description

一种限流方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种限流方法及装置。
背景技术
限流是一种常用的系统保护措施。在系统响应用户业务请求时,会产生一定的访问流量,通常系统中都具备限流器功能,以实现对系统中的业务流量进行控制以防止业务流量过大而超过系统处理能力,使系统宕机。具备限流器功能的系统含有限流器令牌桶模块,在限流器的令牌桶中存有一定数量的令牌,系统每响应一次业务请求,便从限流器令牌桶中扣除一定数量的令牌,当限流器令牌桶中令牌数量不足时,便停止响应该业务请求,以实现对该业务请求的限流。
然而,现有的限流方式多为单阈值限流,即设置一个固定的每秒分发令牌数(Token per Second,TPS)阈值,当业务请求的每秒请求令牌数大于预设的TPS时,便不允许该终端继续获取令牌。这种限流方式过于简单粗暴,不适应于系统的动态变化。例如,当系统增加新的服务器时,其能够承载更高的业务流量,此时若继续沿用原有的TPS阈值,便无法充分利用系统的负载能力,造成了资源浪费。
综上所述,现有的限流方案存在着无法适应系统的动态变化的问题。
发明内容
本发明提供一种限流器建立方法及装置,用以解决现有技术中存在无法适应系统的动态变化的问题。
本发明实施例提供一种限流方法,包括:
在系统状态发生变化时,获取服务响应时延;所述服务响应时延为设定时间周期内系统响应一次服务请求所用的平均时延;
在所述服务响应时延超过预设时延时,按预设规则调整周期分发令牌数直至所述服务响应时延达到所述预设时延;所述周期分发令牌数用于指示所述系统在一个周期内处理的服务请求的数量;所述预设规则为波浪式调整所述周期分发令牌数且在每个波段中所述周期分发令牌数的减少量大于所述周期分发令牌数的增加量。
可选的,所述按预设规则调整周期分发令牌数直至所述服务响应时延达到所述预设时延,包括:
在M个周期内减少所述周期分发令牌数直至所述服务响应时延达到或低于所述预设时延,其中,第M-1个周期的周期分发令牌数与第M个周期的周期分发令牌数的差值为第一令牌数;M为大于1的正整数;
在所述服务响应时延低于所述预设时延时,根据所述第一令牌数和预设周期数N按周期增加所述周期分发令牌数直至所述服务响应时延超过或达到所述预设时延;N为大于1的正整数;
在所述服务响应时延超过所述预设时延时,返回在M个周期内减少所述周期分发令牌数直至所述服务响应时延达到或低于所述预设时延的步骤。
可选的,根据所述第一令牌数和预设周期数N按周期增加所述周期分发令牌数,包括:
根据所述第一令牌数和所述预设周期数N的比值确定每个周期的周期分发令牌增加数;
在所述第一令牌数能够被N整除,且前N-1个周期的服务响应时延低于所述预设时延时,将第N个周期的周期分发令牌增加数分配到至少两个周期内,以在所述至少两个周期内逐步增加所述第N个周期的周期分发令牌数,直至所述服务响应时延超过或达到所述预设时延。
可选的,获取服务响应时延后,还包括:
在所述服务响应时延未超过所述预设时延,且所述周期分发令牌数小于周期请求令牌数时,增加所述周期分发令牌数,直至所述服务响应时延超过或达到所述预设时延,或,所述周期分发令牌数不小于所述周期请求令牌数时为止;周期响应令牌数与所述系统在该周期内收到的服务请求数量相对应。
可选的,在所述服务响应时延未超过所述预设时延,且所述周期分发令牌数小于周期请求令牌数时,增加所述周期分发令牌数,包括:
在所述服务响应时延未超过所述预设时延,且所述周期分发令牌数小于周期请求令牌数时,指数级或对数级增加所述周期分发令牌数。
本发明实施例提供一种限流装置,包括:
获取单元,用于在系统状态发生变化时,获取服务响应时延;所述服务响应时延为设定时间周期内系统响应一次服务请求所用的平均时延;
处理单元,用于在所述服务响应时延超过预设时延时,按预设规则调整周期分发令牌数直至所述服务响应时延达到所述预设时延;所述周期分发令牌数用于指示所述系统在一个周期内处理的服务请求的数量;所述预设规则为波浪式调整所述周期分发令牌数且在每个波段中所述周期分发令牌数的减少量大于所述周期分发令牌数的增加量。
可选的,所述处理单元具体用于:
在M个周期内减少所述周期分发令牌数直至所述服务响应时延达到或低于所述预设时延,其中,第M-1个周期的周期分发令牌数与第M个周期的周期分发令牌数的差值为第一令牌数;M为大于1的正整数;
在所述服务响应时延低于所述预设时延时,根据所述第一令牌数和预设周期数N按周期增加所述周期分发令牌数直至所述服务响应时延超过或达到所述预设时延;N为大于1的正整数;
在所述服务响应时延超过所述预设时延时,返回在M个周期内减少所述周期分发令牌数直至所述服务响应时延达到或低于所述预设时延的步骤。
可选的,所述处理单元具体用于:
根据所述第一令牌数和所述预设周期数N的比值确定每个周期的周期分发令牌增加数;
在所述第一令牌数能够被N整除,且前N-1个周期的服务响应时延低于所述预设时延时,将所述第N个周期的周期分发令牌增加数分配到至少两个周期内,以在所述至少两个周期内逐步增加所述第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个周期的周期分发令牌增加数分配到至少两个周期内,以在所述至少两个周期内逐步增加所述第N个周期的周期分发令牌数,直至服务响应时延超过或达到预设时延。继续以上述实例举例,在根据第一令牌数60和预设周期数3确定每个周期的周期分发令牌增加数为20之后,判断第一令牌数60能够被3整除且前两个周期的服务响应时延低于预设时延,此时将第三个周期的周期分发令牌增加数20按照至少两个周期逐步增加,例如,按照三个周期增加,每一周期增加7个周期分发令牌数。应理解,本发明实施例默认对第一令牌数和预设周期数之间的运算采用四舍五入规则,因此,在第一令牌数无法被预设周期数整除时,对于周期分发令牌数的调整一定不会陷入死循环。
系统状态发生变化时,不仅仅只存在服务响应时延超过预设时延的情况,还有可能出现服务响应时延未超过预设时延的情况,例如,系统初始化运行时,往往为了保护系统而对周期分发令牌数预设了一个较低的初始值,此时,便往往会出现服务响应时延低于预设时延的情况。当服务响应时延低于预设时延时,说明系统还有余力在一个周期内处理更多的服务请求,可选的,在服务响应时延未超过预设时延,且周期分发令牌数小于周期请求令牌数时,增加周期分发令牌数,直至服务响应时延超过或达到预设时延,或,周期分发令牌数不小于周期请求令牌数时为止;周期响应令牌数与系统在该周期内收到的服务请求数量相对应。在周期分发令牌数小于周期请求令牌数时,说明系统现在一个周期内未处理全部的服务请求,而刚好此时系统还有余力处理更多的服务请求,此时便可以增加系统的周期分发令牌数,直至服务响应时延超过或达到预设时延,或,周期分发令牌数不小于周期请求令牌数时为止,可以充分利用系统的处理能力以在满足预设时延的前提下尽可能多的处理更多的服务请求,提高用户的使用体验。应理解,此处为系统状态发生变化后,首次增加系统的周期分发令牌数,与前述波浪式调整中增加周期分发令牌数的阶段可区别对待。这是因为,在波浪式调整过程中,周期分发令牌数往往距离预设时延对应的周期分发令牌数非常接近,即在波浪式调整过程中每次增加周期分发令牌数的阶段中增加的周期分发令牌数往往非常小,而系统状态发生变化后,首次增加的周期分发令牌数较之会大得多。
基于上述对系统状态发生变化后,首次增加周期分发令牌数的特点的论述,本发明实施例提供两种不同的增加模式,以满足具体实施过程中不同系统服务特点的要求。可选的,在服务响应时延未超过预设时延,且周期分发令牌数小于周期请求令牌数时,指数级或对数级增加所述周期分发令牌数。对于指数级或对数级的具体实现方式,本发明实施例提供以下两个可行的公式并分别进行说明。
对于指数级增加周期分发令牌数,可采用如公式二所示的形式进行增加,
n2=n1 s (公式二)
其中,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个周期的周期分发令牌增加数分配到至少两个周期内,以在所述至少两个周期内逐步增加所述第N个周期的周期分发令牌数,直至服务响应时延超过或达到预设时延。
可选的,处理单元602还用于:
在服务响应时延未超过预设时延,且周期分发令牌数小于周期请求令牌数时,增加周期分发令牌数,直至服务响应时延超过或达到预设时延,或,周期分发令牌数不小于周期请求令牌数时为止;周期响应令牌数与系统在该周期内收到的服务请求数量相对应。
可选的,处理单元602具体用于:
在服务响应时延未超过预设时延,且周期分发令牌数小于周期请求令牌数时,指数级或对数级增加周期分发令牌数。
本发明实施例还提供一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用存储器中存储的程序指令,按照获得的程序执行上述任一实施例所提供的限流方法。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行上述任一实施例所提供的限流方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (8)

1.一种限流方法,其特征在于,包括:
在系统状态发生变化时,获取服务响应时延;所述服务响应时延为设定时间周期内系统响应一次服务请求所用的平均时延;
在所述服务响应时延超过预设时延时,按预设规则调整周期分发令牌数直至所述服务响应时延达到所述预设时延;所述周期分发令牌数用于指示所述系统在一个周期内处理的服务请求的数量;所述预设规则为波浪式调整所述周期分发令牌数且在每个波段中所述周期分发令牌数的减少量大于所述周期分发令牌数的增加量;所述按预设规则调整周期分发令牌数直至所述服务响应时延达到所述预设时延,包括:
在M个周期内减少所述周期分发令牌数直至所述服务响应时延达到或低于所述预设时延,其中,第M-1个周期的周期分发令牌数与第M个周期的周期分发令牌数的差值为第一令牌数;M为大于1的正整数;
在所述服务响应时延低于所述预设时延时,根据所述第一令牌数和预设周期数N按周期增加所述周期分发令牌数直至所述服务响应时延超过或达到所述预设时延;N为大于1的正整数;
在所述服务响应时延超过所述预设时延时,返回在M个周期内减少所述周期分发令牌数直至所述服务响应时延达到或低于所述预设时延的步骤;
根据所述第一令牌数和预设周期数N按周期增加所述周期分发令牌数,包括:
根据所述第一令牌数和所述预设周期数N的比值确定每个周期的周期分发令牌增加数;
在所述第一令牌数能够被N整除,且前N-1个周期的服务响应时延低于所述预设时延时,将第N个周期的周期分发令牌增加数分配到至少两个周期内,以在所述至少两个周期内逐步增加每个周期的周期分发令牌数,直至所述服务响应时延超过或达到所述预设时延;所述至少两个周期是将所述第N个周期进行拆分确定的;所述至少两个周期内的周期分发令牌数是采用波浪式的方式调整的。
2.如权利要求1所述的方法,其特征在于,获取服务响应时延后,还包括:
在所述服务响应时延未超过所述预设时延,且所述周期分发令牌数小于周期请求令牌数时,增加所述周期分发令牌数,直至所述服务响应时延超过或达到所述预设时延,或,所述周期分发令牌数不小于所述周期请求令牌数时为止;周期响应令牌数与所述系统在该周期内收到的服务请求数量相对应。
3.如权利要求2所述的方法,其特征在于,在所述服务响应时延未超过所述预设时延,且所述周期分发令牌数小于周期请求令牌数时,增加所述周期分发令牌数,包括:
在所述服务响应时延未超过所述预设时延,且所述周期分发令牌数小于周期请求令牌数时,指数级或对数级增加所述周期分发令牌数。
4.一种限流装置,其特征在于,包括:
获取单元,用于在系统状态发生变化时,获取服务响应时延;所述服务响应时延为设定时间周期内系统响应一次服务请求所用的平均时延;
处理单元,用于在所述服务响应时延超过预设时延时,按预设规则调整周期分发令牌数直至所述服务响应时延达到所述预设时延;所述周期分发令牌数用于指示所述系统在一个周期内处理的服务请求的数量;所述预设规则为波浪式调整所述周期分发令牌数且在每个波段中所述周期分发令牌数的减少量大于所述周期分发令牌数的增加量;
所述处理单元具体用于:
在M个周期内减少所述周期分发令牌数直至所述服务响应时延达到或低于所述预设时延,其中,第M-1个周期的周期分发令牌数与第M个周期的周期分发令牌数的差值为第一令牌数;M为大于1的正整数;
在所述服务响应时延低于所述预设时延时,根据所述第一令牌数和预设周期数N按周期增加所述周期分发令牌数直至所述服务响应时延超过或达到所述预设时延;N为大于1的正整数;
在所述服务响应时延超过所述预设时延时,返回在M个周期内减少所述周期分发令牌数直至所述服务响应时延达到或低于所述预设时延的步骤;
所述处理单元具体用于:
根据所述第一令牌数和所述预设周期数N的比值确定每个周期的周期分发令牌增加数;
在所述第一令牌数能够被N整除,且前N-1个周期的服务响应时延低于所述预设时延时,将第N个周期的周期分发令牌增加数分配到至少两个周期内,以在所述至少两个周期内逐步增加每个周期的周期分发令牌数,直至所述服务响应时延超过或达到所述预设时延;所述至少两个周期是将所述第N个周期进行拆分确定的;所述至少两个周期内的周期分发令牌数是采用波浪式的方式调整的。
5.如权利要求4所述的装置,其特征在于,所述处理单元还用于:
在所述服务响应时延未超过所述预设时延,且所述周期分发令牌数小于周期请求令牌数时,增加所述周期分发令牌数,直至所述服务响应时延超过或达到所述预设时延,或,所述周期分发令牌数不小于所述周期请求令牌数时为止;所述周期响应令牌数与所述系统在该周期内收到的服务请求数量相对应。
6.如权利要求5所述的装置,其特征在于,所述处理单元具体用于:在所述服务响应时延未超过所述预设时延,且所述周期分发令牌数小于周期请求令牌数时,指数级或对数级增加所述周期分发令牌数。
7.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如权利要求1至3任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行如权利要求1至3任一项所述的方法。
CN201710571241.5A 2017-07-13 2017-07-13 一种限流方法及装置 Active CN107483351B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710571241.5A CN107483351B (zh) 2017-07-13 2017-07-13 一种限流方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710571241.5A CN107483351B (zh) 2017-07-13 2017-07-13 一种限流方法及装置

Publications (2)

Publication Number Publication Date
CN107483351A CN107483351A (zh) 2017-12-15
CN107483351B true CN107483351B (zh) 2021-09-28

Family

ID=60595585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710571241.5A Active CN107483351B (zh) 2017-07-13 2017-07-13 一种限流方法及装置

Country Status (1)

Country Link
CN (1) CN107483351B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108833296A (zh) * 2018-04-08 2018-11-16 阿里巴巴集团控股有限公司 批处理速率的控制方法和装置
CN108881055B (zh) * 2018-06-27 2022-01-04 深圳市风云实业有限公司 令牌管理方法及装置
CN110838989B (zh) * 2018-08-15 2023-06-27 北京京东尚科信息技术有限公司 一种用于基于令牌进行网络限流的方法和装置
CN109861920A (zh) * 2019-01-16 2019-06-07 深圳市融汇通金科技有限公司 一种弹性限流的方法及装置
CN110493213A (zh) * 2019-08-13 2019-11-22 北京奇艺世纪科技有限公司 基于响应时间的访问控制方法、装置及电子设备
CN110808914A (zh) * 2019-09-29 2020-02-18 北京淇瑀信息科技有限公司 一种访问请求处理方法、装置及电子设备
CN111555986B (zh) * 2020-04-26 2022-07-05 支付宝(杭州)信息技术有限公司 一种拥塞控制方法、装置及设备
CN111817974B (zh) * 2020-06-09 2022-11-15 平安科技(深圳)有限公司 基于令牌桶的接口限流方法、装置、系统及可读存储介质
CN111817976B (zh) * 2020-07-16 2023-04-25 浙江百应科技有限公司 一种流量自适应限流系统及其控制方法
CN112312165A (zh) * 2020-10-19 2021-02-02 中移(杭州)信息技术有限公司 视频下发方法、装置及计算机可读存储介质
CN112929290B (zh) * 2021-02-02 2023-02-24 湖南快乐阳光互动娱乐传媒有限公司 一种限流方法、装置、系统、存储介质和设备、以及网关
CN114006871A (zh) * 2021-10-25 2022-02-01 北京有竹居网络技术有限公司 流量控制方法、装置、容器和存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7289447B2 (en) * 2003-10-21 2007-10-30 Comcast Cable Holdings, Llc Method and packet-level device for traffic regulation in a data network
CN102082693B (zh) * 2011-02-15 2015-05-20 中兴通讯股份有限公司 网络流量监管方法及装置
CN102779062A (zh) * 2011-05-09 2012-11-14 阿里巴巴集团控股有限公司 一种访问系统资源的线程数量的控制方法及装置
WO2012167571A1 (zh) * 2011-11-25 2012-12-13 华为技术有限公司 网络拥塞控制方法和装置
CN104408656A (zh) * 2014-10-29 2015-03-11 中国建设银行股份有限公司 动态调整流控阈值的方法及系统
CN106817424B (zh) * 2017-01-23 2019-08-27 杭州云纪网络科技有限公司 用于控制访问流量的方法及系统

Also Published As

Publication number Publication date
CN107483351A (zh) 2017-12-15

Similar Documents

Publication Publication Date Title
CN107483351B (zh) 一种限流方法及装置
CN107770088B (zh) 一种流量控制方法及装置
US9448839B2 (en) Backoff job queue polling mechanism
CN107547433B (zh) 基于令牌漏桶进行限流的方法、装置和设备
WO2017166643A1 (zh) 一种任务资源的量化方法和装置
EP3129880A1 (en) Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system
CN112148427A (zh) 一种云平台资源分配方法、装置和计算机可读存储介质
US20160378557A1 (en) Task allocation determination apparatus, control method, and program
CN106095047B (zh) 一种控制方法及电子设备
CN111767142A (zh) 服务节点的限流阈值设置方法和服务端设备
CN106936867B (zh) 一种业务请求的响应方法及装置
CN111190739A (zh) 一种资源分配方法、装置、电子设备及存储介质
CN109992392B (zh) 一种资源部署方法、装置及资源服务器
US10423452B2 (en) Allocating resources to virtual machines
KR20210095687A (ko) 스케줄링 방법 및 장치, 전자 디바이스 및 기록 매체
CN106611005B (zh) 一种设置爬虫爬取时间间隔的方法及装置
US20190332326A1 (en) Method, device, and computer program product for operation control in storage system
CN105740076A (zh) 一种负载均衡方法及装置
US20180309686A1 (en) Reducing rate limits of rate limiters
CN111211915A (zh) 容器的网络带宽的调节方法、计算机设备及可读存储介质
CN111338803A (zh) 一种线程处理方法和装置
CN111510479A (zh) 一种异构缓存系统的资源分配方法及装置
CN107689979B (zh) 一种下载请求处理方法和处理设备
CN112905119A (zh) 一种分布式存储系统的数据写入控制方法、装置及设备
CN109426565B (zh) 一种内存分配方法、装置及终端

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant