redis配置 <!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis-reactive</artifactId> </dependency>
yml里面配置
spring:
redis:
host: 127.0.0.1
port: 6379
database: 10
application:
name: iem-gateway
cloud:
gateway:
discovery:
locator:
enabled: true
lower-case-service-id: true
routes:
- id: iem-resource
uri: lb://iem-resource
predicates:
- Path=/resource-api/**
filters:
- StripPrefix=1
- name: Hystrix
args:
name: fallbackcmd
fallbackUri: forward:/fallBackResource
- name: RequestRateLimiter
args:
key-resolver: '#{@ipKeyResolver}'
redis-rate-limiter.replenishRate: 1 #两派每秒平均填充速率
redis-rate-limiter.burstCapacity: 2 #令牌桶总容量
说明:
- 1 增加redis相关配置
- 2.1 -name: RequestRateLimiter, filter的名称,必须是RequestRateLimiter
- 2.2 redis-rate-limiter.replenishRate: 允许用户每秒处理的请求个数
- 2.3 redis-rate-limiter.burstCapacity: 令牌桶的容量,允许在一秒内完成的最大请求数
- 2.4 key-resolver: 使用的Bean名称,规则为按名称引用Bean
增加相关代码 @Bean public KeyResolver ipKeyResolver(){ logger.info("ip地址限流"); // exchange.getRequest().getPath().toString()); return exchange -> Mono.just(exchange.getRequest().getRemoteAddress().getHostName());}
下载pmeter压力测试
https://www.cnblogs.com/monjeo/p/9330464.html
然后开启redis的monitor进行监控
注意一定是monitor监控,时间太短,redis数据自动清除,数据下:
参考:https://www.cnblogs.com/fengfujie/p/11820575.html
http://www.iocoder.cn/categories/Spring-Cloud-Gateway/