CN114844835B - 一种自适应动态限流方法、设备 - Google Patents

一种自适应动态限流方法、设备 Download PDF

Info

Publication number
CN114844835B
CN114844835B CN202210777794.7A CN202210777794A CN114844835B CN 114844835 B CN114844835 B CN 114844835B CN 202210777794 A CN202210777794 A CN 202210777794A CN 114844835 B CN114844835 B CN 114844835B
Authority
CN
China
Prior art keywords
interface
application
cpu
current limiting
current
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
CN202210777794.7A
Other languages
English (en)
Other versions
CN114844835A (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.)
Huantian Smart Technology Co ltd
Original Assignee
Meishan Huantian Intelligent 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 Meishan Huantian Intelligent Technology Co ltd filed Critical Meishan Huantian Intelligent Technology Co ltd
Priority to CN202210777794.7A priority Critical patent/CN114844835B/zh
Publication of CN114844835A publication Critical patent/CN114844835A/zh
Application granted granted Critical
Publication of CN114844835B publication Critical patent/CN114844835B/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/29Flow control; Congestion control using a combination of thresholds
    • 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/2475Traffic characterised by specific attributes, e.g. priority or QoS for supporting traffic characterised by the type of applications
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种自适应动态限流方法、设备,包括:接收请求,分别记录应用和接口的信息,采用移动平均法计算CPU的负载和使用率;响应于CPU的负载大于等于一负载阈值或者CPU的使用率大于等于一使用率阈值时,根据接口信息中的请求开始时间计算QPS并计算接口最佳并发量;响应于接口的当前正在处理的请求数量大于接口最佳并发量,开启接口的限流;开启接口限流后的第二时长后或CPU的负载大于等于一负载阈值、CPU的使用率大于等于一使用率阈值的时长大于第三时长后,响应于CPU的负载或CPU的使用率未下降,开启应用限流。整个过程不需要设置业务优先级,且不会导致某些业务不可用的情况,最大化保护系统,并使计算机资源得到最大的利用。

Description

