CN113472679A - 接口限流方法和系统 - Google Patents
接口限流方法和系统 Download PDFInfo
- Publication number
- CN113472679A CN113472679A CN202111023753.0A CN202111023753A CN113472679A CN 113472679 A CN113472679 A CN 113472679A CN 202111023753 A CN202111023753 A CN 202111023753A CN 113472679 A CN113472679 A CN 113472679A
- Authority
- CN
- China
- Prior art keywords
- current limiting
- value
- nginx
- target interface
- time
- 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.)
- Granted
Links
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/20—Traffic policing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种接口限流方法和系统,其中,该接口限流方法包括:获取Nginx的访问日志的日志流,在预设的保存时长范围内,按照时间序列保存目标接口的响应时间;计算预设的第一统计时长范围内目标接口的响应时间的均值,并确定均值是否大于第一容忍值,若是,基于Nginx的限流功能,循环执行限流操作,直至计算出的均值小于或等于第一容忍值;在均值小于或等于第一容忍值的情况下,关闭Nginx对目标接口的限流功能,通过本申请,解决了限流功能与业务后端耦合,不利于打造轻量级业务系统的问题,保证了系统的轻量级。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及接口限流方法和系统。
背景技术
对于没有限流功能的业务系统,例如,由Linux+Nginx+MySQL+PHP这种架构(简称LNMP)搭建的单体业务系统,若该系统的某一个接口的访问量超出系统的承受能力,会造成整个系统雪崩,进而导致业务中断,为了提高业务系统在高并发情况下的可用性,针对单个接口的限流是必不可少的。
但是,系统的业务代码自身往往没有针对接口的限流功能,在相关技术中,是在系统的业务代码中定制开发限流功能,并且需要借助后端服务性能信息、后端接口信息等后端信息才能实现该限流功能,从而使得限流功能与业务后端耦合,导致业务系统不够轻量,进而造成该业务系统部署难度增大、维护成本增加等诸多负面影响。
针对相关技术中限流功能与业务后端耦合,不利于打造轻量级业务系统的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种接口限流方法和系统,以至少解决相关技术中限流功能与业务后端耦合,不利于打造轻量级业务系统的问题。
第一方面,本申请实施例提供了一种接口限流方法,所述方法包括:
获取Nginx的访问日志的日志流,在预设的保存时长范围内,按照时间序列保存目标接口的响应时间;
计算预设的第一统计时长范围内所述目标接口的响应时间的均值,并确定所述均值是否大于第一容忍值,若是,基于Nginx的限流功能,循环执行限流操作,直至计算出的均值小于或等于所述第一容忍值;
在所述均值小于或等于所述第一容忍值的情况下,关闭所述Nginx对所述目标接口的限流功能。
在其中一些实施例中,所述限流操作的过程包括:
根据所述目标接口的响应时间的时间序列,确定每秒查询率qps,并根据所述每秒查询率qps和预设的限流比,确定限流值;
更改所述Nginx的配置文件,以使Nginx按照所述限流值执行限流功能;
间隔预设的冷却时长。
在其中一些实施例中,所述关闭所述Nginx对所述目标接口的限流功能的过程包括:
在预设的恢复时长范围内,多次计算所述目标接口在所述第一统计时长范围内的响应时间的均值;
若计算出的均值总是小于或等于所述第一容忍值,则关闭所述Nginx的限流功能。
在其中一些实施例中,所述在预设的保存时长范围内,按照时间序列保存目标接口的响应时间之后,所述方法还包括:
计算预设的第二统计时长范围内所述目标接口的响应时间的梯度值,并确定所述梯度值是否大于第二容忍值;
在所述均值大于所述第一容忍值,或者所述梯度值大于所述第二容忍值的情况下,执行所述限流操作。
在其中一些实施例中,所述获取Nginx的访问日志的日志流之后,所述方法还包括:
在预设的保存时长范围内,按照时间序列保存所述目标接口的状态码,并根据所述状态码,确定所述目标接口是否出现响应超时的情况;
在所述均值大于所述第一容忍值,或者所述梯度值大于所述第二容忍值,或者出现响应超时的情况下,执行所述限流操作。
在其中一些实施例中,所述限流操作的执行时机还包括:在当前时间处于定时限流期间内的情况下,执行所述限流操作;
在当前时间不处于所述定时限流期间内的情况下,若所述均值小于或等于所述第一容忍值,且所述梯度值小于或等于所述第二容忍值,且未出现响应超时,则关闭所述Nginx对所述目标接口的限流功能。
在其中一些实施例中,所述执行所述限流操作之前,所述方法还包括:确定所述目标接口是否在预设的白名单上,若否,则执行所述限流操作。
第二方面,本申请实施例提供了一种接口限流系统,所述系统包括:
采集模块,用于获取Nginx的访问日志的日志流,在预设的保存时长范围内,按照时间序列保存目标接口的响应时间;
分析模块,用于计算预设的第一统计时长范围内所述目标接口的响应时间的均值,并确定所述均值是否大于第一容忍值,若是,根据所述目标接口的响应时间的时间序列,确定每秒查询率qps,并根据所述每秒查询率qps和预设的限流比,确定限流值;
配置模块,用于更改所述Nginx的配置文件,以使Nginx按照所述限流值执行限流功能。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述接口限流方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现所述接口限流方法。
相比于相关技术,本申请实施例提供的接口限流方法,通过获取Nginx的访问日志的日志流,在预设的保存时长范围内,按照时间序列保存目标接口的响应时间;计算预设的第一统计时长范围内目标接口的响应时间的均值,并确定均值是否大于第一容忍值,若是,基于Nginx的限流功能,循环执行限流操作,直至计算出的均值小于或等于第一容忍值;在均值小于或等于第一容忍值的情况下,关闭Nginx对目标接口的限流功能,解决了相关技术中限流功能与业务后端耦合,不利于打造轻量级业务系统的问题,保证了系统的轻量级。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的接口限流方法的应用环境示意图;
图2是根据本申请第一实施例的接口限流方法的流程图;
图3是根据本申请第二实施例的限流操作的流程图;
图4是根据本申请第三实施例的接口限流方法的流程图;
图5是根据本申请第四实施例的接口限流方法的流程图;
图6是根据本申请第五实施例的接口限流方法的流程图;
图7是根据本申请第六实施例的接口限流系统的结构框图;
图8是根据本申请第七实施例的接口限流系统的各模块的关系示意图;
图9是根据本申请实施例的电子设备的内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本申请提供的接口限流方法,可以应用于如图1所示的应用环境中,图1是根据本申请实施例的接口限流方法的应用环境示意图,如图1所示,服务器101上部署有限流系统,该限流系统和nginx可以部署在同一台服务器、可以运行在同一台主机或者同一个pod中,并且该限流系统与业务系统的后端服务隔离部署;在业务系统运行过程中,该限流系统获取Nginx的访问日志的日志流,在预设的保存时长范围内,按照时间序列保存目标接口的响应时间;该限流系统计算预设的第一统计时长范围内该目标接口的响应时间的均值,并确定均值是否大于第一容忍值,若是,该限流系统基于Nginx的限流功能,循环执行限流操作,直至计算出的均值小于或等于第一容忍值;在均值小于或等于第一容忍值的情况下,该限流系统更改Nginx的配置文件,以使Nginx关闭对目标接口的限流功能,其中,服务器101可以用独立的服务器或者是多个服务器组成的服务器集群来实现,由于大部分的业务系统均具备Nginx(例如,LNMP业务系统),因此,Nginx可以是业务系统自带的,当业务系统不具备Nginx时,也可以单独增加Nginx,以实现本实施例中的接口限流方法。
本实施例提供了一种接口限流方法,图2是根据本申请第一实施例的接口限流方法的流程图,如图2所示,该流程包括如下步骤:
步骤S201,获取Nginx的访问日志(access log)的日志流,在预设的保存时长范围内,按照时间序列保存目标接口的响应时间,例如,为了保证系统的轻量级及无状态,可以将日志流中的接口、响应时间保存为时间序列的map,并存在内存中,map的key为接口,value为响应时间,保留的时间范围可配置;
步骤S202,计算预设的第一统计时长范围内目标接口的响应时间的均值,并确定均值是否大于第一容忍值,若是,基于Nginx的限流功能,循环执行限流操作,直至计算出的均值小于或等于第一容忍值,例如,该第一统计时长范围可以设置为1秒,即选取map在最近的1秒钟内保存的该目标接口的响应时间的数据,通过均值计算窗口进行均值计算,该第一容忍值可以设置为1秒,即在计算出的响应时间的均值大于1秒的情况下,基于Nginx的限流功能,循环执行限流操作,直至计算出的均值小于或等于1秒;
步骤S203,在均值小于或等于第一容忍值的情况下,关闭Nginx对目标接口的限流功能。
通过步骤S201至S203,相对于相关技术中限流功能与业务后端耦合,不利于打造轻量级业务系统的问题,本实施例通过利用Nginx自带的限流功能,使得本实施例无需在系统的业务代码中定制开发限流功能,对现有代码无侵入性,本实施例的代码与业务系统的现有代码可以隔离部署,保证了系统的轻量级,并且本实施例通过利用Nginx的访问日志的日志流,从中获取到目标接口的响应时间,进而将响应时间的均值与用户设置的第一容忍值对比,判断是否触发限流操作,并在均值小于或等于第一容忍值的情况下,关闭Nginx对目标接口的限流功能,从而无需借助后端信息就能实现该限流功能的开启和关闭,使得限流功能与业务后端解耦,解决了相关技术中限流功能与业务后端耦合,不利于打造轻量级业务系统的问题,保证了系统的轻量级。
由于适合各接口的限流值难以预先确定,本实施例通过将响应时间的均值与第一容忍值进行比较,来判断是否触发限流操作,如果响应时间的均值大于第一容忍值,说明响应时长较长,短时间内该目标接口的访问量较大,业务系统较难承受,存在整个系统雪崩的风险,此时就需要进行限流,从而使得用户无需事先提供限流值,只需要提供可以接受的最长响应时间(即第一容忍值),这对于用户来说较为便利,在响应时间的均值大于第一容忍值,触发限流操作的情况下,本实施例循环执行限流操作,在其中一些实施例中,图3是根据本申请第二实施例的限流操作的流程图,如图3所示,该流程包括如下步骤:
步骤S301,根据目标接口的响应时间的时间序列,确定qps(每秒查询率),并根据qps和预设的限流比,确定限流值,例如,该限流比可以设置为0.75;
步骤S302,更改Nginx的配置文件,以使Nginx按照限流值执行限流功能,例如,在需要开启限流功能的情况下,可以在Nginx的配置文件中新增以下代码:
location /api/user {
limit_req zone=one burst=10 nodelay;
},
其中,burst为传入的限流值,在后续需要修改限流值的情况下,可以在该配置文件的该段新增代码中修改burst的值,配置文件发生更改后,调用Nginx命令测试配置文件的正确性,测试成功后,发送重载(reload)信号给Nginx,该配置文件经reload后生效,从而Nginx会按照限流值执行限流功能;
步骤S303,间隔预设的冷却时长,例如,该冷却时间可以设置为2min。
通过步骤S301至S303,由于限流之后,超出限流值的部分的访问请求会被退回客户端,因此在每一次执行限流功能之后,该目标接口的访问量都会有所下降,经过一段冷却时间后,本实施例会根据访问情况重新确定最新的qps,根据该最新的qps重新确定最新的限流值,并按照该新的限流值继续执行限流功能,经过一次次限流操作之后,该目标接口的访问量逐步下降,响应时间逐渐变快并落入第一容忍值以下的范围内,此时可以关闭限流功能,本实施例中通过不断地根据最新的qps确定出新的限流值的方式,不会因为预设的限流值过小而导致接口将太多请求都拒之门外,影响业务系统的业务的顺利执行,也不会因为预设的限流值过大而失去对很多接口响应的限流作用,使得系统难以承受该短时访问量而造成整个系统雪崩,相比于预先估计并设定限流值的方式,本实施例可以更加灵活地贴合各个接口的实际限流需求,尽量避免对业务系统产生不利影响。
考虑到目标接口的访问量受到实际业务需求的影响,可能会出现访问量在一小段时间内不太稳定的情况,进而导致接口的响应时间也不稳定,在这种情况下,若一确定响应时间的均值小于或等于第一容忍值,就立即关闭Nginx的限流功能,可能不久后又需要重新开启Nginx的限流功能,从而造成系统运行资源的浪费,在其中一些实施例中,图4是根据本申请第三实施例的接口限流方法的流程图,如图4所示,执行限流操作,直至计算出的均值小于或等于第一容忍值之后,该流程包括如下步骤:
步骤S401,在预设的恢复时长范围内,多次计算目标接口在第一统计时长范围内的响应时间的均值,例如,该恢复时间可以设置为10分钟;
步骤S402,若计算出的均值总是小于或等于第一容忍值,则关闭Nginx的限流功能。
考虑到上述几个实施例为了节约系统运行资源,并不是每获取到新的响应时间,就将该响应时间与第一容忍值进行对比,而是在预设的第一统计时长范围内计算均值,从而得出该时间段内响应时间的总体情况,因此,得到的均值与接口在当时的实际情况相比存在一定的滞后性,图5是根据本申请第四实施例的接口限流方法的流程图,如图5所示,在预设的保存时长范围内,按照时间序列保存目标接口的响应时间之后,该流程包括如下步骤:
步骤S501,计算预设的第二统计时长范围内目标接口的响应时间的梯度值,并确定梯度值是否大于第二容忍值,其中,梯度值用于表征响应时间在前后两个第二统计时长范围内的变化幅度。可选的,该第二容忍值可以设置为500毫秒,第二统计时长的大小与第一统计时长的大小可以设置得不同,也可以相同,例如,该第二统计时长范围可以设置为1秒;
步骤S502,在均值大于第一容忍值,或者梯度值大于第二容忍值的情况下,执行限流操作。
通过步骤S501至S502,本实施例通过计算预设的第二统计时长范围内目标接口的响应时间的梯度值,可以预测在超出该第二统计时长范围之后响应时间的变化趋势,并为该梯度值设置第二容忍值,进而可以在均值大于第一容忍值,或者梯度值大于第二容忍值的情况下,都执行限流操作,从而加快接口的限流响应。
考虑到第一容忍值、第二容忍值都是用户自主设定的,可能存在容忍值设置得过大,接口访问量剧增但依然未触发限流的情况,图6是根据本申请第五实施例的接口限流方法的流程图,如图6所示,获取Nginx的访问日志的日志流之后,该流程包括如下步骤:
S601,在预设的保存时长范围内,按照时间序列保存目标接口的状态码,并根据状态码,确定目标接口是否出现响应超时的情况,例如,在接口出现响应超时的情况下,Nginx的状态码会返回504;
S602,在均值大于第一容忍值,或者梯度值大于第二容忍值,或者出现响应超时的情况下,执行限流操作。
通过步骤S601至S602,可以避免容忍值设置得过大,造成接口访问量剧增但依然未触发限流的情况发生,确保能对已超时接口起到限流作用。
在其中一些实施例中,如果在处理某些业务场景时会对目标接口产生比较大的访问量,且该业务场景总是在某个固定时间段内执行,可以给该目标接口设置定时限流期间,在当前时间处于定时限流期间内的情况下,执行限流操作;与之相对,在当前时间不处于定时限流期间内的情况下,若均值小于或等于第一容忍值,且梯度值小于或等于第二容忍值,且未出现响应超时,则关闭Nginx对目标接口的限流功能。
在其中一些实施例中,如果某些目标接口对应的业务比较重要,并且不希望该业务发出的访问请求被接口因限流而退回,可以设置白名单,在执行限流操作之前,确定目标接口是否在预设的白名单上,在白名单上的接口不受到限流。
本实施例还提供了一种接口限流系统,图7是根据本申请第六实施例的接口限流系统的结构框图,如图7所示,该系统包括:
采集模块701,用于获取Nginx的访问日志的日志流,在预设的保存时长范围内,按照时间序列保存目标接口的响应时间;
分析模块702,用于计算预设的第一统计时长范围内目标接口的响应时间的均值,并确定均值是否大于第一容忍值,若是,根据目标接口的响应时间的时间序列,确定每秒查询率qps,并根据每秒查询率qps和预设的限流比,确定限流值;
配置模块703,用于更改Nginx的配置文件,以使Nginx按照限流值执行限流功能。
在其中一些实施例中,图8是根据本申请第七实施例的接口限流系统的各模块的关系示意图,如图8所示:
采集模块701获取Nginx的访问日志的日志流,在预设的保存时长范围内,按照时间序列保存目标接口的响应时间和状态码信息;
分析模块702,包括多个分析单元,分析单元可以设置成插件形式,各个分析单元之间进行级联,分析单元的分析结果可以传送至下一个分析单元,其中,分析单元1计算预设的第一统计时长范围内所述目标接口的响应时间的均值、计算预设的第二统计时长范围内所述目标接口的响应时间的梯度值,并分别确定所述均值是否大于第一容忍值、所述梯度值是否大于第二容忍值;分析单元1将分析结果传送至分析单元2,分析单元2确定该目标接口在当前时间是否处于定时限流期间,并整合收到的传送信息,判断是否需要限流以及确定对应的限流值;分析单元2将分析结果传送至分析单元n,分析单元n根据状态码,确定目标接口是否出现响应超时的情况,并整合收到的传送信息,判断是否需要限流以及确定对应的限流值;分析单元n将分析结果传送至分析单元n+1,分析单元n+1在执行限流操作之前,确定目标接口是否在预设的白名单上,若否,则将限流值传送至配置模块703;
配置模块703,更改所述Nginx的配置文件,以使Nginx按照所述限流值执行限流功能。
在一个实施例中,图9是根据本申请实施例的电子设备的内部结构示意图,如图9所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图9所示。该电子设备包括通过内部总线连接的处理器、网络接口、内存储器和非易失性存储器,其中,该非易失性存储器存储有操作系统、计算机程序和数据库。处理器用于提供计算和控制能力,网络接口用于与外部的终端通过网络连接通信,内存储器用于为操作系统和计算机程序的运行提供环境,计算机程序被处理器执行时以实现一种接口限流的方法,数据库用于存储数据。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种接口限流方法,其特征在于,所述方法包括:
获取Nginx的访问日志的日志流,在预设的保存时长范围内,按照时间序列保存目标接口的响应时间;
计算预设的第一统计时长范围内所述目标接口的响应时间的均值,并确定所述均值是否大于第一容忍值,若是,基于Nginx的限流功能,循环执行限流操作,直至计算出的均值小于或等于所述第一容忍值;
在所述均值小于或等于所述第一容忍值的情况下,关闭所述Nginx对所述目标接口的限流功能。
2.根据权利要求1所述的方法,其特征在于,所述限流操作的过程包括:
根据所述目标接口的响应时间的时间序列,确定每秒查询率qps,并根据所述每秒查询率qps和预设的限流比,确定限流值;
更改所述Nginx的配置文件,以使Nginx按照所述限流值执行限流功能;
间隔预设的冷却时长。
3.根据权利要求1所述的方法,其特征在于,所述关闭所述Nginx对所述目标接口的限流功能的过程包括:
在预设的恢复时长范围内,多次计算所述目标接口在所述第一统计时长范围内的响应时间的均值;
若计算出的均值总是小于或等于所述第一容忍值,则关闭所述Nginx的限流功能。
4.根据权利要求1所述的方法,其特征在于,所述在预设的保存时长范围内,按照时间序列保存目标接口的响应时间之后,所述方法还包括:
计算预设的第二统计时长范围内所述目标接口的响应时间的梯度值,并确定所述梯度值是否大于第二容忍值;
在所述均值大于所述第一容忍值,或者所述梯度值大于所述第二容忍值的情况下,执行所述限流操作。
5.根据权利要求4所述的方法,其特征在于,所述获取Nginx的访问日志的日志流之后,所述方法还包括:
在预设的保存时长范围内,按照时间序列保存所述目标接口的状态码,并根据所述状态码,确定所述目标接口是否出现响应超时的情况;
在所述均值大于所述第一容忍值,或者所述梯度值大于所述第二容忍值,或者出现响应超时的情况下,执行所述限流操作。
6.根据权利要求5所述的方法,其特征在于,所述限流操作的执行时机还包括:在当前时间处于定时限流期间内的情况下,执行所述限流操作;
在当前时间不处于所述定时限流期间内的情况下,若所述均值小于或等于所述第一容忍值,且所述梯度值小于或等于所述第二容忍值,且未出现响应超时,则关闭所述Nginx对所述目标接口的限流功能。
7.根据权利要求5或6所述的方法,其特征在于,所述执行所述限流操作之前,所述方法还包括:确定所述目标接口是否在预设的白名单上,若否,则执行所述限流操作。
8.一种接口限流系统,其特征在于,所述系统包括:
采集模块,用于获取Nginx的访问日志的日志流,在预设的保存时长范围内,按照时间序列保存目标接口的响应时间;
分析模块,用于计算预设的第一统计时长范围内所述目标接口的响应时间的均值,并确定所述均值是否大于第一容忍值,若是,根据所述目标接口的响应时间的时间序列,确定每秒查询率qps,并根据所述每秒查询率qps和预设的限流比,确定限流值;
配置模块,用于更改所述Nginx的配置文件,以使Nginx按照所述限流值执行限流功能。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的接口限流方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至7中任一项所述的接口限流方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111023753.0A CN113472679B (zh) | 2021-09-02 | 2021-09-02 | 接口限流方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111023753.0A CN113472679B (zh) | 2021-09-02 | 2021-09-02 | 接口限流方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113472679A true CN113472679A (zh) | 2021-10-01 |
CN113472679B CN113472679B (zh) | 2021-12-21 |
Family
ID=77867412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111023753.0A Active CN113472679B (zh) | 2021-09-02 | 2021-09-02 | 接口限流方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113472679B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114389882A (zh) * | 2022-01-14 | 2022-04-22 | 平安付科技服务有限公司 | 网关流量控制方法、装置、计算机设备及存储介质 |
CN114422439A (zh) * | 2022-01-21 | 2022-04-29 | 平安国际智慧城市科技股份有限公司 | 接口限流方法、装置、计算机设备和存储介质 |
CN114465959A (zh) * | 2021-12-24 | 2022-05-10 | 南京苏宁电子信息技术有限公司 | 接口动态流量控制方法、装置、计算机设备和存储介质 |
CN115412495A (zh) * | 2022-08-26 | 2022-11-29 | 建信金融科技有限责任公司 | 动态限流方法、装置、设备和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109039937A (zh) * | 2018-09-26 | 2018-12-18 | 深圳壹账通智能科技有限公司 | 动态限流方法、装置、计算机设备和存储介质 |
CN110099009A (zh) * | 2018-01-31 | 2019-08-06 | 北京易真学思教育科技有限公司 | 基于接口响应时间趋势的动态限流方法及计算机可读介质 |
CN110380986A (zh) * | 2019-07-23 | 2019-10-25 | 中南民族大学 | 基于Zuul的流量限制方法、装置、设备及存储介质 |
CN111367765A (zh) * | 2020-03-17 | 2020-07-03 | 深圳市卡牛科技有限公司 | 接口响应性能的监控方法、装置、服务器和存储介质 |
WO2020256666A1 (en) * | 2019-06-21 | 2020-12-24 | Medianova Internet Hizmetleri Ve Ticaret Anonim Sirketi | A media streaming system compatible with content distribution networks |
CN112269674A (zh) * | 2020-11-19 | 2021-01-26 | 四川长虹电器股份有限公司 | 服务接口的异常熔断和自我恢复的方法 |
-
2021
- 2021-09-02 CN CN202111023753.0A patent/CN113472679B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110099009A (zh) * | 2018-01-31 | 2019-08-06 | 北京易真学思教育科技有限公司 | 基于接口响应时间趋势的动态限流方法及计算机可读介质 |
CN109039937A (zh) * | 2018-09-26 | 2018-12-18 | 深圳壹账通智能科技有限公司 | 动态限流方法、装置、计算机设备和存储介质 |
WO2020256666A1 (en) * | 2019-06-21 | 2020-12-24 | Medianova Internet Hizmetleri Ve Ticaret Anonim Sirketi | A media streaming system compatible with content distribution networks |
CN110380986A (zh) * | 2019-07-23 | 2019-10-25 | 中南民族大学 | 基于Zuul的流量限制方法、装置、设备及存储介质 |
CN111367765A (zh) * | 2020-03-17 | 2020-07-03 | 深圳市卡牛科技有限公司 | 接口响应性能的监控方法、装置、服务器和存储介质 |
CN112269674A (zh) * | 2020-11-19 | 2021-01-26 | 四川长虹电器股份有限公司 | 服务接口的异常熔断和自我恢复的方法 |
Non-Patent Citations (2)
Title |
---|
GONGYOULIU: ""如何构建优质的推荐系统服务?|技术头条"", 《HTTPS://WWW.SOHU.COM/A/309082116_99979》 * |
落叶知悲秋: ""nginx日志文件分析以及添加接口响应耗时"", 《HTTPS://BLOG.CSDN.NET/GGHGRQW/ARTICLE/DETAILS/108769203》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114465959A (zh) * | 2021-12-24 | 2022-05-10 | 南京苏宁电子信息技术有限公司 | 接口动态流量控制方法、装置、计算机设备和存储介质 |
CN114389882A (zh) * | 2022-01-14 | 2022-04-22 | 平安付科技服务有限公司 | 网关流量控制方法、装置、计算机设备及存储介质 |
CN114389882B (zh) * | 2022-01-14 | 2024-04-09 | 平安付科技服务有限公司 | 网关流量控制方法、装置、计算机设备及存储介质 |
CN114422439A (zh) * | 2022-01-21 | 2022-04-29 | 平安国际智慧城市科技股份有限公司 | 接口限流方法、装置、计算机设备和存储介质 |
CN115412495A (zh) * | 2022-08-26 | 2022-11-29 | 建信金融科技有限责任公司 | 动态限流方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113472679B (zh) | 2021-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113472679B (zh) | 接口限流方法和系统 | |
EP3008592B1 (en) | Pre-fetching content for service-connected applications | |
US10225145B2 (en) | Method and device for updating client | |
CN110247856B (zh) | 服务器资源释放方法和装置 | |
US10554388B2 (en) | Service execution method and device | |
CN109218322B (zh) | 一种拟态防御方法、装置及系统 | |
RU2736857C2 (ru) | Способ, устройство и терминал для загрузки файлов | |
US20140047070A1 (en) | Cloud comuting device and method for storing data files in cloud servers | |
CN110704177B (zh) | 计算任务处理方法、装置、计算机设备和存储介质 | |
KR101719500B1 (ko) | 캐싱된 플로우들에 기초한 가속 | |
CN112540749B (zh) | 微服务划分方法、装置、计算机设备和可读存储介质 | |
CN111416836B (zh) | 基于Nginx的服务器维护方法、装置、计算机设备及存储介质 | |
US20170308546A1 (en) | File storage method and electronic device | |
CN111105066A (zh) | 资源受限项目调度方法、装置、计算机设备、及存储介质 | |
CN111490947A (zh) | 数据包发送方法、数据包接收方法、系统、设备及介质 | |
US9922036B2 (en) | System and method for duplicating files on client device for cloud storage | |
CN112565026A (zh) | 测试帧的生成方法、装置及设备 | |
CN112019643A (zh) | Docker镜像下载方法及系统 | |
US20200210328A1 (en) | Rules testing framework | |
US9769263B2 (en) | Predictive connection request shedding | |
CN113852665A (zh) | 文件上传方法、装置、电子设备、存储介质及程序产品 | |
CN113282626A (zh) | 基于Redis的缓存数据的方法、装置、计算机设备及存储介质 | |
CN112910947A (zh) | 一种基于lua的高并发限流秒杀技术 | |
US11394748B2 (en) | Authentication method for anonymous account and server | |
CN112131014A (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 |