SpringBootGateway 限流功能:
springBoot GateWay作为所有程序的入口,所以当流量进来的时候都会从网关(GateWay)通过,在网关除了做权限认证过滤,路由转发,还可以做流量限制:流量限制springBoot默认是由一个限流的配置,默认集成的配置。使用的redis配合RateLimter限流算法来实现。1.引入依赖:2.添加配置:在springBoot 中application.yml 中配置routes:‐ i
springBoot GateWay作为所有程序的入口,所以当流量进来的时候都会从网关(GateWay)通过,在网关除了做权限认证过滤,路由转发,还可以做流量限制:
流量限制
springBoot默认是由一个限流的配置,默认集成的配置。
使用的redis配合RateLimter限流算法来实现。
1.引入依赖:
2.添加配置:
在springBoot 中application.yml 中配置
routes:
‐ id: goods
uri: lb://XXX
predicates:
‐ Path=/XXX/**
filters:
‐ StripPrefix= 1
‐ name: RequestRateLimiter #添加GateWay请求数限流配置,这个名字不能随便写固定的样式
args:
key‐resolver: "#{@ipKeyResolver}" #这个就是对应自己写限流bean 配置的方法的名称
redis‐rate‐limiter.replenishRate: 2 #令牌桶每秒填充平均速率
redis‐rate‐limiter.burstCapacity: 3 #令牌桶总容量
这个就表示每秒并发数为3,如果超过3个那么就会进行限流,或者在filter中加入熔断器设置,这样并发数大了,就会返回一个友好界面。防止直接报错给用户,给用户的体验不好
(3)在启动类中 定义一个KeyResolver
@Bean
public KeyResolver ipKeyResolver(){
return new KeyResolver() {
@Override
public Mono<String> resolve(ServerWebExchange exchange) {
return Mono.just(exchange.getRequest().getRemoteAddress().getHostName());
}
};
}
然后就可以自己进行测试测试数据,进行并发测试
更多推荐
所有评论(0)