一种自适应动态限流方法、设备
技术领域
本发明属于网络通信技术领域,具体地涉及一种自适应动态限流方法、设备。
背景技术
随着互联网技术的发展和日益普及,现在互联网应用已经遍布各个行业,基于互联网的服务也愈发增多,与此同时互联网所触及的人群越来越多。对于用户大规模用户量群里的服务来说,线上服务每多待机1分钟都会造成不可挽回的经济损失,降低用户信任度。线上服务的问题面临着诸多的挑战,如服务器宕机,网络崩溃,人为失误等。其中对于稳定的线上服务最大的挑战就是不可预期的流量变化,如抢票,秒杀活动等。如何快速有效的应对线上突发流量的冲击,如何尽可能的利用计算机资源提供给用户最好的用户体验,如何保护服务,如何保护系统不发生因为请求流量过大发生宕机、重启、假死,这些都是研究重点。
现有为了解决上述技术问题,其采用基于业务优先级或者基于配置的动态限流策略,以申请公布号为CN114221908A的发明专利、“动态限流熔断处理方法、装置、计算机设备及存储介质”、申请公布号为CN112333111A的发明专利“一种系统动态限流方法、设备、存储介质”为例。
基于业务优先级的动态限流方法,其主要在于业务优先级配置的维护,引入了技术之外的角色,在开发中增加额外的沟通成本;同时优先级的确定和维护较为复杂,同时优先级可能随着业务的开展随时在发生变化,该方案适用场景较为有限,不具有普适性;并且当计算机资源全部倾斜到高优业务请求时,请求出现问题缺乏相应的策略;同时在针对庞大的微服务应用进行配置维护将非常繁琐,并且也需要确定一个请求的阈值进行判定,且将资源倾斜到主要业务后,将造成其他业务不可用。
基于配置的动态限流方法,一般基于压测结果得到限流阈值,然后通过实时参数与限流阈值进行比较进行限流熔断。限流阈值随着时间变化而变化,且限流阈值不准确,如阈值过高将造成服务器压力过大造成服务器宕机,假死,重启等。阈值过低则无法有效利用计算机资源,造成计算机资源的严重浪费。获取限流阈值的难点在于:1.对技术体系化建设要求较高,对压测平台和监控平台建设都有相当的要求,否则难以获得有效的压测指标;2.人员投入较大,需要全链路上下游应用进行全方位配合;3.业务都有无法覆盖到的场景,但是线上不同API接口的流量比例可能会影响到压测模型的设计;4.随着业务的变化,压测结果需要周期性维护;5.压测之外的链路流量无法得到保护,因为压测的成本问题,不可能覆盖到所有接口。总而言之就是现有方案都需要去通过压力测试获取一个较为准确的接口或应用的判定阈值判定其是否需要开启接口或应用限流。
发明内容
为了解决现有限流技术在限流过程中限流阈值选择不当导致资源浪费或者服务器出现问题和限流后其他业务不可用的现象,本发明提供一种自适应动态限流方法、设备,其限流的阈值根据CPU使用率、CPU负载、接口维度和应用维度的信息动态变化,整个过程不需要设置业务优先级,且不会导致某些业务不可用的情况,最大化保护系统,并使计算机资源得到最大的利用。
本发明通过以下技术方案实现:
本发明第一方面提供一种自适应动态限流方法,包括以下步骤:
接收请求,分别记录应用和与该应用对应的所有接口的信息,所述信息均包括当前正在处理的请求数量、请求开始时间和请求处理时的平均时长;
采用移动平均法计算CPU的负载和使用率;
响应于CPU的负载大于等于一负载阈值或者CPU的使用率大于等于一使用率阈值时,根据接口信息中的请求开始时间计算接口的每秒查询量QPS并根据该时间点之前一第一时长范围内接口对应的请求处理时的平均时长和最大QPS计算接口最佳并发量,所述第一时长大于1秒;
响应于至少一个接口的当前正在处理的请求数量大于接口最佳并发量,开启所述至少一个接口中每个接口的限流且接口限流开启后1秒内不能关闭;
开启接口限流后的第二时长后或CPU的负载大于等于一负载阈值、CPU的使用率大于等于一使用率阈值的时长大于第三时长后,响应于CPU的负载或CPU的使用率未下降,开启应用限流。
本自适应动态限流方法基于CPU使用率、CPU负载、接口维度和应用维度的信息进行统计分析决策从而实现对接口或者应用的动态限流,限流的阈值根据CPU使用率、CPU负载、接口维度和应用维度的信息动态变化,整个过程不需要设置业务优先级,且不会导致某些业务不可用的情况,最大化保护系统,并使计算机资源得到最大的利用。
在一种可能的设计中,所述采用移动平均法计算CPU的负载和使用率,包括:
每隔250ms获取一次CPU的负载和使用率;
删除最近1s之前的CPU的负载和使用率,计算最近1s内获取的CPU的负载的平均数和最近1s内获取的CPU的使用率的平均数。
在一种可能的设计中,所述计算接口的每秒查询量QPS为:
采用滑动窗口法计算接口的每秒查询量QPS。
在一种可能的设计中,所述开启所述至少一个接口中每个接口的限流的同时,为所述至少一个接口中每个接口维护一个令牌桶,每个令牌桶的令牌生成速度为对应接口在该时间点之前一第一时长范围内的最大QPS;
所述开启应用限流的同时根据应用信息中的请求开始时间计算应用的每秒查询量QPS,为应用维护一个令牌桶,每个令牌桶的令牌生成速度为应用在该时间点之前一第一时长范围内的最大QPS。
在一种可能的设计中,所述接收请求后,还包括:
判断应用和与所述应用对应的接口的限流状态;
若应用处于开启限流状态,则向应用的令牌桶中为请求申请令牌;若应用处于关闭限流状态且与所述应用对应的接口中至少有一个接口处于开启限流状态,则向处于限流状态的接口的令牌桶中为请求申请令牌;
响应于该请求申请到令牌,处理请求。
在一种可能的设计中,所述开启应用限流之后,还包括:
响应于所述CPU的负载小于一负载阈值或者CPU的使用率小于一使用率阈值,关闭所有接口的限流和应用限流。
本发明第二方面提供一种一种自适应动态限流设备,包括流量信息统计模块、动态阈值计算模块和限流模块;
所述流量信息统计模块用于接收请求,分别记录应用和与该应用对应的所有接口的信息,所述信息均包括当前正在处理的请求数量、请求开始时间和请求处理时的平均时长;
所述动态阈值计算模块用于采用移动平均法计算CPU的负载和使用率,响应于CPU的负载大于等于一负载阈值或者CPU的使用率大于等于一使用率阈值时,根据接口信息中的请求开始时间计算接口的每秒查询量QPS并根据该时间点之前一第一时长范围内接口对应的请求处理时的平均时长和最大QPS计算接口最佳并发量,所述第一时长大于1秒;
所述限流模块用于响应于至少一个接口的当前正在处理的请求数量大于接口最佳并发量,开启所述至少一个接口中每个接口的限流且接口限流开启后1秒内不能关闭;以及,开启接口限流后的第二时长后或CPU的负载大于等于一负载阈值、CPU的使用率大于等于一使用率阈值的时长大于第三时长后,响应于CPU的负载或CPU的使用率未下降,开启应用限流。
在一种可能的设计中,所述限流模块包括限流决策模块和限流执行模块;
所述限流决策模块用于判断接口的当前正在处理的请求数量是否大于接口最佳并发量和开启接口限流后的第二时长后或CPU的负载大于等于一负载阈值、CPU的使用率大于等于一使用率阈值的时长大于第三时长后,CPU的负载或CPU的使用率是否下降,在接口的当前正在处理的请求数量大于接口最佳并发量时将接口名称、接口对应的最大QPS发送给限流执行模块,以及,在开启接口限流后的第二时长后或CPU的负载大于等于一负载阈值、CPU的使用率大于等于一使用率阈值的时长大于第三时长后,CPU的负载或CPU的使用率未下降时,将应用对应的最大QPS发送给限流执行模块;
所述限流执行模块用于根据限流决策模块发送的接口名称和接口对应的最大QPS或者应用对应的最大QPS开启接口限流或应用限流。
在一种可能的设计中,所述限流执行模块包括限流开启单元、限流关闭单元、接口令牌桶和应用令牌桶;所述设备还包括令牌申请模块和业务处理模块;
所述限流开启单元用于根据限流决策模块发送的接口名称和接口对应的最大QPS或者应用名称开启接口限流或应用限流;
所述限流关闭单元用于在所述CPU的负载小于一负载阈值或者CPU的使用率小于一使用率阈值时,关闭所有接口的限流和应用限流;
所述接口令牌桶用于为开启接口限流的接口维护一个令牌桶,每个令牌桶的令牌生成速度为对应接口在该时间点之前一第一时长范围内的最大QPS;
所述应用令牌桶用于为开启应用限流的应用维护一个令牌桶,每个令牌桶的令牌生成速度为该应用在该时间点之前一第一时长范围内的最大QPS;
所述令牌申请模块用于在判断应用和与所述应用对应的接口的限流状态;若应用处于开启限流状态,则向应用的令牌桶中为请求申请令牌;若应用处于关闭限流状态且与所述应用对应的接口中至少有一个接口处于开启限流状态,则向处于限流状态的接口的令牌桶中为请求申请令牌;
所述业务处理模块用于响应于该请求申请到令牌后处理请求以及在应用和接口均处于关闭限流状态时,处理请求。
本发明第三方面提供一种自适应动态限流设备,包括依次通信连接的存储器和控制器,所述存储器上存储有计算机程序,所述控制器用于读取所述计算机程序,执行第一方面及其任一种可能中所述的一种自适应动态限流方法。
本发明与现有技术相比,至少具有以下优点和有益效果:
1、本发明限流的阈值根据CPU使用率、CPU负载、接口维度和应用维度的信息动态变化,整个过程不需要设置业务优先级,且不会导致某些业务不可用的情况,最大化保护系统,并使计算机资源得到最大的利用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是系统负载情况的示例图;
图2是系统每秒查询量的示例图;
图3为本发明设备的原理框图。
具体实施方式
下面结合附图及具体实施例来对本发明作进一步阐述。在此需要说明的是,对于这些实施例方式的说明虽然是用于帮助理解本发明,但并不构成对本发明的限定。本文公开的特定结构和功能细节仅用于描述本发明的示例实施例。然而,可用很多备选的形式来体现本发明,并且不应当理解为本发明限制在本文阐述的实施例中。
应当理解,对于本文中可能出现的术语“和/或”,其仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B三种情况;对于本文中可能出现的术语“/和”,其是描述另一种关联对象关系,表示可以存在两种关系,例如,A/和B,可以表示:单独存在A,单独存在A和B两种情况;另外,对于本文中可能出现的字符“/”,一般表示前后关联对象是一种“或”关系。
应当理解,在下面的描述中提供了特定的细节,以便于对示例实施例的完全理解。然而,本领域普通技术人员应当理解可以在没有这些特定细节的情况下实现示例实施例。例如可以在框图中示出系统,以避免用不必要的细节来使得示例不清楚。在其他实例中,可以不以非必要的细节来示出众所周知的过程、结构和技术,以避免使得示例不清楚。
本发明第一方面公开了一种一种自适应动态限流方法,该方法可以但不限于由一限流设备来执行,限流设备可以集成在智能移动端、平板、电脑、本地服务器、云服务器等智能设备中。具体的,该动态限流方法包括以下步骤S01~步骤S06。
步骤S01、接收请求,分别记录应用和该应用对应的所有接口的信息,所述信息均包括当前正在处理的请求数量、请求开始时间和请求处理时的平均时长。
当请求进入到业务系统后,先记录该请求的详细信息并维护之前一时间段内的请求信息,该时间段可以设置为3-7秒内任一数值。优先的,此处可设定为5秒。单一应用可能对应多个接口,则需要记录多个接口的信息。当请求维护的时间超过5秒后,则将其删除。
此处的信息包括应用维度的信息和接口维度的信息,应用维度的信息和接口维度的信息均包括当前正在处理的请求数量、请求开始时间和请求处理时的平均时长。
具体的,针对应用维度的信息,包括应用当前正在处理的请求数量appProcessNum、请求开始时间appStartTime和请求处理时平均时长appAvgLatency。
针对接口维度的信息,包括接口当前正在处理的请求数量interfaceProcessNum、请求开始时间interfaceStartTime和请求处理时平均时长interfaceAvgLatency。
步骤S02、采用移动平均法计算CPU的负载和使用率。
具体的,周期性获取中央处理器(central processing unit,CPU)的负载load和使用率usage,此处CPU的负载和使用率获取频率越高,CPU的负载和使用率计算越准确,但是,会增大系统计算量。获取周期优选可设置为每隔250m获取一次,在提高准确性的同时可兼顾计算量的问题。
每隔250ms获取一次CPU的负载和使用率,CPU的负载和使用率均只保存最近1秒的数据,超过1秒后则将1秒前的采样数据删除,以1秒为一个窗口,采用移动平均法计算CPU的负载。如图1所示,如当系统在1000ms时的负载load,则为(load1+ load2+ load3 +load4)/4 = 2.25,则在1s时的CPU load 为2.25。同理,可计算得到CPU的使用率。由于cpu的变化是非常迅速的,会受到各种因素的影响来回抖动,采样移动平均法计算得到的CPU的负载和使用率,实现统计降噪,数据更准确。
步骤S03、响应于CPU的负载大于等于一负载阈值或者CPU的使用率大于等于一使用率阈值时,根据接口信息中的请求开始时间计算接口的每秒查询量QPS并根据该时间点之前一第一时长范围内接口对应的请求处理时的平均时长和最大QPS计算接口最佳并发量BestConcurrency,所述第一时长大于1秒。
此处的负载阈值优选的可设置为CPU核数*0.7,当然,负载阈值可在CPU核数*0.7附近进行调整;使用率阈值可设置为80%;同理,使用率阈值可在80%附近进行调整。第一时长大于1秒,则该时间点之前一第一时长范围内有多个QPS,在多个QPS中确定出最大的QPS。第一时长优选是5秒,即请求处理时的平均时长可以是过去5秒内请求处理时平均时间,并根据过去5s内的数据通过滑动窗口法计算统计出最大每秒查询量QPS。
此处的接口的每秒查询量QPS可采用滑动窗口法计算统得到。示例性的,如图2所示,窗口window 为1s,窗口移动步长为250ms,坐标轴上短刻度为一次请求,长刻度为时间线。0-1000ms QPS为4,1000ms-2000ms QPS为6,如果不采用滑动窗口法计算出最大的QPS为6,采用滑动窗口法250ms-1250ms的QPS为9。采用滑动窗口法统计的数据更为准确。
一接口的接口最佳并发量BestConcurrency为该接口在该时间点之前一第一时长范围内的最大QPS与该接口请求处理时的平均时长相关,为:
BestConcurrency=最大QPS * AvgLatency。
针对于应用,其每秒查询量QPS也可采用上述滑动窗口法计算统得到。
步骤S04、响应于至少一个接口的当前正在处理的请求数量大于接口最佳并发量,开启所述至少一个接口中每个接口的限流且接口限流开启后1秒内不能关闭。同时还可为所述至少一个接口中每个接口维护一个令牌桶,每个令牌桶的令牌生成速度为对应接口在该时间点之前一第一时长范围内的最大QPS。
该步骤具体的,当一个接口当前正在处理的请求数量大于该接口的接口最佳并发量时,即触发该接口的限流;当多个接口当前正在处理的请求数量大于对应接口的接口最佳并发量时,触发多个接口同时限流。开启接口限流后,为每个开启限流的接口维护一个令牌桶,每个令牌桶的令牌生成速度为对应接口在该时间点之前一第一时长范围内的最大QPS,即若步骤S03确定出的最大QPS为9,则此时以9个/秒的速度产生令牌。
令牌桶生成令牌的方法为:
令牌桶中包括生成令牌的间隔时长stableInterval、下次获取令牌时间nextFreeTokenTime,其中:
stableInterval=1000ms/QPS,
示例性的,若当前确认出的最大QPS为2,则stableInterval为500ms,如果时间1650210495000请求获取令牌,第一次获取令牌时 nextFreeTokenTime等于第一次获取请求令牌的时间,那么计算出下一次获取令牌的时间为 nextFreeTokenTime =nextFreeTokenTime + 500ms,nextFreeTokenTime= 1650210495500,若第二次请求获取令牌时间为 1650210495400,则此时令牌还未生成,则请求获取令牌失败,若第三次请求令牌时间为 1650210496000,此时1650210496000 > nextFreeTokenTime,则可以获得令牌,并更新 nextFreeTokenTime = nextFreeTokenTime + 500ms,此时nextFreeTokenTime =1650210496000。后续请求以此类推。
步骤S05、开启接口限流后的第二时长后或CPU的负载大于等于一负载阈值、CPU的使用率大于等于一使用率阈值的时长大于第三时长后,响应于CPU的负载或CPU的使用率未下降,并开启应用限流。同时还可计算应用的每秒查询量QPS,为应用维护一个令牌桶,每个令牌桶的令牌生成速度为应用在该时间点之前一第一时长范围内的最大QPS。应用的每秒查询量QPS的计算方法与步骤S04中接口的QPS方法相同。
优选的,此处的第二时长可设置为1秒或其他时长值,第三时长可设置为2秒或其他时长值。
在开启接口限流一时间段后或者CPU的负载大于等于一负载阈值维持一时间段后或者CPU的使用率大于等于一使用率阈值维持一时间段后,CPU的负载或CPU的使用率未下降,则开启应用限流,此时,为应用维护一个令牌桶,令牌的生成与步骤S04中接口的令牌生成方法一致。
开启应用限流后,监测CPU的负载和使用率,当所述CPU的负载小于一负载阈值或者CPU的使用率小于一使用率阈值,关闭所有接口的限流和应用限流。
请求进入后,若接口和应用均没有限流,则进行正常业务处理流程。若开启接口或者应用限流后,请求进入后,则进入步骤S06。
S06、判断应用和与所述应用对应的接口的限流状态;若应用处于开启限流状态,则向应用的令牌桶中为请求申请令牌,此时不管接口的是处理限流还是未限流状态;若应用处于关闭限流状态且与所述应用对应的接口中至少有一个接口处于开启限流状态,则向处于限流状态的接口的令牌桶中为请求申请令牌;响应于该请求申请到令牌,处理请求。
如图3所示,本发明第二方面公开了一种自适应动态限流设备,包括流量信息统计模块、动态阈值计算模块和限流模块;
所述流量信息统计模块用于接收请求,分别记录应用和与该应用对应的所有接口的信息,所述信息均包括当前正在处理的请求数量、请求开始时间和请求处理时的平均时长;
所述动态阈值计算模块用于采用移动平均法计算CPU的负载和使用率,响应于CPU的负载大于等于一负载阈值或者CPU的使用率大于等于一使用率阈值时,根据接口信息中的请求开始时间计算接口的每秒查询量QPS并根据该时间点之前一第一时长范围内接口对应的请求处理时的平均时长和最大QPS计算接口最佳并发量,所述第一时长大于1秒;
所述限流模块用于响应于至少一个接口的当前正在处理的请求数量大于接口最佳并发量,开启所述至少一个接口中每个接口的限流且接口限流开启后1秒内不能关闭;以及,开启接口限流后的第二时长后或CPU的负载大于等于一负载阈值、CPU的使用率大于等于一使用率阈值的时长大于第三时长后,响应于CPU的负载或CPU的使用率未下降,开启应用限流。
具体的,所述限流模块包括限流决策模块和限流执行模块;
所述限流决策模块用于判断接口的当前正在处理的请求数量是否大于接口最佳并发量和开启接口限流后的第二时长后或CPU的负载大于等于一负载阈值、CPU的使用率大于等于一使用率阈值的时长大于第三时长后,CPU的负载或CPU的使用率是否下降,在接口的当前正在处理的请求数量大于接口最佳并发量时将接口名称、接口对应的最大QPS发送给限流执行模块,以及,在开启接口限流后的第二时长后或CPU的负载大于等于一负载阈值、CPU的使用率大于等于一使用率阈值的时长大于第三时长后,CPU的负载或CPU的使用率未下降时,将应用对应的最大QPS发送给限流执行模块;
所述限流执行模块用于根据限流决策模块发送的接口名称和接口对应的最大QPS或者应用对应的最大QPS开启接口限流或应用限流。
进一步的,所述限流执行模块包括限流开启单元、限流关闭单元、接口令牌桶和应用令牌桶;所述设备还包括令牌申请模块和业务处理模块;
所述限流开启单元用于根据限流决策模块发送的接口名称和接口对应的最大QPS或者应用名称开启接口限流或应用限流;
所述限流关闭单元用于在所述CPU的负载小于一负载阈值或者CPU的使用率小于一使用率阈值时,关闭所有接口的限流和应用限流;
所述接口令牌桶用于为开启接口限流的接口维护一个令牌桶,每个令牌桶的令牌生成速度为对应接口在该时间点之前一第一时长范围内的最大QPS;
所述应用令牌桶用于为开启应用限流的应用维护一个令牌桶,每个令牌桶的令牌生成速度为该应用在该时间点之前一第一时长范围内的最大QPS;
所述令牌申请模块用于在判断应用和与所述应用对应的接口的限流状态;若应用处于开启限流状态,则向应用的令牌桶中为请求申请令牌;若应用处于关闭限流状态且与所述应用对应的接口中至少有一个接口处于开启限流状态,则向处于限流状态的接口的令牌桶中为请求申请令牌;
所述业务处理模块用于响应于该请求申请到令牌后处理请求以及在应用和接口均处于关闭限流状态时,处理请求。
本发明第二方面提供的自适应动态限流设备,各模块和各单元之间的信息交互、流程详见第一方面方法中的详细叙述,在此不做赘述。
本发明第三方面提供一种自适应动态限流设备,包括依次通信连接的存储器和控制器,所述存储器上存储有计算机程序,所述控制器用于读取所述计算机程序,执行第一方面及其任一种可能中所述的一种自适应动态限流方法。具体举例的,所述存储器可以但不限于包括随机存取存储器(Random-Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、闪存(Flash Memory)、先进先出存储器(First Input First Output,FIFO)和或先进后出存储器(First Input Last Output,FILO)等等;所述控制器可以不限于采用型号为STM32F105系列的微处理器。此外,所述计算机设备还可以但不限于包括有电源单元、显示屏和其它必要的部件。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。

Claims (10)

1.一种自适应动态限流方法,其特征在于,包括以下步骤:
接收请求,分别记录应用和与该应用对应的所有接口的信息,所述信息均包括当前正在处理的请求数量、请求开始时间和请求处理时的平均时长;
采用移动平均法计算CPU的负载和使用率;
响应于CPU的负载大于等于一负载阈值或者CPU的使用率大于等于一使用率阈值时,根据接口信息中的请求开始时间计算接口的每秒查询量QPS并根据该时间点之前一第一时长范围内接口对应的请求处理时的平均时长和最大QPS计算接口最佳并发量,所述第一时长大于1秒;
响应于至少一个接口的当前正在处理的请求数量大于接口最佳并发量,开启所述至少一个接口中每个接口的限流且接口限流开启后1秒内不能关闭;
开启接口限流后的第二时长后或CPU的负载大于等于一负载阈值、CPU的使用率大于等于一使用率阈值的时长大于第三时长后,响应于CPU的负载或CPU的使用率未下降,开启应用限流。
2.根据权利要求1所述的一种自适应动态限流方法,其特征在于,所述采用移动平均法计算CPU的负载和使用率,包括:
每隔250ms获取一次CPU的负载和使用率;
删除最近1s之前的CPU的负载和使用率,计算最近1s内获取的CPU的负载的平均数和最近1s内获取的CPU的使用率的平均数。
3.根据权利要求1所述的一种自适应动态限流方法,其特征在于,所述计算接口的每秒查询量QPS为:
采用滑动窗口法计算接口的每秒查询量QPS。
4.根据权利要求1所述的一种自适应动态限流方法,其特征在于,所述开启所述至少一个接口中每个接口的限流的同时,为所述至少一个接口中每个接口维护一个令牌桶,每个令牌桶的令牌生成速度为对应接口在该时间点之前一第一时长范围内的最大QPS;
所述开启应用限流的同时根据应用信息中的请求开始时间计算应用的每秒查询量QPS,为应用维护一个令牌桶,每个令牌桶的令牌生成速度为应用在该时间点之前一第一时长范围内的最大QPS。
5.根据权利要求4所述的一种自适应动态限流方法,其特征在于,所述接收请求后,还包括:
判断应用和与所述应用对应的接口的限流状态;
若应用处于开启限流状态,则向应用的令牌桶中为请求申请令牌;若应用处于关闭限流状态且与所述应用对应的接口中至少有一个接口处于开启限流状态,则向处于限流状态的接口的令牌桶中为请求申请令牌;
响应于该请求申请到令牌,处理请求。
6.根据权利要求1所述的一种自适应动态限流方法,其特征在于,所述开启应用限流之后,还包括:
响应于所述CPU的负载小于一负载阈值或者CPU的使用率小于一使用率阈值,关闭所有接口的限流和应用限流。
7.一种自适应动态限流设备,其特征在于,包括流量信息统计模块、动态阈值计算模块和限流模块;
所述流量信息统计模块用于接收请求,分别记录应用和与该应用对应的所有接口的信息,所述信息均包括当前正在处理的请求数量、请求开始时间和请求处理时的平均时长;
所述动态阈值计算模块用于采用移动平均法计算CPU的负载和使用率,响应于CPU的负载大于等于一负载阈值或者CPU的使用率大于等于一使用率阈值时,根据接口信息中的请求开始时间计算接口的每秒查询量QPS并根据该时间点之前一第一时长范围内接口对应的请求处理时的平均时长和最大QPS计算接口最佳并发量,所述第一时长大于1秒;
所述限流模块用于响应于至少一个接口的当前正在处理的请求数量大于接口最佳并发量,开启所述至少一个接口中每个接口的限流且接口限流开启后1秒内不能关闭;以及,开启接口限流后的第二时长后或CPU的负载大于等于一负载阈值、CPU的使用率大于等于一使用率阈值的时长大于第三时长后,响应于CPU的负载或CPU的使用率未下降,开启应用限流。
8.根据权利要求7所述一种自适应动态限流设备,其特征在于,所述限流模块包括限流决策模块和限流执行模块;
所述限流决策模块用于判断接口的当前正在处理的请求数量是否大于接口最佳并发量和开启接口限流后的第二时长后或CPU的负载大于等于一负载阈值、CPU的使用率大于等于一使用率阈值的时长大于第三时长后,CPU的负载或CPU的使用率是否下降,在接口的当前正在处理的请求数量大于接口最佳并发量时将接口名称、接口对应的最大QPS发送给限流执行模块,以及,在开启接口限流后的第二时长后或CPU的负载大于等于一负载阈值、CPU的使用率大于等于一使用率阈值的时长大于第三时长后,CPU的负载或CPU的使用率未下降时,将应用对应的最大QPS发送给限流执行模块;
所述限流执行模块用于根据限流决策模块发送的接口名称和接口对应的最大QPS或者应用对应的最大QPS开启接口限流或应用限流。
9.根据权利要求8所述一种自适应动态限流设备,其特征在于,所述限流执行模块包括限流开启单元、限流关闭单元、接口令牌桶和应用令牌桶;所述设备还包括令牌申请模块和业务处理模块;
所述限流开启单元用于根据限流决策模块发送的接口名称和接口对应的最大QPS或者应用名称开启接口限流或应用限流;
所述限流关闭单元用于在所述CPU的负载小于一负载阈值或者CPU的使用率小于一使用率阈值时,关闭所有接口的限流和应用限流;
所述接口令牌桶用于为开启接口限流的接口维护一个令牌桶,每个令牌桶的令牌生成速度为对应接口在该时间点之前一第一时长范围内的最大QPS;
所述应用令牌桶用于为开启应用限流的应用维护一个令牌桶,每个令牌桶的令牌生成速度为该应用在该时间点之前一第一时长范围内的最大QPS;
所述令牌申请模块用于在判断应用和与所述应用对应的接口的限流状态;若应用处于开启限流状态,则向应用的令牌桶中为请求申请令牌;若应用处于关闭限流状态且与所述应用对应的接口中至少有一个接口处于开启限流状态,则向处于限流状态的接口的令牌桶中为请求申请令牌;
所述业务处理模块用于响应于该请求申请到令牌后处理请求以及在应用和接口均处于关闭限流状态时,处理请求。
10.一种自适应动态限流设备,包括依次通信连接的存储器和控制器,所述存储器上存储有计算机程序,其特征在于:所述控制器用于读取所述计算机程序,执行权利要求1-6任一所述的一种自适应动态限流方法。
CN202210777794.7A 2022-07-04 2022-07-04 一种自适应动态限流方法、设备 Active CN114844835B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210777794.7A CN114844835B (zh) 2022-07-04 2022-07-04 一种自适应动态限流方法、设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210777794.7A CN114844835B (zh) 2022-07-04 2022-07-04 一种自适应动态限流方法、设备

Publications (2)

Publication Number Publication Date
CN114844835A CN114844835A (zh) 2022-08-02
CN114844835B true CN114844835B (zh) 2022-09-20

Family

ID=82574345

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210777794.7A Active CN114844835B (zh) 2022-07-04 2022-07-04 一种自适应动态限流方法、设备

Country Status (1)

Country Link
CN (1) CN114844835B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116431327B (zh) * 2023-03-06 2023-11-07 钛信(上海)信息科技有限公司 一种任务限流处理方法及堡垒机

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005020307A (ja) * 2003-06-25 2005-01-20 Ntt Docomo Inc パケット流量制御システム及びパケット流量制御方法
CN106201722A (zh) * 2016-07-12 2016-12-07 乐视控股(北京)有限公司 服务器的负载调整方法及系统
CN108566304A (zh) * 2018-04-26 2018-09-21 努比亚技术有限公司 接口控制方法、电子设备及计算机可读存储介质
CN111262795A (zh) * 2020-01-08 2020-06-09 京东数字科技控股有限公司 基于服务接口的限流方法、装置、电子设备及存储介质
CN111478857A (zh) * 2019-01-24 2020-07-31 北京嘀嘀无限科技发展有限公司 一种接口限流控制方法、装置以及电子设备
CN111614570A (zh) * 2020-04-20 2020-09-01 北京邮电大学 一种用于服务网格的流量控制系统及方法
CN111726303A (zh) * 2019-03-22 2020-09-29 阿里巴巴集团控股有限公司 一种流量控制方法、装置以及计算设备
CN111817974A (zh) * 2020-06-09 2020-10-23 平安科技(深圳)有限公司 基于令牌桶的接口限流方法、装置、系统及可读存储介质
CN111988234A (zh) * 2019-05-23 2020-11-24 厦门网宿有限公司 过载保护方法、装置、服务器及存储介质
CN112422440A (zh) * 2019-08-22 2021-02-26 腾讯科技(深圳)有限公司 一种应用于服务器的流量控制方法以及相关装置
CN112738252A (zh) * 2020-12-30 2021-04-30 昆山巨星行动电子商务有限公司 一种电商高并发秒杀系统
CN113141410A (zh) * 2021-04-29 2021-07-20 北京星合之星网络科技有限公司 动态调节的qps控制方法、系统、设备及存储介质
CN113364697A (zh) * 2021-06-03 2021-09-07 深圳前海微众银行股份有限公司 流量控制方法、装置、设备及计算机可读存储介质
CN113381944A (zh) * 2021-06-09 2021-09-10 中国工商银行股份有限公司 系统限流方法、装置、电子设备、介质和程序产品

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7385925B2 (en) * 2004-11-04 2008-06-10 International Business Machines Corporation Data flow control method for simultaneous packet reception

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005020307A (ja) * 2003-06-25 2005-01-20 Ntt Docomo Inc パケット流量制御システム及びパケット流量制御方法
CN106201722A (zh) * 2016-07-12 2016-12-07 乐视控股(北京)有限公司 服务器的负载调整方法及系统
CN108566304A (zh) * 2018-04-26 2018-09-21 努比亚技术有限公司 接口控制方法、电子设备及计算机可读存储介质
CN111478857A (zh) * 2019-01-24 2020-07-31 北京嘀嘀无限科技发展有限公司 一种接口限流控制方法、装置以及电子设备
CN111726303A (zh) * 2019-03-22 2020-09-29 阿里巴巴集团控股有限公司 一种流量控制方法、装置以及计算设备
CN111988234A (zh) * 2019-05-23 2020-11-24 厦门网宿有限公司 过载保护方法、装置、服务器及存储介质
CN112422440A (zh) * 2019-08-22 2021-02-26 腾讯科技(深圳)有限公司 一种应用于服务器的流量控制方法以及相关装置
CN111262795A (zh) * 2020-01-08 2020-06-09 京东数字科技控股有限公司 基于服务接口的限流方法、装置、电子设备及存储介质
CN111614570A (zh) * 2020-04-20 2020-09-01 北京邮电大学 一种用于服务网格的流量控制系统及方法
CN111817974A (zh) * 2020-06-09 2020-10-23 平安科技(深圳)有限公司 基于令牌桶的接口限流方法、装置、系统及可读存储介质
CN112738252A (zh) * 2020-12-30 2021-04-30 昆山巨星行动电子商务有限公司 一种电商高并发秒杀系统
CN113141410A (zh) * 2021-04-29 2021-07-20 北京星合之星网络科技有限公司 动态调节的qps控制方法、系统、设备及存储介质
CN113364697A (zh) * 2021-06-03 2021-09-07 深圳前海微众银行股份有限公司 流量控制方法、装置、设备及计算机可读存储介质
CN113381944A (zh) * 2021-06-09 2021-09-10 中国工商银行股份有限公司 系统限流方法、装置、电子设备、介质和程序产品

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于海量日志数据的系统吞吐量优化方案;张梅,赵晓平,王宇平,周洁;《区域治理》;20181231;217-218 *
它们帮助我从点滴中积累审查经验,学习如何更好地把握评价创造性的尺度问题,也更清楚地认识到专利审查工作的重要和专业性;张金鹏;《中国优秀硕士学位论文全文数据库》;20210606;全文 *

Also Published As

Publication number Publication date
CN114844835A (zh) 2022-08-02

Similar Documents

Publication Publication Date Title
CN105281981B (zh) 网络服务的数据流量监控方法和装置
CN108924221B (zh) 分配资源的方法和装置
CN107819696B (zh) 一种交易流量控制方法和系统
Squillante et al. Web traffic modeling and web server performance analysis
CN106961351A (zh) 基于Docker容器集群的智能弹性伸缩方法
CN111352967B (zh) 滑动窗口算法的频次控制方法、系统、设备及介质
CN103825770B (zh) 一种使用改进的马尔科夫调制泊松过程模型来分析和产生网络流量的方法及系统
CN114844835B (zh) 一种自适应动态限流方法、设备
CN109144700A (zh) 超时时长的确定方法、装置、服务器和数据处理方法
CN102916908A (zh) 网络应用中的带宽优化方法及系统
CN108153783A (zh) 一种数据缓存的方法和装置
CN112260889B (zh) 一种基于Linux的进程流量监控方法、系统及设备
CN113141321B (zh) 一种基于边缘计算的数据传输方法及电子设备
CN110647392A (zh) 一种基于容器集群的智能弹性伸缩方法
Cohen et al. Don't let the negatives bring you down: sampling from streams of signed updates
US8364860B2 (en) Data-processing system and data-processing method
CN109117280A (zh) 电子装置及其限制进程间通信的方法、存储介质
CN106709053A (zh) 数据切片管理方法及系统
CN112969172B (zh) 一种基于云手机的通讯流量控制方法
CN113852490A (zh) 一种分布式存储系统中samba用户QoS实现方法、装置及设备
WO2005004388A1 (en) A method of calculating broadband access server dhcp user’s on-line time
CN110569238B (zh) 一种基于大数据的数据治理方法、系统、存储介质和服务端
CN112579396A (zh) 软件系统动态限流方法、装置及设备
US9183042B2 (en) Input/output traffic backpressure prediction
CN110532375A (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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 620564 2F, Building B, COFCO California Smart City, Shigao Street, Renshou County, Meishan City, Sichuan Province

Patentee after: Huantian Smart Technology Co.,Ltd.

Country or region after: China

Address before: 620564 No.1, floor 1, building 1, Section 2, Gaoxin Avenue, Shigao street, Renshou County, Meishan City, Sichuan Province

Patentee before: Meishan HUANTIAN Intelligent Technology Co.,Ltd.

Country or region before: China