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

限流方法、装置及电子设备与流程

2022-02-25 18:06:31 来源:中国专利 TAG:


1.本发明涉及通信技术领域,尤其涉及一种限流方法、装置及电子设备。


背景技术:

2.令牌桶算法来源于计算机网络,在网络传输数据时,为了防止网络阻塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送。令牌桶算法可以控制发送到网络上数据的数目,并允许突发数据的发送。大小固定的令牌桶可自行以恒定的速率源源不断地产生令牌。
3.目前,令牌桶仅能以恒定的速率产生令牌,导致限流的灵活性较差。


技术实现要素:

4.本发明实施例提供一种限流方法、装置及电子设备,以解决现有技术中令牌桶仅能以恒定的速率产生令牌,导致限流的灵活性较差的问题。
5.为了解决上述技术问题,本发明是这样实现的:
6.第一方面,本发明实施例提供了一种限流方法,所述方法包括:
7.获取滑动时间窗口内令牌桶中的平均令牌数,所述滑动时间窗口为包含多个连续的时间片段的时间窗口,所述滑动时间窗口的窗口后沿为当前时刻;
8.获取当前时刻所述令牌桶中的第一令牌数;
9.基于所述平均令牌数与所述第一令牌数调整所述令牌桶中的令牌数;
10.基于调整后的所述令牌桶中的令牌数进行限流处理。
11.第二方面,本发明实施例提供了一种限流装置,所述限流装置包括:
12.第一获取模块,用于获取滑动时间窗口内令牌桶中的平均令牌数,所述滑动时间窗口为包含多个连续的时间片段的时间窗口,所述滑动时间窗口的窗口后沿为当前时刻;
13.第二获取模块,用于获取当前时刻所述令牌桶中的第一令牌数;
14.调整模块,用于基于所述平均令牌数与所述第一令牌数调整所述令牌桶中的令牌数;
15.限流模块,用于基于调整后的所述令牌桶中的令牌数进行限流处理。
16.第三方面,本发明实施例提供了一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现上述第一方面所述的限流方法的步骤。
17.第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的限流方法的步骤。
18.本实施例中,获取滑动时间窗口内令牌桶中的平均令牌数,所述滑动时间窗口为包含多个连续的时间片段的时间窗口,所述滑动时间窗口的窗口后沿为当前时刻;获取当前时刻所述令牌桶中的第一令牌数;基于所述平均令牌数与所述第一令牌数调整所述令牌
桶中的令牌数;基于调整后的所述令牌桶中的令牌数进行限流处理。这样,根据滑动时间窗口监测滑动时间窗口内的令牌桶中的令牌数,预测系统并发量,从而动态调整令牌桶生成令牌的速率,能够实现滑动时间窗口和令牌桶算法相结合进行动态限流,从而提高限流的灵活性。
附图说明
19.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
20.图1是本发明实施例提供的一种限流方法的流程图之一;
21.图2是本发明实施例提供的一种限流方法的流程图之二;
22.图3是本发明实施例提供的一种限流装置的结构示意图之一;
23.图4是本发明实施例提供的一种限流装置的结构示意图之二;
24.图5是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
25.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
26.参见图1,图1是本发明实施例提供的一种限流方法的流程图,如图1所示,包括以下步骤:
27.步骤101、获取滑动时间窗口内令牌桶中的平均令牌数,所述滑动时间窗口为包含多个连续的时间片段的时间窗口,所述滑动时间窗口的窗口后沿为当前时刻。
28.其中,时间片段所表征的时间可以为0.5s,或者可以为1s,或者可以为2s,等等,本实施例对此不进行限定。以滑动时间窗口包含6个时间片段,每个时间片段为0.5s为例,每个滑动时间窗口表征的时间为3s,则当前时刻往前3s均在滑动时间窗口内。滑动时间窗口每过一个时间片段,时间窗口向后移动一个时间片段,时间窗口划分的时间片段越小,限流控制越准确。
29.另外,所述滑动时间窗口内令牌桶中的平均令牌数可以为所述多个连续的时间片段的令牌数的平均值。可以在每个时间片段获取一次令牌桶中的令牌数,或者,可以在每个时间片段获取多次令牌桶中的令牌数。以在每个时间片段获取一次令牌桶中的令牌数为例,可以在时间片段的开始时刻获取令牌桶中的令牌数,或者可以在时间片段的结束时刻获取令牌桶中的令牌数;或者还可以在时间片段的中间时刻获取令牌桶中的令牌数,等等,本实施例对此不进行限定。
30.以滑动时间窗口包含6个时间片段,每个时间片段为1s为例,若当前时刻为08时00分06秒,则滑动时间窗口的第一时间片段为:08时00分00秒至08时00分01秒,滑动时间窗口的最后一个时间片段为:08时00分05秒至08时00分06秒。作为一种实施方式,可以在时间片
段的开始时刻获取令牌桶中的令牌数,例如,可以分别获取08时00分00秒、08时00分01秒、08时00分02秒、08时00分03秒、08时00分04秒及08时00分05秒时令牌桶中的令牌数,将获取到的六个令牌数求平均值,得到该滑动时间窗口内令牌桶中的平均令牌数。
31.进一步的,所述限流方法可以应用于电子设备。所述令牌桶可以是电子设备的内部存储池,用于容纳令牌。
32.步骤102、获取当前时刻所述令牌桶中的第一令牌数。
33.其中,所述第一令牌数可以为当前时刻所述令牌桶中的令牌数。
34.步骤103、基于所述平均令牌数与所述第一令牌数调整所述令牌桶中的令牌数。
35.其中,所述基于所述平均令牌数与所述第一令牌数调整所述令牌桶中的令牌数,可以包括:在所述平均令牌数小于第一预设系数与所述第一令牌数的乘积的情况下,增大所述令牌桶中的令牌数,以得到所述调整后的所述令牌桶中的令牌数,在所述平均令牌数大于第二预设系数与所述第一令牌数的乘积的情况下,减小所述令牌桶中的令牌数,以得到所述调整后的所述令牌桶中的令牌数,所述第一预设系数小于所述第二预设系数;或者,还可以包括:在所述平均令牌数与第一令牌数的差值小于第一预设差值的情况下,增大所述令牌桶中的令牌数,在所述平均令牌数与第一令牌数的差值大于第二预设差值的情况下,减少所述令牌桶中的令牌数,第一预设差值小于第二预设差值;等等,本实施例对此不进行限定。
36.步骤104、基于调整后的所述令牌桶中的令牌数进行限流处理。
37.其中,在调整所述令牌桶中的令牌数后,以调整后的所述令牌桶中的令牌数进行限流处理。每允许一次访问请求,令牌桶中的令牌数减一,直至令牌桶中的令牌数达到第三预设阈值,此时,若再接收到访问请求,则拒绝所述访问请求,以达到限流目的。
38.本实施例中的限流方法可以应用于网关设备,所述网关设备可以为系统中的网关设备,通过网关设备进行限流,防止应用访问频率过大导致系统资源阻塞甚至系统崩溃,能够保证系统健康及稳定地运行。示例地,所述网关设备可以为能力开放平台中的网关设备。随着接入能力开放平台的应用越来越多,访问量激增,为了防止应用访问频率过大导致资源阻塞甚至系统崩溃,使业务系统健康及稳定的运行,能力开放平台引入网关,通过网关实现流量控制。
39.示例地,本实施例中的限流方法可以应用于系统中的网关。在系统启动后,系统启动定时任务,所述定时任务用于到达定时时间后根据系统当前并发量,动态更新令牌桶内的令牌数。网关实时接收访问请求,进行流控过滤。具体的,网关从令牌桶获取令牌,若获取不到令牌,则达到流控条件,直接拒绝访问请求;否则,当前访问请求未达到流控条件,允许该访问请求,对该访问请求进行后续处理。
40.目前采用令牌桶算法进行限流是采用恒定的令牌生成速率,本实施例中令牌桶生成令牌的速率可以根据系统实际的并发量动态调整,避免恒定的令牌生成速率配置较小,在系统能力范围内无法适应更高的并发量,浪费系统资源;同时避免恒定的令牌生成速率配置过高,当访问请求量处于低谷时,令牌桶中的令牌数一直处于高位,同样浪费了系统资源。本实施例中能够动态调整令牌桶中令牌数的生成量,资源利用率较高。
41.本实施例中,获取滑动时间窗口内令牌桶中的平均令牌数,所述滑动时间窗口为包含多个连续的时间片段的时间窗口,所述滑动时间窗口的窗口后沿为当前时刻;获取当
前时刻所述令牌桶中的第一令牌数;基于所述平均令牌数与所述第一令牌数调整所述令牌桶中的令牌数;基于调整后的所述令牌桶中的令牌数进行限流处理。这样,根据滑动时间窗口监测滑动时间窗口内的令牌桶中的令牌数,预测系统并发量,从而动态调整令牌桶生成令牌的速率,能够实现滑动时间窗口和令牌桶算法相结合进行动态限流,从而提高限流的灵活性。
42.可选的,所述基于所述平均令牌数与所述第一令牌数调整所述令牌桶中的令牌数,包括:
43.在所述平均令牌数小于第一预设系数与所述第一令牌数的乘积的情况下,增大所述令牌桶中的令牌数,以得到所述调整后的所述令牌桶中的令牌数;
44.在所述平均令牌数大于第二预设系数与所述第一令牌数的乘积的情况下,减小所述令牌桶中的令牌数,以得到所述调整后的所述令牌桶中的令牌数,所述第一预设系数小于所述第二预设系数。
45.其中,所述第一预设系数可以为0.1,或者0.2,或者0.3,等等,本实施例对此不进行限定。所述第二预设系数可以为0.7,或者0.8,或者0.9,等等,本实施例对此不进行限定。
46.另外,所述增大所述令牌桶中的令牌数,可以包括:计算所述第一令牌数与第一调整值的和,得到所述调整后的所述令牌桶中的令牌数,所述第一调整值大于0;或者,还可以包括:计算第一令牌数与第一调整系数的乘积,得到所述调整后的所述令牌桶中的令牌数,所述第一调整系数大于1;等等,本实施例对此不进行限定。所述减小所述令牌桶中的令牌数,可以包括:计算所述第一令牌数与第二调整值的差,得到所述调整后的所述令牌桶中的令牌数,所述第二调整值大于0,所述第一调整值可以与所述第二调整值相同或不同;或者,还可以包括:计算第一令牌数与第二调整系数的乘积,得到所述调整后的所述令牌桶中的令牌数,所述第二调整系数小于1;等等,本实施例对此不进行限定。
47.进一步的,在所述平均令牌数大于或等于第一预设系数与所述第一令牌数的乘积且所述平均令牌数小于或等于第二预设系数与所述第一令牌数的乘积的情况下,可以保持所述令牌桶中的令牌数不变。
48.该实施方式中,所述平均令牌数大于第一预设系数与所述第一令牌数的乘积,可以认为系统并发量较低,减小所述令牌桶中的令牌数,可以缩小令牌桶容量;所述平均令牌数小于第二预设系数与所述第一令牌数的乘积,可以认为系统并发量较高,增大所述令牌桶中的令牌数,可以增加令牌桶容量。通过缩小或增大令牌桶容量,实现令牌桶内令牌数的灵活控制,限流效果较好。
49.可选的,所述增大所述令牌桶中的令牌数,包括:
50.计算所述第一令牌数与预设调整值的和,得到所述调整后的所述令牌桶中的令牌数;
51.所述减小所述令牌桶中的令牌数,包括:
52.计算所述第一令牌数与所述预设调整值的差,得到所述调整后的所述令牌桶中的令牌数。
53.其中,所述预设调整值可以为根据经验获得,例如,可以根据历史访问量确定预设调整值;或者,可以通过调试获得,可以经过多次调试选取合适的值作为预设调整值,以实现较好的限流效果。在需要增大所述令牌桶中的令牌数时,所述调整后的所述令牌桶中的
令牌数可以为所述第一令牌数与预设调整值的和值;在需要减小所述令牌桶中的令牌数时,所述调整后的所述令牌桶中的令牌数可以为所述第一令牌数与所述预设调整值的差值。
54.该实施方式中,通过预设调整值动态调整所述令牌桶中的令牌数,便于调试获取到合适的预设调整值进行限流以达到较好的限流效果,避免引入较多的参数增大调试难度。
55.可选的,所述增大所述令牌桶中的令牌数,以得到所述调整后的所述令牌桶中的令牌数之后,所述方法还包括:
56.在所述调整后的所述令牌桶中的令牌数大于第一预设阈值的情况下,将所述调整后的所述令牌桶中的令牌数更新为所述第一预设阈值;
57.所述减小所述令牌桶中的令牌数,以得到所述调整后的所述令牌桶中的令牌数之后,所述方法还包括:
58.在所述调整后的所述令牌桶中的令牌数小于第二预设阈值的情况下,将所述调整后的所述令牌桶中的令牌数更新为所述第二预设阈值,其中,所述第一预设阈值大于所述第二预设阈值。
59.其中,所述第一预设阈值和第二预设阈值可以根据经验获得,例如,可以将历史访问量的最大值和最小值分别作为第一预设阈值和第二预设阈值。
60.该实施方式中,通过第一预设阈值和第二预设阈值限制了调整后的所述令牌桶中的最大令牌数和最小令牌数,避免无限制增大或缩小令牌桶容量。
61.可选的,所述基于调整后的所述令牌桶中的令牌数进行限流处理,包括:
62.实时接收访问请求;
63.在所述令牌桶中的令牌数大于第三预设阈值的情况下,允许所述访问请求,并将所述令牌桶中的令牌数减一;
64.在所述令牌桶中的令牌数小于或等于所述第三预设阈值的情况下,拒绝所述访问请求。
65.其中,所述第三预设阈值可以为较小的数值,例如,可以为0。可以按照一定时间间隔调整所述令牌桶中的令牌数,例如,可以以一个时间片段为间隔调整所述令牌桶中的令牌数,可以在每个时间片段的开始时刻调整所述令牌桶中的令牌数。
66.该实施方式中,基于令牌桶中的令牌数对实时接收的访问请求进行放行或拒绝放行,从而达到限流的目的;并且通过滑动时间窗口和令牌桶算法相结合进行动态限流,进行流控的精度较高。
67.作为一种具体的实施方式,限流方法应用于系统中的网关。在系统启动时,初始化配置第一预设阈值max、第二预设阈值min及预设调整值x。系统启动后,启动定时任务,并周期执行定时任务。如图2所示,在每个任务周期执行如下操作:
68.步骤201:定义滑动时间窗口大小,计算每个滑动时间窗口内令牌桶中的平均令牌数avg;
69.步骤202:获取令牌桶中的令牌数count;
70.步骤203:判断avg是否大于count*80%;若是,则执行步骤204,否则执行步骤207;
71.步骤204:判断min是否小于count-x;若是,则执行步骤205,否则执行步骤206;
72.步骤205:调整令牌数count为count-x;
73.步骤206:调整令牌数count为min;
74.步骤207:判断avg是否小于count*20%,若是,则执行步骤208,否则执行步骤211;
75.步骤208:判断count x是否大于max;若是,则执行步骤209,否则执行步骤210;
76.步骤209:调整令牌数count为max;
77.步骤210:调整令牌数count为count x;
78.步骤211:保持令牌数count不变。
79.其中,avg大于count*80%,可以认为一个滑动时间窗口内令牌桶中令牌数一直处于较多的状态,当前系统访问请求并发量不高,可以通过减小所述令牌桶中的令牌数释放部分并发资源;avg小于count*20%,可以认为一个滑动时间窗口内令牌桶中令牌数一直处于较少的状态,当前系统访问请求并发量较高,可以通过增大所述令牌桶中的令牌数获取更多的并发资源。
80.参见图3,图3是本发明实施例提供的一种限流装置的结构示意图之一,如图3所示,限流装置300包括:
81.第一获取模块301,用于获取滑动时间窗口内令牌桶中的平均令牌数,所述滑动时间窗口为包含多个连续的时间片段的时间窗口,所述滑动时间窗口的窗口后沿为当前时刻;
82.第二获取模块302,用于获取当前时刻所述令牌桶中的第一令牌数;
83.调整模块303,用于基于所述平均令牌数与所述第一令牌数调整所述令牌桶中的令牌数;
84.限流模块304,用于基于调整后的所述令牌桶中的令牌数进行限流处理。
85.可选的,如图4所示,所述调整模块303包括:
86.第一调整单元3031,用于在所述平均令牌数小于第一预设系数与所述第一令牌数的乘积的情况下,增大所述令牌桶中的令牌数,以得到所述调整后的所述令牌桶中的令牌数;
87.第二调整单元3032,用于在所述平均令牌数大于第二预设系数与所述第一令牌数的乘积的情况下,减小所述令牌桶中的令牌数,以得到所述调整后的所述令牌桶中的令牌数,所述第一预设系数小于所述第二预设系数。
88.可选的,所述第一调整单元3031具体用于:
89.在所述平均令牌数小于第一预设系数与所述第一令牌数的乘积的情况下,计算所述第一令牌数与预设调整值的和,得到所述调整后的所述令牌桶中的令牌数;
90.所述第二调整单元3032具体用于:
91.在所述平均令牌数大于第二预设系数与所述第一令牌数的乘积的情况下,计算所述第一令牌数与所述预设调整值的差,得到所述调整后的所述令牌桶中的令牌数。
92.可选的,所述第一调整单元3031还用于:
93.在所述调整后的所述令牌桶中的令牌数大于第一预设阈值的情况下,将所述调整后的所述令牌桶中的令牌数确定为所述第一预设阈值;
94.所述第二调整单元3032还用于:
95.在所述调整后的所述令牌桶中的令牌数小于第二预设阈值的情况下,将所述调整
后的所述令牌桶中的令牌数确定为所述第二预设阈值,其中,所述第一预设阈值大于所述第二预设阈值。
96.可选的,所述限流模块304具体用于:
97.实时接收访问请求;
98.在所述令牌桶中的令牌数大于第三预设阈值的情况下,允许所述访问请求,并将所述令牌桶中的令牌数减一;
99.在所述令牌桶中的令牌数小于或等于所述第三预设阈值的情况下,拒绝所述访问请求。
100.限流装置能够实现图1的方法实施例中的各个过程,为避免重复,这里不再赘述。
101.参见图5,图5是本发明实施例提供的一种电子设备的结构示意图,如图5所示,电子设备400包括:存储器402、处理器401及存储在所述存储器402上并可在所述处理器401上运行的程序,其中:
102.所述处理器401读取存储器402中的程序,用于执行:
103.获取滑动时间窗口内令牌桶中的平均令牌数,所述滑动时间窗口为包含多个连续的时间片段的时间窗口,所述滑动时间窗口的窗口后沿为当前时刻;
104.获取当前时刻所述令牌桶中的第一令牌数;
105.基于所述平均令牌数与所述第一令牌数调整所述令牌桶中的令牌数;
106.基于调整后的所述令牌桶中的令牌数进行限流处理。
107.可选的,所述处理器401执行的所述基于所述平均令牌数与所述第一令牌数调整所述令牌桶中的令牌数,包括:
108.在所述平均令牌数小于第一预设系数与所述第一令牌数的乘积的情况下,增大所述令牌桶中的令牌数,以得到所述调整后的所述令牌桶中的令牌数;
109.在所述平均令牌数大于第二预设系数与所述第一令牌数的乘积的情况下,减小所述令牌桶中的令牌数,以得到所述调整后的所述令牌桶中的令牌数,所述第一预设系数小于所述第二预设系数。
110.可选的,所述处理器401执行的所述增大所述令牌桶中的令牌数,包括:
111.计算所述第一令牌数与预设调整值的和,得到所述调整后的所述令牌桶中的令牌数;
112.所述处理器401执行的所述减小所述令牌桶中的令牌数,包括:
113.计算所述第一令牌数与所述预设调整值的差,得到所述调整后的所述令牌桶中的令牌数。
114.可选的,所述处理器401还用于执行:
115.在所述调整后的所述令牌桶中的令牌数大于第一预设阈值的情况下,将所述调整后的所述令牌桶中的令牌数更新为所述第一预设阈值;
116.所述减小所述令牌桶中的令牌数,以得到所述调整后的所述令牌桶中的令牌数之后,所述方法还包括:
117.在所述调整后的所述令牌桶中的令牌数小于第二预设阈值的情况下,将所述调整后的所述令牌桶中的令牌数更新为所述第二预设阈值,其中,所述第一预设阈值大于所述第二预设阈值。
118.可选的,所述处理器401执行的所述基于调整后的所述令牌桶中的令牌数进行限流处理,包括:
119.实时接收访问请求;
120.在所述令牌桶中的令牌数大于第三预设阈值的情况下,允许所述访问请求,并将所述令牌桶中的令牌数减一;
121.在所述令牌桶中的令牌数小于或等于所述第三预设阈值的情况下,拒绝所述访问请求。
122.在图5中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器401代表的一个或多个处理器和存储器402代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。
123.处理器401负责管理总线架构和通常的处理,存储器402可以存储处理器401在执行操作时所使用的数据。
124.需要说明的是,本发明实施例方法实施例中的任意实施方式都可以被本实施例中的上述电子设备所实现,以及达到相同的有益效果,此处不再赘述。
125.本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述限流方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等。
126.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
127.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
128.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
再多了解一些

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

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

相关文献