CN110768912A - Api网关限流方法及装置 - Google Patents
Api网关限流方法及装置 Download PDFInfo
- Publication number
- CN110768912A CN110768912A CN201910999349.3A CN201910999349A CN110768912A CN 110768912 A CN110768912 A CN 110768912A CN 201910999349 A CN201910999349 A CN 201910999349A CN 110768912 A CN110768912 A CN 110768912A
- Authority
- CN
- China
- Prior art keywords
- flow value
- current
- target user
- value
- access request
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种API网关限流方法及装置,如果当前单流量值未超过单流量阈值,则接收API访问请求;如果当前单流量值超过单流量阈值,则将当前单流量值上报至集群流量计数器,由集群流量计数器根据当前单流量值确定与目标用户对应的当前总流量值;从集群流量计数器获取当前总流量值,并判断当前总流量值是否超过与目标用户对应的总流量阈值,如果未超过,则接收API访问请求,如果超过,则拒绝接收API访问请求。上述API网关限流方法及装置,只在与目标用户对应的当前单流量值超过与目标用户对应的单流量阈值时,才与集群流量计数器进行交互,因此,提升了API网关对API访问请求的处理能力。
Description
技术领域
本申请涉及API访问技术领域,更具体的说,是涉及一种API网关限流方法及装置。
背景技术
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,应用将自身的服务能力封装成API,并通过API网关开放给用户访问。API网关通常是由一个负载均衡设备加上若干网关服务器组成的多机集群环境。为了保护API网关的后台系统不会受到大流量冲击,需要对接入API网关的API访问请求进行限流。
现有技术中,一种API网关限流方法是基于集群流量计数器(比如redis)实现的,具体的,API网关在接收一个API访问请求之前,均需要网关服务器与集群流量计数器进行交互,获取API网关的当前流量,并根据预设的限流规则判断API网关的当前流量达到限流条件,如果未达到则接收该API访问请求,如果达到则拒绝接收该API访问请求。这种方法每次接收一个API访问请求之前,都需要网关服务器与集群流量计数器进行交互,影响了API网关对API访问请求的处理能力。
因此,如何提供一种不影响API网关对API访问请求的处理能力的API网关限流方法,成为本领域技术人员亟待解决的技术问题。
发明内容
鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的API网关限流方法及装置。具体方案如下:
一种API网关限流方法,所述方法包括:
获取待接收的API访问请求;
确定与所述API访问请求对应的目标用户;
计算与所述目标用户对应的当前单流量值;
判断所述当前单流量值是否超过与所述目标用户对应的单流量阈值;
如果所述当前单流量值未超过所述单流量阈值,则接收所述API访问请求;
如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器,由所述集群流量计数器根据所述当前单流量值确定与所述目标用户对应的当前总流量值;
从所述集群流量计数器获取所述当前总流量值,并判断所述当前总流量值是否超过与所述目标用户对应的总流量阈值,如果未超过,则接收所述API访问请求,如果超过,则拒绝接收所述API访问请求。
可选地,所述计算与所述目标用户对应的当前单流量值,包括:
获取共享内存组件中存储的与所述目标用户对应的第一流量值以及第一并发值;所述第一流量值为当前限流周期内所述API网关已接收的与所述目标用户对应的API访问请求的数量,所述第一并发值为所述当前限流周期的上一限流周期内未处理完成的API访问请求的数量;
将所述第一流量值加1,得到第二流量值;
判断所述第二流量值是否为1;
当所述第二流量值为1时,将所述第二流量值加上所述第一并发值,得到所述当前单流量值;
当所述第二流量值不为1时,将所述第一并发值加1,得到所述当前单流量值。
可选地,在所述接收所述API访问请求之后,或,拒绝接收所述API访问请求之后,所述方法还包括:
更新所述第一流量值以及所述第一并发值,其中,更新后的所述第一流量值是将更新前的第一流量值加1生成的,更新后的第一并发值是将更新前的第一并发值减1生成的。
可选地,在所述判断当前单流量值是否超过单流量阈值之前,所述方法还包括:
从限流配置文件中获取与所述目标用户对应的单流量阈值。
可选地,在所述判断所述当前总流量值是否超过总流量阈值之前,所述方法还包括:
从所述共享内存组件中获取与所述目标用户对应的总流量阈值。
可选地,在所述接收所述API访问请求之后,所述方法还包括:
将所述API访问请求转发至应用服务器。
可选地,如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器之后,所述方法还包括:
获取与所述目标用户对应的API访问请求;
向所述集群流量计数器上报加1请求,以使所述集群流量计数器根据所述加1请求更新与所述目标用户对应的当前总流量值,更新后的与所述目标用户对应的当前总流量值是更新前的与所述目标用户对应的当前总流量值加1生成的。
一种API网关限流装置,包括:
API访问请求获取单元,用于获取待接收的API访问请求;
目标用户确定单元,用于确定与所述API访问请求对应的目标用户;
当前单流量值计算单元,用于计算与所述目标用户对应的当前单流量值;
判断单元,用于判断所述当前单流量值是否超过与所述目标用户对应的单流量阈值;
第一处理单元,用于如果所述当前单流量值未超过所述单流量阈值,则接收所述API访问请求;
第二处理单元,用于如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器,由所述集群流量计数器根据所述当前单流量值确定与所述目标用户对应的当前总流量值;从所述集群流量计数器获取所述当前总流量值,并判断所述当前总流量值是否超过与所述目标用户对应的总流量阈值,如果未超过,则接收所述API访问请求,如果超过,则拒绝接收所述API访问请求。
一种存储介质,其上存储有程序,该程序被处理器执行时实现如上所述的API网关限流方法。
一种电子设备,所述电子设备包括存储器和处理器,所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执行如上所述的API网关限流方法。
借由上述技术方案,本申请公开了一种API网关限流方法及装置,获取待接收的API访问请求;确定与所述API访问请求对应的目标用户;计算与所述目标用户对应的当前单流量值;判断所述当前单流量值是否超过与所述目标用户对应的单流量阈值;如果所述当前单流量值未超过所述单流量阈值,则接收所述API访问请求;如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器,由所述集群流量计数器根据所述当前单流量值确定与所述目标用户对应的当前总流量值;从所述集群流量计数器获取所述当前总流量值,并判断所述当前总流量值是否超过与所述目标用户对应的总流量阈值,如果未超过,则接收所述API访问请求,如果超过,则拒绝接收所述API访问请求。上述API网关限流方法及装置,只在与目标用户对应的当前单流量值超过与目标用户对应的单流量阈值时,才与集群流量计数器进行交互,因此,提升了API网关对API访问请求的处理能力。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本申请实施例提供的一种API网关限流系统架构示意图;
图2为本申请实施例提供的一种网关服务器的结构示意图;
图3为本申请实施例提供的一种共享内存组件示意图;
图4为本申请实施例提供的一种API网关限流方法的流程示意图;
图5为本申请实施例提供的一种API网关限流装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
下面对本申请实施例提供的具体实现方案进行详细介绍。
请参阅附图1,图1为本申请实施例提供的一种API网关限流系统架构示意图,该API网关限流系统包括API网关、Redis集群流量计数器、以及应用服务器,其中,API网关中包括网关服务器集群以及负载均衡器,应用服务器中包含多个应用集群。
本申请中,网关服务器的结构如图2所示,具体的,网关服务器可由NGX服务器实现,网关服务器中包括限流模块、内存、共享内存组件以及阈值模块,其中,内存模块,存放当前网关服务器的限流信息,在当前网关服务器启动时,内存模块可以将网关服务器的file中的限流配置文件以table的形式读取到内存中。限流配置文件采用json格式存放在file中。参考如下代码,node_num存放nginx集群中nginx的数量,rate_limit_by_user存放各个用户的限流信息,username存放当前用户的限流信息,rate_limit中存放具体限流值。
共享内存组件中以hash表的形式存放单节点阈值、总流量阈值、当前并发值、当前流量值。其中当前流量值的生命周期为两个限速周期。具体如图3所示。
redis集群流量计数器中存储的数据形式采用String类型,key及value和共享内存组件中的一致。
基于上述网关服务器,本申请提出了一种API网关限流方法,具体通过如下实施例详细说明。
请参阅附图4,图4为本申请实施例提供的一种API网关限流方法的流程示意图,该API网关限流方法应用于API网关中的任一网关服务器的限流模块,该方法具体包括如下步骤:
S101:获取待接收的API访问请求;
S102:确定与所述API访问请求对应的目标用户;
S103:计算与所述目标用户对应的当前单流量值;
S104:判断所述当前单流量值是否超过与所述目标用户对应的单流量阈值;如果所述当前单流量值未超过所述单流量阈值,则执行S**,如果所述当前单流量值超过所述单流量阈值,则执行S105和S106。
S105:将所述当前单流量值上报至集群流量计数器,由所述集群流量计数器根据所述当前单流量值确定与所述目标用户对应的当前总流量值;
S106:从所述集群流量计数器获取所述当前总流量值,并判断所述当前总流量值是否超过与所述目标用户对应的总流量阈值,如果未超过,则接收所述API访问请求,如果超过,则拒绝接收所述API访问请求。
S107:接收所述API访问请求。
本实施例公开了一种API网关限流方法,获取待接收的API访问请求;确定与所述API访问请求对应的目标用户;计算与所述目标用户对应的当前单流量值;判断所述当前单流量值是否超过与所述目标用户对应的单流量阈值;如果所述当前单流量值未超过所述单流量阈值,则接收所述API访问请求;如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器,由所述集群流量计数器根据所述当前单流量值确定与所述目标用户对应的当前总流量值;从所述集群流量计数器获取所述当前总流量值,并判断所述当前总流量值是否超过与所述目标用户对应的总流量阈值,如果未超过,则接收所述API访问请求,如果超过,则拒绝接收所述API访问请求。上述API网关限流方法,只在与目标用户对应的当前单流量值超过与目标用户对应的单流量阈值时,才与集群流量计数器进行交互,因此,提升了API网关对API访问请求的处理能力。
需要说明的是,所述计算与所述目标用户对应的当前单流量值,包括:
获取共享内存组件中存储的与所述目标用户对应的第一流量值以及第一并发值;所述第一流量值为当前限流周期内所述API网关已接收的与所述目标用户对应的API访问请求的数量,所述第一并发值为所述当前限流周期的上一限流周期内未处理完成的API访问请求的数量;
将所述第一流量值加1,得到第二流量值;
判断所述第二流量值是否为1;
当所述第二流量值为1时,将所述第二流量值加上所述第一并发值,得到所述当前单流量值;
当所述第二流量值不为1时,将所述第一并发值加1,得到所述当前单流量值。
需要说明的是,在所述接收所述API访问请求之后,或,拒绝接收所述API访问请求之后,所述方法还包括:
更新所述第一流量值以及所述第一并发值,其中,更新后的所述第一流量值是将更新前的第一流量值加1生成的,更新后的第一并发值是将更新前的第一并发值减1生成的。
需要说明的是,在所述判断当前单流量值是否超过单流量阈值之前,所述方法还包括:
从限流配置文件中获取与所述目标用户对应的单流量阈值。
需要说明的是,在所述判断所述当前总流量值是否超过总流量阈值之前,所述方法还包括:
从所述共享内存组件中获取与所述目标用户对应的总流量阈值。
需要说明的是,在所述接收所述API访问请求之后,所述方法还包括:
将所述API访问请求转发至应用服务器。
需要说明的是,如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器之后,所述方法还包括:
获取与所述目标用户对应的API访问请求;
向所述集群流量计数器上报加1请求,以使所述集群流量计数器根据所述加1请求更新与所述目标用户对应的当前总流量值,更新后的与所述目标用户对应的当前总流量值是更新前的与所述目标用户对应的当前总流量值加1生成的。
请参阅附图5,图5为本申请实施例提供的一种API网关限流装置的结构示意图,该装置包括如下单元:
API访问请求获取单元11,用于获取待接收的API访问请求;
目标用户确定单元12,用于确定与所述API访问请求对应的目标用户;
当前单流量值计算单元13,用于计算与所述目标用户对应的当前单流量值;
判断单元14,用于判断所述当前单流量值是否超过与所述目标用户对应的单流量阈值;
第一处理单元15,用于如果所述当前单流量值未超过所述单流量阈值,则接收所述API访问请求;
第二处理单元16,用于如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器,由所述集群流量计数器根据所述当前单流量值确定与所述目标用户对应的当前总流量值;从所述集群流量计数器获取所述当前总流量值,并判断所述当前总流量值是否超过与所述目标用户对应的总流量阈值,如果未超过,则接收所述API访问请求,如果超过,则拒绝接收所述API访问请求。
需要说明的是,上述各个单元的具体实现已在方法实施例中详细说明,具体请参见方法实施例中的相关内容,本实施例不再赘述。
所述API网关限流装置包括处理器和存储器,上述各个单元均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现对API网关的限流。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述API网关限流方法。
本申请实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述API网关限流方法。
本申请实施例提供了一种电子设备,电子设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:
获取待接收的API访问请求;
确定与所述API访问请求对应的目标用户;
计算与所述目标用户对应的当前单流量值;
判断所述当前单流量值是否超过与所述目标用户对应的单流量阈值;
如果所述当前单流量值未超过所述单流量阈值,则接收所述API访问请求;
如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器,由所述集群流量计数器根据所述当前单流量值确定与所述目标用户对应的当前总流量值;
从所述集群流量计数器获取所述当前总流量值,并判断所述当前总流量值是否超过与所述目标用户对应的总流量阈值,如果未超过,则接收所述API访问请求,如果超过,则拒绝接收所述API访问请求。
可选地,所述计算与所述目标用户对应的当前单流量值,包括:
获取共享内存组件中存储的与所述目标用户对应的第一流量值以及第一并发值;所述第一流量值为当前限流周期内所述API网关已接收的与所述目标用户对应的API访问请求的数量,所述第一并发值为所述当前限流周期的上一限流周期内未处理完成的API访问请求的数量;
将所述第一流量值加1,得到第二流量值;
判断所述第二流量值是否为1;
当所述第二流量值为1时,将所述第二流量值加上所述第一并发值,得到所述当前单流量值;
当所述第二流量值不为1时,将所述第一并发值加1,得到所述当前单流量值。
可选地,在所述接收所述API访问请求之后,或,拒绝接收所述API访问请求之后,所述方法还包括:
更新所述第一流量值以及所述第一并发值,其中,更新后的所述第一流量值是将更新前的第一流量值加1生成的,更新后的第一并发值是将更新前的第一并发值减1生成的。
可选地,在所述判断当前单流量值是否超过单流量阈值之前,所述方法还包括:
从限流配置文件中获取与所述目标用户对应的单流量阈值。
可选地,在所述判断所述当前总流量值是否超过总流量阈值之前,所述方法还包括:
从所述共享内存组件中获取与所述目标用户对应的总流量阈值。
可选地,在所述接收所述API访问请求之后,所述方法还包括:
将所述API访问请求转发至应用服务器。
可选地,如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器之后,所述方法还包括:
获取与所述目标用户对应的API访问请求;
向所述集群流量计数器上报加1请求,以使所述集群流量计数器根据所述加1请求更新与所述目标用户对应的当前总流量值,更新后的与所述目标用户对应的当前总流量值是更新前的与所述目标用户对应的当前总流量值加1生成的。
本文中的电子设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
获取待接收的API访问请求;
确定与所述API访问请求对应的目标用户;
计算与所述目标用户对应的当前单流量值;
判断所述当前单流量值是否超过与所述目标用户对应的单流量阈值;
如果所述当前单流量值未超过所述单流量阈值,则接收所述API访问请求;
如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器,由所述集群流量计数器根据所述当前单流量值确定与所述目标用户对应的当前总流量值;
从所述集群流量计数器获取所述当前总流量值,并判断所述当前总流量值是否超过与所述目标用户对应的总流量阈值,如果未超过,则接收所述API访问请求,如果超过,则拒绝接收所述API访问请求。
可选地,所述计算与所述目标用户对应的当前单流量值,包括:
获取共享内存组件中存储的与所述目标用户对应的第一流量值以及第一并发值;所述第一流量值为当前限流周期内所述API网关已接收的与所述目标用户对应的API访问请求的数量,所述第一并发值为所述当前限流周期的上一限流周期内未处理完成的API访问请求的数量;
将所述第一流量值加1,得到第二流量值;
判断所述第二流量值是否为1;
当所述第二流量值为1时,将所述第二流量值加上所述第一并发值,得到所述当前单流量值;
当所述第二流量值不为1时,将所述第一并发值加1,得到所述当前单流量值。
可选地,在所述接收所述API访问请求之后,或,拒绝接收所述API访问请求之后,所述方法还包括:
更新所述第一流量值以及所述第一并发值,其中,更新后的所述第一流量值是将更新前的第一流量值加1生成的,更新后的第一并发值是将更新前的第一并发值减1生成的。
可选地,在所述判断当前单流量值是否超过单流量阈值之前,所述方法还包括:
从限流配置文件中获取与所述目标用户对应的单流量阈值。
可选地,在所述判断所述当前总流量值是否超过总流量阈值之前,所述方法还包括:
从所述共享内存组件中获取与所述目标用户对应的总流量阈值。
可选地,在所述接收所述API访问请求之后,所述方法还包括:
将所述API访问请求转发至应用服务器。
可选地,如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器之后,所述方法还包括:
获取与所述目标用户对应的API访问请求;
向所述集群流量计数器上报加1请求,以使所述集群流量计数器根据所述加1请求更新与所述目标用户对应的当前总流量值,更新后的与所述目标用户对应的当前总流量值是更新前的与所述目标用户对应的当前总流量值加1生成的。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种API网关限流方法,其特征在于,所述方法包括:
获取待接收的API访问请求;
确定与所述API访问请求对应的目标用户;
计算与所述目标用户对应的当前单流量值;
判断所述当前单流量值是否超过与所述目标用户对应的单流量阈值;
如果所述当前单流量值未超过所述单流量阈值,则接收所述API访问请求;
如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器,由所述集群流量计数器根据所述当前单流量值确定与所述目标用户对应的当前总流量值;
从所述集群流量计数器获取所述当前总流量值,并判断所述当前总流量值是否超过与所述目标用户对应的总流量阈值,如果未超过,则接收所述API访问请求,如果超过,则拒绝接收所述API访问请求。
2.根据权利要求1所述的方法,其特征在于,所述计算与所述目标用户对应的当前单流量值,包括:
获取共享内存组件中存储的与所述目标用户对应的第一流量值以及第一并发值;所述第一流量值为当前限流周期内所述API网关已接收的与所述目标用户对应的API访问请求的数量,所述第一并发值为所述当前限流周期的上一限流周期内未处理完成的API访问请求的数量;
将所述第一流量值加1,得到第二流量值;
判断所述第二流量值是否为1;
当所述第二流量值为1时,将所述第二流量值加上所述第一并发值,得到所述当前单流量值;
当所述第二流量值不为1时,将所述第一并发值加1,得到所述当前单流量值。
3.根据权利要求1所述的方法,其特征在于,在所述接收所述API访问请求之后,或,拒绝接收所述API访问请求之后,所述方法还包括:
更新所述第一流量值以及所述第一并发值,其中,更新后的所述第一流量值是将更新前的第一流量值加1生成的,更新后的第一并发值是将更新前的第一并发值减1生成的。
4.根据权利要求1所述的方法,其特征在于,在所述判断当前单流量值是否超过单流量阈值之前,所述方法还包括:
从限流配置文件中获取与所述目标用户对应的单流量阈值。
5.根据权利要求2所述的方法,其特征在于,在所述判断所述当前总流量值是否超过总流量阈值之前,所述方法还包括:
从所述共享内存组件中获取与所述目标用户对应的总流量阈值。
6.根据权利要求1所述的方法,其特征在于,在所述接收所述API访问请求之后,所述方法还包括:
将所述API访问请求转发至应用服务器。
7.根据权利要求1所述的方法,其特征在于,如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器之后,所述方法还包括:
获取与所述目标用户对应的API访问请求;
向所述集群流量计数器上报加1请求,以使所述集群流量计数器根据所述加1请求更新与所述目标用户对应的当前总流量值,更新后的与所述目标用户对应的当前总流量值是更新前的与所述目标用户对应的当前总流量值加1生成的。
8.一种API网关限流装置,其特征在于,包括:
API访问请求获取单元,用于获取待接收的API访问请求;
目标用户确定单元,用于确定与所述API访问请求对应的目标用户;
当前单流量值计算单元,用于计算与所述目标用户对应的当前单流量值;
判断单元,用于判断所述当前单流量值是否超过与所述目标用户对应的单流量阈值;
第一处理单元,用于如果所述当前单流量值未超过所述单流量阈值,则接收所述API访问请求;
第二处理单元,用于如果所述当前单流量值超过所述单流量阈值,则将所述当前单流量值上报至集群流量计数器,由所述集群流量计数器根据所述当前单流量值确定与所述目标用户对应的当前总流量值;从所述集群流量计数器获取所述当前总流量值,并判断所述当前总流量值是否超过与所述目标用户对应的总流量阈值,如果未超过,则接收所述API访问请求,如果超过,则拒绝接收所述API访问请求。
9.一种存储介质,其上存储有程序,该程序被处理器执行时实现如权利要求1至7中任一项所述的API网关限流方法。
10.一种电子设备,所述电子设备包括存储器和处理器,所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执行如权利要求1至7中任一项所述的API网关限流方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910999349.3A CN110768912B (zh) | 2019-10-21 | 2019-10-21 | Api网关限流方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910999349.3A CN110768912B (zh) | 2019-10-21 | 2019-10-21 | Api网关限流方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110768912A true CN110768912A (zh) | 2020-02-07 |
CN110768912B CN110768912B (zh) | 2022-11-18 |
Family
ID=69332810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910999349.3A Active CN110768912B (zh) | 2019-10-21 | 2019-10-21 | Api网关限流方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110768912B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352746A (zh) * | 2020-02-10 | 2020-06-30 | 福建天泉教育科技有限公司 | 消息限流方法、存储介质 |
CN111404774A (zh) * | 2020-03-11 | 2020-07-10 | 腾讯云计算(北京)有限责任公司 | 数据监控方法、装置、设备及存储介质 |
CN112231106A (zh) * | 2020-10-26 | 2021-01-15 | 中国工商银行股份有限公司 | Redis集群的访问数据处理方法及装置 |
CN112307338A (zh) * | 2020-10-30 | 2021-02-02 | 中国民航信息网络股份有限公司 | 运价搜索系统的流量控制方法、装置、设备和存储介质 |
CN112350950A (zh) * | 2020-10-28 | 2021-02-09 | 北京中电普华信息技术有限公司 | 一种请求消息控制方法及装置 |
CN113010818A (zh) * | 2021-02-23 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 访问限流方法、装置、电子设备及存储介质 |
CN114070847A (zh) * | 2020-07-27 | 2022-02-18 | 腾讯科技(深圳)有限公司 | 服务器的限流方法、装置、设备及存储介质 |
CN114095201A (zh) * | 2021-10-08 | 2022-02-25 | 网宿科技股份有限公司 | 基于边缘计算的流量控制方法、装置及设备 |
CN114157719A (zh) * | 2021-11-05 | 2022-03-08 | 广州九尾信息科技有限公司 | 一种基于api的网关限流方法 |
CN114301844A (zh) * | 2021-12-30 | 2022-04-08 | 天翼物联科技有限公司 | 物联网能力开放平台流量控制方法、系统及其相关组件 |
CN114500381A (zh) * | 2022-01-20 | 2022-05-13 | 北京奇艺世纪科技有限公司 | 网络带宽限制方法、系统、电子设备及可读存储介质 |
CN114745328A (zh) * | 2022-02-16 | 2022-07-12 | 多点生活(成都)科技有限公司 | 一种网关动态限流方法及其构成的实时限流方法 |
CN114928572A (zh) * | 2022-02-28 | 2022-08-19 | 中国农业银行股份有限公司 | 一种分布式系统的流量控制方法、装置、介质及设备 |
CN116489090A (zh) * | 2023-06-16 | 2023-07-25 | 北京百度网讯科技有限公司 | 流量控制方法、装置、系统、电子设备及存储介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070118653A1 (en) * | 2005-11-22 | 2007-05-24 | Sabre Inc. | System, method, and computer program product for throttling client traffic |
US20120180021A1 (en) * | 2011-01-07 | 2012-07-12 | Nathaniel David Byrd | Methods and systems for throttling calls to a service application through an open api |
CN103428100A (zh) * | 2013-08-20 | 2013-12-04 | 北京京东尚科信息技术有限公司 | 一种基于数据分类的动态流量控制方法及装置 |
CN104243337A (zh) * | 2013-06-09 | 2014-12-24 | 杭州华三通信技术有限公司 | 一种跨集群负载均衡的方法及装置 |
US20160149919A1 (en) * | 2014-11-26 | 2016-05-26 | The Travelers Indemnity Company | Targeted user access control system |
CN105847377A (zh) * | 2016-04-12 | 2016-08-10 | 乐视控股(北京)有限公司 | 集群网络的请求拥塞过载处理方法及系统 |
US20160292017A1 (en) * | 2013-12-13 | 2016-10-06 | Beijing Jingdong Shangke Information Technology Co, Ltd. | Traffic control method and system |
CN106817424A (zh) * | 2017-01-23 | 2017-06-09 | 杭州云纪网络科技有限公司 | 用于控制访问流量的方法及系统 |
US20170272541A1 (en) * | 2016-03-21 | 2017-09-21 | Linkedin Corporation | Local enforcement of computer resource quotas |
US20170272371A1 (en) * | 2016-03-21 | 2017-09-21 | Alibaba Group Holding Limited | Flow control in connection with an access request |
US9936005B1 (en) * | 2017-07-28 | 2018-04-03 | Kong Inc. | Systems and methods for distributed API gateways |
CN108073465A (zh) * | 2017-12-29 | 2018-05-25 | 中国平安人寿保险股份有限公司 | 动态限流方法、Nginx服务器、存储介质及装置 |
CN108881448A (zh) * | 2018-06-27 | 2018-11-23 | 杭州贝购科技有限公司 | Api请求的处理方法及装置 |
CN110198275A (zh) * | 2018-03-28 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种流量控制方法、系统、服务器及存储介质 |
CN110276182A (zh) * | 2019-06-10 | 2019-09-24 | 必成汇(成都)科技有限公司 | Api分布式限流的实现方法 |
-
2019
- 2019-10-21 CN CN201910999349.3A patent/CN110768912B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070118653A1 (en) * | 2005-11-22 | 2007-05-24 | Sabre Inc. | System, method, and computer program product for throttling client traffic |
US20120180021A1 (en) * | 2011-01-07 | 2012-07-12 | Nathaniel David Byrd | Methods and systems for throttling calls to a service application through an open api |
CN104243337A (zh) * | 2013-06-09 | 2014-12-24 | 杭州华三通信技术有限公司 | 一种跨集群负载均衡的方法及装置 |
CN103428100A (zh) * | 2013-08-20 | 2013-12-04 | 北京京东尚科信息技术有限公司 | 一种基于数据分类的动态流量控制方法及装置 |
US20160292017A1 (en) * | 2013-12-13 | 2016-10-06 | Beijing Jingdong Shangke Information Technology Co, Ltd. | Traffic control method and system |
US20160149919A1 (en) * | 2014-11-26 | 2016-05-26 | The Travelers Indemnity Company | Targeted user access control system |
US20170272541A1 (en) * | 2016-03-21 | 2017-09-21 | Linkedin Corporation | Local enforcement of computer resource quotas |
US20170272371A1 (en) * | 2016-03-21 | 2017-09-21 | Alibaba Group Holding Limited | Flow control in connection with an access request |
CN105847377A (zh) * | 2016-04-12 | 2016-08-10 | 乐视控股(北京)有限公司 | 集群网络的请求拥塞过载处理方法及系统 |
CN106817424A (zh) * | 2017-01-23 | 2017-06-09 | 杭州云纪网络科技有限公司 | 用于控制访问流量的方法及系统 |
US9936005B1 (en) * | 2017-07-28 | 2018-04-03 | Kong Inc. | Systems and methods for distributed API gateways |
CN108073465A (zh) * | 2017-12-29 | 2018-05-25 | 中国平安人寿保险股份有限公司 | 动态限流方法、Nginx服务器、存储介质及装置 |
CN110198275A (zh) * | 2018-03-28 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种流量控制方法、系统、服务器及存储介质 |
CN108881448A (zh) * | 2018-06-27 | 2018-11-23 | 杭州贝购科技有限公司 | Api请求的处理方法及装置 |
CN110276182A (zh) * | 2019-06-10 | 2019-09-24 | 必成汇(成都)科技有限公司 | Api分布式限流的实现方法 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352746A (zh) * | 2020-02-10 | 2020-06-30 | 福建天泉教育科技有限公司 | 消息限流方法、存储介质 |
CN111352746B (zh) * | 2020-02-10 | 2023-07-07 | 福建天泉教育科技有限公司 | 消息限流方法、存储介质 |
CN111404774A (zh) * | 2020-03-11 | 2020-07-10 | 腾讯云计算(北京)有限责任公司 | 数据监控方法、装置、设备及存储介质 |
CN114070847B (zh) * | 2020-07-27 | 2024-01-23 | 腾讯科技(深圳)有限公司 | 服务器的限流方法、装置、设备及存储介质 |
CN114070847A (zh) * | 2020-07-27 | 2022-02-18 | 腾讯科技(深圳)有限公司 | 服务器的限流方法、装置、设备及存储介质 |
CN112231106A (zh) * | 2020-10-26 | 2021-01-15 | 中国工商银行股份有限公司 | Redis集群的访问数据处理方法及装置 |
CN112231106B (zh) * | 2020-10-26 | 2024-02-06 | 中国工商银行股份有限公司 | Redis集群的访问数据处理方法及装置 |
CN112350950A (zh) * | 2020-10-28 | 2021-02-09 | 北京中电普华信息技术有限公司 | 一种请求消息控制方法及装置 |
CN112307338A (zh) * | 2020-10-30 | 2021-02-02 | 中国民航信息网络股份有限公司 | 运价搜索系统的流量控制方法、装置、设备和存储介质 |
CN113010818A (zh) * | 2021-02-23 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 访问限流方法、装置、电子设备及存储介质 |
CN113010818B (zh) * | 2021-02-23 | 2023-06-30 | 腾讯科技(深圳)有限公司 | 访问限流方法、装置、电子设备及存储介质 |
CN114095201A (zh) * | 2021-10-08 | 2022-02-25 | 网宿科技股份有限公司 | 基于边缘计算的流量控制方法、装置及设备 |
CN114095201B (zh) * | 2021-10-08 | 2023-12-19 | 网宿科技股份有限公司 | 基于边缘计算的流量控制方法及装置,电子设备,存储介质 |
CN114157719A (zh) * | 2021-11-05 | 2022-03-08 | 广州九尾信息科技有限公司 | 一种基于api的网关限流方法 |
CN114301844A (zh) * | 2021-12-30 | 2022-04-08 | 天翼物联科技有限公司 | 物联网能力开放平台流量控制方法、系统及其相关组件 |
CN114301844B (zh) * | 2021-12-30 | 2024-04-19 | 天翼物联科技有限公司 | 物联网能力开放平台流量控制方法、系统及其相关组件 |
CN114500381A (zh) * | 2022-01-20 | 2022-05-13 | 北京奇艺世纪科技有限公司 | 网络带宽限制方法、系统、电子设备及可读存储介质 |
CN114745328B (zh) * | 2022-02-16 | 2023-12-26 | 多点生活(成都)科技有限公司 | 一种网关动态限流方法及其构成的实时限流方法 |
CN114745328A (zh) * | 2022-02-16 | 2022-07-12 | 多点生活(成都)科技有限公司 | 一种网关动态限流方法及其构成的实时限流方法 |
CN114928572A (zh) * | 2022-02-28 | 2022-08-19 | 中国农业银行股份有限公司 | 一种分布式系统的流量控制方法、装置、介质及设备 |
CN116489090B (zh) * | 2023-06-16 | 2023-10-24 | 北京百度网讯科技有限公司 | 流量控制方法、装置、系统、电子设备及存储介质 |
CN116489090A (zh) * | 2023-06-16 | 2023-07-25 | 北京百度网讯科技有限公司 | 流量控制方法、装置、系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110768912B (zh) | 2022-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110768912B (zh) | Api网关限流方法及装置 | |
CN109005125B (zh) | 动态限流方法、装置及系统 | |
TWI694700B (zh) | 資料處理方法和裝置、用戶端 | |
CN113961145B (zh) | 数据迁移方法及装置 | |
TWI697223B (zh) | 資料處理方法 | |
CN110798490A (zh) | 基于数据中台接入第三方系统的方法、装置及数据中台 | |
CN109391512A (zh) | 一种服务发布方法、装置及电子设备 | |
CN115190078B (zh) | 一种访问流量控制方法、装置、设备以及存储介质 | |
CN110764930A (zh) | 基于消息模式的请求或应答处理方法及装置 | |
CN108647102B (zh) | 异构系统的服务请求处理方法、装置和电子设备 | |
CN108920326B (zh) | 确定系统耗时异常的方法、装置及电子设备 | |
CN110968858A (zh) | 一种用户权限控制方法及系统 | |
CN115033551A (zh) | 一种数据库迁移方法、装置、电子设备及存储介质 | |
CN113676549A (zh) | 应用请求的分流方法及应用网关、电子设备、存储介质 | |
CN112559565A (zh) | 一种异常检测方法、系统及装置 | |
CN111832862B (zh) | 基于区块链的流程管理方法及流程管理系统 | |
CN106817355B (zh) | 网页权限的控制方法及装置 | |
CN109542401B (zh) | 一种Web开发方法、装置、存储介质及处理器 | |
CN109639672A (zh) | 基于jwt数据的防止重放攻击的方法及系统 | |
CN106202262B (zh) | 一种信息处理方法及电子设备 | |
CN112866265B (zh) | 一种csrf攻击防护方法及装置 | |
CN110321133B (zh) | H5应用部署方法及装置 | |
CN115442262A (zh) | 一种资源评估方法、装置、电子设备及存储介质 | |
CN109561123B (zh) | 令牌token的缓存方法及装置 | |
CN110377262B (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 |