限流方法技术

技术编号:39647424 阅读:4 留言:0更新日期:2023-12-09 11:15
本申请公开了一种限流方法

【技术实现步骤摘要】
限流方法、装置、终端设备以及计算机可读存储介质


[0001]本申请属于网络应用
,尤其涉及一种限流方法

装置

终端设备以及计算机可读存储介质


技术介绍

[0002]目前,随着微服务架构的兴起,庞大的业务系统被拆分成许多粒度更小的系统进行独立部署和维护,跨系统交互更加频繁,
API(Application Programming Interface,
应用程序编程接口
)
数量成倍增加,
API
网关逐渐成为微服务架构的标配组件

其中,限流是网关的基础功能,常见的限流策略大多通过设置固定的流量阀值进行限流,而且预设流量阀值的取值往往源与经验或者压力测试,然而测试环境和生产环境的差异

业务系统的弹性伸缩

版本变更都可能导致服务性能变化,所以在采用固定阀值进行限流的限流策略针对不断变化的业务系统进行限流时,容易出现流量误限或者没限住的情况

[0003]综上,如何提供一种能够动态调整限流阀值的限流方案,以提升业务系统的稳定性,已经成为网络应用
亟待解决的技术问题


技术实现思路

[0004]本申请的主要目的在于提供一种限流方法

装置

终端设备以及计算机可读存储介质

旨在提供一种能够动态调整限流阀值的限流方案,以提升业务系统的稳定性

[0005]为了实现上述目的,本申请提供一种限流方法,所述限流方法包括:
[0006]获取服务在第一预设周期内处理的各第一用户请求的平均响应时间;
[0007]计算预设的期望响应时间和所述平均响应时间的比值,基于所述比值和当前限流阀值计算新的限流阀值;
[0008]基于所述新的限流阀值对在第二预设周期内访问所述服务的第二用户请求的数量进行限制,其中,所述第二预设周期为所述第一预设周期的下一个周期

[0009]可选地,所述计算预设的期望响应时间和所述平均响应时间的比值,基于所述比值和当前限流阀值计算新的限流阀值的步骤,包括:
[0010]在预设的期望响应时间和所述平均响应时间的比值大于一的情况下,计算所述比值与所述当前限流阀值的乘积;
[0011]在所述乘积小于预设的最大阀值的情况下,确定所述乘积为新的限流阀值;
[0012]在所述乘积大于或者等于所述最大阀值的情况下,确定所述最大阀值为所述新的限流阀值

[0013]可选地,所述计算预设的期望响应时间和所述平均响应时间的比值,基于所述比值和当前限流阀值计算新的限流阀值的步骤,包括:
[0014]在预设的期望响应时间和所述平均响应时间的比值小于或者等于一的情况下,计算所述比值与所述当前限流阀值的乘积;
[0015]在所述乘积大于预设的最小阀值的情况下,确定所述乘积为新的限流阀值;
[0016]在所述乘积小于或者等于所述最小阀值的情况下,确定所述最小阀值为所述新的限流阀值

[0017]可选地,在所述基于所述新的限流阀值对在第二预设周期内访问所述服务的第二用户请求的数量进行限制的步骤之后,所述方法还包括:
[0018]获取发起所述第三用户请求的各用户各自申请的流量阀值,其中,所述流量阀值为所述用户向所述服务发起的用户请求的最大数量;
[0019]基于目标流量阀值对目标用户向所述服务发起的第三用户请求的数量进行限制,其中,所述目标用户为各所述用户中的任意一个,所述目标流量阀值为所述目标用户向所述服务发起的用户请求的最大数量

[0020]可选地,在所述基于目标流量阀值对目标用户向所述服务发起的第三用户请求的数量进行限制的步骤之前,所述方法还包括:
[0021]获取分配给所述服务的预设的总限流值;
[0022]检测集群限流值分配服务是否接收到用户终端的预取请求;
[0023]在检测到所述集群限流值分配服务接收到所述预取请求时,检测所述总限流值是否大于预设的单次预取量;
[0024]若检测到所述总限流值大于所述单次预取量,则从所述总限流值中分配所述单次预取量至所述用户终端,将所述单次预取量作为所述用户终端的本地预取量,所述总限流值自减所述单次预取量;
[0025]若检测到所述总限流值小于所述单次预取量,则将所述总限流值分配至所述用户终端,将所述总限流值作为所述本地预取量,所述总限流值置为零;
[0026]检测所述目标用户是否向所述服务发起第三用户请求;
[0027]若检测到所述目标用户向所述服务发起所述第三用户请求,则检测所述本地预取量是否大于零;
[0028]若检测到所述本地预取量大于零,则所述本地预取量自减一,并返回执行所述检测所述目标用户是否向所述服务发起第三用户请求的步骤;
[0029]若检测到所述本地预取量不大于零,则检测所述总限流值是否大于零;
[0030]若检测到所述总限流值大于零,则返回执行所述检测集群限流值分配服务是否接收到用户终端的预取请求的步骤;
[0031]若检测到所述总限流值不大于零,则执行所述基于目标流量阀值对目标用户向所述服务发起的第三用户请求的数量进行限制的步骤

