.NET服务治理之限流中间件-FireflySoft.RateLimit2

简介: .NET服务治理之限流中间件-FireflySoft.RateLimit2

规则


创建算法实例的时候,还需要指定算法的规则,这里根据算法使用的是 FixedWindowRule,对于同一个算法,进程内实现和Redis实现使用相同的规则。

看一下这里使用的规则的几个属性:

ExtractTarget 设置一个函数,用于从HTTP请求中提取要限流的目标,比如这里的客户端IP和客户端ID,还可以是各种可以从请求中提取或关联到的东西,比如Http Header中携带的用户Id,或者根据用户Id查询到的用户年龄。

CheckRuleMatching 设置一个函数,返回当前请求是否能匹配到某个限流规则,如果能匹配到,则返回true。比如只对 /api/req 这个路径限流,那么只要判断请求的路径是它,就返回true,其它路径都返回false。当然也可以是根据各种可以从请求中提取或关联到的东西来进行判断。

Name 限流规则的名字,方便人跟踪的时候进行区分。

StatWindow 限流的时间窗口。比如需求中的每秒钟3次,这里的时间窗口就要设置为1秒。

LimitNumber 限流的次数阈值。比如需求中的每秒钟3次,这里的时间窗口就要设置为3,超过3就会被限流。

规则中还有其它几个属性,不同算法的规则也略有不同,这里就不一一列举了。感兴趣的朋友可以去示例代码单元测试中认识它们。

一个算法中可以添加多个对应算法的规则,这无疑会比较灵活。


更多使用说明



相关文章
|
存储 开发框架 安全
ASP.NET Core 中间件的使用(三):全局异常处理机制(Filter拦截器对比)
ASP.NET Core 中间件的使用(三):全局异常处理机制(Filter拦截器对比)
|
4月前
|
开发框架 缓存 .NET
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
232 0
|
4月前
|
开发框架 前端开发 中间件
聊聊 ASP.NET Core 中间件(二):中间件和筛选器的区别
聊聊 ASP.NET Core 中间件(二):中间件和筛选器的区别
160 1
|
4月前
|
开发框架 缓存 NoSQL
聊聊 ASP.NET Core 中间件(一):一个简单的中间件例子
聊聊 ASP.NET Core 中间件(一):一个简单的中间件例子
|
4月前
|
开发框架 中间件 .NET
分享 ASP.NET Core Web Api 中间件获取 Request Body 两个方法
分享 ASP.NET Core Web Api 中间件获取 Request Body 两个方法
188 0
|
4月前
|
开发框架 中间件 .NET
聊聊 ASP.NET Core 中间件(三):如何创建自己的中间件?
聊聊 ASP.NET Core 中间件(三):如何创建自己的中间件?
|
开发框架 前端开发 JavaScript
ASP.NET Core 中间件
ASP.NET Core (MiddleWare) 什么是ASP.NET核心中间件组件?ASP.NET核心中间件组件是被组装到应用程序管道中以处理HTTP请求和响应的软件组件(从技术上来说,组件只是C#类)。 ASP.NET Core应用程序中的每个中间件组件都执行以下任务。选择是否将 HTTP 请求传递给管道中的下一个组件。这可以通过在中间件中调用下一个 next() 方法实现。可以在管...
105 0
ASP.NET Core 中间件
|
数据采集 缓存 算法
最常用的限流算法以及如何在http中间件中加入流控
最常用的限流算法以及如何在http中间件中加入流控
128 0
|
缓存 监控 NoSQL
一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存
一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存
204 0
|
开发框架 中间件 .NET
ASP.NET CORE 自定义中间件
ASP.NET CORE 自定义中间件
66 0