CN110768912A - Api网关限流方法及装置 - Google Patents

Api网关限流方法及装置 Download PDF

Info

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
Application number
CN201910999349.3A
Other languages
English (en)
Other versions
CN110768912B (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.)
China Travelsky Technology Co Ltd
Original Assignee
China Travelsky 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 China Travelsky Technology Co Ltd filed Critical China Travelsky Technology Co Ltd
Priority to CN201910999349.3A priority Critical patent/CN110768912B/zh
Publication of CN110768912A publication Critical patent/CN110768912A/zh
Application granted granted Critical
Publication of CN110768912B publication Critical patent/CN110768912B/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/20Traffic policing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold 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网关限流方法及装置。
背景技术
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中存放具体限流值。
Figure BDA0002240792810000051
共享内存组件中以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网关限流方法。
CN201910999349.3A 2019-10-21 2019-10-21 Api网关限流方法及装置 Active CN110768912B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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分布式限流的实现方法

Patent Citations (15)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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