CN114244624A - 流量控制方法及装置、设备、存储介质 - Google Patents
流量控制方法及装置、设备、存储介质 Download PDFInfo
- Publication number
- CN114244624A CN114244624A CN202111663604.0A CN202111663604A CN114244624A CN 114244624 A CN114244624 A CN 114244624A CN 202111663604 A CN202111663604 A CN 202111663604A CN 114244624 A CN114244624 A CN 114244624A
- Authority
- CN
- China
- Prior art keywords
- flow control
- access
- configuration information
- access request
- application
- 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
- 238000000034 method Methods 0.000 title claims abstract description 89
- 238000011217 control strategy Methods 0.000 claims abstract description 25
- 235000019580 granularity Nutrition 0.000 claims description 86
- 230000015654 memory Effects 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 11
- 230000001186 cumulative effect Effects 0.000 claims description 7
- 230000002123 temporal effect Effects 0.000 claims description 7
- 239000008186 active pharmaceutical agent Substances 0.000 description 67
- 230000006870 function Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000032683 aging Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种流量控制方法、装置、设备和存储介质,所述方法包括:响应于接收到客户端发送的访问请求,对所述访问请求进行认证鉴权;其中,所述访问请求至少携带应用管理***为所述客户端签发的访问密钥;在所述访问请求通过鉴权的情况下,获取所述应用程序管理***配置的流控配置信息;其中,所述流控配置信息用于所述访问密钥对应的至少两个流控目标访问应用服务器的流量控制;基于所述流控配置信息,按照预设的流控策略控制所述访问请求。
Description
技术领域
本申请涉及计算机软件领域,涉及但不限定于流量控制方法及装置、设备、存储介质。
背景技术
在多租户在线服务的应用场景中,软件即服务(Software-as-a-Service,SaaS)提供方提供了网络应用程序接口(Web Application Programming Interface,Web API),租户可以订阅相关的Web API,订阅成功后SaaS提供方为租户生成可以访问Web API的访问密钥(Access Key,AK)和密钥(Secret Key,SK),以下简称为AK/SK。租户可以把AK/SK嵌入到自己开发的应用中,通过AK/SK 访问对应的Web API。
在这种典型的场景中,租户的应用中可能包含多个AK/SK,每个AK/SK 仅仅能够访问特定的一组Web API。SaaS提供方需要对租户的Web API访问进行流量控制。
发明内容
本申请实施例提供一种流量控制方法及装置、设备、存储介质。
本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供一种流量控制方法,包括:
响应于接收到客户端发送的访问请求,对所述访问请求进行认证鉴权;其中,所述访问请求至少携带应用管理***为所述客户端签发的访问密钥;
在所述访问请求通过鉴权的情况下,获取所述应用程序管理***配置的流控配置信息;其中,所述流控配置信息用于所述访问密钥对应的至少两个流控目标访问应用服务器的流量控制;
基于所述流控配置信息,按照预设的流控策略控制所述访问请求。
在一些可能的实施方式中,所述所述流控配置信息包括通过所述访问密钥访问应用服务器的至少两个标签,以及每一所述标签在至少两个时间粒度上的流量控制阈值;其中,每一所述标签为基于每一所述流控目标通过键值对的方式定义的;其中,所述流控目标包括以下至少两个:所述访问密钥、所述访问密钥对应的应用和所述应用所属的租户;所述时间粒度包括以下至少两种:秒、分钟、小时、月、年。
这样,通过用标签来代表通过访问密钥访问应用服务器的流控目标,便于动态配置,并支持访问密钥、应用、租户等多种流控目标组合的流控策略;同时针对每个流控目标,支持秒、分钟、小时、月、年等多个时间粒度的流控配置。
在一些可能的实施方式中,所述在所述访问请求鉴权通过的情况下,获取应用程序管理***配置的流控配置信息,包括:在所述访问请求鉴权通过的情况下,查询网关缓存中是否存在所述应用程序管理***配置的流控配置信息;在所述网关缓存中存在所述流控配置信息的情况下,从所述网关缓存中加载所述流控配置信息。
这样,在访问请求鉴权通过的情况下,若网关缓存命中该访问请求对应的流控配置信息,则API网关直接从网关缓存中加载预先存储的访问请求对应的流控配置信息,提升流量控制效率。
在一些可能的实施方式中,所述在所述访问请求鉴权通过的情况下,获取应用程序管理***配置的流控配置信息,还包括:在所述网关缓存中不存在所述流控配置信息的情况下,向所述应用程序管理***发送查询请求;其中,所述查询请求用于查询所述访问请求对应的流控配置信息;响应于接收到所述应用管理***返回的所述流控配置信息,将所述流控配置信息存储到所述网关缓存中。
这样,在网关缓存中未命中访问请求对应的流控配置信息的情况下,通过应用程序管理***查询并获取相应流控配置信息,从而便于API网关利用应用程序管理***配置的流控配置信息对访问请求进行控制;同时将获取的流控配置信息存储到网关缓存中进行持久化存储,便于下次直接加载。
在一些可能的实施方式中,所述方法还包括:响应于未接收到所述应用管理***返回的所述流控配置信息,将所述访问请求转发到所述应用服务器。
这样,在应用管理***未返回流控配置信息的情况下不执行流控策略,不对访问请求进行流控管理,直接将访问请求进行转发,提升用户体验。
在一些可能的实施方式中,所述基于所述流控配置信息,按照预设的流控策略控制所述访问请求,包括:基于所述流控配置信息,确定每一所述流控目标在每一所述时间粒度下的流量控制阈值;确定每一所述流控目标在每一所述时间粒度下的累计访问次数;基于每一所述流控目标在同一时间粒度下的所述累计访问次数和所述流量控制阈值,控制所述访问请求。
这样,针对每一流控目标,基于获取的流控配置信息和统计的在某一时间粒度下的累加访问次数,判断该客户端的访问请求是否超过流量控制阈值,从而实现多目标多粒度的动态流控策略。
在一些可能的实施方式中,所述基于每一所述流控目标在同一时间粒度下的所述累计访问请求数和所述流量控制阈值,控制所述访问请求,包括:在任一所述流控目标在同一时间粒度下的所述累计访问次数超过所述流量控制阈值的情况下,拒绝所述访问请求;或者,在所有所述流控目标在同一时间粒度下的所述累计访问次数均未超过所述流量控制阈值的情况下,将所述访问请求转发到所述应用服务器。
这样,API网关针对每个流控目标执行流控策略,通过对比每一流控目标在同一时间粒度下的累计访问次数和流量控制阈值,对该客户端的访问请求是进行拒绝处理或转发至应用服务器,实现对客户端所请求的应用服务的流量控制。
在一些可能的实施方式中,所述确定每一所述流控目标在每一所述时间粒度下的累计访问次数,包括:通过所述网关缓存中设置的至少两个时间粒度的计数器,确定每一所述流控目标在每一所述时间粒度下的累计访问次数;其中,每一所述计数器的值在接收到相应所述流控目标对应的访问请求之后均加1。
这样,通过在网关缓存中维护针对同一流控目标的多个时间粒度的计数器,确定相应流控目标在每一时间粒度下的累计访问次数,以便判断接收到的访问请求是否超过流量配置阈值,实现对每个流控目标执行流控策略。
在一些可能的实施方式中,所述方法还包括:响应于接收到所述应用服务器对所述访问请求的响应结果,将所述响应结果发送给所述客户端。
这样,在将访问请求转发到应用服务器之后,可以得到相应应用服务的访问结果,实现了针对应用服务的实时动态流量控制。
第二方面,本申请实施例提供一种流量控制方法,应用于应用程序管理***,所述方法包括:
接收API网关发送的查询请求;其中,所述查询请求用于查询客户端发送的访问请求对应的流控配置信息;所述查询请求是所述API网关在所述访问请求通过鉴权且网关缓存中不存在所述流控配置信息的情况下发送的;
基于所述查询请求,向所述API网关返回所述流控配置信息。
在一些可能的实施方式中,所述访问请求至少携带所述应用管理***为所述客户端签发的访问密钥;所述方法还包括:为所述客户端签发所述访问密钥/ 密钥并授权;基于所述访问密钥对应的至少两个流控目标,为所述访问密钥配置用于访问应用服务器的所述流控配置信息。
这样,通过应用管理***为客户端签发密钥和访问某个应用程序的权限,同时配置通过访问密钥访问应用服务的多个流控目标,作为流控配置信息提供给API网关,实现多种流控目标组合的流控策略。
在一些可能的实施方式中,所述基于所述访问密钥对应的至少两个流控目标,为所述访问密钥配置用于访问应用服务器的所述流控配置信息,包括:基于所述至少两个流控目标,通过键值对的方式定义所述访问密钥的至少两个标签;为每一所述流控目标对应的标签设置至少两个时间粒度的流量控制阈值;将所述至少两个标签和每一所述标签对应的至少两个时间粒度的流量控制阈值,作为配置的用于所述访问密钥访问所述应用服务器的所述流控配置信息。
这样,通过键值对的方式定义访问密钥访问应用服务器的标签属性,同时为每个标签即流控目标设置多时间粒度的流控配置,从而实现通过访问密钥访问应用服务器的多目标多时间粒度动态配置。
在一些可能的实施方式中,所述流控目标包括以下至少两个:所述访问密钥、所述访问密钥对应的应用和所述应用所属的租户;所述时间粒度包括以下至少两种:秒、分钟、小时、月、年。
这样,实现支持访问密钥、应用、租户等多种流控目标组合以及支持单个流控目标的秒、分钟、小时、月、年等多个时间粒度的流量控制。
第三方面,本申请实施例提供一种流量控制装置,应用于API网关,所述装置包括认证鉴权模块、信息获取模块和流量控制模块,其中:
所述认证鉴权模块,用于响应于接收到客户端发送的访问请求,对所述访问请求进行认证鉴权;其中,所述访问请求至少携带应用管理***为所述客户端签发的访问密钥;
所述信息获取模块,用于在所述访问请求通过鉴权的情况下,获取所述应用程序管理***配置的流控配置信息;其中,所述流控配置信息用于所述访问密钥对应的至少两个流控目标访问应用服务器的流量控制;
所述流量控制模块,用于基于所述流控配置信息,按照预设的流控策略控制所述访问请求。
第四方面,本申请实施例提供一种流量控制装置,应用于应用程序管理***,所述装置包括接收模块和第一发送模块,其中:
所述接收模块,用于接收API网关发送的查询请求;其中,所述查询请求用于查询客户端发送的访问请求对应的流控配置信息;所述查询请求是所述 API网关在所述访问请求通过鉴权且网关缓存中不存在所述流控配置信息的情况下发送的;
所述第一发送模块,用于基于所述查询请求,向所述API网关返回所述流控配置信息。
第五方面,本申请实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述流量控制方法中的步骤。
第六方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述流量控制方法中的步骤。
本申请实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例中,首先,响应于接收到客户端发送的访问请求,对所述访问请求进行认证鉴权;其中,所述访问请求至少携带应用管理***为所述客户端签发的访问密钥;然后在访问请求通过鉴权的情况下,获取所述应用程序管理***配置的流控配置信息;其中,所述流控配置信息用于所述访问密钥对应的至少两个流控目标访问应用服务器的流量控制;最后基于所述流控配置信息,按照预设的流控策略控制所述访问请求;如此,API网关通过获取应用程序管理***配置的流控配置信息,针对鉴权通过的访问请求进行访问应用服务器时的流量控制,实现了流量控制功能与应用服务功能解耦,同时提出了针对应用服务的多目标流量策略,无需应用服务器做任何改造。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
图1为本申请实施例提供的流量控制方法的流程示意图;
图2A为本申请实施例提供的流量控制方法的交互流程图;
图2B为本申请实施例提供的SaaS管理***授权的访问密钥列表示意图;
图2C为本申请实施例提供的通过查询SaaS管理***获得的流控配置信息示意图;
图3为本申请实施例提供的流量控制方法的流程示意图;
图4A为本申请实施例提供的流量控制方法的流程示意图;
图4B为本申请实施例提供的应用程序管理***的多流控目标配置界面示意图;
图4C为本申请实施例提供的应用程序管理***的多时间粒度配置界面示意图;
图5为本申请实施例提供的流量控制方法中流控处理流程图;
图6为本申请实施例提供的一种流量控制装置的组成结构示意图;
图7为本申请实施例提供的另一种流量控制装置的组成结构示意图;
图8为本申请实施例提供的一种电子设备的硬件实体示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。以下实施例用于说明本申请,但不用来限制本申请的范围。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换预设的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请实施例所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本申请实施例提供的方案涉及计算机软件服务领域,为了便于理解本申请实施例的方案,首先对相关技术中涉及的名词进行简单说明:
SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得Saas平台供应商提供的服务。
API网关是服务的入口。各应用通过API网关接入服务。API网关中集成有路由、鉴权、流量控制、安全、缓存等功能。不同租户(Tenant)的应用 (Application)均可以通过API网关使用这些功能以接入服务。通过API网关统一提供这些服务,节省了应用开发者的精力,帮助开发者更专注于开发应用的业务能力。
租户的应用发出的API请求即访问请求经过API网关转发至目标服务,因此可在API网关中对访问请求进行流量控制,以避免某一服务接收到过多的API 请求,影响服务的稳定运行。
SaaS提供方需要对租户的Web API访问进行流量控制,包括以下两个维度的控制:1)对不同的时间粒度进行流量控制:同一个流控目标,不同时间粒度的访问量阈值不相同;2)对不同的目标进行流量控制:不同的租户,可能需要对AK/SK、应用、或者租户等不同多个目标进行流量控制。典型场景下,一个租户含有多个应用,一个应用含有多个AK/SK。租户A需要对AK/SK、应用、租户三个目标做流量控制,租户B可能仅需要对AK/SK和应用两个目标做流量控制。
在SaaS服务流量控制的场景下,相关方案没有多目标流控的概念,仅针对访问密钥单一目标进行流量控制,并且不能同时支持多个时间粒度的流量控制策略。在需要对应用、租户等多个目标进行流量控制时,需要对已有***进行改造,提高了***复杂性和实现成本。
本申请实施例提供一种流量控制方法,应用于电子设备。所述电子设备包括但不限于手机、笔记本电脑、平板电脑和掌上上网设备、多媒体设备、流媒体设备、移动互联网设备、可穿戴设备或其他类型的设备。该方法所实现的功能可以通过电子设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该电子设备至少包括处理器和存储介质。处理器可以用于进行流量控制过程的处理,存储器可以用于存储进行流量控制过程中需要的数据以及产生的数据。
图1为本申请实施例提供的流量控制方法的流程示意图,如图1所示,所述方法至少包括以下步骤:
步骤S110,响应于接收到客户端发送的访问请求,对所述访问请求进行认证鉴权;
这里,所述访问请求为超文本传输协议(Hyper Text Transfer Protocol,HTTP)请求,至少携带应用管理***为所述客户端签发的访问密钥。
客户端在访问应用服务器时,会在访问请求中携带访问密钥和计算的签名信息。API网关根据访问请求中的访问密钥和签名信息,对客户端的访问请求进行认证,然后会判断访问密钥是否具有访问应用服务的权限。
步骤S120,在所述访问请求通过鉴权的情况下,获取所述应用程序管理***配置的流控配置信息;
这里,所述应用程序管理***为SaaS管理***,所述流控配置信息用于所述访问密钥对应的至少两个流控目标访问应用服务器时的流量控制。也就是说,在给客户端签发访问密钥并授权之后,通过SaaS管理***配置通过访问密钥访问应用服务器的多种流控目标。
在一些实施方式中,在所述访问请求通过鉴权的情况下,通过网关缓存直接获取通过访问密钥访问应用服务器的流控配置信息;在一些实施方式中,在所述访问请求通过鉴权的情况下,通过调用应用程序管理***中的流控接口,获取通过访问密钥访问应用服务器的流控配置信息;在另一些实施方式中,在接收到的访问请求认证鉴权未通过的情况下,API网关直接拒绝该访问请求。
需要说明的是,流控目标可以是指需要执行流控的逻辑实体,比如,多租户***中的租户、分布式文件***中的文件等。也可以是多个逻辑实体的组合,即通过对该流控目标的管理能够实现对多个逻辑实体的流量进行共同控制。
在SaaS服务流量控制的场景下,所述流控目标为访问密钥/密钥、访问密钥对应的应用、所述应用所属的租户中的至少两个。也就是说,结合SaaS管理***配置多个流控目标访问应用服务器的流量控制阈值,并通过API网关获取流控配置信息,实现多种流控目标组合的流控策略。
步骤S130,基于所述流控配置信息,按照预设的流控策略控制所述访问请求。
这里,首先基于所述流控配置信息确定每一流控目标对应的流量控制阈值,然后针对每一流控目标判断累计访问请求数或累计访问次数是否超过流控控制阈值,控制访问请求的拒绝或转发到上游应用服务器。
在本申请实施例中,首先,响应于接收到客户端发送的访问请求,对所述访问请求进行认证鉴权;其中,所述访问请求至少携带应用管理***为所述客户端签发的访问密钥;然后在访问请求通过鉴权的情况下,获取所述应用程序管理***配置的流控配置信息;其中,所述流控配置信息用于所述访问密钥对应的至少两个流控目标访问应用服务器的流量控制;最后基于所述流控配置信息,按照预设的流控策略控制所述访问请求;如此,API网关通过获取应用程序管理***配置的流控配置信息,针对鉴权通过的访问请求进行访问应用服务器时的流量控制,实现了流量控制功能与应用服务功能解耦,同时提出了针对应用服务的多目标流量策略,无需应用服务器做任何改造。
图2A为本申请实施例提供的流量控制方法的交互流程图,如图2A所示,所述方法至少包括以下步骤:
步骤S201,应用程序管理***为客户端签发访问密钥/密钥并授权;
这里,在应用程序管理***中,为客户签发访问密钥和密钥。同时授予访问密钥访问某个应用服务的权限。
如图2B所示,为SaaS管理***授权访问应用服务器的访问密钥列表,包含了各访问密钥的时效信息和权限信息。图2B中“用户”201表示访问密钥隶属的账号信息,“访问密钥”202表示为客户签发的访问密钥,“API分组” 203表示授予访问密钥访问应用服务器的权限信息,“过期时间”204表示访问密钥访问应用服务的时效信息。
步骤S202,应用程序管理***基于访问密钥对应的至少两个流控目标,为访问密钥配置用于访问应用服务器的流控配置信息;
这里,流控配置信息用于访问密钥对应的至少两个流控目标访问应用服务器的流量控制。
在实施中,先确定访问密钥访问应用服务器的至少两个流控目标,例如访问密钥和访问密钥对应的应用,又例如访问密钥、访问密钥对应的应用、应用所属的租户等,然后在应用程序管理***中完成多目标流控配置,即为访问密钥配置用于访问应用服务器的流控配置信息。
在一些实施方式中,所述流控配置信息包括通过所述访问密钥访问应用服务器的至少两个标签,以及每一所述标签在至少两个时间粒度上的流量控制阈值;其中,每一所述标签为基于每一所述流控目标通过键值对的方式定义的。
这样,通过用标签来代表通过访问密钥访问应用服务器的流控目标,便于动态配置,并支持访问密钥、应用、租户等多种流控目标组合的流控策略。
在一些实施方式中,所述流控目标包括以下至少两个:所述访问密钥、所述访问密钥对应的应用和所述应用所属的租户;所述时间粒度包括以下至少两种:秒、分钟、小时、月、年。
这样,相校于相关技术中只支持秒级或分钟级一个时间粒度的流控配置,本申请实施例针对每个流控目标,支持秒、分钟、小时、月、年等多个时间粒度的流控配置,便于实现多时间粒度的流控策略。
步骤S203,API网关响应于接收到客户端发送的访问请求,对访问请求进行认证鉴权;
这里,访问请求中携带应用管理***为客户端的每一应用签发的访问密钥和客户端计算的签名信息。API网关接收到客户端发送的访问请求之后,根据访问密钥和签名信息对访问请求进行认证,然后会判断访问密钥是否具有访问应用服务的权限。
步骤S204,在访问请求鉴权通过的情况下,API网关查询网关缓存中是否存在应用程序管理***配置的流控配置信息;
这里,API网关调用网关缓存的接口查询网关缓存中是否存在应用程序管理***配置的流控配置信息。
步骤S205,在网关缓存中存在流控配置信息的情况下,API网关从网关缓存中加载流控配置信息;
这样,在访问请求鉴权通过的情况下,若网关缓存命中该访问请求对应的流控配置信息,则API网关直接从网关缓存中加载预先存储的访问请求对应的流控配置信息,提升流量控制效率。
步骤S206,在网关缓存中不存在流控配置信息的情况下,API网关向应用程序管理***发送查询请求;
这里,API网关调用应用程序管理***的流控接口,以查询应用程序管理***中是否存在访问请求对应的流控配置信息。
步骤S207,应用程序管理***基于查询请求,返回流控配置信息;
这里,在网关缓存中未命中访问请求对应的流控配置信息的情况下,通过应用程序管理***查询并获取相应流控配置信息,从而便于API网关利用应用程序管理***配置的流控配置信息对访问请求进行控制。
如图2C所示,为API网关查询应用程序管理***得到的流控配置信息,图中“accesskey”21代表为客户端签发的访问密钥,“application_server_url” 22代表应用服务器的访问地址,“ratelimits”23代表通过访问密钥访问应用服务的多目标多时间粒度的流控配置信息。
从图2C可以看出,基于流控目标“accesskey”即访问密钥定义了标签“tag” 231,且配置了时间粒度为“second”的秒级流量控制阈值“1000”和时间粒度为“minute”的分钟级流量控制阈值“50000”;基于流控目标“application”即应用定义了标签“tag”232,且配置了时间粒度为“second”的秒级流量控制阈值“1000”和时间粒度为“hour”的小时级流量控制阈值“30000000”;基于流控目标“tenant”即应用定义了标签“tag”233,且配置了时间粒度为“second”的秒级流量控制阈值“1000”。
相较于相关技术只针对Access Key一个目标做流量控制,且只支持秒级或分钟级一个时间粒度的流控配置,本申请实施例中应用程序管理***配置的流控配置信息为多目标多时间粒度流控配置。
步骤S208,API网关响应于接收到流控配置信息,将流控配置信息存储到网关缓存中;
这里,API网关接收到流控配置信息之后,同时将获取的流控配置信息存储到网关缓存中进行持久化存储,便于下次直接加载。
步骤S209,API网关基于流控配置信息,按照预设的流控策略控制访问请求;
这里,针对每一流控目标,基于获取的流控配置信息和统计的在某一时间粒度下的累加访问次数,判断该客户端的访问请求是否超过流量控制阈值,从而实现多目标多粒度的动态流控策略。
步骤S210,API网关响应于未接收到流控配置信息,将访问请求转发到应用服务器;
这里,在应用管理***未返回流控配置信息的情况下不执行流控策略,不对访问请求进行流控管理,直接将访问请求进行转发,提升用户体验。
步骤S211,API网关响应于接收到应用服务器对访问请求的响应结果,将响应结果发送给客户端。
这里,在将访问请求转发到应用服务器之后,可以得到相应应用服务的访问结果,实现了针对应用服务的实时动态流量控制。
在本申请实施例中,通过应用管理***为客户端签发密钥和访问某个应用程序的权限,并配置通过访问密钥访问应用服务的多个流控目标,每个流控目标,同时支持秒、分钟、小时、月、年等多个时间粒度的流控配置。通过API 网关实时获取流控配置信息,实现了流量控制功能与应用服务业务功能解耦,同时提出了动态多目标多时间粒度流控的概念,无需应用服务器做任何改造。同时本申请实施例所提供的流量控制方法,使得应用服务器可以非侵入式地实现多目标、多时间粒度的流量控制,只需在SaaS管理***中,配置不同目标的流控策略即可,提高了开发集成效率和质量。
基于图1,图3为本申请实施例提供的流量控制方法的流程示意图,如图3 所示,上述步骤S130“基于流控配置信息,按照预设的流控策略控制访问请求”可以通过以下步骤实现:
步骤S310,基于所述流控配置信息,确定每一所述流控目标在每一所述时间粒度下的流量控制阈值;
这里,流控配置信息包括针对所述访问密钥访问应用服务器的至少两个流控目标,所设置的不同时间粒度的流量控制阈值。因此,在获得流控配置信息之后,可以确定每一流控目标在各个时间粒度下的流量控制阈值。
步骤S320,确定每一所述流控目标在每一所述时间粒度下的累计访问次数;
这里,通过所述网关缓存中设置的至少两个时间粒度的计数器,确定每一所述流控目标在每一所述时间粒度下的累计访问次数;其中,每一所述计数器的值在接收到相应所述流控目标对应的访问请求之后均加1。
这样,通过在网关缓存中维护针对同一流控目标的多个时间粒度的计数器,确定相应流控目标在每一时间粒度下的累计访问次数,以便判断接收到的访问请求是否超过流量配置阈值,实现对每个流控目标执行流控策略。
步骤S330,基于每一所述流控目标在同一时间粒度下的所述累计访问次数和所述流量控制阈值,控制所述访问请求。
这里,在任一所述流控目标在同一时间粒度下的所述累计访问次数超过所述流量控制阈值的情况下,拒绝所述访问请求;或者,在所有所述流控目标在同一时间粒度下的所述累计访问次数均未超过所述流量控制阈值的情况下,将所述访问请求转发到所述应用服务器。
这样,通过对比每一流控目标在同一时间粒度下的累计访问次数和流量控制阈值,对该客户端的访问请求是进行拒绝处理或转发至应用服务器,实现对客户端所请求的应用服务的流量控制。
在本申请实施例中,API网关针对每个流控目标执行流控策略,基于获取的流控配置信息和统计的在某一时间粒度下的累加访问次数,判断该客户端的访问请求是否超过流量控制阈值,从而实现多目标多粒度的动态流控策略。
基于图2,图4A为本申请实施例提供的流量控制方法的流程示意图,如图 4A所示,上述步骤S202“应用程序管理***基于访问密钥对应的至少两个流控目标,为访问密钥配置用于访问应用服务器的流控配置信息”可以通过以下步骤实现:
步骤S410,基于所述至少两个流控目标,通过键值对的方式定义所述访问密钥的至少两个标签;
这里,通过标签的形式配置访问密钥访问应用服务器的至少两个流控目标。每个流控目标用一个标签表示,其中标签的键(key)代表流控目标,值(valve) 代表该流控目标所隶属的具体目标的标识符(ID)。
如图4B所示,在应用程序管理***的多流控目标配置界面上,可以动态查询或添加标签,且当前配置了“键”分别为“租户”41、“访问密钥”42、“应用”43的三组标签,针对每一标签,均可执行以下任一种操作:“查看”、“流控配置”和“删除”。
步骤S420,为每一所述流控目标对应的标签设置至少两个时间粒度的流量控制阈值;
这里,在图4B所示的界面上点击“流控配置”44,进入如图4C所示的多时间粒度流控配置界面,可以看出,通过该界面可以进行分、时、天、月、年多种时间粒度组合的流控配置。例如,针对“访问密钥”42这一流控目标,配置了1000次/秒、50000次/分两种时间粒度的流量控制阈值。
步骤S430,将所述至少两个标签和每一所述标签对应的至少两个时间粒度的流量控制阈值,作为配置的用于所述访问密钥访问所述应用服务器的所述流控配置信息。
在本申请实施例中,通过键值对的方式定义访问密钥访问应用服务器的标签属性,同时为每个标签即流控目标设置多时间粒度的流控配置,作为流控配置信息提供给API网关,从而实现通过访问密钥访问应用服务器的多目标多时间粒度动态配置。
图5为本申请实施例提供的流控处理流程图,如图5所示,该处理流程至少包括以下步骤:
步骤S1,客户端计算签名,发送访问请求;
步骤S2,API网关对访问请求进行认证;
步骤S3,认证失败,API网关向客户端返回401状态码;
步骤S4,API网关对访问请求进行鉴权;
步骤S5,鉴权失败,API网关向客户端返回403状态码;
步骤S6,API网关从网关缓存中加载流控配置,如加载到,执行步骤S9;
步骤S7,缓存中未加载到,API网关从应用程序管理***中查询流控配置;
步骤S8,应用程序管理返回流控配置,并将结果缓存到网关缓存中。如未查到流控配置,执行S11;
步骤S9,API网关执行流控策略;
这里,API网关针对每个流控目标执行流控策略。在网关缓存中同时将该流控目标的多个时间粒度的访问请求计数器加一,然后判断访问请求是否超过流控配置。
步骤S10,请求超过流控配置阈值,API网关向客户端返回429状态码;
这里,当任何一个流控目标的访问请求超过流控配置阈值时,拒绝该访问请求,同时返回429状态码。
步骤S11,API网关将请求转发到应用服务器;
步骤S12,应用服务器响应结果;
步骤S13,API网关将响应结果返回给客户端。
相关技术中没有多目标流控的概念,相当于只针对访问密钥一个目标做流量控制,当增加流控目标时,需要对执行流控策略逻辑进行改造,无法做到动态配置的方式支持多目标流控。本申请实施例通过API网关提供了一种通用、可扩展的解决方案。可以在不修改现有应用***的同时,通过动态配置的方式,实现多目标、多时间粒度的流量控制:支持访问密钥、应用、租户等多种目标组合的流控策略;同时支持单个目标的秒、分钟、小时、月、年等多个时间粒度的流控策略。
本申请实施例至少用于以下场景:多租户场景下,每个租户有多个应用程序,每个应用程序可以签发多个访问密钥。不同的租户需要不同的流量控制策略。应用本申请实施例提供的流量控制方法之后,流量控制功能跟产品功能解耦,无需产品做任何改造,就可以支持动态多目标、多时间粒度的流量控制功能。相较于相关技术中流控功能与应用服务业务功能耦合,无法独立拆分,供多个应用服务使用,本申请实施例提供的流量控制方法可以无缝迁移到其它任何需要流量控制的产品中,应用范围较广。
基于前述的实施例,本申请实施例再提供一种流量控制装置,应用于API 网关,所述装置包括所包括的各模块、以及各模块所包括的各单元,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(Central Processing Unit,CPU)、微处理器(Micro Processing Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)或现场可编程门阵列(Field Programmable GateArray,FPGA)等。
图6为本申请实施例提供的一种流量控制装置的组成结构示意图,如图6 所示,所述装置600包括认证鉴权模块610、信息获取模块620和流量控制模块630,其中:
所述认证鉴权模块610,用于响应于接收到客户端发送的访问请求,对所述访问请求进行认证鉴权;其中,所述访问请求至少携带应用管理***为所述客户端签发的访问密钥;
所述信息获取模块620,用于在所述访问请求通过鉴权的情况下,获取所述应用程序管理***配置的流控配置信息;其中,所述流控配置信息用于所述访问密钥对应的至少两个流控目标访问应用服务器的流量控制;
所述流量控制模块630,用于基于所述流控配置信息,按照预设的流控策略控制所述访问请求。
在一些可能的实施例中,所述流控配置信息包括通过所述访问密钥访问应用服务器的至少两个标签,以及每一所述标签在至少两个时间粒度上的流量控制阈值;其中,每一所述标签为基于每一所述流控目标通过键值对的方式定义的;其中,所述流控目标包括以下至少两个:所述访问密钥、所述访问密钥对应的应用和所述应用所属的租户;所述时间粒度包括以下至少两种:秒、分钟、小时、月、年。
在一些可能的实施例中,所述信息获取模块620,包括查询子模块,用于在所述访问请求鉴权通过的情况下,查询网关缓存中是否存在所述应用程序管理***配置的流控配置信息;加载子模块,用于在所述网关缓存中存在所述流控配置信息的情况下,从所述网关缓存中加载所述流控配置信息。
在一些可能的实施例中,所述信息获取模块620,还包括发送子模块,用于在所述网关缓存中不存在所述流控配置信息的情况下,向所述应用程序管理***发送查询请求;其中,所述查询请求用于查询所述访问请求对应的流控配置信息;存储子模块,用于响应于接收到所述应用管理***返回的所述流控配置信息,将所述流控配置信息存储到所述网关缓存中。
在一些可能的实施例中,所述装置还包括请求转发模块,用于响应于未接收到所述应用管理***返回的所述流控配置信息,将所述访问请求转发到所述应用服务器。
在一些可能的实施例中,所述流量控制模块630包括:第一确定子模块,用于基于所述流控配置信息,确定每一所述流控目标在每一所述时间粒度下的流量控制阈值;第二确定子模块,用于确定每一所述流控目标在每一所述时间粒度下的累计访问次数;控制子模块,用于基于每一所述流控目标在同一时间粒度下的所述累计访问次数和所述流量控制阈值,控制所述访问请求。
在一些可能的实施例中,所述控制子模块还用于在任一所述流控目标在同一时间粒度下的所述累计访问次数超过所述流量控制阈值的情况下,拒绝所述访问请求;或者,在所有所述流控目标在同一时间粒度下的所述累计访问次数均未超过所述流量控制阈值的情况下,将所述访问请求转发到所述应用服务器。
在一些可能的实施例中,所述第二确定子模块,还用于通过所述网关缓存中设置的至少两个时间粒度的计数器,确定每一所述流控目标在每一所述时间粒度下的累计访问次数;其中,每一所述计数器的值在接收到相应所述流控目标对应的访问请求之后均加1。
在一些可能的实施例中,所述装置还包括第二发送模块,用于响应于接收到所述应用服务器对所述访问请求的响应结果,将所述响应结果发送给所述客户端。
这里需要指出的是:以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
基于前述的实施例,本申请实施例再提供一种流量控制装置,应用于应用程序管理***,所述装置包括所包括的各模块、以及各模块所包括的子模块,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器、微处理器、数字信号处理器或现场可编程门阵列等。
图7为本申请实施例提供的一种流量控制装置的组成结构示意图,如图7 所示,所述装置700包括接收模块710和第一发送模块720,其中:
所述接收模块710,用于接收API网关发送的查询请求;其中,所述查询请求用于查询客户端发送的访问请求对应的流控配置信息;所述查询请求是所述API网关在所述访问请求通过鉴权且网关缓存中不存在所述流控配置信息的情况下发送的;
所述第一发送模块720,用于基于所述查询请求,向所述API网关返回所述流控配置信息。
在一些可能的实施例中,所述访问请求至少携带所述应用管理***为所述客户端签发的访问密钥;所述装置还包括:签发授权模块,用于为所述客户端签发所述访问密钥/密钥并授权;配置模块,用于基于所述访问密钥对应的至少两个流控目标,为所述访问密钥配置用于访问应用服务器的所述流控配置信息。
在一些可能的实施例中,所述配置模块包括:定义子模块,用于基于所述至少两个流控目标,通过键值对的方式定义所述访问密钥的至少两个标签;设置子模块,用于为每一所述流控目标对应的标签设置至少两个时间粒度的流量控制阈值;配置子模块,用于将所述至少两个标签和每一所述标签对应的至少两个时间粒度的流量控制阈值,作为配置的用于所述访问密钥访问所述应用服务器的所述流控配置信息。
在一些可能的实施例中,所述流控目标包括以下至少两个:所述访问密钥、所述访问密钥对应的应用和所述应用所属的租户;所述时间粒度包括以下至少两种:秒、分钟、小时、月、年。
这里需要指出的是:以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述流量控制方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是具有摄像头的智能手机、平板电脑等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何预设的硬件和软件结合。
对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中任一所述流量控制方法中的步骤。对应地,本申请实施例中,还提供了一种芯片,所述芯片包括可编程逻辑电路和/或程序指令,当所述芯片运行时,用于实现上述实施例中任一所述流量控制方法中的步骤。对应地,本申请实施例中,还提供了一种计算机程序产品,当该计算机程序产品被电子设备的处理器执行时,其用于实现上述实施例中任一所述流量控制方法中的步骤。
基于同一技术构思,本申请实施例提供一种电子设备,用于实施上述方法实施例记载的流量控制方法。图8为本申请实施例提供的一种电子设备的硬件实体示意图,如图8所示,所述电子设备800包括存储器810和处理器820,所述存储器810存储有可在处理器820上运行的计算机程序,所述处理器820 执行所述程序时实现本申请实施例任一所述流量控制方法中的步骤。
存储器810配置为存储由处理器820可执行的指令和应用,还可以缓存待处理器820以及电子设备中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。
处理器820执行程序时实现上述任一项的流量控制方法的步骤。处理器820 通常控制电子设备800的总体操作。
上述处理器可以为特定用途集成电路(Application Specific IntegratedCircuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置 (Programmable LogicDevice,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。
上述计算机存储介质/存储器可以是只读存储器(Read Only Memory, ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种电子设备,如移动电话、计算机、平板设备、个人数字助理等。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些预设的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本申请实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得设备自动测试线执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (17)
1.一种流量控制方法,其特征在于,应用于应用程序接口API网关,所述方法包括:
响应于接收到客户端发送的访问请求,对所述访问请求进行认证鉴权;其中,所述访问请求至少携带应用管理***为所述客户端签发的访问密钥;
在所述访问请求通过鉴权的情况下,获取所述应用程序管理***配置的流控配置信息;其中,所述流控配置信息用于所述访问密钥对应的至少两个流控目标访问应用服务器的流量控制;
基于所述流控配置信息,按照预设的流控策略控制所述访问请求。
2.如权利要求1所述的方法,其特征在于,所述流控配置信息包括通过所述访问密钥访问应用服务器的至少两个标签,以及每一所述标签在至少两个时间粒度上的流量控制阈值;其中,每一所述标签为基于每一所述流控目标通过键值对的方式定义的;
其中,所述流控目标包括以下至少两个:所述访问密钥、所述访问密钥对应的应用和所述应用所属的租户;所述时间粒度包括以下至少两种:秒、分钟、小时、月、年。
3.如权利要求1或2所述的方法,其特征在于,所述在所述访问请求鉴权通过的情况下,获取应用程序管理***配置的流控配置信息,包括:
在所述访问请求鉴权通过的情况下,查询网关缓存中是否存在所述应用程序管理***配置的流控配置信息;
在所述网关缓存中存在所述流控配置信息的情况下,从所述网关缓存中加载所述流控配置信息。
4.如权利要求1或2所述的方法,其特征在于,所述在所述访问请求鉴权通过的情况下,获取应用程序管理***配置的流控配置信息,还包括:
在所述网关缓存中不存在所述流控配置信息的情况下,向所述应用程序管理***发送查询请求;其中,所述查询请求用于查询所述访问请求对应的流控配置信息;
响应于接收到所述应用管理***返回的所述流控配置信息,将所述流控配置信息存储到所述网关缓存中。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
响应于未接收到所述应用管理***返回的所述流控配置信息,将所述访问请求转发到所述应用服务器。
6.如权利要求2至5任一项所述的方法,其特征在于,所述基于所述流控配置信息,按照预设的流控策略控制所述访问请求,包括:
基于所述流控配置信息,确定每一所述流控目标在每一所述时间粒度下的流量控制阈值;
确定每一所述流控目标在每一所述时间粒度下的累计访问次数;
基于每一所述流控目标在同一时间粒度下的所述累计访问次数和所述流量控制阈值,控制所述访问请求。
7.如权利要求6所述的方法,其特征在于,所述基于每一所述流控目标在同一时间粒度下的所述累计访问请求数和所述流量控制阈值,控制所述访问请求,包括:
在任一所述流控目标在同一时间粒度下的所述累计访问次数超过所述流量控制阈值的情况下,拒绝所述访问请求;或者,
在所有所述流控目标在同一时间粒度下的所述累计访问次数均未超过所述流量控制阈值的情况下,将所述访问请求转发到所述应用服务器。
8.如权利要求7所述的方法,其特征在于,所述确定每一所述流控目标在每一所述时间粒度下的累计访问次数,包括:
通过所述网关缓存中设置的至少两个时间粒度的计数器,确定每一所述流控目标在每一所述时间粒度下的累计访问次数;其中,每一所述计数器的值在接收到相应所述流控目标对应的访问请求之后均加1。
9.如权利要求5至8任一项所述的方法,其特征在于,所述方法还包括:
响应于接收到所述应用服务器对所述访问请求的响应结果,将所述响应结果发送给所述客户端。
10.一种流量控制方法,其特征在于,应用于应用程序管理***,所述方法包括:
接收API网关发送的查询请求;其中,所述查询请求用于查询客户端发送的访问请求对应的流控配置信息;所述查询请求是所述API网关在所述访问请求通过鉴权且网关缓存中不存在所述流控配置信息的情况下发送的;
基于所述查询请求,向所述API网关返回所述流控配置信息。
11.如权利要求10所述的方法,其特征在于,所述访问请求至少携带所述应用管理***为所述客户端签发的访问密钥;所述方法还包括:
为所述客户端签发所述访问密钥/密钥并授权;
基于所述访问密钥对应的至少两个流控目标,为所述访问密钥配置用于访问应用服务器的所述流控配置信息。
12.如权利要求11所述的方法,其特征在于,所述基于所述访问密钥对应的至少两个流控目标,为所述访问密钥配置用于所述应用服务器的所述流控配置信息,包括:
基于所述至少两个流控目标,通过键值对的方式定义所述访问密钥的至少两个标签;
为每一所述流控目标对应的标签设置至少两个时间粒度的流量控制阈值;
将所述至少两个标签和每一所述标签对应的至少两个时间粒度的流量控制阈值,作为配置的用于所述访问密钥访问所述应用服务器的所述流控配置信息。
13.如权利要求10至12任一项的方法,其特征在于,所述流控目标包括以下至少两个:所述访问密钥、所述访问密钥对应的应用和所述应用所属的租户;所述时间粒度包括以下至少两种:秒、分钟、小时、月、年。
14.一种流量控制装置,其特征在于,应用于API网关,所述装置包括认证鉴权模块、信息获取模块和流量控制模块,其中:
所述认证鉴权模块,用于响应于接收到客户端发送的访问请求,对所述访问请求进行认证鉴权;其中,所述访问请求至少携带应用管理***为所述客户端签发的访问密钥;
所述信息获取模块,用于在所述访问请求通过鉴权的情况下,获取所述应用程序管理***配置的流控配置信息;其中,所述流控配置信息用于所述访问密钥对应的至少两个流控目标访问应用服务器的流量控制;
所述流量控制模块,用于基于所述流控配置信息,按照预设的流控策略控制所述访问请求。
15.一种流量控制装置,其特征在于,应用于应用程序管理***,所述装置包括接收模块和第一发送模块,其中:
所述接收模块,用于接收API网关发送的查询请求;其中,所述查询请求用于查询客户端发送的访问请求对应的流控配置信息;所述查询请求是所述API网关在所述访问请求通过鉴权且网关缓存中不存在所述流控配置信息的情况下发送的;
所述第一发送模块,用于基于所述查询请求,向所述API网关返回所述流控配置信息。
16.一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至9任一项所述方法中的步骤;或者实现权利要求10至13任一项所述方法中的步骤。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至9所述方法中的步骤;或者实现权利要求10至13中任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111663604.0A CN114244624B (zh) | 2021-12-31 | 2021-12-31 | 流量控制方法及装置、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111663604.0A CN114244624B (zh) | 2021-12-31 | 2021-12-31 | 流量控制方法及装置、设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114244624A true CN114244624A (zh) | 2022-03-25 |
CN114244624B CN114244624B (zh) | 2024-07-16 |
Family
ID=80744971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111663604.0A Active CN114244624B (zh) | 2021-12-31 | 2021-12-31 | 流量控制方法及装置、设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114244624B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114679412A (zh) * | 2022-04-19 | 2022-06-28 | 浪潮卓数大数据产业发展有限公司 | 一种流量向业务节点的转发方法、装置、设备及介质 |
CN114710450A (zh) * | 2022-03-31 | 2022-07-05 | 中国建设银行股份有限公司 | 流量控制方法、装置、设备及计算机存储介质 |
CN115242489A (zh) * | 2022-07-19 | 2022-10-25 | 中国农业银行股份有限公司 | 一种限流参数调整方法、装置、电子设备及存储介质 |
CN117201195A (zh) * | 2023-11-06 | 2023-12-08 | 联通(广东)产业互联网有限公司 | 进程网络策略限制方法及装置、设备、存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104995598A (zh) * | 2013-01-22 | 2015-10-21 | 亚马逊技术有限公司 | 用于访问控制的自由形式元数据的用途 |
CN111386676A (zh) * | 2018-03-21 | 2020-07-07 | 华为技术有限公司 | 应用编程接口api网关集群的控制方法和api网关集群 |
CN112187724A (zh) * | 2020-09-03 | 2021-01-05 | 北京金山云网络技术有限公司 | 访问控制方法、装置、网关、客户端和安全令牌服务 |
CN112437006A (zh) * | 2020-11-20 | 2021-03-02 | 北京百度网讯科技有限公司 | 基于api网关的请求控制方法、装置、电子设备和存储介质 |
CN112600801A (zh) * | 2020-12-03 | 2021-04-02 | 深圳奥哲网络科技有限公司 | 一种流量访问控制方法、设备及存储介质 |
CN112769735A (zh) * | 2019-11-05 | 2021-05-07 | 阿里巴巴集团控股有限公司 | 资源访问方法、装置与*** |
US20210334787A1 (en) * | 2020-04-28 | 2021-10-28 | Dwolla, Inc. | Key pair authentication in a label tracking system |
CN113726673A (zh) * | 2021-07-13 | 2021-11-30 | 新华三大数据技术有限公司 | 服务网关流控方法、装置、设备及存储介质 |
-
2021
- 2021-12-31 CN CN202111663604.0A patent/CN114244624B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104995598A (zh) * | 2013-01-22 | 2015-10-21 | 亚马逊技术有限公司 | 用于访问控制的自由形式元数据的用途 |
CN111386676A (zh) * | 2018-03-21 | 2020-07-07 | 华为技术有限公司 | 应用编程接口api网关集群的控制方法和api网关集群 |
CN112769735A (zh) * | 2019-11-05 | 2021-05-07 | 阿里巴巴集团控股有限公司 | 资源访问方法、装置与*** |
US20210334787A1 (en) * | 2020-04-28 | 2021-10-28 | Dwolla, Inc. | Key pair authentication in a label tracking system |
CN112187724A (zh) * | 2020-09-03 | 2021-01-05 | 北京金山云网络技术有限公司 | 访问控制方法、装置、网关、客户端和安全令牌服务 |
CN112437006A (zh) * | 2020-11-20 | 2021-03-02 | 北京百度网讯科技有限公司 | 基于api网关的请求控制方法、装置、电子设备和存储介质 |
CN112600801A (zh) * | 2020-12-03 | 2021-04-02 | 深圳奥哲网络科技有限公司 | 一种流量访问控制方法、设备及存储介质 |
CN113726673A (zh) * | 2021-07-13 | 2021-11-30 | 新华三大数据技术有限公司 | 服务网关流控方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
卢清平;苏守宝;郁书好;杨柳;: "一种层次信任的多粒度RBAC扩展模型", 山东大学学报(理学版), no. 07, 30 July 2013 (2013-07-30) * |
朱佃波;陆剑江;杨季文;: "Web信息***中统一细粒度访问控制的研究", 计算机应用与软件, no. 05, 15 May 2009 (2009-05-15) * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114710450A (zh) * | 2022-03-31 | 2022-07-05 | 中国建设银行股份有限公司 | 流量控制方法、装置、设备及计算机存储介质 |
CN114710450B (zh) * | 2022-03-31 | 2024-04-09 | 中国建设银行股份有限公司 | 流量控制方法、装置、设备及计算机存储介质 |
CN114679412A (zh) * | 2022-04-19 | 2022-06-28 | 浪潮卓数大数据产业发展有限公司 | 一种流量向业务节点的转发方法、装置、设备及介质 |
CN114679412B (zh) * | 2022-04-19 | 2024-05-14 | 浪潮卓数大数据产业发展有限公司 | 一种流量向业务节点的转发方法、装置、设备及介质 |
CN115242489A (zh) * | 2022-07-19 | 2022-10-25 | 中国农业银行股份有限公司 | 一种限流参数调整方法、装置、电子设备及存储介质 |
CN115242489B (zh) * | 2022-07-19 | 2024-04-09 | 中国农业银行股份有限公司 | 一种限流参数调整方法、装置、电子设备及存储介质 |
CN117201195A (zh) * | 2023-11-06 | 2023-12-08 | 联通(广东)产业互联网有限公司 | 进程网络策略限制方法及装置、设备、存储介质 |
CN117201195B (zh) * | 2023-11-06 | 2024-01-26 | 联通(广东)产业互联网有限公司 | 进程网络策略限制方法及装置、设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114244624B (zh) | 2024-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114244624B (zh) | 流量控制方法及装置、设备、存储介质 | |
JP6898297B2 (ja) | サービス処理方法、装置、及びサーバ | |
CN108924125B (zh) | 接口调用权限的控制方法、装置、计算机设备和存储介质 | |
CN112637214B (zh) | 资源访问方法、装置及电子设备 | |
CN108989263B (zh) | 短信验证码攻击防护方法、服务器和计算机可读存储介质 | |
US20150237053A1 (en) | Facilitating third parties to perform batch processing of requests requiring authorization from resource owners for repeat access to resources | |
CN111031035B (zh) | 一种敏感数据访问行为监控方法及装置 | |
CN111030812A (zh) | 令牌验证方法、装置、存储介质及服务器 | |
US20210314156A1 (en) | Authentication method, content delivery network cdn, and content server | |
CN112738100B (zh) | 数据访问的鉴权方法、装置、鉴权设备和鉴权*** | |
US20140143836A1 (en) | Extended OAuth Architecture | |
CN112134954A (zh) | 服务请求处理方法、装置、电子设备及存储介质 | |
CN113709530B (zh) | 一种资源下载方法、***、电子设备及存储介质 | |
CN111464481B (zh) | 用于服务安全保护的方法、设备和计算机可读介质 | |
CN108449308A (zh) | 识别恶意资源访问的方法及装置 | |
CN109547427B (zh) | 黑名单用户识别方法、装置、计算机设备及存储介质 | |
US10152710B1 (en) | Browser-based payment for content | |
CN108156071B (zh) | 向社区添加成员的方法、终端设备及计算机可读存储介质 | |
CN111027051B (zh) | 控制页面权限调用的方法、装置及可读存储介质 | |
CN111970194B (zh) | 一种api网关的配置及请求处理方法 | |
CN113114611B (zh) | 黑名单管理的方法和装置 | |
US10742802B2 (en) | Methods and devices for verifying a communication number | |
US20210019392A1 (en) | System and method for data processing device management | |
CN111611259B (zh) | 接口请求处理方法、装置、***及计算机可读存储介质 | |
US11316949B2 (en) | Access management to user related data |
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 |