CN110099009B - 基于接口响应时间趋势的动态限流方法及计算机可读介质 - Google Patents

基于接口响应时间趋势的动态限流方法及计算机可读介质 Download PDF

Info

Publication number
CN110099009B
CN110099009B CN201810093219.9A CN201810093219A CN110099009B CN 110099009 B CN110099009 B CN 110099009B CN 201810093219 A CN201810093219 A CN 201810093219A CN 110099009 B CN110099009 B CN 110099009B
Authority
CN
China
Prior art keywords
interface
response time
time
current
access
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
CN201810093219.9A
Other languages
English (en)
Other versions
CN110099009A (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.)
Beijing Yizhen Xuesi Education Technology Co Ltd
Original Assignee
Beijing Yizhen Xuesi Education Technology 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 Beijing Yizhen Xuesi Education Technology Co Ltd filed Critical Beijing Yizhen Xuesi Education Technology Co Ltd
Priority to CN201810093219.9A priority Critical patent/CN110099009B/zh
Publication of CN110099009A publication Critical patent/CN110099009A/zh
Application granted granted Critical
Publication of CN110099009B publication Critical patent/CN110099009B/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/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2416Real-time traffic

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

一种基于接口响应时间趋势的动态限流方法及计算机可读介质,该方法包括以下步骤:A、对于每个对接口的访问请求,根据接口当前的限流状态确定对该访问请求执行排队操作或放行操作,并在放行该访问请求时将该请求的接口响应时间存入响应时间队列;B、定时统计接口响应时间,根据接口响应时间趋势确定是否对该接口开启限流;C、执行限流期间,根据接口响应时间趋势动态调整令牌桶算法生成的令牌数,实时调整放行请求数。通过将接口响应时间趋势作为是否需要对接口进行限流的判断依据,对接口进行访问流量控制。在流量控制过程中完全无需人工干预,并能够根据***的负载状态自动调整相关算法参数,达到更好的适用性。

Description

