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/

相关推荐
cq林志炫6 天前
php 限流思路
redis·php·限流
zhglhy7 天前
Java系统限流方法技术优劣
java·限流
递归尽头是星辰1 个月前
Sentinel + Spring Cloud Gateway 联动限流实战
系统架构·sentinel·限流·微服务治理·限流架构设计
蜂蜜黄油呀土豆1 个月前
高并发场景下的负载均衡、熔断降级与限流措施
负载均衡·高并发·限流·熔断·降级
stevenzqzq2 个月前
android fow 限流
android·限流·flow
liushangzaibeijing2 个月前
Sentinel组件学习使用
sentinel·限流·熔断·服务降级
xiaolyuh1232 个月前
Alibaba Sentinel 全解析
系统架构·sentinel·限流
无心水2 个月前
【分布式利器:腾讯TSF】10、TSF故障排查与架构评审实战:Java架构师从救火到防火的生产哲学
java·人工智能·分布式·架构·限流·分布式利器·腾讯tsf
没有bug.的程序员2 个月前
Service Mesh 下的流量治理:灰度、熔断、限流的深度实践与代价剖析
网络·云原生·限流·熔断·灰度发布·流量治理·servicemesh
rchmin2 个月前
限流算法:令牌桶与漏桶详解
算法·限流