原生RequestRateLimiter 的不足
配置方式
spring:
cloud:
gateway:
routes:
- id: requestratelimiter_route
uri: lb://pigx-upms
order: 10000
predicates:
- Path=/admin/**
filters:
- name: RequestRateLimiter
args:
redis-rate-limiter.replenishRate: 1
redis-rate-limiter.burstCapacity: 3
key-resolver: "#{@remoteAddrKeyResolver}" #SPEL表达式去的对应的bean
- StripPrefix=1
RequestRateLimiterGatewayFilterFactory
public GatewayFilter apply(Config config) {
KeyResolver resolver = getOrDefault(config.keyResolver, defaultKeyResolver);
RateLimiter<Object> limiter = getOrDefault(config.rateLimiter,
defaultRateLimiter);
boolean denyEmpty = getOrDefault(config.denyEmptyKey, this.denyEmptyKey);
HttpStatusHolder emptyKeyStatus = HttpStatusHolder
.parse(getOrDefault(config.emptyKeyStatus, this.emptyKeyStatusCode));
return (exchange, chain) -

本文探讨了Spring Cloud Gateway中RequestRateLimiter的局限,并介绍了Sentinel作为流量控制工具的优势。Sentinel从1.6.0版本开始支持Spring Cloud Gateway,提供route和自定义API维度的限流。文章详细讲解了Sentinel的配置、限流策略以及如何通过Nacos数据源动态调整限流参数,最后展示了限流效果并提及1.7.0版本将增加图形化控制功能。
最低0.47元/天 解锁文章
1353

被折叠的 条评论
为什么被折叠?



