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

一种流量限制方法、装置、服务器及存储介质与流程

2021-11-03 21:11:00 来源:中国专利 TAG:


1.本发明实施例涉及计算机应用领域,尤其涉及一种流量限制方法、装置、服务器及存储介质。


背景技术:

2.随着线上应用系统的迅速增长的用户量,在资源有限的前提下,如何保证应用系统能够有效处理大量突发流量请求,是其面临的持续性问题。
3.在目前的工业应用场景中,流量限制(即限流)是提升应用系统的稳定性和可靠性的主要处理方案。但是,现有的限流方案难以有效控制流量的稳定性。


技术实现要素:

4.本发明实施例提供了一种流量限制方法、装置、服务器及存储介质,解决了在限流时存在的难以有效控制流量的稳定性的问题。
5.第一方面,本发明实施例提供了一种流量限制方法,应用于部署在应用服务器上的网关,可以包括:
6.在检测到流量限制事件时,获取流量限制事件对应的部署在应用服务器上的目标应用的目标响应时间、限流触发时间阈值和最大处理数,其中最大处理数包括最大并发数或是最大令牌数;
7.根据限流触发时间阈值和目标响应时间确定目标限流比例,根据目标限流比例对最大处理数进行调整;
8.在接收到针对目标应用的访问请求时,根据调整后的最大处理数确定是否对访问请求进行流量限制。
9.第二方面,本发明实施例还提供了一种流量限制装置,配置于部署在应用服务器上的网关,可以包括:
10.最大处理数获取模块,用于在检测到流量限制事件时,获取流量限制事件对应的部署在应用服务器上的目标应用的目标响应时间、限流触发时间阈值和最大处理数,其中,最大处理数包括最大并发数或是最大令牌数;
11.最大处理数调整模块,用于根据限流触发时间阈值和目标响应时间确定目标限流比例,根据目标限流比例对最大处理数进行调整;
12.流量限制确定模块,用于在接收到针对目标应用的访问请求时,根据调整后的最大处理数确定是否对访问请求进行流量限制。
13.第三方面,本发明实施例还提供了一种应用服务器,可以包括:
14.一个或多个处理器;
15.存储器,用于存储一个或多个程序;
16.当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明任意实施例所提供的流量限制方法。
17.第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的流量限制方法。
18.本发明实施例的技术方案,在检测到流量限制事件时,可以先获取与流量限制事件相对应的部署在应用服务器上的目标应用的目标响应时间、限流触发时间阈值和最大处理数,然后根据限流触发时间阈值和目标响应时间确定目标限流比例,进而根据目标限流比例对最大处理数进行调整,由此得到了与动态流量匹配的及时调整后的最大处理数;由此,在接收到针对于目标应用的访问请求时,可以根据上述调整后的最大处理数确定是否对访问请求进行流量限制。上述技术方案,通过与动态流量匹配的最大处理数进行访问请求的流量限制,由此在面对突发流量时,可以以相对平滑的方式进行访问请求的丢弃和路由,达到了流量稳定性的有效控制的效果。
附图说明
19.图1是本发明实施例一中的一种流量限制方法的流程图;
20.图2a是本发明实施例一中一种流量限制方法中可选示例的第一的示意图;
21.图2b是本发明实施例一中一种流量限制方法中可选示例的第二的示意图;
22.图2c是本发明实施例一中一种流量限制方法中可选示例的流程图;
23.图3是本发明实施例二中的一种流量限制方法的流程图;
24.图4是本发明实施例二中一种流量限制方法中可选示例的流程图;
25.图5是本发明实施例三中的一种流量限制装置的结构框图;
26.图6是本发明实施例四中的一种应用服务器的结构示意图。
具体实施方式
27.下面结合附图和实施例对本发明作进一步详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
28.实施例一
29.图1是本发明实施例一中提供的一种流量限制方法的流程图。本实施例可适用于流量限制的情况,尤其适用于基于最大处理数进行流量限制的情况,该最大处理数是根据动态流量确定的。该方法可以是由本发明实施例提供的流量限制装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在应用服务器上,具体来说可以是配置于部署在应用服务器上的网关(gateway)上,如应用程序编程接口(application programming interface,api)网关。
30.参见图1,本发明实施例的方法具体包括如下步骤:
31.s110、在检测到流量限制事件时,获取与流量限制事件对应的部署在应用服务器上的目标应用的目标响应时间、限流触发时间阈值和最大处理数,其中,最大处理数包括最大并发数或是最大令牌数。
32.其中,流量限制事件可以是在存在流量限制(即限流)需求时触发的事件,如限流配置开关由关闭状态转变为开启状态时触发的事件、在接收到流量限制指令时触发的事件、在访问请求响应过慢时触发的事件等,在此未做具体限定。由于流量限制事件可以是网
关在接收到用于对部署在应用服务器上的某个目标应用进行访问的访问请求时,对该访问请求进行限制的事件,因此在检测到该流量限制事件后,可以先确定与其对应的目标应用,然后再确定该目标应用的目标响应时间、限流触发时间阈值和最大处理数。需要说明的,流量限制事件是针对某个目标应用的原因是,应用服务器上可能部署有成百上千个目标应用,不同的目标应用的流量处理能力、动态流量、最大处理数等均可能存在差异性,因此网关在确定是否进行流量限制时,是以目标应用为维度进行确定的。上述动态流量可以理解为随着时间推移而实时变化的流量。
33.具体的,目标响应时间可以是目标应用的响应时间,如当前响应时间、各当前响应时间的平均响应时间等,其中当前响应时间可以理解为以网关接收到某个访问请求为起始点并且以网关再接收到与该访问请求关联的第一响应结果为结束点的时间段,该第一响应结果可以是基于访问请求对目标应用进行访问后该目标应用响应的结果、因为流量限制而导致无法基于访问请求对目标应用进行访问后响应的结果等。限流触发时间阈值可以是预先设置的用于触发限流机制的时间阈值,其可以理解为相关人员能够接受的最慢的目标响应时间,若再慢则需要通过限流机制来保证目标响应时间。最大处理数可以是最大并发数或是最大令牌数,其中最大并发数可以应用在基于时间点的限流机制中,最大令牌数可以应用在基于时间窗的限流机制中。
34.在实际应用中,可选的,上述流量限制事件的触发过程可以是:基于第一预设时间间隔获取目标响应时间;如果目标响应时间大于或是等于预先为目标应用设置的限流触发时间阈值,则触发流量限制事件。其中第一预设时间间隔可以是预先设置的时间间隔,如10秒、20秒等。当目标响应时间大于或等于限流触发时间阈值时,这说明此时的目标响应时间已经是相关人员无法接受的响应时间,需要进行限流,因此可以触发上述流量限制事件。
35.s120、根据限流触发时间阈值和目标响应时间确定目标限流比例,并根据目标限流比例对最大处理数进行调整。
36.其中,目标限流比例可以是用于对最大处理数进行调整以进行与动态流量匹配的流量限制的比例,如30%、60%等。需要说明的是,设置目标限流比例的原因在于,在进行流量限制时,若对处于流量限制期间内的全部的访问请求均进行限制,这对用户体验而言是非常糟糕的。因此,为了能够同时保证用户体验和目标应用的响应速度,可以根据限流触发时间阈值和目标响应时间确定目标限流比例,然后再基于该目标限流比例对最大处理数进行调整,由此确定出最终能够有多少流量(即访问请求)路由给目标应用。
37.在此基础上,可选的,由于限流触发时间阈值(预先设置的未出现变化的数值)和目标响应时间间的差值越多,这说明目标应用的响应速度越慢,而且目标限流比例可以表示出对最大处理数中多少比例的流量进行限制,因此目标响应时间和目标限流比例可以呈负相关,即目标响应时间越大则目标限流比例越小,换言之,目标应用的响应速度越慢,则需要对最大处理数中更多比例的流量进行限制。再可选的,由于调整后的最大处理数可以表示出网关最终允许通过的流量的多少,因此目标限流比例和调整后的最大处理数也可以呈负相关,示例性的,对最大处理数进行调整的过程可以是调整后的最大处理数=调整前的最大处理数*(1

目标限流比例)。当然,也可以基于其余的调整方案进行最大处理数的调整,在此未做具体限定。
38.s130、在接收到针对目标应用的访问请求时,根据调整后的最大处理数确定是否
对访问请求进行流量限制。
39.其中,在接收到访问请求后,如果此时目标应用处于限流机制中,尤其是处于与最大处理数有关的限流机制中,那么可以根据调整后的最大处理数确定是否对访问请求进行流量限制。在实际应用中,可选的,上述各步骤可以基于至少两个线程执行,其中一部分线程用于执行s110和s120中的数值调整过程,另一部分线程用于执行s130中的流量限制过程,即数值调整和流量限制这两个过程没有绝对的先后执行顺序,例如,流量限制过程可以在接收到访问请求后执行,而数值调整过程可以是每隔一段时间执行一次,在此未做具体限定。再可选的,当进行流量限制时,可以将类似于通知消息的响应结果(如当前服务繁忙,请稍后重试)返回给对目标应用进行访问的应用访问方;当未进行流量限制时,可以将访问请求路由给目标应用,然后将该目标应用返回的响应结果返回给应用访问方。
40.需要说明的是,网关在接收到大量访问请求(即突发流量)时,可以根据能够反映出动态流量多少的目标响应时间和预先设置的限流触发时间阈值(即上限)确定目标限流比例,然后根据该目标限流比例及时动态地对最大处理数进行调整,以便根据调整后的与动态流量相匹配的最大处理数确定是否对后续接收到的访问请求进行流量限制。这样一来,网关在面对突发流量时,不再是简单地将高并发期间的访问请求进行丢弃,而是对突发流量进行了较好的平滑处理(即对可路由的访问请求的请求数量进行调整,以相对平滑的方式进行了访问请求的丢弃和路由),由此在资源有限的情况下,同时保证了目标应用的访问性能(即减少了等待时间)和流量的稳定性,提高了高并发期间内的访问请求的路由数量,其非常适用于对应用的安全性和稳定性有特殊要求的互联网金融行业。
41.本发明实施例的技术方案,在检测到流量限制事件时,可以先获取与流量限制事件相对应的部署在应用服务器上的目标应用的目标响应时间、限流触发时间阈值和最大处理数,然后根据限流触发时间阈值和目标响应时间确定目标限流比例,进而根据目标限流比例对最大处理数进行调整,由此得到了与动态流量匹配的及时调整后的最大处理数;由此,在接收到针对于目标应用的访问请求时,可以根据上述调整后的最大处理数确定是否对访问请求进行流量限制。上述技术方案,通过与动态流量匹配的最大处理数进行访问请求的流量限制,由此在面对突发流量时,可以以相对平滑的方式进行访问请求的丢弃和路由,达到了流量稳定性的有效控制的效果。
42.在此基础上,一种可选的技术方案,最大处理数为最大令牌数,根据调整后的最大处理数确定是否对访问请求进行流量限制,可以包括:基于第二预设时间间隔向令牌桶中投放调整后的最大令牌数的令牌;从令牌桶中获取与接收到的访问请求的请求数量一致的令牌;若获取成功,则将访问请求路由给目标应用,否则对访问请求进行流量限制。
43.其中,最大令牌数可以应用在基于时间窗的限流机制中,如在预先设置的时间窗内网关最多允许请求数量为最大令牌数的访问请求路由至目标应用上。具体的,令牌(token)是一种能够控制站点占有媒体的特殊帧,用来区别数据帧与其它控制帧;令牌桶可以是用于存储令牌的容器,其内最多能够存储调整后的最大令牌数的令牌;第二预设时间间隔可以理解为上文中的时间窗。在此基础上,基于第二预设时间间隔向令牌桶中投放令牌数量是调整后的最大令牌数的令牌的投放过程可以是:根据第二预设时间间隔和该调整后的最大令牌数确定投放速度,并基于投放速度向令牌桶中投放令牌,需要说明的是,当令牌桶中容纳的令牌的令牌数量为调整后的最大令牌数时,多余的令牌会被溢出。在投放令
牌过程中,可以从令牌桶中获取与接收到的访问请求的请求数量一致的令牌,即接收到一个访问请求则从令牌桶中获取一个令牌。需要强调的是,在令牌桶中未容纳有任何令牌时是无法成功获取到令牌的,因此执行令牌获取操作后,可以先确定是否成功获取到令牌,若是则说明在第二预设时间间隔内路由给目标应用的访问请求的请求数量未超过调整后的最大令牌数,因此可以将最新接收到的访问请求路由给目标应用;否则,这说明在第二预设时间间隔内路由给目标应用的访问请求的请求数量已经超过调整后的最大令牌数,此时可以对最新接收到的访问请求进行流量限制,即对其进行丢弃或是缓存,由此可以保证在第二预设时间间隔内路由至目标应用的访问请求的请求数量小于或等于调整后的最大令牌数,达到了流量限制的效果。
44.另一可选的技术方案,最大处理数为最大并发数,在接收到针对目标应用的访问请求时,根据调整后的最大处理数确定是否对访问请求进行流量限制,可以包括:将调整后的最大并发数作为计数器的初始的计数数值;如果接收到针对目标应用的访问请求,则确定计数数值是否为0;若是,则对访问请求进行流量限制,否则将访问请求路由给目标应用,且对计数数值进行减法处理,根据减法处理结果更新计数数值;和/或,若接收到来自于目标应用的第二响应结果,则对计数数值进行加法处理,并根据加法处理结果更新计数数值。
45.其中,最大并发数可以是应用在基于时间点的限流机制中,如目标应用在同一时间点上最多可处理最大并发数的访问请求。将时间点和时间窗对比来看,假设目标应用的平均响应时间是1毫秒(即在1秒的时间窗内能够处理1000个访问请求),由此网关在时间窗内能够允许1000*最大并发数的访问请求通过。上述基于时间点的限流机制是可以基于计算器实现,具体的,将调整后的最大并发数作为计数器的初始的计数数值,在接收到针对目标应用的访问请求时,先确定计数数值是否为0,如果否则说明目标应用在同一时间点内正在处理的访问请求的请求数量小于调整后的最大并发数,即其还能处理更多的访问请求,由此可以将该访问请求路由至目标应用,且对计数数值进行减法处理以使减法处理后的计数数值和目标应用在同一时间点正在处理的访问请求的请求数量相匹配;如果否则说明目标应用在同一时间点内正在处理的访问请求的请求数量等于调整后的最大并发数,即其无法处理更多的访问请求,由此可以对该访问请求进行流量限制,即对其进行丢弃或缓存。与此同时,在接收到来自于目标应用的第二响应结果时,这说明目标应用已对其接收到的某访问请求响应完毕,由此可以对该计数数值进行加法处理以使加法处理后的计数数值和目标应用在同一时间点正在处理的访问请求的请求数量匹配,由此可以将目标应用在同一时间点内处理的访问请求的请求数量控制在调整后的最大并发数以内,达到了流量限制的效果。
46.再一可选的技术方案,根据调整后的最大处理数确定是否对访问请求进行流量限制,可以包括:如果目标应用的各限流配置开关中的目标限流配置开关的开关状态为开启状态,则根据调整后的最大处理数确定是否对访问请求进行流量限制;否则,如果各限流配置开关中存在处于开启状态的限流配置开关,则基于处于开启状态的限流配置开关对应的限流因素确定是否对访问请求进行流量限制。其中,部署在同一应用服务器上的各目标应用的应用属性千差万别,为了更好地保证每个目标应用的访问性能,可以预先为来自不同渠道和/或适用不同场景的目标应用设置匹配的限流机制,在此基础上,针对每个目标应用,网关可以通过与该目标应用对应的各限流配置开关的开关状态确定是采用哪个限流机
制对针对该目标应用的访问请求进行处理。具体的,接收到访问请求后,可以先确定与该访问请求对应的目标应用的各限流配置开关中的目标限流配置开关的开关状态是否为开启状态,其中各限流配置开关和各限流机制之间具有一一对应关系,而目标限流配置开关可以是各限流配置开关中与基于调整后的最大处理数进行流量限制有关的限流配置开关;若是则根据调整后的最大处理数确定是否对访问请求进行流量限制,否则基于与各限流配置开关中处于开启状态的限流配置开关对应的限流因素确定是否对访问请求进行流量限制。也就是说,基于调整后的最大处理数进行流量限制的限流机制的优先级最高,当其启用后则基于这一限流机制进行流量限制,否则再基于其余的开启的限流机制进行流量限制,由此可以保证各目标应用在面对突发流量时均能采用与自身的应用属性相匹配的限流机制进行流量限制。
47.为了更好地理解上述各步骤的具体实现过程,下面结合具体示例对其进行示例性的说明。示例性的,在互联网金融的业务场景下,考虑到其具有安全性和稳定性要求较高和资源有限的特点,在此基础上,为了提高目标应用在并发条件下的可用性,参见图2a,前端微服务集群可以是负责发送访问请求(request)的微服务集群,后端微服务集群可以是部署有多个目标应用(client)的应用服务器,route可以是用来显示、人工添加和/或修改路由表项目的。在流量分发过程中,访问请求可以先经过网关过滤(filter),并将过滤通过的访问请求路由给目标应用,具体的网关过滤流程可以参见图2b,其具体实施步骤如下所示:
48.1、预先为各基础微服务引入相应的依赖包,以便为各目标应用匹配合适的限流机制(即限流方式)和限流参数(如最大令牌数、最大并发数、限流内容(ip或是url请求限流)、令牌单次增量、时间间隔、白名单等)。
49.2、当访问请求经nginx(高性能的http和反向代理服务器)到达网关时,网关识别请求路径导向,在headler map中找到与访问请求相匹配的路由发送到web headler,然后web headler经过提前设定的过滤器filter链路对访问请求进行流量过滤(即流量限制)。
50.3、在访问请求进入到filter前,由于用户为各目标应用预先配置了相应的限流机制,可选的限流机制如下所示:
[0051][0052]
a)当全局url(统一资源定位符,uniform resource locator)令牌桶限流配置开关处于开启状态时,目标应用的各url都会受到限流机制的控制,此时的限流参数可以是桶容量、最大令牌数、令牌单次增量、令牌递增时间等;
[0053]
b)当全局ip(网络互连协议,internet protocol)令牌桶限流配置开关处于开启状态时,全部交易的ip也将都会受到限流机制的控制,此时限流参数可以是桶容量、最大令牌数、令牌单次增量、令牌递增时间等;
[0054]
c)当url自动令牌桶限流配置开关(即上文中阐述的目标限流配置开关)处于开启状态时,全部交易都会受到基于调整后的最大处理数进行流量限制的限流机制的影响,此时的限流参数可以包括桶容量、令牌递增数量、令牌递增时间、直方图统计周期、直方图计算单个url的最大时间、最小响应阈值等;
[0055]
d)当组合url限流配置开关处于开启状态时,支持多uri组合限制,如uria和urib需要放在一个令牌桶中进行流量限制时,可以配置如uria|urib=tps。#/msper

