ASP.NET Core滑动窗口限流如何应对高并发场景下的性能挑战?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2133个文字,预计阅读时间需要9分钟。
目录+算法原理+漏洞检测+太初+算法实现+进程内即时内存滑动窗口算法+基于Redis的滑动窗口算法+应用算法+1. 安装Nuget包+2. 使用中间件+滑动窗口算法用于应对请求在时间周期中分布不均匀的情况
目录
- 算法原理
- 漏检
- 太刚
- 算法实现
- 进程内即内存滑动窗口算法
- 基于Redis的滑动窗口算法
- 应用算法
- 1、安装Nuget包
- 2、使用中间件
滑动窗口算法用于应对请求在时间周期中分布不均匀的情况,能够更精确的应对流量变化,比较著名的应用场景就是TCP协议的流量控制,不过今天要说的是服务限流场景中的应用。
算法原理
这里假设业务需要每秒钟限流100次,先来看固定窗口算法的两个问题:
漏检
如下图所示,单看第1秒和第2秒,其请求次数都没有超过100,所以使用固定窗口算法时不会触发限流。但是第1秒的后500ms的请求数加上第2秒的前500毫秒的请求数就超过了100,这时候可能会给系统带来伤害,使用固定窗口算法时不能检测到这种情况。
太刚
针对漏检的问题,你可能会说,可以把时间窗口设置为500ms,把限流阈值设置为50。
本文共计2133个文字,预计阅读时间需要9分钟。
目录+算法原理+漏洞检测+太初+算法实现+进程内即时内存滑动窗口算法+基于Redis的滑动窗口算法+应用算法+1. 安装Nuget包+2. 使用中间件+滑动窗口算法用于应对请求在时间周期中分布不均匀的情况
目录
- 算法原理
- 漏检
- 太刚
- 算法实现
- 进程内即内存滑动窗口算法
- 基于Redis的滑动窗口算法
- 应用算法
- 1、安装Nuget包
- 2、使用中间件
滑动窗口算法用于应对请求在时间周期中分布不均匀的情况,能够更精确的应对流量变化,比较著名的应用场景就是TCP协议的流量控制,不过今天要说的是服务限流场景中的应用。
算法原理
这里假设业务需要每秒钟限流100次,先来看固定窗口算法的两个问题:
漏检
如下图所示,单看第1秒和第2秒,其请求次数都没有超过100,所以使用固定窗口算法时不会触发限流。但是第1秒的后500ms的请求数加上第2秒的前500毫秒的请求数就超过了100,这时候可能会给系统带来伤害,使用固定窗口算法时不能检测到这种情况。
太刚
针对漏检的问题,你可能会说,可以把时间窗口设置为500ms,把限流阈值设置为50。

