CN114024908A - 实时自适应限流方法、限流服务系统和限流器 - Google Patents
实时自适应限流方法、限流服务系统和限流器 Download PDFInfo
- Publication number
- CN114024908A CN114024908A CN202111294718.2A CN202111294718A CN114024908A CN 114024908 A CN114024908 A CN 114024908A CN 202111294718 A CN202111294718 A CN 202111294718A CN 114024908 A CN114024908 A CN 114024908A
- Authority
- CN
- China
- Prior art keywords
- request
- token
- tokens
- request response
- token bucket
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000000670 limiting effect Effects 0.000 title claims abstract description 31
- 230000004044 response Effects 0.000 claims abstract description 127
- 230000003044 adaptive effect Effects 0.000 claims abstract description 19
- 238000012545 processing Methods 0.000 claims description 27
- 230000003247 decreasing effect Effects 0.000 claims description 12
- 230000007423 decrease Effects 0.000 claims description 6
- 230000001960 triggered effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000005022 packaging material Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000007664 blowing Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本公开的一方面涉及一种实时自适应限流方法,包括通过接口接收请求;为所述请求作出令牌要求;响应于所述令牌要求,确定令牌桶中是否还有令牌;若是,则获取令牌并将其赋予所述请求,以对具有令牌的请求进行服务;确定是否成功服务了所述请求;若确定成功服务了所述请求,则归还赋予所述请求的令牌并向所述令牌桶中额外增加令牌;或者若确定未成功服务所述请求,则不归还赋予所述请求的令牌并从所述令牌桶中额外扣减令牌。本公开的其他方面涉及实时自适应限流服务系统和实时自适应限流器等。
Description
技术领域
本申请一般涉及计算机通信技术领域,尤其涉及限流技术。
背景技术
限流器是一种限制某种操作在一定时间内的执行次数或者执行量的防御性机制。在大数据量高并发访问时,经常会出现服务不可用的情况,甚至引发连锁反应导致系统崩溃。因此,当请求达到一定的并发数或速率时,就需要采取限流措施,例如使请求等待、排队、降级、乃至拒绝服务等。
常见的限流算法有计数器算法、滑动窗口算法、令牌桶算法、漏桶算法等。这些方案主要基于时间维度,对服务进行限流。也就是对一定时间内服务器能够处理的请求数设置阈值,然后通过控制这个阈值来实现限流。
此类方案的问题在于,运行时的环境是复杂多变的,预设的限流数是在特定运行环境下计算出来的,因此是相对固定的。然而,运行时环境的变化可能导致服务处理性能的变化。因此,单个限流值无法自适应线上环境,可能会导致限流失效,而没有拦截住风险。
因此,本领域需要改进的限流技术。
发明内容
本公开的一方面涉及一种实时自适应限流方法,包括通过接口接收请求;为所述请求作出令牌要求;响应于所述令牌要求,确定令牌桶中是否还有令牌;若是,则获取令牌并将其赋予所述请求,以对具有令牌的请求进行服务;确定是否成功服务了所述请求;若确定成功服务了所述请求,则归还赋予所述请求的令牌并向所述令牌桶中额外增加令牌;或者若确定未成功服务所述请求,则不归还赋予所述请求的令牌并从所述令牌桶中额外扣减令牌。
根据示例性实施例,该方法进一步包括若所述令牌桶中没有令牌,则拒绝所述请求的令牌要求。
根据示例性实施例,该方法进一步包括,若所述令牌桶中没有令牌,则触发计时预定时间;并且当所述预定时间期满时,若所述令牌桶中仍没有令牌,则向所述令牌桶中增加令牌。
根据示例性实施例,触发计时所述预定时间包括确定是否已在计时;若是,则不重复触发计时;或者若否,则触发计时。
根据示例性实施例,确定是否成功服务了所述请求包括接收请求响应;以及确定所述请求响应包括肯定请求响应还是否定请求响应。
根据示例性实施例,若确定所述请求响应包括肯定请求响应,则归还赋予所述请求的令牌并向所述令牌桶中额外增加令牌包括每接收到一个肯定请求响应,向所述令牌桶中额外增加一块令牌。
根据示例性实施例,若确定所述请求响应包括否定请求响应,则不归还赋予所述请求的令牌并从所述令牌桶中额外扣减令牌包括每接收到一个否定请求响应,从所述令牌桶中额外扣减一块令牌。
根据示例性实施例,若确定所述请求响应包括肯定请求响应,则归还赋予所述请求的令牌并向所述令牌桶中额外增加令牌包括每接收到第一数目个肯定请求响应,向所述令牌桶中额外增加第二数目块令牌,其中第一数目是正整数,第二数目是非负整数。
根据示例性实施例,若确定所述请求响应包括否定请求响应,则不归还赋予所述请求的令牌并从所述令牌桶中额外扣减令牌包括每接收到第一数目个否定请求响应,从所述令牌桶中额外扣减第二数目块令牌,其中第一数目是正整数,第二数目是非负整数。
根据示例性实施例,该方法进一步包括:将所述令牌桶初始化为具有可配置的预定数目块令牌,其中,所述初始化在初始接收到令牌要求时或在系统启动时进行。
根据示例性实施例,该方法实现在redis或nginx中,或实现在单机上,或实现在网关层或者流量控制层。
本公开还包括实时自适应限流服务系统和实时自适应限流器等其他相关方面。
附图说明
图1示出了根据本公开的一方面的带限流的服务系统的示意图。
图2示出了根据本公开一方面的限流方案的示意图。
图3示出了根据本公开一方面的限流器的示意图。
图4示出了根据本公开一方面的基于接口响应的实时自适应限流方法的流程图。
图5示出了根据本公开一方面的用于基于接口响应的实时自适应限流的令牌增减方法的流程图。
具体实施方式
图1示出了根据本公开的一方面的带限流的服务系统100的示意图。如图1中所示,根据一示例性实施例,服务系统100可包括但不限于接口102、服务处理单元104、以及限流器106。
根据示例性实施例,一个或多个请求110-1到110-N可调用接口102。接口102的给定并发数可为P,即N≤P。限流器106对接口102可接受的请求数量进行限制。
当请求110-1到110-N没有超出(即,小于或等于)给定并发数P时,接口102接受全部请求110-1到110-N,并将其传递给服务处理单元104。
当请求110-1到110-N超出(即,大于)给定并发数P时,接口根据预定准则接受请求110-1到110-N的一部分,例如接收其中的P个,并将其传递给服务处理单元104。
根据示例性实施例,接口所接受的请求标示为请求112-1到112-M,M小于或等于N。服务处理单元104对接受的请求112-1到112-M进行服务。
根据示例性实施例,对于请求110-1到110-N中未被接受(例如,被拒绝)的部分请求,根据不同的实施例,其可等待、排队、降级、乃至被拒绝服务(例如,丢弃)。
根据示例性实施例,本公开的限流器106采用令牌桶的模式。即,当有请求110到来时,接口102请求限流器106发放令牌。只有获取令牌的请求110才能被接口102接受并作为接受的请求112提供给服务处理单元104进行服务。
图2示出了根据本公开一方面的限流方案200的示意图。如图2中所示,根据示例性实施例,传入的请求可进入请求队列204排队。请求队列204可实现在接口(例如以上参考图1描述的接口102)内部或外部。根据示例性实施例,当请求队列204非空时,接口(未示出)可向限流器202要求令牌。限流器202可包括令牌桶(未示出),其最大令牌数为L个。当令牌桶中有令牌时,限流器202可取一令牌206发放给请求队列204中排在最前的请求208。获得令牌206的请求208即被接口接受并提供给服务处理单元(未示出)进行服务。
另一方面,根据示例性实施例,当没有获得令牌时,根据不同实现,请求208可被丢弃或者继续在请求队列204中等待。
图3示出了根据本公开一方面的限流器300的示意图。根据示例性实施例,限流器300可以包括令牌要求接收单元302、令牌桶304、计时单元306、令牌增减单元308、以及请求响应接收单元310等。
根据示例性实施例,令牌要求接收单元302可接收来自例如接口(例如以上参考图1描述的接口102)的令牌要求。令牌要求是为排队的请求获取令牌的要求。令牌要求接收单元302可根据该令牌要求触发令牌桶304为该请求发放一块令牌。
然而,当令牌桶304为空时,令牌要求接收单元302可拒绝该令牌要求。根据示例性实施例,可触发计时单元306进行熔断计时。根据示例性实施例,该触发计时单元306可以包括单例计时器。即,由于可能有多个并发的令牌要求,因此在系统已熔断的情况下,不必再次触发计时单元306的任何其他实例。由于令牌桶为空,因此在此熔断计时期间,任何新的令牌要求均会被拒绝,从而系统熔断。
根据示例性实施例,当令牌要求被拒绝时,根据不同实现,该请求可被丢弃(例如,阻止该请求访问服务)或者继续在请求队列中等待。
根据示例性实施例,当计时单元306已计到熔断阈值时间(例如,3秒),而令牌桶304中仍没有令牌时,计时单元306触发令牌增减单元308生产一块令牌并将其添加到令牌桶304中。此时,计时单元306复位,并且系统恢复,即重新开始接收令牌要求。
获得令牌的请求可由接口(例如以上参考图1描述的接口102)传递给服务处理单元(例如以上参考图1描述的服务处理单元104)进行服务。
另一方面,当请求服务成功完成时,服务处理单元(例如以上参考图1描述的服务处理单元104)可向接口(例如以上参考图1描述的接口102)传送服务反馈以指示是否成功服务了该响应。接口可以相应地向请求响应接收单元310传送肯定请求响应,以表明该请求已经成功地获得了服务并由此归还令牌。此时,请求响应接收单元310可触发令牌增减单元308在接收到归还的令牌时,不仅将所归还的令牌放入令牌桶304,还额外生产一块令牌并将其添加到令牌桶304中(即,成一增一),从而允许更多请求访问服务。当令牌桶304已满(例如,达到令牌桶容限L)时,多余的令牌可被丢弃。
然而,当请求服务未能成功完成(例如,超时或者失败)时,接口(例如以上参考图1描述的接口102)可以向请求响应接收单元310传送否定请求响应,以表明该请求未能成功地获得服务。此时,请求响应接收单元310可触发令牌增减单元308不仅不归还之前给予该请求的令牌,还额外从令牌桶304中扣减一块令牌(即,误一扣一),从而减少允许访问服务的请求数量。当令牌桶已空(例如,令牌减至0)时,由于此时任何新的令牌要求均会被拒绝,因而系统熔断。
尽管此处描述了由接口向请求响应接收单元310传送请求响应,但是本公开也可包括由服务处理单元直接向请求响应接收单元310传送请求响应的实施例等。
根据示例性实施例,令牌桶304可具有初始化限流量的令牌。该初始化先流量可以在初次接收到令牌要求时初始化,或者可在系统启动时初始化。令牌的初始化限流量可以预先配置。
根据本公开的限流器300由此可以实现指数级请求实时自适应调整。例如,当服务处理单元能够正常服务当前传入量的请求时,可使令牌数量呈指数式增加,从而使系统迅速达到满性能状态。
另一方面,在请求的当前传入量超出服务处理单元当前处理能力从而导致至少部分请求未能成功地获得服务时,则可使令牌数量呈指数式减少,以防止系统崩溃。极端情况下,当令牌数量减至零时,限流器300熔断。
根据示例性实施例,当限流器300已熔断一段时间(例如,前述熔断阈值时间)时,限流器300能够自动重新生成令牌,以激励正反馈。
应当理解,尽管以上描述了限流器300的特定参数设计,但是本公开并不被限定于此。
根据一些示例性实施例,令牌数量的指数式增加/减少的速度可以包括其他速度,并且是可调节的。例如,每当请求响应接收单元310接收到一个肯定请求响应,其可触发令牌增减单元308在接收到归还的令牌时,不仅将所归还的令牌放入令牌桶304,还额外生产两块令牌并将其添加到令牌桶304中(即,成一增二),从而以比成一增一的方案更迅速地允许更多请求访问服务。反之,每当请求响应接收单元310接收到否定请求响应,其可触发令牌增减单元308不仅不归还之前给予该请求的令牌,还额外从令牌桶304中扣减两块令牌(即,误一扣二),从而以比误一扣一的方案更迅速地减少允许访问服务的请求数量。
同样地,也可以每当请求响应接收单元310(连续或累积)接收到两个肯定请求响应,才额外生产一块令牌并将其添加到令牌桶304中(即,成二增一),从而以比成一增一的方案略慢地允许更多请求访问服务。反之,每当请求响应接收单元310(连续或累积)接收到两个否定请求响应,才额外从令牌桶304中扣减一块令牌(即,误二扣一),从而以比误一扣一的方案略慢地减少允许访问服务的请求数量。。
更一般化而言,在令牌桶最大令牌数=L,给定并发数=P,请求平均耗时(单位例如秒)=s的情况下,则令每秒处理事务数量tps为k=p*(1/s)=p/s。
假设x个请求后(消耗x个令牌),令牌数额外变更数量为y个(含成功服务的情况下归还的令牌),其中x是正整数,y是整数,则变更速率=y/x。
令时间=t(单位例如秒),令正常返回时,变更速率为m=y/x(例如,成一增一则m=2/1=2,成一增二则m=3/1=3,而成二增一则m=3/2),此时由于y>x,因此m大于1,即令牌数增加;而异常返回时,变更速率为n=y/x(例如,误一扣一即n=-1/1=-1,误一扣二则n=-2/1=-2,而误二扣一则n=-1/2),此时由于y<x,因此n小于1,即令牌数减少。
从而,系统从熔断到满速过程(即,从1到P),令牌数l随时间变化公式为:
l=mt/s, (1)
而系统从满速到满令牌过程(即,从P到L),令牌数l随时间变化公式为:
l=P+(m-1)kt。 (2)
另一方面,系统从满令牌到满速过程(即,从L到P),令牌数l随时间变化公式为:
l=L+(n-1)kt, (3)
而系统从满速到熔断过程(即,从P到1),令牌数l随时间变化公式为:
l=P*nt/s。 (4)
从而,通过调节令牌数额外变更数量y,以相应地改变变更速率,就可以实现更快或者更慢的流量扩容和缩容。
根据示例性实施例,令牌增加/减少方案也可以用概率方案来替换或与概率方案相结合。例如,可以设置额外生产/扣减令牌的概率。
根据一些示例性实施例,替换地或补充地,熔断阈值时间是可配置的,并且可以根据需求和系统性能等来设置。
图4示出了根据本公开一方面的基于接口响应的实时自适应限流方法400的流程图。方法400可例如由例如以上参考图1描述的接口102等实现。
根据示例性实施例,方法400可包括在框402,通过接口接收请求。
根据示例性实施例,接收到的请求可以进入请求队列排队,如以上结合图2的请求队列204所描述的。
在框404,方法400可包括为每个请求向限流器要求令牌。
根据示例性实施例,限流器可以是如前参考图1的限流器106、参考图2描述的限流器202、以及参考图3描述的限流器300等所描述的限流器。例如,限流器可以用令牌桶的方式来为请求发放令牌。
在框406,方法400可包括确定是否成功获取令牌。
根据示例性实施例,确定是否成功获取令牌可包括确定令牌桶是否不为空。若令牌桶不为空,则可成功获取令牌。否则,当前不可成功获取令牌。
若是,则在框408,方法400可包括将令牌赋予该请求以接受该请求进行服务处理。
根据示例性实施例,获得令牌的请求可被接口传递给例如以上结合图1描述的服务处理单元104进行服务。
若否,则在框410,方法400可包括不接受该请求。
根据各种实现,未被接受的请求可以等待、排队、降级,乃至被拒绝服务(例如,丢弃)。
根据示例性实施例,方法400可进一步包括,在框412确定是否成功服务了请求。
根据示例性实施例,确定是否成功服务了请求可包括确定接收到肯定请求响应还是否定请求响应。若接收到肯定请求响应,则表明该请求已经成功地获得了服务。若接收到否定请求响应,则表明该请求未能成功地获得服务(例如,超时或者失败)。
若是,则在框414,方法400可进一步包括,归还令牌并额外生产令牌。
根据示例性实施例,额外产生令牌可包括每(连续或累积)接收到预定数目个(例如,1个)肯定请求响应,额外生产预定数目块(例如,1块)令牌。
若否,则在框416,方法400可进一步包括,不归还令牌并额外扣减令牌。
根据示例性实施例,额外扣减令牌可包括每(连续或累积)接收到预定数目个(例如,1个)否定请求响应,额外扣减预定数目块(例如,1块)令牌。
如图4所述的方法可以实现基于接口响应的实时自适应限流。该实时自适应限流方案能感知服务状态,在线上环境中屏蔽环境干扰,基于最终响应结果自动地调配限流器的阈值。除了最大限流能力,在服务运行过程中,当服务压力过大或者异常时能够自动降低限流阈值,在务稳定时能够自动恢复限流阈值,无需人工干预。
图5示出了根据本公开一方面的用于基于接口响应的实时自适应限流的令牌增减方法500的流程图。方法500可由例如以上参考图1描述的限流器106、参考图2描述的限流器202、和/或参考图3描述的限流器300实现或执行。
如图5中所示,方法500可包括在框502接收令牌要求。根据示例性实施例,令牌要求可从例如接口(例如以上参考图1描述的接口102)接收令牌要求。该令牌要求可为例如在接口处排队的请求要求令牌以便获得服务。
在框504,方法500可包括确定令牌桶中是否有令牌。令牌桶可以例如包括以上参考图3描述的令牌桶304等。
当确定令牌桶中有令牌(例如,至少一块令牌)时,方法500可包括在框506发放令牌,以便于要求令牌的该请求获得令牌以进一步获得服务。
另一方面,当确定令牌桶中没有令牌时,方法500可包括在框508确定是否已在进行熔断计时。根据示例性实施例,熔断计时器可包括例如以上参考图3描述的计时单元306等。
若确定未在计时,则方法500可包括在框514触发熔断计时。
若确定已在计时,则方法500可包括直接去往框520。
在框520,方法500可包括拒绝当前令牌要求。拒绝令牌要求可包括使作出该令牌要求的请求等待、排队、降级、乃至被拒绝服务(例如,被丢弃)。
在框522,方法500可包括在熔断计时期满时,若令牌桶中仍没有令牌,则生产令牌并将其添加到令牌桶中。此时,熔断计时器可复位。由于此时,令牌桶中至少有一块令牌,因此系统重新恢复工作。
另一方面,方法500可包括在框510接收请求响应。随后,方法500可包括在框512确定请求响应类型。根据示例性实施例,请求响应可包括肯定请求响应和否定请求响应。
若请求响应为肯定请求响应,即请求服务成功完成,则在框516,方法500可包括向令牌桶中归还令牌并额外添加令牌。额外添加令牌的速度和/或概率可以如以上参考图3所描述地来实现。
若请求响应为否定请求响应,即请求服务未能成功完成(例如,超时或者失败),则在框518,方法500可包括不向令牌桶中归还向该请求发放的令牌,还额外从令牌桶中扣减令牌。额外扣减令牌的速度和/或概率可以如以上参考图3所描述地来实现。
本公开的基于接口响应的实时自适应限流方案可以部署在redis、nginx中以实现分布式限流器,也可以在单机上使用,实现单机粒度的限流效果。本公开的基于接口响应的实时自适应限流方案可以也可以部署在网关层或者流量控制层。
假设一个服务器有20个处理线程,即给定并发数P为20,且正常请求处理平均耗时10毫秒(即,s=0.01秒),那么理论上服务器的性能k可以是2000QPS。假设令牌桶的满令牌数L为2000块。在前述成一增一(即,m=2)和误一扣一(即,n=-1)的示例中,性能估算如下。
根据P=20,s=0.01,k=2000,L=2000,m=2,n=-1,设令牌数为l,
在失败阶段:
1.设l从L降到P的过程的时间为t1,根据以上式(3),有:
l=2000+(-1-1)*2000*t1<=20,
得到t1>=0.495,因为s=0.01,t1需要是s的整数倍,因此对t1取整得到0.5。
2.设l从P降到1的过程的时间为t2,根据以上式(4),当t1=0.5时,l=0,所以t2=0。
由此,失败阶段的时间t=t1+t2=0.5秒。即,系统从满令牌降到满速再到熔断的时间为0.5秒。
在恢复阶段:
1.设l从1恢复到P的过程的时间为t1,根据以上式(1),有:
l=2t1/0.01>=20,t1/0.01>=5,同样,t1需要是s的整数倍,由此t1=0.05。此时,l=20.05/0.01=25=32。
2.设l从P恢复到L的过程的时间为t2,根据以上式(2)并且在P替换为32的情况下,有:
l=32+(2-1)*2000*t2>=2000,t2>=1968/2000。同样,t2也需要是s的整数倍,由此取整后t2=0.99。
由此,恢复阶段的时间t=t1+t2=1.04秒。即,系统从熔断升到满速再升到满令牌的时间为1.04秒。
如此,根据本公开的基于接口响应的实时自适应限流方案,服务从满令牌到熔断之间自适应耗时需要500毫秒左右,而从熔断恢复到满令牌需要1秒左右。
本公开的基于接口响应的实时自适应限流方案在令牌算法的基础上,使用接口响应+熔断时间替代简单的时间因子作为令牌的维护依据,不仅能够快速增加令牌,还可以减少令牌,因其本质的设计思路是基于当前服务成功并发量而不是单位时间的请求量作为限流依据。
本公开的实施例可以通过相应的方法、装置、设备以及程序(例如,存储在计算机可读介质上,并可由处理器执行的程序)等来实现。包含或实现本公开的实施例的方法、装置、设备等可以通过软件、硬件、或固件等形式来实现,这些均在本公开的范围之内。
本公开的基于接口响应的实时自适应限流方案当采用软件或固件等形式来实现时,可被实现为存储在存储介质上的计算机/处理器可执行程序代码。这些程序代码在由处理器执行时,可使处理器执行前述的方法。相应的程序代码可被存储在软盘、光盘、DVD、硬盘、闪存、U盘、CF卡、SD卡、MMC卡、SM卡、记忆棒、XD卡、SDHC卡等介质上,或可通过通信介质进行传输,并由例如处理器等来执行以实现相应的功能或其部分、或功能的任何组合。
以上所述的仅为本发明的示例性具体实施例。但本发明的保护范围并不局限于此。任何熟悉本技术领域的技术人员在本发明揭示的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
结合本公开所描述的各种解说性逻辑块、模块、以及电路可用设计成执行本文描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件(PLD)、分立的门或晶体管逻辑、分立的硬件组件、或其任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何市售的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如,DSP与微处理器的组合、多个微处理器、与DSP核心协同的一个或多个微处理器、或任何其他此类配置。
结合本公开描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中实施。软件模块可驻留在本领域所知的任何形式的存储介质中。可使用的存储介质的一些示例包括随机存取存储器(RAM)、只读存储器(ROM)、闪存、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM,等等。软件模块可以包括单条指令、或许多条指令,且可分布在若干不同的代码段上,分布在不同的程序间以及跨多个存储介质分布。存储介质可被耦合到处理器以使得该处理器能从/向该存储介质读写信息。替换地,存储介质可以被整合到处理器。
本文中所公开的方法包括用于达成所描述的方法的一个或多个步骤或动作。这些方法步骤和/或动作可以彼此互换而不会脱离权利要求的范围。换言之,除非指定了步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会脱离权利要求的范围。
处理器可执行存储在机器可读介质上的软件。处理器可用一个或多个通用和/或专用处理器来实现。示例包括微处理器、微控制器、DSP处理器、以及其他能执行软件的电路系统。软件应当被宽泛地解释成意指指令、数据、或其任何组合,无论是被称作软件、固件、中间件、微代码、硬件描述语言、或其他。作为示例,机器可读介质可包括RAM(随机存取存储器)、闪存、ROM(只读存储器)、PROM(可编程只读存储器)、EPROM(可擦式可编程只读存储器)、EEPROM(电可擦式可编程只读存储器)、寄存器、磁盘、光盘、硬驱动器、或者任何其他合适的存储介质、或其任何组合。机器可读介质可被实施在计算机程序产品中。该计算机程序产品可以包括包装材料。
在硬件实现中,机器可读介质可以是处理系统中与处理器分开的一部分。然而,如本领域技术人员将容易领会的,机器可读介质或其任何部分可在处理系统外部。作为示例,机器可读介质可包括传输线、由数据调制的载波、和/或与无线节点分开的计算机产品,所有这些都可由处理器通过总线接口来访问。替换地或补充地,机器可读介质或其任何部分可被集成到处理器中,诸如高速缓存和/或通用寄存器文件可能就是这种情形。
处理系统可以被配置成通用处理系统,该通用处理系统具有一个或多个提供处理器功能性的微处理器、以及提供机器可读介质中的至少一部分的外部存储器,它们都通过外部总线架构与其他支持电路系统链接在一起。替换地,处理系统可以用带有集成在单块芯片中的处理器、总线接口、用户接口(在接入终端情形中)、支持电路系统、和至少一部分机器可读介质的ASIC(专用集成电路)来实现,或者用一个或多个FPGA(现场可编程门阵列)、PLD(可编程逻辑器件)、控制器、状态机、门控逻辑、分立硬件组件、或者任何其他合适的电路系统、或者能执行本公开通篇所描述的各种功能性的电路的任何组合来实现。取决于具体应用和加诸于整体系统上的总设计约束,本领域技术人员将认识到如何更好地实现关于处理系统所描述的功能性。
机器可读介质可以包括数个软件模块。这些软件模块包括当由装置(诸如处理器)执行时使处理系统执行各种功能的指令。这些软件模块可以包括传送模块和接收模块。每个软件模块可以驻留在单个存储设备中或者跨多个存储设备分布。作为示例,当触发事件发生时,可以从硬驱动器中将软件模块加载到RAM中。在软件模块执行期间,处理器可以将一些指令加载到高速缓存中以提高访问速度。可随后将一个或多个高速缓存行加载到通用寄存器文件中以供处理器执行。在述及软件模块的功能性时,将理解此类功能性是在处理器执行来自该软件模块的指令时由该处理器来实现的。
如果以软件实现,则各功能可作为一条或多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,这些介质包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,此类计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或能用于携带或存储指令或数据结构形式的期望程序代码且能被计算机访问的任何其他介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或无线技术(诸如红外(IR)、无线电、以及微波)从web网站、服务器、或其他远程源传送而来,则该同轴电缆、光纤电缆、双绞线、DSL或无线技术(诸如红外、无线电、以及微波)就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、数字多用碟(DVD)、软盘、和碟,其中盘(disk)常常磁性地再现数据,而碟(disc)用激光来光学地再现数据。因此,在一些方面,计算机可读介质可以包括非瞬态计算机可读介质(例如,有形介质)。另外,对于其他方面,计算机可读介质可以包括瞬态计算机可读介质(例如,信号)。上述的组合应当也被包括在计算机可读介质的范围内。
因此,某些方面可以包括用于执行本文中给出的操作的计算机程序产品。例如,此类计算机程序产品可以包括其上存储(和/或编码)有指令的计算机可读介质,这些指令能由一个或多个处理器执行以执行本文中所描述的操作。在某些方面,计算机程序产品可包括包装材料。
将理解,权利要求并不被限于以上所解说的精确配置和组件。可在以上所描述的方法和装置的布局、操作和细节上做出各种改动、更换和变形而不会脱离权利要求的范围。
Claims (25)
1.一种实时自适应限流方法,包括:
通过接口接收请求;
为所述请求作出令牌要求;
响应于所述令牌要求,确定令牌桶中是否还有令牌;
若是,则获取令牌并将其赋予所述请求,以对具有令牌的请求进行服务;
确定是否成功服务了所述请求;
若确定成功服务了所述请求,则归还赋予所述请求的令牌并向所述令牌桶中额外增加令牌;或者
若确定未成功服务所述请求,则不归还赋予所述请求的令牌并从所述令牌桶中额外扣减令牌。
2.如权利要求1所述的方法,进一步包括:
若所述令牌桶中没有令牌,则拒绝所述请求的令牌要求。
3.如权利要求2所述的方法,进一步包括,若所述令牌桶中没有令牌,则:
触发计时预定时间;并且
当所述预定时间期满时,若所述令牌桶中仍没有令牌,则向所述令牌桶中增加令牌。
4.如权利要求3所述的方法,其中,触发计时所述预定时间包括:
确定是否已在计时;
若是,则不重复触发计时;或者
若否,则触发计时。
5.如权利要求1所述的方法,其中,确定是否成功服务了所述请求包括:
接收请求响应;以及
确定所述请求响应包括肯定请求响应还是否定请求响应。
6.如权利要求5所述的方法,其中,若确定所述请求响应包括肯定请求响应,则归还赋予所述请求的令牌并向所述令牌桶中额外增加令牌包括:
每接收到一个肯定请求响应,向所述令牌桶中额外增加一块令牌。
7.如权利要求5所述的方法,其中,若确定所述请求响应包括否定请求响应,则不归还赋予所述请求的令牌并从所述令牌桶中额外扣减令牌包括:
每接收到一个否定请求响应,从所述令牌桶中额外扣减一块令牌。
8.如权利要求5所述的方法,其中,若确定所述请求响应包括肯定请求响应,则归还赋予所述请求的令牌并向所述令牌桶中额外增加令牌包括:
每接收到第一数目个肯定请求响应,向所述令牌桶中额外增加第二数目块令牌,其中第一数目是正整数,第二数目是非负整数。
9.如权利要求5所述的方法,其中,若确定所述请求响应包括否定请求响应,则不归还赋予所述请求的令牌并从所述令牌桶中额外扣减令牌包括:
每接收到第一数目个否定请求响应,从所述令牌桶中额外扣减第二数目块令牌,其中第一数目是正整数,第二数目是非负整数。
10.如权利要求1所述的方法,进一步包括:将所述令牌桶初始化为具有可配置的预定数目块令牌,其中,所述初始化在初始接收到令牌要求时或在系统启动时进行。
11.如权利要求1所述的方法,其中,所述方法实现在redis或nginx中,或实现在单机上,或实现在网关层或者流量控制层。
12.一种实时自适应限流服务系统,包括:
接口,用于接收请求并为所述请求作出令牌要求;
限流器,用于响应于所述令牌要求,确定令牌桶中是否还有令牌,并且若是,则获取令牌并将其赋予所述请求;
服务处理单元,用于对具有令牌的请求进行服务;其中
所述限流器进一步用于确定是否成功服务了所述请求,并且若确定成功服务了所述请求,则归还赋予所述请求的令牌并向所述令牌桶中额外增加令牌,或者若确定未成功服务所述请求,则不归还赋予所述请求的令牌并从所述令牌桶中额外扣减令牌。
13.如权利要求12所述的系统,其中,所述限流器进一步用于:
若所述令牌桶中没有令牌,则拒绝所述请求的令牌要求。
14.如权利要求13所述的系统,其中,所述限流器进一步用于:
若所述令牌桶中没有令牌,则触发计时预定时间,并且其中
当所述预定时间期满时,若所述令牌桶中仍没有令牌,则向所述令牌桶中增加令牌。
15.如权利要求14所述的系统,其中,所述限流器进一步用于:
确定是否已在计时;
若是,则不重复触发计时;或者
若否,则触发计时。
16.如权利要求12所述的系统,其中,所述限流器进一步用于:
接收请求响应;以及
确定所述请求响应包括肯定请求响应还是否定请求响应。
17.如权利要求16所述的系统,其中,所述限流器进一步用于:
若确定所述请求响应包括肯定请求响应,则每接收到一个肯定请求响应,向所述令牌桶中额外增加一块令牌;以及
若确定所述请求响应包括否定请求响应,则每接收到一个否定请求响应,从所述令牌桶中额外扣减一块令牌。
18.如权利要求16所述的系统,其中,所述限流器进一步用于:
若确定所述请求响应包括肯定请求响应,则每接收到第一数目个肯定请求响应,向所述令牌桶中额外增加第二数目块令牌;和/或
若确定所述请求响应包括否定请求响应,则每接收到第一数目个否定请求响应,从所述令牌桶中额外扣减第二数目块令牌,
其中第一数目是正整数,第二数目是非负整数。
19.如权利要求12所述的系统,其中,所述令牌桶被初始化为具有可配置的预定数目块令牌,所述初始化在初始接收到令牌要求时或在所述系统启动时进行。
20.如权利要求12所述的系统,其中,所述系统实现在redis或nginx中,或实现在单机上,或实现在网关层或者流量控制层。
21.一种实时自适应限流器,包括:
令牌桶;
令牌要求接收单元,用于响应于所述令牌要求,确定所述令牌桶中是否还有令牌,并且若是,则获取令牌并将其赋予所述请求;
请求响应接收单元,用于确定是否成功服务了所述请求;以及
令牌增减单元,用于若确定成功服务了所述请求,则归还赋予所述请求的令牌并向所述令牌桶中额外增加令牌,或者若确定未成功服务所述请求,则不归还赋予所述请求的令牌并从所述令牌桶中额外扣减令牌。
22.如权利要求21所述的限流器,进一步包括:
计时单元,其中若所述令牌桶中没有令牌,则所述计时单元被触发计时预定时间,并且其中
当所述计时单元计时所述预定时间期满时,若所述令牌桶中仍没有令牌,则所述令牌增减单元向所述令牌桶中增加令牌。
23.如权利要求21所述的限流器,其中,所述请求响应接收单元进一步用于:
接收请求响应;
确定所述请求响应包括肯定请求响应还是否定请求响应;其中
若所述请求响应接收单元确定所述请求响应包括肯定请求响应,则每接收到一个肯定请求响应,所述令牌增减单元向所述令牌桶中额外增加一块令牌;以及
若所述请求响应接收单元确定所述请求响应包括否定请求响应,则每接收到一个否定请求响应,所述令牌增减单元从所述令牌桶中额外扣减一块令牌。
24.如权利要求21所述的限流器,其中,所述请求响应接收单元进一步用于:
接收请求响应;
确定所述请求响应包括肯定请求响应还是否定请求响应;其中
若所述请求响应接收单元确定所述请求响应包括肯定请求响应,则每接收到第一数目个肯定请求响应,所述令牌增减单元向所述令牌桶中额外增加第二数目块令牌;和/或
若所述请求响应接收单元确定所述请求响应包括否定请求响应,则每接收到第一数目个否定请求响应,所述令牌增减单元从所述令牌桶中额外扣减第二数目块令牌,
其中第一数目是正整数,第二数目是非负整数。
25.如权利要求21所述的限流器,其中,所述限流器实现在redis或nginx中,或实现在单机上,或实现在网关层或者流量控制层。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111294718.2A CN114024908A (zh) | 2021-11-03 | 2021-11-03 | 实时自适应限流方法、限流服务系统和限流器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111294718.2A CN114024908A (zh) | 2021-11-03 | 2021-11-03 | 实时自适应限流方法、限流服务系统和限流器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114024908A true CN114024908A (zh) | 2022-02-08 |
Family
ID=80060203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111294718.2A Pending CN114024908A (zh) | 2021-11-03 | 2021-11-03 | 实时自适应限流方法、限流服务系统和限流器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114024908A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174487A (zh) * | 2022-09-06 | 2022-10-11 | 浙江大华技术股份有限公司 | 一种高并发限流方法、装置以及计算机存储介质 |
CN115378656A (zh) * | 2022-07-26 | 2022-11-22 | 青岛海尔科技有限公司 | 令牌回填方法、存储介质及电子装置 |
WO2024051485A1 (en) * | 2022-09-06 | 2024-03-14 | Zhejiang Dahua Technology Co., Ltd. | Methods and systems for request traffic management |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140293794A1 (en) * | 2013-03-28 | 2014-10-02 | Huawei Technologies Co., Ltd. | Token bucket-based traffic limiting method and apparatus |
CN110417678A (zh) * | 2019-08-08 | 2019-11-05 | 浪潮云信息技术有限公司 | 一种应用程序接口限流的方法及装置 |
CN111158878A (zh) * | 2019-12-30 | 2020-05-15 | 北京三快在线科技有限公司 | 资源转移请求线程控制方法、装置及存储介质 |
CN111314238A (zh) * | 2020-02-03 | 2020-06-19 | 网银在线(北京)科技有限公司 | 令牌的管理方法和装置、存储介质、电子装置 |
WO2021114829A1 (zh) * | 2020-06-09 | 2021-06-17 | 平安科技(深圳)有限公司 | 基于令牌桶的接口限流方法、装置、系统及可读存储介质 |
CN113220723A (zh) * | 2021-04-27 | 2021-08-06 | 深圳市云网万店科技有限公司 | 一种流量控制方法、装置、计算机设备及存储介质 |
-
2021
- 2021-11-03 CN CN202111294718.2A patent/CN114024908A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140293794A1 (en) * | 2013-03-28 | 2014-10-02 | Huawei Technologies Co., Ltd. | Token bucket-based traffic limiting method and apparatus |
CN110417678A (zh) * | 2019-08-08 | 2019-11-05 | 浪潮云信息技术有限公司 | 一种应用程序接口限流的方法及装置 |
CN111158878A (zh) * | 2019-12-30 | 2020-05-15 | 北京三快在线科技有限公司 | 资源转移请求线程控制方法、装置及存储介质 |
CN111314238A (zh) * | 2020-02-03 | 2020-06-19 | 网银在线(北京)科技有限公司 | 令牌的管理方法和装置、存储介质、电子装置 |
WO2021114829A1 (zh) * | 2020-06-09 | 2021-06-17 | 平安科技(深圳)有限公司 | 基于令牌桶的接口限流方法、装置、系统及可读存储介质 |
CN113220723A (zh) * | 2021-04-27 | 2021-08-06 | 深圳市云网万店科技有限公司 | 一种流量控制方法、装置、计算机设备及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115378656A (zh) * | 2022-07-26 | 2022-11-22 | 青岛海尔科技有限公司 | 令牌回填方法、存储介质及电子装置 |
CN115174487A (zh) * | 2022-09-06 | 2022-10-11 | 浙江大华技术股份有限公司 | 一种高并发限流方法、装置以及计算机存储介质 |
WO2024051485A1 (en) * | 2022-09-06 | 2024-03-14 | Zhejiang Dahua Technology Co., Ltd. | Methods and systems for request traffic management |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114024908A (zh) | 实时自适应限流方法、限流服务系统和限流器 | |
US11567885B2 (en) | System and method for optimizing DRAM bus switching using LLC | |
CN107579926B (zh) | 基于令牌桶算法的Ceph云存储系统的QoS设置方法 | |
US9715416B2 (en) | Adaptive queued locking for control of speculative execution | |
EP2685760B1 (en) | Device, link energy management method and link energy management system for peripheral component interconnect (pci) express | |
CN107818056B (zh) | 一种队列管理方法及装置 | |
US7685346B2 (en) | Demotion-based arbitration | |
KR101823539B1 (ko) | 개인용 전자 디바이스와 외부 서비스들 간의 헤비 트래픽 부하를 조절하는 방법 및 시스템 | |
US8341314B2 (en) | Managing I/O request in storage system | |
US8606992B2 (en) | Dynamically switching command types to a mass storage drive | |
US5016165A (en) | Direct memory access controlled system | |
US10296234B2 (en) | Method and apparatus for adjusting throughput of storage device | |
CN109726006B (zh) | 用于控制存储系统的方法、装置和计算机存储介质 | |
US7096289B2 (en) | Sender to receiver request retry method and apparatus | |
US20190332326A1 (en) | Method, device, and computer program product for operation control in storage system | |
US20020138692A1 (en) | Method for dynamically adjusting buffer utilization ratios in a hard disk drive system | |
US11321017B2 (en) | Systems and methods for controlling completion rate of commands | |
CN110764710B (zh) | 低延迟高iops的数据访问方法与存储系统 | |
CN114785739A (zh) | 逻辑卷服务质量的控制方法、装置、设备及介质 | |
CN112866131B (zh) | 一种流量负载均衡方法、装置、设备及介质 | |
CN115174487A (zh) | 一种高并发限流方法、装置以及计算机存储介质 | |
US6985970B2 (en) | Data transfer with implicit notification | |
CN115686763A (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN114157482A (zh) | 一种业务访问控制方法、装置、控制设备及存储介质 | |
US10942560B2 (en) | Method of controlling hard disk and electronic device |
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 |