ASP.NET Core中如何巧妙实现漏桶限流算法以应对长尾请求高峰?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2245个文字,预计阅读时间需要9分钟。
目录+算法原理+算法实现+内存泄漏检测算法+基于Redis的泄漏检测算法+应用算法+1. 安装Nuget包+2. 使用中间件+泄漏检测算法是限流流量的四大主流算法之一,其应用场景和资源介绍较为有限。
目录
- 算法原理
- 算法实现
- 进程内即内存漏桶算法
- 基于Redis的漏桶算法
- 应用算法
- 1、安装Nuget包
- 2、使用中间件
漏桶算法是限流的四大主流算法之一,其应用场景各种资料中介绍的不多,一般都是说应用在网络流量控制中。这里举两个例子:
1、目前家庭上网都会限制一个固定的带宽,比如100M、200M等,一栋楼有很多的用户,那么运营商怎么保证某些用户没有使用过多的带宽,从而影响到别人呢?这时就可以使用漏桶算法,限制每个用户访问网络的最大带宽,当然实际会比这复杂很多。
2、有一个祖传接口,当时写的时候没有任何保护措施,现在访问量稍微大点就会崩溃,但是代码谁也改不动。这时候也可以用漏桶算法,把这个接口封装一下,将外部请求通过漏桶算法进行整流,再转发给这个接口,此时访问频率不会超过阈值,接口就不会崩溃了。
算法原理
说了这么多,那漏桶算法到底是怎么解决问题的呢?请看下图。
接收到请求后,先把请求放到一个漏桶中,漏桶以恒定的速率漏出请求,然后漏出的请求被处理;如果接收请求的速度过快,导致漏桶满了,则丢弃新的请求。
本文共计2245个文字,预计阅读时间需要9分钟。
目录+算法原理+算法实现+内存泄漏检测算法+基于Redis的泄漏检测算法+应用算法+1. 安装Nuget包+2. 使用中间件+泄漏检测算法是限流流量的四大主流算法之一,其应用场景和资源介绍较为有限。
目录
- 算法原理
- 算法实现
- 进程内即内存漏桶算法
- 基于Redis的漏桶算法
- 应用算法
- 1、安装Nuget包
- 2、使用中间件
漏桶算法是限流的四大主流算法之一,其应用场景各种资料中介绍的不多,一般都是说应用在网络流量控制中。这里举两个例子:
1、目前家庭上网都会限制一个固定的带宽,比如100M、200M等,一栋楼有很多的用户,那么运营商怎么保证某些用户没有使用过多的带宽,从而影响到别人呢?这时就可以使用漏桶算法,限制每个用户访问网络的最大带宽,当然实际会比这复杂很多。
2、有一个祖传接口,当时写的时候没有任何保护措施,现在访问量稍微大点就会崩溃,但是代码谁也改不动。这时候也可以用漏桶算法,把这个接口封装一下,将外部请求通过漏桶算法进行整流,再转发给这个接口,此时访问频率不会超过阈值,接口就不会崩溃了。
算法原理
说了这么多,那漏桶算法到底是怎么解决问题的呢?请看下图。
接收到请求后,先把请求放到一个漏桶中,漏桶以恒定的速率漏出请求,然后漏出的请求被处理;如果接收请求的速度过快,导致漏桶满了,则丢弃新的请求。

