一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

接口限流方法、装置、计算机设备和存储介质与流程

2022-04-30 15:08:16 来源:中国专利 TAG:


1.本技术涉及人工智能领域,尤其涉及一种接口限流方法、装置、计算机设备和存储介质。


背景技术:

2.在一些大流量高并发场景中,例如在秒杀活动中,经常会出现请求量剧增的情况;为避免短时间内剧增的请求量对服务器造成冲击,需要对请求量进行限流。
3.现有的限流方式,一般是在活动开始之前进行接口压测,开发人员根据压测结果进行评估得到合理的限流阈值,并根据限流阈值生成限流脚本。在活动开始后,通过运行限流脚本对接口的请求量进行控制。当请求量过大或者请求量过小时,限流脚本中的原先配置的限流阈值不再适用,开发人员只能通过人工手动修改限流脚本,从而无法及时、准确地对接口进行限流。
4.因此,如何提高接口限流的及时性与准确性成为亟需解决的问题。


技术实现要素:

5.本技术提供了一种接口限流方法、装置、计算机设备和存储介质,通过根据当前接口的接口参数值对当前接口的分层限流参数进行递减调整或递增调整,实现智能地对当前接口进行动态限流,无需通过人工手动修改限流脚本,提高了接口限流的及时性与准确性。
6.第一方面,本技术提供了一种接口限流方法,所述方法包括:
7.在当前接口接收到访问请求时,确定所述当前接口的接口参数值;
8.获取所述当前接口对应的分层限流参数,所述分层限流参数包括初始的限流阈值、递增比例以及递减比例;
9.将所述接口参数值与预设的参数范围值进行比对,所述参数范围值包括参数上限值与参数下限值;
10.若所述接口参数值大于所述参数上限值,则根据所述递减比例对所述初始的限流阈值进行递减调整,直至递减调整后的限流阈值小于预设的第一限流阈值;
11.若所述接口参数值小于所述参数下限值,则根据所述递增比例对所述初始的限流阈值进行递增调整,直至调整后的限流阈值大于预设的第二限流阈值;
12.根据调整后的所述限流阈值对所述当前接口进行限流控制。
13.第二方面,本技术还提供了一种接口限流装置,所述装置包括:
14.状态参数确定模块,用于在当前接口接收到访问请求时,确定所述当前接口的接口参数值;
15.限流参数获取模块,用于获取所述当前接口对应的分层限流参数,所述分层限流参数包括初始的限流阈值、递增比例以及递减比例;
16.参数值对比模块,用于将所述接口参数值与预设的参数范围值进行比对,所述参数范围值包括参数上限值与参数下限值;
17.递减调整模块,用于若所述接口参数值大于所述参数上限值,则根据所述递减比例对所述初始的限流阈值进行递减调整,直至递减调整后的限流阈值小于预设的第一限流阈值;
18.递增调整模块,用于若所述接口参数值小于所述参数下限值,则根据所述递增比例对所述初始的限流阈值进行递增调整,直至调整后的限流阈值大于预设的第二限流阈值;
19.限流控制模块,用于根据调整后的所述限流阈值对所述当前接口进行限流控制。
20.第三方面,本技术还提供了一种计算机设备,所述计算机设备包括存储器和处理器;
21.所述存储器,用于存储计算机程序;
22.所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如上述的接口限流方法。
23.第四方面,本技术还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上述的接口限流方法。
24.本技术公开了一种接口限流方法、装置、计算机设备和存储介质,通过在当前接口接收到访问请求时,确定当前接口的接口参数值,可以获得当前接口接收到的访问请求的请求量以及当前接口处理访问请求的平均响应时长;通过获取当前接口对应的分层限流参数,可以获得对当前接口进行分层限流时的初始的限流阈值、递增比例以及递减比例;通过将接口参数值与预设的参数范围值进行比对,可以确定是否需要对当前接口的初始的限流阈值进行调整;通过在确定接口参数值大于参数上限值时,根据递减比例对初始的限流阈值进行递减调整,可以实现在请求量过大时逐步降低限流阈值,以增强限流力度;通过在确定接口参数值小于参数下限值时,根据递增比例对初始的限流阈值进行递增调整,可以实现在请求量过小时逐步增加限流阈值,以降低限流力度;通过根据调整后的限流阈值对当前接口进行限流控制,可以实现智能地对当前接口进行动态限流,无需通过人工手动修改限流脚本,提高了接口限流的及时性与准确性。
附图说明
25.为了更清楚地说明本技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
26.图1是本技术实施例提供的一种接口限流方法的示意性流程图;
27.图2是本技术实施例提供的一种设置接口的分层限流参数的子步骤的示意性流程图;
28.图3是本技术实施例提供的一种创建接口的数据缓存区的子步骤的示意性流程图;
29.图4是本技术实施例提供的一种查询访问请求对应的数据的示意图;
30.图5是本技术实施例提供的一种接口限流装置的示意性框图;
31.图6是本技术实施例提供的一种计算机设备的结构示意性框图。
具体实施方式
32.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
33.附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
34.应当理解,在此本技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本技术。如在本技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
35.还应当理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
36.本技术的实施例提供了一种接口限流方法、装置、计算机设备和存储介质。其中,该接口限流方法可以应用于服务器中,通过根据当前接口的接口参数值对当前接口的分层限流参数进行递减调整或递增调整,实现智能地对当前接口进行动态限流,无需通过人工手动修改限流脚本,提高了接口限流的及时性与准确性。
37.其中,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
38.下面结合附图,对本技术的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
39.如图1所示,接口限流方法包括步骤s10至步骤s60。
40.步骤s10、在当前接口接收到访问请求时,确定所述当前接口的接口参数值。
41.需要说明的是,本技术实施例提供的接口限流方法可以应用于客户端通过接口访问服务器的大流量高并发场景中,例如在一些购物秒杀活动中;当多个客户端中的购物应用程序同时访问服务器时,会造成服务器的接口的请求量暴增,因此需要对接口进行限流。可以理解的是,限流是对某一时间窗口内的请求量进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。在服务器中,存在多个接口;客户端可以访问其中的一个或多个接口。在本技术实施例中,将服务器中的其中一个接口作为当前接口,以客户端访问当前接口为例,对如何进行当前接口限流作详细说明。
42.其中,客户端可以是智能手机、平板电脑、笔记本电脑和台式电脑等电子设备。
43.示例性的,当通过当前接口接收到客户端的访问请求时,服务器可以确定当前接口对应的接口参数值,根据接口参数值对当前接口的分层限流参数进行递减调整或递增调整,实现智能地对当前接口进行动态限流,无需通过人工手动修改限流降级脚本,提高了接口限流的及时性与准确性。
44.示例性的,接口参数值是指当前接口的参数值,可以包括请求量与平均响应时长,用于衡量当前接口处理访问请求的性能。例如,在通过当前接口接收到客户端的访问请求时,可以统计预设时间内,当前接口接收到的访问请求的请求量,以及当前接口处理访问请
求的平均响应时长。
45.通过在当前接口接收到访问请求时,确定当前接口的接口参数值,可以获得当前接口接收到的访问请求的请求量以及当前接口处理访问请求的平均响应时长。
46.步骤s20、获取所述当前接口对应的分层限流参数,所述分层限流参数包括初始的限流阈值、递增比例以及递减比例。
47.示例性的,可以基于预设的接口与分层限流参数之间的对应关系,从本地数据库或本地磁盘获取当前接口对应的分层限流参数;其中,分层限流参数用于对当前接口进行分层限流。
48.需要说明的是,在本技术实施例中,每个接口对应的分层限流参数是预先设置好的。示例性的,在获取当前接口对应的分层限流参数之前,在服务器的接口配置页面设置每个接口的分层限流参数。
49.通过获取当前接口对应的分层限流参数,可以获得对当前接口进行分层限流时的初始的限流阈值、递增比例以及递减比例。
50.请参阅图2,图2是本技术实施例提供的一种设置接口的分层限流参数的子步骤的示意性流程图,具体可以包括以下步骤s201至步骤s204。
51.步骤s201、当检测到接口配置页面中的接口测试操作时,获取多个测试请求,并确定所述多个测试请求中包含预设识别码的目标测试请求。
52.需要说明的是,开发人员在本地活动开始之前,对服务器的接口进行测试,以确定本次活动的主要路径的接口,并根据服务器的接口配置页面上显示的每个接口对应的接口测试参数,设置每个接口的分层限流参数。
53.示例性的,开发人员可以在接口配置页面输入需要监控的预设识别码,其中,预设识别码用于识别客户端的唯一性;然后,开发人员在客户端上,登录预设识别码对应的应用程序,通过应用程序进行访问服务器的操作,其中,应用程序可以是客户端上的购物应用程序等等;服务器可以通过拦截器对当前接口接收到的多个测试请求进行拦截,并确定多个测试请求中包含预设识别码的目标测试请求。
54.示例性的,预设识别码可以包括是用户标识user id,例如客户端中的应用程序的登录账号,还可以是sid(security identifiers,安全标识符)。其中,sid可以是登录应用程序的令牌。
55.步骤s202、对所述目标测试请求进行解析,以确定接口调用集合。
56.需要说明的是,在本技术实施例中,可以对目标测试请求进行解析,根据解析信息确定目标测试请求对应调用的路径,进而可以根据路径对应的接口,确定接口调用集合。可以理解的是,通过确定接口调用集合,可以获得接口测试过程中被调用的接口,进而可以确定本次活动的主要路径的接口。其中,接口调用集合包括当前接口。
57.在一些实施例中,对目标测试请求进行解析,以确定接口调用集合,可以包括:提取目标测试请求中的统一资源定位符,根据统一资源定位符确定目标测试请求调用的全部路径;根据全部路径对应的接口,获得接口调用集合。
58.需要说明的是,统一资源定位符(uniform resource locator,url)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
59.在本技术实施例中,统一资源定位符用于表示目标测试请求调用的路径;示例性
的,可以通过目标测试请求中携带的统一资源定位符,确定目标测试请求调用的全部路径;然后,根据全部路径对应的接口,获得接口调用集合。
60.通过对目标测试请求进行解析,可以根据统一资源定位符确定目标测试请求调用的全部路径,从而获得本次活动的主要路径上的接口。
61.步骤s203、确定所述接口调用集合中的每个接口对应的接口测试参数,并在所述接口配置页面显示每个所述接口对应的接口测试参数。
62.示例性的,接口测试参数可以包括调用次数和响应时长。其中,调用次数是指测试请求调用接口的次数,即请求量。例如,可以统计在预设时间内每个接口的调用次数,并计算出每个接口的响应时长。然后,在接口配置页面显示每个接口对应的调用次数和响应时长。其中,响应时长可以包括最大响应时长、最小响应时长以及平均响应时长。预设时间可以根据实际情况设定,具体数值在此不作限定。
63.通过在接口配置页面显示每个接口对应的接口测试参数,可以使得开发人员根据每个接口对应的接口测试参数设置每个接口的分层限流参数,可以实现对本次活动的主要路径上的接口进行限流控制,确保服务器的稳定性。
64.在本技术实施例中,在确定接口调用集合中的每个接口对应的接口测试参数之后,还可以根据每个接口对应的数据变化量和接口测试参数,判断是否需要创建接口的数据缓存区。需要说明的是,数据缓存区用于存储接口多次从数据库查询且内容变化程度较小的数据。通过数据缓存区缓存常用数据,可以减少查询数据库的次数,提升响应速度。
65.请参阅图3,图3是本技术实施例提供的一种创建接口的数据缓存区的子步骤的示意性流程图,具体可以包括以下步骤s2031至步骤s2034。
66.步骤s2031、根据每个所述接口接收到的测试请求查询数据库,获取每个所述接口对应的多个目标数据,并根据多个所述目标数据确定每个所述接口的数据变化量。
67.示例性的,可以根据每个接口接收到的测试请求查询数据库,将查询得到的数据,确定为每个接口对应的多个目标数据。其中,具体的数据查询过程,在此不作限定。可以理解的是,数据变化量是指根据接口接收到的测试请求查询数据库,查询到的目标数据的数据变化程度。
68.示例性的,在获取每个接口对应的多个目标数据之后,可以确定多个目标数据的不同数据的比例,将不同数据的比例确定为每个接口的数据变化量。例如,当有5个目标数据时,如数据a,数据a,数据c,数据b,数据e,此时不同数据的比例为4/5=0.8,即数据变化量为0.8。又例如,例如,当有5个目标数据时,如数据a,数据a,数据b,数据b,数据b,此时不同数据的比例为2/5=0.4,即数据变化量为0.4。
69.通过根据多个目标数据确定每个接口的数据变化量,进而可以根据数据变化量确定接口是否为常用接口。
70.步骤s2032、根据每个所述接口对应的数据变化量与接口测试参数,确定所述接口调用集合中是否存在常用接口,所述常用接口为调用次数大于预设次数且数据变化量小于预设变化量的接口。
71.在本技术实施例中,可以根据每个接口对应的接口测试参数中的调用次数,以及对应的数据变化量,确定接口调用集合中是否存在常用接口。示例性的,可以将接口调用集合中调用次数大于预设次数且数据变化量小于预设变化量的接口,确定为常用接口。其中,
预设变化量可以根据实际情况设定,具体数值在此不作限定。
72.步骤s2033、当所述接口调用集合中存在常用接口,创建每个所述常用接口对应的数据缓存区,并设置所述数据缓存区的数据有效时间。
73.示例性的,当接口调用集合中存在常用接口,创建每个常用接口对应的数据缓存区,并设置数据缓存区的数据有效时间。例如,可以在内存中创建每个常用接口对应的数据缓存区,并为每个数据缓存区设置数据有效时间。其中,数据缓存区用于缓存从数据库中查询到的常用数据;数据有效时间是指数据缓存区中的目据保存的时间,当数据有效时间达到时,需要将过期的数据删除。
74.通过创建每个常用接口对应的数据缓存区,可以实现将常用接口需要查询的数据存储在数据缓存区中,可以减少直接查询数据库的次数,提升访问请求的响应速度。
75.步骤s2034、按照所述数据有效时间将每个所述常用接口对应的目标数据存储至每个所述常用接口对应的数据缓存区。
76.示例性的,在进行接口测试过程中,可以按照数据有效时间将每个常用接口对应的目标数据存储至每个常用接口对应的数据缓存区。此外,在活动开始后,也可以按照数据有效时间将每个常用接口对应的目标数据存储至每个常用接口对应的数据缓存区。
77.通过将常用接口的目标数据存储至对应的数据缓存区,可以实现在数据有效时间内,当客户端的访问请求再次查询相同的目标数据时,可以优先将数据缓存区内的目标数据返回客户端。从而,可以减少直接查询数据库的次数,提升访问请求的响应速度。
78.步骤s204、当检测到所述接口配置页面中的分层限流设置操作时,根据所述分层限流设置操作确定每个所述接口对应的分层限流参数。
79.需要说明的是,在本技术实施例中,在接口配置页面显示每个接口对应的接口测试参数之后,可以根据开发人员在接口配置页面中的分层限流设置操作确定每个接口对应的分层限流参数。
80.其中,其中,分层限流参数包括初始的限流阈值、递增比例以及递减比例。开发人员可以根据接口的接口测试参数、本次活动的估计人数、服务器的数量设定初始的限流阈值;递增比例是指每次对限流阈值进行增加的比例;递减比例是指每次对限流阈值进行减少的比例。
81.在一些实施例中,当检测到接口配置页面中的分层限流设置操作时,根据分层限流设置操作确定每个接口对应的分层限流参数。
82.示例性的,开发人员可以根据本次活动的估计人数和服务器的数量,确定每个服务器的请求总量;然后根据每个服务器的请求总量和接口的请求量和响应时长,设定每个接口的初始的限流阈值。
83.示例性的,开发人员可以根据实际情况设定递增比例和递减比例,具体数值在此不作。例如,递增比例可以是5%,递减比例可以是-5%。
84.在一些实施例中,在根据分层限流设置操作确定每个接口对应的分层限流参数之后,可以将每个接口与对应的分层限流参数进行关联存储至本地数据库或本地磁盘中。
85.为进一步保证上述分层限流参数的私密和安全性,上述分层限流参数可以存储于一区块链的节点中。
86.通过根据分层限流设置操作确定每个接口对应的分层限流参数,后续可以在接口
需要限流时,根据分层限流参数实现限流控制。
87.步骤s30、将所述接口参数值与预设的参数范围值进行比对,所述参数范围值包括参数上限值与参数下限值。
88.示例性的,预设的参数范围值包括请求量范围值与响应时长范围值。其中,请求量范围值包括请求量上限值和请求量下限值;响应时长范围值包括响应时长上限值以及响应时长下限值。请求量上限值、请求量下限值、响应时长上限值以及响应时长下限值可以根据实际情况设定,具体数值在此不作限定。
89.在本技术实施例中,提供两种限流策略对当前接口进行限流控制;其中,限流策略可以包括请求量限流策略和响应时长限流策略。例如,可以根据请求量对当前接口进行限流控制,也可以根据响应时长对当前接口进行限流控制。
90.在一些实施例中,将接口参数值与预设的参数范围值进行比对之前,还可以包括:确定当前接口对应的目标限流策略。
91.示例性的,可以根据接口配置页面中的限流策略选项,确定当前接口对应的目标限流策略。需要说明的是,开发人员可以在接口配置页面中的限流策略选项进行限流策略选中操作。
92.在一些实施例中,将接口参数值与预设的参数范围值进行比对,可以包括:当目标限流策略为请求量限流策略时,将接口参数值中的请求量与请求量范围值进行比对;当目标限流策略为响应时长策略时,将接口参数值中的平均响应时长与响应时长范围值进行比对。
93.通过将接口参数值与预设的参数范围值进行比对,可以确定是否需要对当前接口的初始的限流阈值进行调整;通过确定当前接口对应的目标限流策略,可以实现根据不同的限流策略判断当前接口是否需要进行限流,提高了灵活性。
94.步骤s40、若所述接口参数值大于所述参数上限值,则根据所述递减比例对所述初始的限流阈值进行递减调整,直至递减调整后的限流阈值小于预设的第一限流阈值。
95.需要说明的是,参数上限值可以是请求量范围值中的请求量上限值,也可以是响应时长范围值中的响应时长上限值。当目标限流策略为请求量限流策略时,参数上限值为请求量上限值;当目标限流策略为响应时长限流策略时,参数上限值为响应时长上限值。
96.在一些实施方式中,若接口参数值中的请求量大于请求量上限值,则根据递减比例对初始的限流阈值进行递减调整,直至递减调整后的限流阈值小于预设的第一限流阈值。
97.在另一些实施方式中,若接口参数值中的平均响应时长大于响应时长上限值,则根据递减比例对初始的限流阈值进行递减调整,直至递减调整后的限流阈值小于预设的第一限流阈值。
98.其中,预设的第一限流阈值可以根据实际情况设定,具体数值在此不作限定。可以理解的是,在请求量过大时,对初始的限流阈值进行递减调整,相当于加大限流的力度,达到降低请求量的目的。
99.示例性的,当初始的限流阈值为a、递减比例为-5%时,对初始的限流阈值进行第一轮递减调整,得到的限流阈值为95%*a;在进行第二轮递增调整后,得到的限流阈值为90%*a。依次类推,直至递减调整后的限流阈值小于预设的第一限流阈值。
100.通过在确定接口参数值大于参数上限值时,根据递减比例对初始的限流阈值进行递减调整,可以实现在请求量过大时逐步降低限流阈值,从而增强限流力度。
101.步骤s50、若所述接口参数值小于所述参数下限值,则根据所述递增比例对所述初始的限流阈值进行递增调整,直至调整后的限流阈值大于预设的第二限流阈值。
102.示例性的,当目标限流策略为请求量限流策略时,参数下限值为请求量下限值;当目标限流策略为响应时长限流策略时,参数下限值为响应时长下限值。
103.在一些实施方式中,若接口参数值中的请求量小于请求量下限值,则根据递增比例对初始的限流阈值进行递增调整,直至递增调整后的限流阈值大于预设的第二限流阈值。
104.在另一些实施方式中,若接口参数值中的平均响应时长小于响应时长下限值,则根据递增比例对初始的限流阈值进行递增调整,直至递增调整后的限流阈值大于预设的第二限流阈值。
105.其中,预设的第二限流阈值可以根据实际情况设定,具体数值在此不作限定。可以理解的是,在请求量过小时,对初始的限流阈值进行递增调整,相当于减轻限流的力度,使得服务器可以接收更多的访问请求。
106.示例性的,当初始的限流阈值为b、递增比例为5%时,对初始的限流阈值进行第一轮递增调整,得到的限流阈值为105%*b;在进行第二轮递增调整后,得到的限流阈值为110%*b。
107.通过在确定接口参数值小于参数下限值时,根据递增比例对初始的限流阈值进行递增调整,可以实现在请求量过小时逐步增加限流阈值,从而降低限流力度。
108.步骤s60、根据调整后的所述限流阈值对所述当前接口进行限流控制。
109.在本技术实施例中,可以对每个接口设置令牌桶,通过根据接口的限流阈值对令牌桶的容量进行调整,进而通过令牌桶的容量对接口进行限流控制,提高了限流控制的准确性。
110.需要说明的是,令牌桶(token-bucket)是目前最常采用的一种流量测量方法,用来评估流量速率是否超过了规定值。其中,令牌桶是指网络设备的内部存储池,而令牌则是指以给定速率填充令牌桶的虚拟信息包。令牌桶可以看作是一个存放令牌的容器,预先设定一定的容量;系统按设定的速度向桶中放置令牌,当桶中令牌满时,多余的令牌溢出。在本技术实施例中,令牌桶用于对接口进行限流。例如,可以根据初始的限流阈值设定令牌桶的容量,并根据限流阈值的变化调整令牌桶的容量大小。当访问请求达到当前接口时,首先根据访问请求的请求量从令牌桶中取出与请求量相当的令牌,用来传输访问请求;当令牌数量不够时,访问请求会被丢弃或缓存。从而实现对当前接口进行限流控制。
111.在一些实施例中,根据调整后的限流阈值对当前接口进行限流控制,可以包括:将当前接口对应的令牌桶的容量设置为调整后的限流阈值。
112.示例性的,若调整后的限流阈值为k,则可以将当前接口对应的令牌桶的容量设置为k。当多个访问请求到达当前接口时,由于令牌桶存放有k个令牌,因此可以传输k个访问请求。即只能同时处理k个访问请求,多余的访问请求会被缓存等待或被丢弃。
113.通过将当前接口对应的令牌桶的容量设置为调整后的限流阈值,可以根据令牌桶中的令牌数量对接口的请求量进行控制,实现智能地对当前接口进行动态限流,无需通过
人工手动修改限流脚本,提高了接口限流的及时性与准确性。
114.在一些实施例中,在将接口参数值与预设的参数范围值进行比对时,还可以包括:当接口参数值小于参数上限值且大于参数下限值时,确定是否从当前接口的令牌桶分配到访问请求对应的令牌;若分配到访问请求对应的令牌,则基于预设的数据查询策略,根据访问请求进行数据查询,并通过当前接口返回数据查询结果;若未分配到访问请求对应的令牌,则通过当前接口返回预设的响应消息。
115.需要说明的是,在当接口参数值小于参数上限值且大于参数下限值时,不需要对当前接口的限流阈值进行调整,也不需要对当前接口进行限流。此时,可以正常处理访问请求,查询访问请求对应的数据,并将查询结果返回至客户端。
116.示例性的,当接口参数值小于参数上限值且大于参数下限值时,确定是否从当前接口的令牌桶分配到访问请求对应的令牌。例如,当接口参数值中的请求量小于请求量上限值且大于请求量下限值时,判断是否从当前接口的令牌桶分配到访问请求对应的令牌。又例如,当接口参数值中的平均响应时长小于响应时长上限值且大于响应时长上限值时,判断是否从当前接口的令牌桶分配到访问请求对应的令牌。
117.请参阅图4,图4是本技术实施例提供的一种查询访问请求对应的数据的示意图,如图4所示,从当前接口的令牌桶分配访问请求对应的令牌;若未分配到访问请求对应的令牌,则通过当前接口返回预设的响应消息。其中,预设的响应消息可以是“网络拥堵,请重新尝试”,当然也可以是其它提示内容。若分配到访问请求对应的令牌,则基于预设的数据查询策略,根据访问请求进行数据查询,并通过当前接口返回数据查询结果。
118.其中,基于预设的数据查询策略,根据访问请求进行数据查询,并通过当前接口返回数据查询结果,可以包括:确定当前接口是否存在数据缓存区;若当前接口不存在数据缓存区时,则查询数据库,获得访问请求对应的查询结果。若当前接口存在数据缓存区,则查询数据缓存区。当数据缓存区存在访问请求对应的数据时,将对应的数据作为查询结果。当数据缓存区不存在访问请求对应的数据时,查询数据库,获得查询结果。
119.在一些实施例中,当数据缓存区不存在访问请求对应的目标数据时,还可以设置数据缓存区的数据有效时间,并将从数据库查询得到的数据存储在数据缓存区。
120.通过优先查询数据缓存区中的数据,可以减少直接查询数据库的次数,提升访问请求的响应速度。
121.上述实施例提供的接口限流方法,通过在当前接口接收到访问请求时,确定当前接口的接口参数值,可以获得当前接口接收到的访问请求的请求量以及当前接口处理访问请求的平均响应时长;通过获取当前接口对应的分层限流参数,可以获得对当前接口进行分层限流时的初始的限流阈值、递增比例以及递减比例;通过对目标测试请求进行解析,可以根据统一资源定位符确定目标测试请求请求的全部路径,从而获得本次活动的主要路径上的接口;通过根据多个目标数据确定每个接口的数据变化量,进而可以根据数据变化量确定接口是否为常用接口;通过创建每个常用接口对应的数据缓存区,可以实现将常用接口需要查询的数据存储在数据缓存区中,可以减少直接查询数据库的次数,提升访问请求的响应速度;通过确定当前接口对应的目标限流策略,可以实现根据不同的限流策略判断当前接口是否需要进行限流,提高了灵活性;通过在确定接口参数值大于参数上限值时,根据递减比例对初始的限流阈值进行递减调整,可以实现在请求量过大时逐步降低限流阈
值,从而增强限流力度;通过在确定接口参数值小于参数下限值时,根据递增比例对初始的限流阈值进行递增调整,可以实现在请求量过小时逐步增加限流阈值,从而降低限流力度;通过将当前接口对应的令牌桶的容量设置为调整后的限流阈值,可以根据令牌桶中的令牌数量对接口的请求量进行控制,实现智能地对当前接口进行动态限流,无需通过人工手动修改限流脚本,提高了接口限流的及时性与准确性。
122.请参阅图5,图5是本技术的实施例还提供一种接口限流装置1000的示意性框图,该接口限流装置用于执行前述的接口限流方法。其中,该接口限流装置可以配置于服务器中。
123.如图5所示,该接口限流装置1000,包括:状态参数确定模块1001、限流参数获取模块1002、参数值对比模块1003、递减调整模块1004、递增调整模块1005和限流控制模块1006。
124.状态参数确定模块1001,用于在当前接口接收到访问请求时,确定所述当前接口的接口参数值。
125.限流参数获取模块1002,用于获取所述当前接口对应的分层限流参数,所述分层限流参数包括初始的限流阈值、递增比例以及递减比例。
126.参数值对比模块1003,用于将所述接口参数值与预设的参数范围值进行比对,所述参数范围值包括参数上限值与参数下限值。
127.递减调整模块1004,用于若所述接口参数值大于所述参数上限值,则根据所述递减比例对所述初始的限流阈值进行递减调整,直至递减调整后的限流阈值小于预设的第一限流阈值。
128.递增调整模块1005,用于若所述接口参数值小于所述参数下限值,则根据所述递增比例对所述初始的限流阈值进行递增调整,直至调整后的限流阈值大于预设的第二限流阈值。
129.限流控制模块1006,用于根据调整后的所述限流阈值对所述当前接口进行限流控制。
130.需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
131.上述的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图6所示的计算机设备上运行。
132.请参阅图6,图6是本技术实施例提供的一种计算机设备的结构示意性框图。
133.请参阅图6,该计算机设备包括通过系统总线连接的处理器和存储器,其中,存储器可以包括存储介质和内存储器。存储介质可以是非易失性存储介质,也可以是易失性存储介质。
134.处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
135.内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种接口限流方法。
136.应当理解的是,处理器可以是中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专
用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
137.其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
138.在当前接口接收到访问请求时,确定所述当前接口的接口参数值;获取所述当前接口对应的分层限流参数,所述分层限流参数包括初始的限流阈值、递增比例以及递减比例;将所述接口参数值与预设的参数范围值进行比对,所述参数范围值包括参数上限值与参数下限值;若所述接口参数值大于所述参数上限值,则根据所述递减比例对所述初始的限流阈值进行递减调整,直至递减调整后的限流阈值小于预设的第一限流阈值;若所述接口参数值小于所述参数下限值,则根据所述递增比例对所述初始的限流阈值进行递增调整,直至调整后的限流阈值大于预设的第二限流阈值;根据调整后的所述限流阈值对所述当前接口进行限流控制。
139.在一个实施例中,所述接口参数值包括请求量与平均响应时长,所述参数范围值包括请求量范围值与响应时长范围值;所述处理器在实现将所述接口参数值与预设的参数范围值进行比对之前,还用于实现:
140.确定所述当前接口对应的目标限流策略。
141.在一个实施例中,所述处理器在实现将所述接口参数值与预设的参数范围值进行比对时,用于实现:
142.当所述目标限流策略为请求量限流策略时,将所述接口参数值中的请求量与请求量范围值进行比对;当所述目标限流策略为响应时长策略时,将所述接口参数值中的平均响应时长与响应时长范围值进行比对。
143.在一个实施例中,所述当前接口包括令牌桶;所述处理器在实现将所述接口参数值与预设的参数范围值进行比对时,还用于实现:
144.当所述接口参数值小于所述参数上限值且大于所述参数下限值时,确定是否从所述当前接口的令牌桶分配到所述访问请求对应的令牌;若分配到所述访问请求对应的令牌,则基于预设的数据查询策略,根据所述访问请求进行数据查询,并通过所述当前接口返回数据查询结果;若未分配到所述访问请求对应的令牌,则通过所述当前接口返回预设的响应消息。
145.在一个实施例中,所述当前接口包括令牌桶;所述处理器在实现根据调整后的所述限流阈值对所述当前接口进行限流控制时,用于实现:
146.将所述当前接口对应的令牌桶的容量设置为调整后的所述限流阈值。
147.在一个实施例中,所述处理器在实现获取所述当前接口对应的分层限流参数之前,还用于实现:
148.当检测到接口配置页面中的接口测试操作时,获取多个测试请求,并确定所述多个测试请求中包含预设识别码的目标测试请求;对所述目标测试请求进行解析,以确定接口调用集合;确定所述接口调用集合中的每个接口对应的接口测试参数,并在所述接口配置页面显示每个所述接口对应的接口测试参数;当检测到所述接口配置页面中的分层限流
设置操作时,根据所述分层限流设置操作确定每个所述接口对应的分层限流参数。
149.在一个实施例中,所述处理器在实现对所述目标测试请求进行解析,以确定接口调用集合时,用于实现:
150.提取所述目标测试请求中的统一资源定位符,根据所述统一资源定位符确定所述目标测试请求调用的全部路径;根据所述全部路径对应的接口,获得所述接口调用集合。
151.在一个实施例中,所述接口测试参数包括调用次数;所述处理器在实现确定所述接口调用集合中的每个接口对应的接口测试参数之后,还用于实现:
152.根据每个所述接口接收到的测试请求查询数据库,获取每个所述接口对应的多个目标数据,并根据多个所述目标数据确定每个所述接口的数据变化量;根据每个所述接口对应的数据变化量与接口测试参数,确定所述接口调用集合中是否存在常用接口,所述常用接口为调用次数大于预设次数且数据变化量小于预设变化量的接口;当所述接口调用集合中存在常用接口,创建每个所述常用接口对应的数据缓存区,并设置所述数据缓存区的数据有效时间;按照所述数据有效时间将每个所述常用接口对应的目标数据存储至每个所述常用接口对应的数据缓存区。
153.本技术的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本技术实施例提供的任一项接口限流方法。
154.例如,该程序被处理器加载,可以执行如下步骤:
155.在当前接口接收到访问请求时,确定所述当前接口的接口参数值;获取所述当前接口对应的分层限流参数,所述分层限流参数包括初始的限流阈值、递增比例以及递减比例;将所述接口参数值与预设的参数范围值进行比对,所述参数范围值包括参数上限值与参数下限值;若所述接口参数值大于所述参数上限值,则根据所述递减比例对所述初始的限流阈值进行递减调整,直至递减调整后的限流阈值小于预设的第一限流阈值;若所述接口参数值小于所述参数下限值,则根据所述递增比例对所述初始的限流阈值进行递增调整,直至调整后的限流阈值大于预设的第二限流阈值;根据调整后的所述限流阈值对所述当前接口进行限流控制。
156.其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字卡(secure digital card,sd card),闪存卡(flash card)等。
157.进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
158.本技术所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
159.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何
熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献