如何将ASP.NET Core的固定窗口限流机制改写为支持长尾词查询的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1574个文字,预计阅读时间需要7分钟。
目录+算法原理+算法实现+进程内即内存固定窗口算法+基于Redis的固定窗口算法+算法应用+1.安装Nuget包+2.使用中间件+算法原理+固定窗口算法又称计数器算法,是一种简单的限流算法。
目录
- 算法原理
- 算法实现
- 进程内即内存固定窗口算法
- 基于Redis的固定窗口算法
- 算法应用
- 1、安装Nuget包
- 2、使用中间件
算法原理
固定窗口算法又称计数器算法,是一种简单的限流算法。在单位时间内设定一个阈值和一个计数值,每收到一个请求则计数值加一,如果计数值超过阈值则触发限流,如果达不到则请求正常处理,进入下一个单位时间后,计数值清零,重新累计。
如上图所示,时间单位是1秒,阈值是3。
- 第1秒3个请求,不会触发限流;
- 第2秒1个请求,不会触发限流;
- 第3秒4个请求,这一秒的前3个请求正常处理,第4个请求触发限流,会被拒绝处理。
- 后续第4秒、第5秒不会触发限流,所有请求正常处理。
算法实现
这里讲两种实现方法:进程内即内存固定窗口算法、基于Redis的固定窗口算法。
本文共计1574个文字,预计阅读时间需要7分钟。
目录+算法原理+算法实现+进程内即内存固定窗口算法+基于Redis的固定窗口算法+算法应用+1.安装Nuget包+2.使用中间件+算法原理+固定窗口算法又称计数器算法,是一种简单的限流算法。
目录
- 算法原理
- 算法实现
- 进程内即内存固定窗口算法
- 基于Redis的固定窗口算法
- 算法应用
- 1、安装Nuget包
- 2、使用中间件
算法原理
固定窗口算法又称计数器算法,是一种简单的限流算法。在单位时间内设定一个阈值和一个计数值,每收到一个请求则计数值加一,如果计数值超过阈值则触发限流,如果达不到则请求正常处理,进入下一个单位时间后,计数值清零,重新累计。
如上图所示,时间单位是1秒,阈值是3。
- 第1秒3个请求,不会触发限流;
- 第2秒1个请求,不会触发限流;
- 第3秒4个请求,这一秒的前3个请求正常处理,第4个请求触发限流,会被拒绝处理。
- 后续第4秒、第5秒不会触发限流,所有请求正常处理。
算法实现
这里讲两种实现方法:进程内即内存固定窗口算法、基于Redis的固定窗口算法。

