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/

相关推荐
gc_22998 天前
Ape.Volo项目源码学习(2:数据库结构)
数据库·ape.volo
闲人编程15 天前
API限流、鉴权与监控
分布式·python·wpf·限流·集群·令牌·codecapsule
gc_229921 天前
学习C#调用AspNetCoreRateLimit包限制客户端访问次数(3:动态配置)
c#·限流·动态配置·coreratelimit
gc_229922 天前
学习C#调用AspNetCoreRateLimit包限制客户端访问次数(1:基本用法)
开发语言·c#·限流·coreratelimit
Java烘焙师1 个月前
架构师必备:限流方案选型(原理篇)
架构·限流·源码分析
CodeAmaz1 个月前
自定义限流方案(基于 Redis + 注解)
java·redis·限流·aop·自定义注解
IT小哥哥呀1 个月前
Jenkins + Docker 打造自动化持续部署流水线
docker·微服务·自动化·jenkins·springboot·高并发·限流
Java烘焙师2 个月前
架构师必备:限流方案选型(使用篇)
redis·架构·限流
无名客03 个月前
sentinel限流常见的几种算法以及优缺点
算法·sentinel·限流