基于接口响应时间趋势的动态限流方法及计算机可读介质
所属技术领域
本发明涉及网络通信技术领域,尤其涉及一种基于接口的响应时间趋势的动态限流方法。
背景技术
在互联网通信领域,很多场景都需要对网络请求的速率进行限制,避免大流量的冲击使后端服务器产生故障,如双十一抢购,12306抢票等场景。
在通信领域中,通常采用令牌桶算法来控制网络通信的数据收发速率,在互联网领域中,令牌桶算法也常被用来对网络请求进行访问频率控制。图1是采用传统的令牌桶算法来进行限流的流程图,服务器以设定的令牌产生速率来产生令牌,如果令牌桶未满则放入令牌桶,如果令牌桶已满则将新产生的令牌丢弃,其中,令牌桶具有设定的上限S;对于每个访问接口的网络请求,从令牌桶中消耗令牌数,允许对接口的访问;如果获取令牌成功则完成对接口的访问,如果获取令牌失败则将该网络请求丢弃或送入队列排队等待重新进行访问。实际使用过程中,服务器的状态受网络环境、硬件变化等因素影响是在不停变化的,因此当面对大流量的访问请求需要进行限流时采用固定参数的方式很难达到理想的限制效果,同时传统的令牌桶算法需要人为来设定令牌桶的上限S以及令牌的产生速率,不能根据***的实时情况进行自适应调整,缺乏灵活性。
发明内容
本发明旨在解决大流量环境下对服务器接口的流量控制,通过对常规令牌桶算法进行改进,提出一种基于响应时间趋势的动态令牌桶算法,流量控制过程中无需人工干预,实现对服务器接口的自动流量管控。
本发明涉及一种基于接口响应时间变化趋势来控制网络请求的排队和放行的流量控制方法。
本发明解决其技术问题所采用的技术方案包括两方面:
一方面提供了一种基于接口响应时间趋势的动态限流方法,包括:
A、对于每个对接口的访问请求,根据接口当前的限流状态确定对该访问请求执行排队操作或放行操作,并在放行该访问请求时将该请求的接口响应时间存入响应时间队列;
B、定时统计接口响应时间,根据接口响应时间趋势和超时百分比确定是否对该接口开启限流;
C、执行限流期间,根据接口响应时间趋势动态调整令牌桶算法生成的令牌数,实时调整放行请求数。
另一方面提供了一种计算机可读介质,其上存储有程序代码,该程序代码可被处理器运行以执行用于基于接口响应时间趋势进行动态限流的方法,所述方法包括如下步骤:
A、对于每个对接口的访问请求,根据接口当前的限流状态确定对该访问请求执行排队操作或放行操作,并在放行该访问请求时将该请求的接口响应时间存入响应时间队列;
B、定时统计接口响应时间,根据接口响应时间趋势和超时百分比确定是否对该接口开启限流;
C、执行限流期间,根据接口响应时间趋势动态调整令牌桶算法生成的令牌数,实时调整放行请求数。
本发明主要采用了一种动态令牌桶算法来控制网络请求的访问速率,在通常的令牌桶算法中,令牌桶的上限和令牌产生速率需要人工设定,而服务器的状态受网络环境、硬件变化等因素影响是在不停变化的,因此采用固定参数的方式很难达到理想的限制效果。本发明提出的动态令牌桶算法中,令牌桶的上限和令牌产生速率都能够自行根据服务器接口状态进行自适应调整,无需人工干预。其中,令牌桶的上限等于统计得出的历史最大QPS乘以统计时间间隔,表示该接口历史上能正常提供服务的最大每统计周期内处理请求数,并在每次流量控制结束后重置为当前QPS,重新统计。而令牌生成速率下限值为预先设好的基准QPS乘以统计时间间隔,实时值等于***通过统计服务器接口的响应时间趋势实时估算的当前QPS值乘以统计时间间隔。在流量控制过程中完全无需人工干预,并能够根据***的负载状态自动调整相关算法参数,达到更好的适用性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是传统的令牌桶算法的实现示意图。
图2是本发明动态令牌桶算法实现示意图。
图3是本发明限流前端工作流程图。
图4是本发明限流后台工作流程图。
具体实施方式
下面将参考附图并结合实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了方便起见,提供下面的术语表:
QPS:访问接口的每秒请求数,用来衡量接口的服务能力。
基准QPS:接口能够保证在该值下提供正常服务,该值一般根据压力测试结果设定,取压力测试最大QPS的1/2。
当前QPS:本发明在限流过程中实时估算的接口服务能力。
对于每个接口,限流状态分为三种:1.未开启限流;2、正在开启限流;3、限流开启中。同时***在redis集群中维护三条队列,响应时间队列:用于存放每个被放行的访问请求访问接口的响应时间;等待队列:用于存放被限制访问的访问请求;就绪队列:用于存放允许放行的访问请求。此外,***还维护两个计数值,新增请求计数:用于计数允许访问接口接受服务的访问请求数;结束请求计数:用于存放服务完成成功返回的访问请求数。二者之差为服务器中正在接受服务的访问请求数量。
本发明通过将每一网络访问请求的接口响应时间送入响应时间队列,由服务器的后台脚本统计接口响应时间的变化趋势和接口响应时间超时的百分比,并将接口响应时间的变化趋势和接口响应时间超时的百分比作为是否需要对接口进行限流的判断依据;同时服务器记录新增请求数和结束请求数,并由此计算出历史最大QPS;当响应时间趋势变差和接口响应时间超时百分比超过设定值时,初始化动态令牌桶算法,将计算出的历史最大QPS乘以统计时间间隔对应的令牌数作为令牌桶上限,基准QPS乘以统计时间间隔对应的令牌数作为产生令牌数的初始值,对接口进行访问流量控制。直到响应时间的变化趋势变好和接口响应时间超时的百分比降低到指定值后,停止进行流量控制,并重置历史最大QPS,重新开始统计。
具体地,图2所示的动态令牌桶算法实现示意图中记载了一种基于接口响应时间趋势的动态限流方法,通过统计接口响应时间的变化趋势来动态调整令牌桶算法的生成令牌数,从而对访问请求进行流量控制,该方法主要包括如下步骤:
A、对于每个对接口的访问请求,根据接口当前的限流状态确定对该访问请求执行排队操作或放行操作,并在放行该访问请求时将该请求的接口响应时间存入响应时间队列;
B、定时统计接口响应时间,根据接口响应时间确定是否对接口进行限流;
C、在限流过程中,根据接口响应时间的变化趋势动态调整令牌桶算法生成的令牌数,实时调整放行请求数。
以下结合图3所示的限流***前端工作流程图,和图4所示的限流***后台工作流程图对动态令牌桶的具体工作流程进行详细介绍。
所述的方法中,步骤A主要为限流***前端的工作过程。在步骤A中,可以从redis集群中读取接口当前的限流状态。
参见图3,步骤A主要包括:
A1、对于每个访问请求,检查其访问的接口是否需要限流,如需限流转步骤A2,不需要则转步骤A5。
对于尚不需要进行限流的接口,直接转到步骤A5执行请求的访问操作。
A2、检查该访问请求是否处于就绪队列中,是则转步骤A5,不是则转步骤A3。
对于处于限流状态的接口,如果访问请求已经处于就绪队列,则直接转步骤A5执行请求的访问操作。
A3、判断接口当前的限流状态,如状态为“限流开启中”时随机所有访问请求的1/2放入就绪队列,其余1/2的访问请求放入等待队列;如状态为“已经开启限流”时将全部访问请求放入等待队列,转步骤A4。
在限流开启过程中,即开启限流的瞬间,为平滑请求量,防止在开启限流瞬间将所有请求放入等待队列导致接口访问量骤降为零,浪费处理资源,随机将所有访问请求的1/2放入就绪队列,其余1/2放入等待队列。当然该1/2仅仅是例举,本领域技术人员应当理解,该数字可根据实际情况进行设定。而限流开启后,所有访问请求将全部放入等待队列等待,获得放行许可(即获得令牌)后方可转入就绪队列。
A4、将被送入等待队列限制访问的访问请求,重定向到等待页面或返回json数据提示接口繁忙,结束本次访问;之后定时向***发起查询请求,获得放行许可后将该访问请求转移到就绪队列重新进行访问。
送入等待队列后,来自PC端的访问请求会被重定向到等待页面,由等待页面定时向***发送ajax请求查询是否允许放行,获得放行许可后重新向接口发起请求,转移到就绪队列重新进行访问。而移动端的访问请求则会返回json格式数据,提示用户当前服务器繁忙,需要用户手动刷新,重新发起请求,由***判断该请求是否已经允许放行,获得放行许可后重新向接口发起请求,转移到就绪队列重新进行访问。
A5、放行该访问请求,新增请求计数加1,当服务器返回响应时,将本次访问请求的接口响应时间存入响应时间队列中,并将结束请求计数加1,结束本次访问。
访问请求获得放行完成一次访问后,将新增请求计数和结束请求计数均加1,并将本次访问的接口响应时间存入响应时间队列中,方便***后端进行限流的判定。
参见图4,步骤B和步骤C主要为限流***后台的工作过程。
在执行步骤B之前先进行如下设定:设置统计时间间隔Δt、设置基准QPS、设置接口响应时间阈值、设置超时百分比阈值。
其中,步骤B可以为,后台脚本定时统计接口响应时间,根据设定的接口响应时间阈值,统计出接口响应时间的变化趋势,并根据接口响应时间的变化趋势和超时百分比确定是否对接口进行限流,并将限流状态同步到redis集群中。
具体地,步骤B为监测阶段,用于统计接口响应时间的变化趋势,将接口响应时间的变化趋势和超时百分比作为***负载压力的表现指标,确定是否开启限流。
结合图4,在步骤B的监测阶段,持续对接口的响应时间进行监测,当统计的接口响应时间趋势变差,且满足设定的触发条件时,初始化动态令牌桶算法,对该接口开启限流,并将该接口的限流状态变更为“限流开启中”。
步骤B具体包括:
B1、以设定的统计时间间隔Δt读取服务器接口的新增请求数和结束请求数,计算出***历史最大QPS,并记录当前服务器中正在接受服务的请求数。
基于统计的每个Δt期间接口的新增请求数和结束请求数可以直接地统计获得历史最大QPS,具体方法是本领域公知的,此处不再赘述。
B2、从响应时间队列中读取最近15个时间间隔Δt内各访问请求的响应时间数据,分别计算最近1个时间间隔Δt(定义为第一时间区间)、最近5个时间间隔Δt(定义为第二时间区间)、最近15个时间间隔Δt(定义为第三时间区间)内接口响应时间超过设定的接口响应时间阈值的访问请求的数量,从而计算出这3个时间区间内接口响应时间超时的百分比,通过3个超时百分比之间的大小关系来判断接口响应时间的变化趋势。
当然,该实施例中选取的15个时间间隔Δt及3个时间区间仅是例举,本领域技术人员应当理解,可以根据实际情况选取其他数字,例如选取20个时间间隔Δt,时间区间可以划分为5个。
B3、当接口响应时间趋势变差,并满足开启接口限流的触发条件时,对动态令牌桶算法进行初始化,并将限流状态由“未开启限流”转变为“开启限流中”,结束本次统计。
其中,对令牌桶算法进行初始化包括清空令牌桶,设置令牌桶的上限为***历史最大QPS乘以统计时间间隔。
其中,开启接口限流的触发条件可为以下一个或多个:
1、从第三时间区间至第一时间区间,超时百分比增加,且第一时间区间内超时百分比大于超时百分比阈值;
2、第一时间区间和第二时间区间内超时百分比均大于超时百分比阈值。
当然,该触发条件是发明人所选取的实施例,本领域技术人员完全可以根据需要设定为其他触发条件。
具体地,步骤C为调控阶段,用于在步骤B开启限流后执行。***将所有请求导入等待队列,并使用动态令牌桶算法,根据步骤B统计的接口响应时间的变化趋势动态调整生成的令牌数,消耗令牌并将对应数量的请求从等待队列转移到就绪队列中进行放行,从而实时调整允许访问接口的请求的数量。
其中,步骤C具体包括:
C1、开启限流后,判断接口响应时间趋势是否变好,并由此确定当前QPS。
具体地,根据步骤B中统计的接口响应时间的变化趋势更新当前QPS值,如果接口响应时间趋势变好,则可以定义当前QPS=当前QPS+基准QPS/10(默认10,该数值可调节),缓慢增加每次放行的请求数,由此来逐渐恢复接口的处理能力;如果接口响应时间趋势变差,则可以定义当前QPS=(当前QPS+基准QPS)/2,迅速降低当前QPS数值,减少每次放行的请求数,对接口进行限流。
C2、根据当前QPS生成令牌,每个时间间隔Δt令牌桶中新增令牌数=当前QPS*Δt,并统计等待队列中的请求数,每个请求消耗一个令牌,将对应数量的请求从等待队列转移到就绪队列中,执行放行操作。
根据动态调整后的当前QPS值来调整实时生产的令牌数,并且消耗令牌以将对应数量的请求从等待队列转移到就绪队列中进行放行,从而实时调整允许访问接口的请求数量。
C3、判断响应趋势是否变好且超时百分比低于阈值,如是则使结束计数加1,若结束计数值大于设定值,则关闭限流,并重置***历史最大QPS为当前QPS。
如果新生成的令牌数大于***中正在接受服务的请求数与获得放行的请求数之和,则表明此时接口的访问压力得到缓解,可以考虑关闭限流。为了避免***在接口负载压力降低到临界点附近时频繁开启/关闭限流导致出现波动,可以设置连续5至10个统计周期(该数值可根据实际需要调节)内***压力均缓解后才关闭限流,并在关闭限流时重置***历史最大QPS为当前QPS,重新统计***历史最大QPS。
参见图4,实际上,在步骤B监测阶段和步骤C调控阶段之间还有一个暂态的阶段D。在D中,接口当前的限流状态为“限流开启中”。与前述的步骤A3类似,在限流开启过程中,即开启限流的瞬间,为平滑请求量,防止在开启限流瞬间将所有请求放入等待队列导致接口访问量骤降为零,浪费处理资源,随机将所有访问请求的1/2放入就绪队列,其余1/2放入等待队列。当然该1/2仅仅是例举,本领域技术人员应当理解,该数字可根据实际情况进行设定。
其中,步骤C阶段中,在开启限流后,统计响应时间队列时,将其分为第一时间区间,第二时间区间,和第三时间区间三个重叠的区间。对于当前QPS的调整,还涉及到如下两种修正情况:
1、当最后一个超时的请求只落在前两个区间内时(即落在整个队列的前1/3),可以认为接口响应时间趋势并未变差,而不执行降低当前QPS操作。该修正是为了避免在限流过程中,偶然的超时请求导致接口响应时间趋势变差,引起QPS骤降,浪费***处理能力,影响限流效果。
2、当第一个区间响应超时百分比超过设定的超时百分比阈值时,认为超时百分比趋势变差,立即降低当前QPS。该修正为了避免限流过程中突然有大量请求涌入,***响应不及时导致限流效果变差。
与传统令牌桶算法相比,本发明通过动态令牌桶算法来控制网络请求的访问速率,令牌桶的上限和令牌产生速率都能够自行根据服务器接口状态进行自适应调整,无需人工干预。其中,令牌桶的上限等于统计得出的历史最大QPS乘以统计时间间隔,表示该接口历史上能正常提供服务的最大每统计时间间隔处理请求数。并在每次流量控制结束后重置为当前QPS,重新统计。而令牌生成速率下限值为预先设好的基准QPS乘以统计时间间隔,实时值等于***通过统计服务器接口的响应时间趋势实时估算的当前QPS值乘以统计时间间隔。在流量控制过程中完全无需人工干预,并能够根据***的负载状态自动调整相关算法参数,达到更好的适用性。
本发明还提供了一种计算机可读介质,其上存储有程序代码,该程序代码可被处理器运行以执行用于基于接口响应时间趋势进行动态限流的方法,所述方法包括如下步骤:
A、对于每个对接口的访问请求,根据接口当前的限流状态确定对该访问请求执行排队操作或放行操作,并在放行该访问请求时将该请求的接口响应时间存入响应时间队列;
B、定时统计接口响应时间,根据接口响应时间趋势确定是否对该接口开启限流;
C、执行限流期间,根据接口响应时间趋势动态调整令牌桶算法生成的令牌数,实时调整放行请求数。
显然,本领域的技术人员应该明白,上述的本发明的各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (9)

