Ape.Volo项目源码学习(4:限流设置)

Ape.Volo项目采用AspNetCoreRateLimit包支持接口限流,避免恶意请求。添加并安装AspNetCoreRateLimit包的是Ape.Volo.Common项目,但定义注册和使用限流组件相关类的是Ape.Volo.Infrastructure项目,而Ape.Volo.Api项目则在启动时调用限流组件及配置限流策略。
  Ape.Volo.Api项目的appsettings.json文件的Middleware节中的IpLimit部分配置是否启用限流功能,同时在IpRateLimit.json文件中设置通用限流规则及限流策略,包括请求白名单、通用请求限制规则、针对本机访问的限流策略等。

  Ape.Volo.Api项目的program文件开头调用ConfigureAppConfiguration函数加载IpRateLimit.json文件以便后续读取其中的设置,接着调用Ape.Volo.Infrastructure项目的IpRateLimitSetup. AddIpStrategyRateLimitSetup扩展函数注册限流组件,最后调用同项目中的IpLimitMiddleware. UseIpLimitMiddleware扩展函数启用限流组件。

Ape.Volo.Infrastructure项目的IpRateLimitSetup.AddIpStrategyRateLimitSetup扩展函数如下所示,首先读取限流配置及策略,同时从appsettings.json文件的System节获取是否启用Redis缓存,如果启用则注册分布式限流相关的接口及实现类,否则注册内存限流相关的接口及实现类,最终注册与限流算法及限流配置相关的接口及实现类。

  Ape.Volo.Infrastructure项目的IpRateLimitSetup.UseIpLimitMiddleware扩展函数如下所示,逻辑比较简单,根据Ape.Volo.Api项目的appsettings.json文件的Middleware节中的IpLimit值判断是否启用限流组件。

参考文献:

1\]https://github.com/xianhc/ape-volo-web \[2\]https://github.com/xianhc/ape-volo-admin \[3\]http://doc.apevolo.com/ \[4\]https://cn.vuejs.org/

相关推荐
没有bug.的程序员20 小时前
Service Mesh 下的流量治理:灰度、熔断、限流的深度实践与代价剖析
网络·云原生·限流·熔断·灰度发布·流量治理·servicemesh
rchmin3 天前
限流算法:令牌桶与漏桶详解
算法·限流
enjoy编程16 天前
Spring Boot 4 如何使用Sentinel进行限流?
spring boot·sentinel·限流·熔断降级·流量控制·服务限流·系统负载保护
遥远_18 天前
一次高并发压垮系统的排查与重生(上)
java·微服务·性能优化·高并发·限流·qps
gc_229919 天前
Ape.Volo项目源码学习(3:生成验证码)
验证码·ape.volo
gc_22991 个月前
Ape.Volo项目源码学习(2:数据库结构)
数据库·ape.volo
闲人编程1 个月前
API限流、鉴权与监控
分布式·python·wpf·限流·集群·令牌·codecapsule
gc_22991 个月前
学习C#调用AspNetCoreRateLimit包限制客户端访问次数(3:动态配置)
c#·限流·动态配置·coreratelimit
gc_22991 个月前
学习C#调用AspNetCoreRateLimit包限制客户端访问次数(1:基本用法)
开发语言·c#·限流·coreratelimit