web

test/gettesttrans.do=5\,由此也能满足多个url对限流域值的公用。
[0056]
4、当访问请求传输到filter中,如果目标限流配置开关处于开启状态(即用户开启了对url的自动限流过滤器

rateconcurrentautogatewayfilter),那么可以执行下述步骤,参见图2c:
[0057]
a、读取目标应用的属性文件,判断目标限流配置开关是否处于开启状态(即判断是否配置了步骤3中的c)的url自动令牌桶限流即自动限流),如果否则采用其余限流机制进行处理,否则执行下一步;
[0058]
b、从属性文件中获取限流白名单,确定从访问请求中读取到的url是否配置在限流白名单中。如果是则说明这一url无需进行限流,否则执行下一步;
[0059]
c、判断url是否在运行时的限流集合列表(filter list)中,需要说明的,加入到限流集合列表中的url是需要进行当前响应时间统计的url,即需要进行限流的url,而且限流集合列表中可以记录有每个url的最大令牌数。
[0060]
如果是则执行下一步;
[0061]
d、尝试获取令牌,并确定是否成功获取到令牌;
[0062]
e、如果是则拒绝对应的访问请求;否则,将访问请求路由给目标应用,并将限流集合列表中的url进行清除(因为本次的当前响应时间统计完毕)。
[0063]
实施例二
[0064]
图3是本发明实施例二中提供的一种流量限制方法的流程图。本实施例以上述各技术方案为基础进行优化。在本实施例中,可选的,根据限流触发时间阈值和目标响应时间确定目标限流比例,可以包括:根据目标响应时间和限流触发时间阈值确定中间限流比例,其中目标响应时间和中间限流比例呈负相关;获取目标应用的预先设置的最大限流比例,根据最大限流比例和中间限流比例确定目标限流比例。与上述各实施例相同或相应的术语的解释在此不再赘述。
[0065]
参见图3,本实施例的方法具体可以包括如下步骤:
[0066]
s210、在检测到流量限制事件时,获取与流量限制事件对应的部署在应用服务器上的目标应用的目标响应时间、限流触发时间阈值和最大处理数,其中,最大处理数包括最大并发数或是最大令牌数。
[0067]
s220、根据目标响应时间和限流触发时间阈值确定中间限流比例,其中,目标响应时间和中间限流比例呈负相关。
[0068]
其中,正如上文所述,限流触发时间阈值和目标响应时间间的差值越多时,目标应用的响应速度越慢,而且中间限流比例可以表示出对最大处理数中多少比例的流量进行限制,因此目标响应时间和中间限流比例可以呈负相关。在此基础上,可选的,中间限流比例可以通过如下公式确定:中间限流比例limitedrate=(目标响应时间meanelapsedtime

限流触发时间阈值triggerthreshold)/triggerthreshold。
[0069]
s230、获取目标应用的预先设置的最大限流比例,并根据最大限流比例和中间限流比例确定目标限流比例,根据目标限流比例对最大处理数进行调整。
[0070]
其中,最大限流比例可以是预先为目标应用设置的最大的限流比例,换言之,最多只能对最大并发数中的最大限流比例的流量进行限制。根据最大限流比例maxlimitedrate和limitedrate确定目标限流比例的方式可以是:目标限流比例=min(0.9,limitedrate),即当limitedrate小于maxlimitedrate时,可以将limitedrate作为目标限流比例;否则,将maxlimitedrate作为目标限流比例,由此有效地将目标限流比例控制在maxlimitedrate以内。
[0071]
由上可知,在基于目标限流比例对最大处理数进行调整后,调整后的最大处理数和目标响应时间呈负相关,或者说二者可以构成反比函数。示例性的,假设x轴是目标响应时间,y轴是调整后的最大处理数,随着目标响应时间的增加(这说明目标应用的处理能力已经无法满足此时的并发流量),调整后的最大处理数随之下降,由此从网关层面更好地控制了流向目标应用的并发流量。
[0072]
在此基础上,上述最大处理数的调整过程可以通过如下公式表示:
[0073]
调整后的最大处理数=调整前的最大处理数
[0074]
[0075]
s240、在接收到针对目标应用的访问请求时,根据调整后的最大处理数确定是否对访问请求进行流量限制。
[0076]
本发明实施例的技术方案,通过目标响应时间和限流触发时间阈值确定出与目标响应时间呈负相关的中间限流比例;进而,根据目标应用的预先设置的最大限流比例和中间限流比例确定目标限流比例,由此在根据目标限流比例对最大处理数进行调整后,可以得到能够与目标响应时间构成反比函数的调整后的最大处理数,从而保证了调整后的最大处理数中的一定比例的流量能够流向目标应用,避免了出现访问请求的大量堆积的情况。
[0077]
在上述任一技术方案的基础上,可选的,在接收到针对目标应用的访问请求时之后,上述流量限制方法,还可包括:从访问请求中获取目标应用的统一资源定位符,并确定统一资源定位符是否位于预先设置的限流白名单中;如果否,则将响应时间确定标记记录在访问请求的上下文中;在接收到针对目标应用的第一响应结果时,确定与第一响应结果对应的访问请求的上下文中是否记录有响应时间确定标记;如果是,则根据访问请求的接收时间和第一响应结果的接收时间确定目标应用的当前响应时间,将当前响应时间记录在直方图缓存中;相应的,获取流量限制事件对应的部署在应用服务器上的目标应用的目标响应时间,可以包括:确定与流量限制事件对应的部署在应用服务器上的目标应用;从直方图缓存中获取目标应用的目标响应时间,其中,目标响应时间是根据当前响应时间确定的。
[0078]
其中,限流白名单中的url可以是无需进行限流的url,即具有这样的url的访问请求是无需进行限流的请求。那么,针对未配置在限流白名单中的url,由于限流过程的一个关键因素是url的目标响应时间,因此在对这样的url进行处理的过程中可以统计其当前响应时间,以便根据当前响应时间确定url的目标响应时间。据此,将响应时间确定标记记录在访问请求的上下文中,这有助于网关在接收到针对目标应用的第一响应结果时,可以根据访问请求的上下文中是否记录有响应时间确定标记来确定是否需要记录url的当前响应时间,而无需再次通过判断url是否配置在限流白名单中进行确定。当前响应时间可以包括访问请求的接收时间和第一响应结果的接收时间间的时间差,将当前响应时间记录在直方图缓存中,以便后续可以从该直方图缓存中获取目标响应时间。示例性的,目标应用和url间具有对应性,针对每个url,可以根据url在第一预设时间间隔内的各当前响应时间确定目标响应时间,由此通过直方图统计的方式达到了目标响应时间的准确确定的效果。
[0079]
为了更好地理解上述各步骤的具体实现过程,下面结合具体示例对其进行示例性的说明。示例性的,参见图4:
[0080]
1、初始化直方图缓存(hisogramcache),迭代遍历直方图缓存中的每个url,每隔10s从直方图缓存中分别获取每个url的平均响应时间。
[0081]
2、针对每个url,如果其的平均响应时间(这里以目标响应时间是平均响应时间为例)小于限流触发时间阈值,则无需对其进行限流;否则,基于url的平均响应时间进行反比函数计算得到调整后的最大令牌数,并基于调整后的最大令牌数对限流集合列表中的该url的最大令牌数进行更新。
[0082]
3、当接收到访问请求时,确定与访问请求对应的目标应用的目标限流配置开关是否处于开启状态,如果否则说明无需对其进行限流,即无需在访问请求的上下文中记录响应时间确定标记;否则,确定从访问请求中读取得到的url是否配置在限流白名单中。
[0083]
4、如果是则说明无需对其进行限流,即无需在访问请求的上下文中记录响应时间
确定标记;否则,基于直方图统计任务统计url的当前响应时间,并将其记录在直方图缓存中,以便如a中阐述的每隔10s从直方图缓存中获取该url的平均响应时间。
[0084]
实施例三
[0085]
图5为本发明实施例三提供的流量限制装置的结构框图,该装置用于执行上述任意实施例所提供的流量限制方法。该装置与上述各实施例的流量限制方法属于同一个发明构思,在流量限制装置的实施例中未详尽描述的细节内容,可以参考上述流量限制方法的实施例。参见图5,该装置配置于部署在应用服务器上的网关,可以包括:最大处理数获取模块310、最大处理数调整模块320和流量限制确定模块330。
[0086]
其中,最大处理数获取模块310,用于在检测到流量限制事件时,获取流量限制事件对应的部署在应用服务器上的目标应用的目标响应时间、限流触发时间阈值和最大处理数,其中,最大处理数包括最大并发数或是最大令牌数;
[0087]
最大处理数调整模块320,用于根据限流触发时间阈值和目标响应时间确定目标限流比例,根据目标限流比例对最大处理数进行调整;
[0088]
流量限制确定模块330,用于在接收到针对目标应用的访问请求时,根据调整后的最大处理数确定是否对访问请求进行流量限制。
[0089]
可选的,最大处理数调整模块320,可以包括:
[0090]
中间限流比例确定单元,用于根据目标响应时间和限流触发时间阈值确定中间限流比例,其中,目标响应时间和中间限流比例呈负相关;
[0091]
目标限流比例确定单元,用于获取目标应用的预先设置的最大限流比例,并根据最大限流比例和中间限流比例确定目标限流比例。
[0092]
可选的,上述流量限制装置,还可以包括:
[0093]
目标响应时间获取模块,用于基于第一预设时间间隔获取目标响应时间;
[0094]
流量限制事件触发模块,用于如果目标响应时间大于或是等于预先为目标应用设置的限流触发时间阈值,则触发流量限制事件。
[0095]
可选的,上述流量限制装置,还可以包括:
[0096]
统一资源定位符确定模块,用于在接收到针对目标应用的访问请求时之后,从访问请求中获取目标应用的统一资源定位符,并确定该统一资源定位符是否位于预先设置的限流白名单中;
[0097]
响应时间确定标记记录模块,用于如果否,则将响应时间确定标记记录在访问请求的上下文中;
[0098]
响应时间确定标记确定模块,用于在接收到针对目标应用的第一响应结果时,确定与第一响应结果对应的访问请求的上下文中是否记录有响应时间确定标记;
[0099]
当前响应时间记录模块,用于如果是,则根据访问请求的接收时间和第一响应结果的接收时间确定目标应用的当前响应时间,并将当前响应时间记录在直方图缓存中;
[0100]
相应的,最大处理数获取模块310,可以包括:
[0101]
目标应用确定单元,用于确定与流量限制事件对应的部署在应用服务器上的目标应用;
[0102]
目标响应时间确定单元,用于从直方图缓存中获取该目标应用的目标响应时间,其中,目标响应时间是根据当前响应时间确定的。
[0103]
可选的,最大处理数为最大并发数,流量限制确定模块330,可以包括:
[0104]
计数数值得到单元,用于将调整后的最大并发数作为计数器的初始的计数数值;
[0105]
计数数值确定单元,用于如果接收到针对目标应用的访问请求,则确定该计数数值是否为0;
[0106]
计数数值减法处理单元,用于若是,则对访问请求进行流量限制,否则将访问请求路由给目标应用,且对计数数值进行减法处理,并根据减法处理结果更新计数数值;和/或,
[0107]
计数数值加法处理单元,用于如果接收到来自于目标应用的第二响应结果,则对计数数值进行加法处理,并根据加法处理结果更新计数数值。
[0108]
可选的,最大处理数为最大令牌数,流量限制确定模块330,可以包括:
[0109]
令牌投放单元,用于基于第二预设时间间隔向令牌桶中投放调整后的最大令牌数的令牌;
[0110]
令牌获取单元,用于从令牌桶中获取接收到的访问请求的请求数量一致的令牌;
[0111]
流量限制确定单元,用于如果获取成功,则将访问请求路由给目标应用,否则对访问请求进行流量限制。
[0112]
可选的,流量限制确定模块330,可以包括:
[0113]
第一限流单元,用于若目标应用的各限流配置开关中的目标限流配置开关的开关状态为开启状态,则根据调整后的最大处理数确定是否对访问请求进行流量限制;
[0114]
第二限流单元,用于否则,若各限流配置开关中存在处于开启状态的限流配置开关,则基于处于开启状态的限流配置开关对应的限流因素确定是否对访问请求进行流量限制。
[0115]
本发明实施例三所提供的流量限制装置,通过最大处理数获取模块和最大处理数调整模块相互配合,在检测到流量限制事件时,可以先获取与流量限制事件相对应的部署在应用服务器上的目标应用的目标响应时间、限流触发时间阈值和最大处理数,然后根据限流触发时间阈值和目标响应时间确定目标限流比例,进而根据目标限流比例对最大处理数进行调整,由此得到了与动态流量匹配的及时调整后的最大处理数;由此,通过流量限制确定模块在接收到针对于目标应用的访问请求时,可以根据上述调整后的最大处理数确定是否对访问请求进行流量限制。上述装置,通过与动态流量相匹配的最大处理数进行访问请求的流量限制,由此在面对突发流量时,可以以相对平滑的方式进行该访问请求的丢弃和路由,达到了流量稳定性的有效控制的效果。
[0116]
本发明实施例所提供的流量限制装置可执行本发明任意实施例所提供的流量限制方法,具备执行方法相应的功能模块和有益效果。
[0117]
值得注意的是,上述流量限制装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0118]
实施例四
[0119]
图6为本发明实施例四提供的一种应用服务器的结构示意图,如图6所示,该服务器包括存储器410、处理器420、输入装置430和输出装置440。服务器中的处理器420的数量可以是一个或多个,图6中以一个处理器420为例;服务器中的存储器410、处理器420、输入装置430和输出装置440可以通过总线或其它方式连接,图6中以通过总线450连接为例。
[0120]
存储器410作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的流量限制方法对应的程序指令/模块(例如,流量限制装置中的最大处理数获取模块310、最大处理数调整模块320和流量限制确定模块330)。处理器420通过运行存储在存储器410中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述的流量限制方法。
[0121]
存储器410可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器410可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器410可进一步包括相对于处理器420远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0122]
输入装置430可用于接收输入的数字或字符信息,以及产生与装置的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏等显示设备。
[0123]
实施例五
[0124]
本发明实施例五提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种流量限制方法,应用于部署在应用服务器上的网关,可以包括:
[0125]
在检测到流量限制事件时,获取流量限制事件对应的部署在应用服务器上的目标应用的目标响应时间、限流触发时间阈值和最大处理数,其中,最大处理数包括最大并发数或是最大令牌数;
[0126]
根据限流触发时间阈值和目标响应时间确定目标限流比例,根据目标限流比例对最大处理数进行调整;
[0127]
在接收到针对目标应用的访问请求时,根据调整后的最大处理数确定是否对访问请求进行流量限制。
[0128]
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的流量限制方法中的相关操作。
[0129]
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。依据这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0130]
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
再多了解一些

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

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

相关文献