1.一种基于接口响应时间趋势的动态限流方法,包括:
A、对于每个对接口的访问请求,根据接口当前的限流状态确定对该访问请求执行排队操作或放行操作,并在放行该访问请求时将该请求的接口响应时间存入响应时间队列;
B、定时统计接口响应时间,根据接口响应时间趋势和超时百分比确定是否对该接口开启限流;
C、执行限流期间,根据接口响应时间趋势动态调整令牌桶算法生成的令牌数,实时调整放行请求数;
其中,所述步骤B包括:
B1、以时间间隔Δt读取服务器接口的新增请求数和结束请求数,计算出***历史最大QPS,其中,QPS为访问接口的每秒请求数;
B2、从响应时间队列中读取最近N个时间间隔Δt内各访问请求的响应时间数据,分别计算第一时间区段、第二时间区段和第三时间区段内接口响应时间超过接口响应时间阈值的访问请求数量,得出3个时间区间内接口响应时间超时的百分比,通过3个超时百分比之间的大小关系来判断接口响应时间的变化趋势,其中,第一时间区段为最近X个时间间隔Δt、第二时间区段为最近Y个时间间隔Δt、第三时间区段为最近Z个时间间隔Δt,X<Y<Z;
B3、当接口响应时间趋势变差,并满足开启接口限流的触发条件时,对动态令牌桶算法进行初始化,并将限流状态由“未开启限流”转变为“开启限流中”,结束本次统计。
2.根据权利要求1的方法,其中,所述步骤A包括:
A1、对于每个访问请求,检查其访问的接口是否需要限流,如需限流转步骤A2,不需要则转步骤A5;
A2、检查该访问请求是否处于就绪队列中,是则转步骤A5,不是则转步骤A3;
A3、判断接口当前的限流状态,如状态为“限流开启中”时随机所有访问请求的1/2放入就绪队列,其余1/2的访问请求放入等待队列;如状态为“已经开启限流”时将全部访问请求放入等待队列,转步骤A4;
A4、将被送入等待队列限制访问的访问请求,重定向到等待页面或返回json数据提示接口繁忙,结束本次访问;之后定时向***发起查询请求,获得放行许可后将该访问请求转移到就绪队列重新进行访问;
A5、放行该访问请求,新增请求计数加1,当服务器返回响应时,将本次访问请求的接口响应时间存入响应时间队列中,并将结束请求计数加1,结束本次访问。
3.根据权利要求1或2的方法,其中,所述步骤B具体为:后台脚本定时统计接口响应时间,根据设定的接口响应时间阈值,计算出接口响应时间的变化趋势,并根据接口响应时间的变化趋势确定是否对接口进行限流。
4.根据权利要求1的方法,其中,开启接口限流的触发条件为以下一个或多个:
1)接口响应时间趋势变差,且第一时间区间内超时百分比大于超时百分比阈值;
2)第一时间区间和第二时间区间内超时百分比均大于超时百分比阈值。
5.根据权利要求1的方法,其中,所述步骤C具体为:将所有访问请求导入等待队列,根据接口响应时间趋势动态调整生成的令牌数,消耗令牌并将对应数量的请求从等待队列转移到就绪队列中进行放行,实时调整允许访问接口的请求的数量。
6.根据权利要求1的方法,其中,所述步骤C包括:
C1、开启限流后,判断接口响应时间趋势是否变好,并由此确定当前QPS;
C2、根据当前QPS生成令牌,每个时间间隔Δt令牌桶中新增令牌数=当前QPS*Δt,并统计等待队列中的请求数,每个请求消耗一个令牌,将对应数量的请求从等待队列转移到就绪队列中,执行放行操作;
C3、判断响应趋势是否变好且超时百分比低于阈值,如是则使结束计数加1,若结束计数值大于设定值,则关闭限流,并重置历史最大QPS为当前QPS。
7.根据权利要求6的方法,其中,所述步骤C1包括:
根据接口响应时间趋势更新当前QPS值,如果接口响应时间趋势变好,则当前QPS=当前QPS+基准QPS/10;如果接口响应时间趋势变差,则当前QPS=(当前QPS+基准QPS)/2。
8.根据权利要求1的方法,其中,在所述步骤B和步骤C之间还包括:在限流开启过程中,随机将所有访问请求的1/2放入就绪队列,其余1/2放入等待队列。
9.一种计算机可读介质,其上存储有程序代码,该程序代码可被处理器运行以执行用于基于接口响应时间趋势进行动态限流的方法,所述方法包括如下步骤:
A、对于每个对接口的访问请求,根据接口当前的限流状态确定对该访问请求执行排队操作或放行操作,并在放行该访问请求时将该请求的接口响应时间存入响应时间队列;
B、定时统计接口响应时间,根据接口响应时间趋势确定是否对该接口开启限流;
C、执行限流期间,根据接口响应时间趋势动态调整令牌桶算法生成的令牌数,实时调整放行请求数;
其中,所述步骤B包括:
B1、以时间间隔Δt读取服务器接口的新增请求数和结束请求数,计算出***历史最大QPS,其中,QPS为访问接口的每秒请求数;
B2、从响应时间队列中读取最近N个时间间隔Δt内各访问请求的响应时间数据,分别计算第一时间区段、第二时间区段和第三时间区段内接口响应时间超过接口响应时间阈值的访问请求数量,得出3个时间区间内接口响应时间超时的百分比,通过3个超时百分比之间的大小关系来判断接口响应时间的变化趋势,其中,第一时间区段为最近X个时间间隔Δt、第二时间区段为最近Y个时间间隔Δt、第三时间区段为最近Z个时间间隔Δt,X<Y<Z;
B3、当接口响应时间趋势变差,并满足开启接口限流的触发条件时,对动态令牌桶算法进行初始化,并将限流状态由“未开启限流”转变为“开启限流中”,结束本次统计。
CN201810093219.9A 2018-01-31 2018-01-31 基于接口响应时间趋势的动态限流方法及计算机可读介质 Active CN110099009B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810093219.9A CN110099009B (zh) 2018-01-31 2018-01-31 基于接口响应时间趋势的动态限流方法及计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810093219.9A CN110099009B (zh) 2018-01-31 2018-01-31 基于接口响应时间趋势的动态限流方法及计算机可读介质

