System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种限流的方法及系统技术方案_技高网

一种限流的方法及系统技术方案

技术编号:40900427 阅读:2 留言:0更新日期:2024-04-18 11:17
本发明专利技术提供了一种限流的方法,包括:接收连接请求以及其令牌要求;判断令牌桶中是否还有令牌,其中所述令牌桶中可容纳令牌的数量上限由令牌桶当前容量决定;若是,则发放令牌,并对有令牌的请求做出业务处理;否则,拒绝所述请求。另外,还提供一种限流的系统,包括:接收单元,用于接收连接请求以及其令牌要求;限流单元,用于判断令牌桶中是否还有令牌,其中所述令牌桶中可容纳令牌的数量上限由令牌桶当前容量决定,并决定是否进行限流;处理单元,用于对有令牌的请求做出业务处理。本发明专利技术在原令牌桶算法基础上增加了桶当前容量的控制参数,根据后端服务器的负载能力动态调整令牌桶的容量,有效降低了超高并发连接请求时对服务器产生的冲击。

【技术实现步骤摘要】

本申请涉及数据处理,尤其涉及一种限流的方法及系统


技术介绍

1、在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送。工作中对外提供的api接口设计均要考虑限流,若不考虑限流,会成系统的连锁反应,轻者响应缓慢,重者系统宕机,整个业务线崩溃。

2、常见的限流算法有令牌桶算法、固定窗口限流算法、滑动窗口限流算法、漏桶算法等。其中,令牌桶算法是网络流量整形(traffic shaping)和速率限制(rate limiting)中最常使用的一种算法。令牌桶算法克服了固定窗口限流算法、滑动窗口限流算法、漏桶算法等待诸多限流算法的各种问题。比如:固定窗口限流算法存在临界值的问题;滑动窗口限流算法一旦到达限流后,请求都会直接暴力被拒绝;漏桶算法不能处理请求突变时的情况,导致请求不能即时得到处理。令牌桶算法能够解决上述问题,令牌桶算法既可控制发送到网络上数据的数目,并允许突发数据的发送。

3、令牌桶算法以一个设定的速率产生令牌并放入令牌桶,每次用户请求都得申请令牌,如果令牌不足,则拒绝请求。令牌桶算法中新请求到来时会从桶里拿走一个令牌,如果桶内没有令牌可拿,就拒绝服务。当然,令牌的数量也是有上限的。令牌的数量与时间和发放速率强相关,时间流逝的时间越长,会不断往桶里加入越多的令牌,如果令牌发放的速度比申请速度快,令牌桶会放满令牌,直到令牌占满整个令牌桶。

4、令牌桶限流大致的规则如下:

5、(1)进水口按照某个速度,向桶中放入令牌。

6、(2)令牌的容量是固定的,但是放行的速度不是固定的,只要桶中还有剩余令牌,一旦请求过来就能申请成功,然后放行。

7、(3)如果令牌的发放速度,慢于请求到来速度,桶内就无牌可领,请求就会被拒绝。

8、但是,令牌桶算法不能解决服务器过载等问题。令牌的容量是固定的,但通常情况下,服务处理请求的能力在实际环境中并不是一个恒定值,经常会受到网络、业务复杂度、集群健康状态等诸多因素影响,导致实际处理能力在一个区间波动。但令牌桶算法会以一定速率恒定的生成新令牌,新的连接请求拿到令牌即刻就会执行,而如果此时服务器负载正处于波动区间的峰顶,将会导致服务器负载进一步升高,从而影响正常连接业务的处理,最终可能引起服务完全不可用,乃至雪崩。

9、因此,需要提供一种预防高发连接请求而导致服务过载的限流方法。


技术实现思路

1、为了解决上述问题,本专利技术提供一种限流的方法及系统,能够将令牌桶算法中的桶固定容量修改为一个可变的范围区间,从而可动态调整桶中当前可用令牌数量上限,降低高并发连接请求时对服务器产生的冲击。

2、为实现上述目的,本专利技术提供了一种限流的方法,包括:

3、接收连接请求以及其令牌要求;

4、判断令牌桶中是否还有令牌,其中所述令牌桶中可容纳令牌的数量上限由令牌桶当前容量决定;

5、若是,则发放令牌,并对有令牌的请求做出业务处理;

