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/

相关推荐
真上帝的左手8 天前
10. 软件设计&架构-经典架构问题-幂等+限流
架构·限流·幂等
恼书:-(空寄11 天前
Sentinel 限流降级:滑动窗口原理 + 生产实战全解
sentinel·限流
ai旅人20 天前
Guava RateLimiter深度解析:非阻塞令牌桶限流原理与跑批实战
java·限流·guava
人间打气筒(Ada)1 个月前
go:如何实现接口限流和降级?
开发语言·中间件·go·限流·etcd·配置中心·降级
cq林志炫2 个月前
php 限流思路
redis·php·限流
zhglhy2 个月前
Java系统限流方法技术优劣
java·限流
递归尽头是星辰2 个月前
Sentinel + Spring Cloud Gateway 联动限流实战
系统架构·sentinel·限流·微服务治理·限流架构设计
蜂蜜黄油呀土豆3 个月前
高并发场景下的负载均衡、熔断降级与限流措施
负载均衡·高并发·限流·熔断·降级
stevenzqzq3 个月前
android fow 限流
android·限流·flow
liushangzaibeijing4 个月前
Sentinel组件学习使用
sentinel·限流·熔断·服务降级