Publications (2)

Publication Number Publication Date
CN110099009A CN110099009A (zh) 2019-08-06
CN110099009B true CN110099009B (zh) 2021-01-26

Family

ID=67442353

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810093219.9A Active CN110099009B (zh) 2018-01-31 2018-01-31 基于接口响应时间趋势的动态限流方法及计算机可读介质

Country Status (1)

Country Link
CN (1) CN110099009B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112422440B (zh) * 2019-08-22 2023-03-24 腾讯科技(深圳)有限公司 一种应用于服务器的流量控制方法以及相关装置
CN110995611A (zh) * 2019-12-20 2020-04-10 创盛视联数码科技(北京)有限公司 一种用于针对高并发请求分布式限流方法
CN111753065A (zh) * 2020-03-27 2020-10-09 北京沃东天骏信息技术有限公司 请求响应方法、***、计算机***和可读存储介质
CN111585913B (zh) * 2020-04-30 2023-04-07 武汉众邦银行股份有限公司 基于回收令牌的服务流量限制方法及存储介质
CN111641563B (zh) * 2020-05-28 2022-11-01 深圳壹账通智能科技有限公司 基于分布式场景的流量自适应方法与***
CN111817974B (zh) * 2020-06-09 2022-11-15 平安科技(深圳)有限公司 基于令牌桶的接口限流方法、装置、***及可读存储介质
CN112015550A (zh) * 2020-08-19 2020-12-01 浙江无极互联科技有限公司 基于服务器软硬件指标的***自适应限流方法
CN113595922B (zh) * 2021-07-29 2024-05-03 上海浦东发展银行股份有限公司 一种流量限制方法、装置、服务器及存储介质
CN113691604A (zh) * 2021-08-18 2021-11-23 深圳鼎盛电脑科技有限公司 一种网络请求的自适应限流方法、装置、设备及介质
CN113472679B (zh) * 2021-09-02 2021-12-21 杭州星犀科技有限公司 接口限流方法和***
CN113765821A (zh) * 2021-09-09 2021-12-07 南京优飞保科信息技术有限公司 一种多维度访问流量控制***
CN114257550B (zh) * 2021-12-31 2024-01-30 广州零世纪信息科技有限公司 接口访问流量的自动控制方法、装置、存储介质及服务器
CN114422439A (zh) * 2022-01-21 2022-04-29 平安国际智慧城市科技股份有限公司 接口限流方法、装置、计算机设备和存储介质
CN114745333B (zh) * 2022-03-03 2023-05-30 珠海高凌信息科技股份有限公司 一种ims***自适应流量控制方法
CN115442307A (zh) * 2022-07-27 2022-12-06 交通银行股份有限公司 基于分布式key的限流方法、***和计算机可读存储介质
CN115412495A (zh) * 2022-08-26 2022-11-29 建信金融科技有限责任公司 动态限流方法、装置、设备和介质
CN117061526B (zh) * 2023-10-12 2023-12-12 人力资源和社会保障部人事考试中心 一种基于全局与局部业务访问控制的访问高峰防拥塞方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103442087A (zh) * 2013-09-12 2013-12-11 重庆大学 一种基于响应时间趋势分析的Web服务***访问量控制装置和方法
CN106210129A (zh) * 2016-08-18 2016-12-07 中国银行股份有限公司 一种基于Web服务器配置的限流方法及***
CN106470118A (zh) * 2015-08-21 2017-03-01 睿石网云(北京)科技有限公司 一种应用***性能异常检测方法和***
CN106713171A (zh) * 2015-07-28 2017-05-24 腾讯科技(深圳)有限公司 服务器、基于延时队列的限流保护***及方法
CN108073465A (zh) * 2017-12-29 2018-05-25 中国平安人寿保险股份有限公司 动态限流方法、Nginx服务器、存储介质及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6279026B1 (en) * 1998-12-04 2001-08-21 Honeywell International Inc Timeout object for object-oriented, real-time process control system and method of operation thereof
US9497200B2 (en) * 2015-02-16 2016-11-15 International Business Machines Corporation Managing limited network access configuration

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103442087A (zh) * 2013-09-12 2013-12-11 重庆大学 一种基于响应时间趋势分析的Web服务***访问量控制装置和方法
CN106713171A (zh) * 2015-07-28 2017-05-24 腾讯科技(深圳)有限公司 服务器、基于延时队列的限流保护***及方法
CN106470118A (zh) * 2015-08-21 2017-03-01 睿石网云(北京)科技有限公司 一种应用***性能异常检测方法和***
CN106210129A (zh) * 2016-08-18 2016-12-07 中国银行股份有限公司 一种基于Web服务器配置的限流方法及***
CN108073465A (zh) * 2017-12-29 2018-05-25 中国平安人寿保险股份有限公司 动态限流方法、Nginx服务器、存储介质及装置