[0032]可选地,所述基于目标流量阀值对目标用户向所述服务发起的第三用户请求的数量进行限制的步骤,包括:
[0033]将目标流量阀值代入计数器限流算法,以对目标用户向所述服务发起的第三用户请求的数量进行限制

[0034]可选地,所述基于所述新的限流阀值对在第二预设周期内访问所述服务的第二用户请求的数量进行限制的步骤,包括:
[0035]将所述新的限流阀值代入令牌桶限流算法,以在第二预设周期内对访问所述服务的第二用户请求的数量进行限制

[0036]此外,为实现上述目的,本申请还提供一种限流装置,所述限流装置包括:
[0037]获取模块,用于获取服务在第一预设周期内处理的各第一用户请求的平均响应时间;
[0038]计算模块,用于计算预设的期望响应时间和所述平均响应时间的比值,基于所述比值和当前限流阀值计算新的限流阀值;
[0039]限流模块,用于基于所述新的限流阀值对在第二预设周期内访问所述服务的第二用户请求的数量进行限制,其中,所述第二预设周期为所述第一预设周期的下一个周期

[0040]此外,为实现上述目的,本申请还提供一种终端设备,所述终端设备包括:存储器

处理器及存储在所述存储器上并可在所述处理器上运行的限流程序,所述终端设备的限流程序被所述处理器执行时实现如上所述的限流方法的步骤

[0041]此外,为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有限流程序,所述限流程本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种限流方法,其特征在于,所述限流方法包括:获取服务在第一预设周期内处理的各第一用户请求的平均响应时间;计算预设的期望响应时间和所述平均响应时间的比值,基于所述比值和当前限流阀值计算新的限流阀值;基于所述新的限流阀值对在第二预设周期内访问所述服务的第二用户请求的数量进行限制,其中,所述第二预设周期为所述第一预设周期的下一个周期
。2.
如权利要求1所述的限流方法,其特征在于,所述计算预设的期望响应时间和所述平均响应时间的比值,基于所述比值和当前限流阀值计算新的限流阀值的步骤,包括:在预设的期望响应时间和所述平均响应时间的比值大于一的情况下,计算所述比值与所述当前限流阀值的乘积;在所述乘积小于预设的最大阀值的情况下,确定所述乘积为新的限流阀值;在所述乘积大于或者等于所述最大阀值的情况下,确定所述最大阀值为所述新的限流阀值
。3.
如权利要求1所述的限流方法,其特征在于,所述计算预设的期望响应时间和所述平均响应时间的比值,基于所述比值和当前限流阀值计算新的限流阀值的步骤,包括:在预设的期望响应时间和所述平均响应时间的比值小于或者等于一的情况下,计算所述比值与所述当前限流阀值的乘积;在所述乘积大于预设的最小阀值的情况下,确定所述乘积为新的限流阀值;在所述乘积小于或者等于所述最小阀值的情况下,确定所述最小阀值为所述新的限流阀值
。4.
如权利要求1所述的限流方法,其特征在于,在所述基于所述新的限流阀值对在第二预设周期内访问所述服务的第二用户请求的数量进行限制的步骤之后,所述方法还包括:获取发起第三用户请求的各用户各自申请的流量阀值,其中,所述流量阀值为所述用户向所述服务发起的用户请求的最大数量;基于目标流量阀值对目标用户向所述服务发起的第三用户请求的数量进行限制,其中,所述目标用户为各所述用户中的任意一个,所述目标流量阀值为所述目标用户向所述服务发起的用户请求的最大数量
。5.
如权利要求4所述的限流方法,其特征在于,在所述基于目标流量阀值对目标用户向所述服务发起的第三用户请求的数量进行限制的步骤之前,所述方法还包括:获取分配给所述服务的预设的总限流值;检测集群限流值分配服务是否接收到用户终端的预取请求;在检测到所述集群限流值分配服务接收到所述预取请求时,检测所述总限流值是否大于预设的单次预取量;若检测到所述总限流值大于所述单次预取量,则从所述总限流值中分配所述单次预取量至所述用户终端,将所述单次预...

【专利技术属性】
技术研发人员:杜建波向飞丁冉
申请(专利权)人:招商银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1