6、否则,拒绝所述请求。

7、可选地,所述令牌桶当前容量为可变的范围区间。

8、可选地,所述令牌桶当前容量根据服务端负载能力动态调整。

9、可选地,所述令牌桶当前容量与服务端负载能力成反比。

10、可选地,包括还设置令牌桶容量最小值,以避免优先级更高的连接请求被拒绝。

11、可选地,所述令牌桶当前容量是根据当前正在进行mqtt握手的连接数量以及集群消息同步情况进行综合计算得出。

12、可选地,所述令牌桶当前容量是根据操作系统当前负载来计算得出。

13、可选地,所述令牌桶当前容量是根据网络流量来计算得出。

14、另外,本专利技术还提供了一种限流的系统,包括:

15、接收单元,用于接收连接请求以及其令牌要求;

16、限流单元,用于判断令牌桶中是否还有令牌,其中所述令牌桶中可容纳令牌的数量上限由令牌桶当前容量决定;若是,则发放令牌;否则,拒绝所述请求以及其令牌要求;

17、处理单元,用于对有令牌的请求做出业务处理。

18、可选地,所述限流单元根据服务端负载能力动态调整所述令牌桶当前容量。

19、可选地,所述限流单元还设置令牌桶容量最小值,以避免优先级更高的连接请求被拒绝。

20、此外,本专利技术还提供了一种电子设备,包括:

21、存储器,用于存储计算机程序;

22、处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现上述限流的方法。

23、本专利技术的优点和有益效果在于:相比现有的限流技术,本专利技术提供了一种限流的方法及系统,在原令牌桶算法基础上增加了桶当前容量的控制参数,将令牌桶算法中的桶固定容量修改为一个可变的范围区间,能够根据后端服务器的负载能力动态调整令牌桶的容量,控制令牌的生成总量,即当前可用令牌的数量上限,有效降低了超高并发连接请求时对服务器产生的冲击。

本文档来自技高网...

【技术保护点】

1.一种限流的方法,其特征在于,包括:

2.如权利要求1所述的一种限流的方法,其特征在于,所述令牌桶当前容量为可变的范围区间。

3.如权利要求2所述的一种限流的方法,其特征在于,所述令牌桶当前容量根据服务端负载能力动态调整。

4.如权利要求3所述的一种限流的方法,其特征在于,所述令牌桶当前容量与服务端负载能力成反比。

5.如权利要求1所述的一种限流的方法,其特征在于,包括还设置令牌桶容量最小值,以避免优先级更高的连接请求被拒绝。

6.如权利要求1所述的一种限流的方法,其特征在于,所述令牌桶当前容量是根据当前正在进行MQTT握手的连接数量以及集群消息同步情况进行综合计算得出。

7.如权利要求1所述的一种限流的方法,其特征在于,所述令牌桶当前容量是根据操作系统当前负载来计算得出。

8.如权利要求1所述的方法,其特征在于,所述令牌桶当前容量是根据网络流量来计算得出。

9.一种限流的系统,其特征在于,包括:

10.如权利要求9所述的一种限流的系统,其特征在于,所述限流单元根据服务端负载能力动态调整所述令牌桶当前容量。

11.如权利要求9所述的一种限流的系统,其特征在于,所述限流单元还设置令牌桶容量最小值,以避免优先级更高的连接请求被拒绝。

12.一种电子设备,包括:

...

【技术特征摘要】

1.一种限流的方法,其特征在于,包括:

2.如权利要求1所述的一种限流的方法,其特征在于,所述令牌桶当前容量为可变的范围区间。

3.如权利要求2所述的一种限流的方法,其特征在于,所述令牌桶当前容量根据服务端负载能力动态调整。

4.如权利要求3所述的一种限流的方法,其特征在于,所述令牌桶当前容量与服务端负载能力成反比。

5.如权利要求1所述的一种限流的方法,其特征在于,包括还设置令牌桶容量最小值,以避免优先级更高的连接请求被拒绝。

6.如权利要求1所述的一种限流的方法,其特征在于,所述令牌桶当前容量是根据当前正在进行mqtt握手的连接数量以...

【专利技术属性】
技术研发人员:温建高庆丰
申请(专利权)人:上海收钱吧互联网科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1