Also Published As

Publication number Publication date
CN110099009A (zh) 2019-08-06

Similar Documents

Publication Publication Date Title
CN110099009B (zh) 基于接口响应时间趋势的动态限流方法及计算机可读介质
US11601512B2 (en) System and method for throttling service requests having non-uniform workloads
US9419904B2 (en) System and method for throttling service requests using work-based tokens
CN109861920A (zh) 一种弹性限流的方法及装置
CN112003795B (zh) 一种动态预防流量攻击的方法、***、设备及存储介质
US20080201383A1 (en) System for managing data collection processes
CN108011840A (zh) 交易请求的控制方法、服务器和***
CN108958975B (zh) 一种控制数据恢复速度的方法、装置及设备
CN111245732B (zh) 一种流量控制方法、装置及设备
US20120185593A1 (en) License redistributing method, moderator and license controlling system thereof
CN112068934A (zh) 一种容器云服务实例收缩的控制***和方法
CN110380982A (zh) 一种流量控制方法及相关装置
US20160342540A1 (en) Low latency memory and bus frequency scaling based upon hardware monitoring
CN110650206B (zh) 分布式存储***中io流量控制方法、装置和存储介质
CN106131187B (zh) 一种授权的控制方法及装置
CN111193760B (zh) 一种信息发送方法、装置及存储介质
US8051419B2 (en) Method of dynamically adjusting number of task request
CN107861894B (zh) NVMe协议的队列命令的执行方法、装置及存储介质
CN117453378B (zh) 多应用程序间i/o请求调度方法、装置、设备及介质
CN114338816B (zh) 无服务器架构下的并发控制方法、装置、设备及存储介质
CN114153561A (zh) 资源配置方法、装置、设备和可读存储介质
CN114443228A (zh) 一种虚拟机流量控制方法、装置、电子设备及存储介质
CN117971484A (zh) 一种交易限流控制的阈值调整方法及电子设备
CN117573313A (zh) 一种线程资源的调整方法及装置
CN116033483A (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