博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于springcloud Gateway中的限流
阅读量:6256 次
发布时间:2019-06-22

本文共 1866 字,大约阅读时间需要 6 分钟。

我们在开发系统的时候可能会对系统进行限流的需求, springcloudGateway有自带限流的方案,在此之前可以先去学习一下springcloud gateway中的filter。

springcloud Gateway中提供了一个RequestRateLimiterGatewayFilterFactory。
这种限流方式用到了redis, 先添加redis的依赖。

配置类如下:

public class RemoteAddrKeyResolver implements KeyResolver {    public static final String BEAN_NAME = "remoteAddrKeyResolver";    @Override    public Mono
resolve(ServerWebExchange exchange) { System.out.println("hello"); Mono
just = Mono.just(exchange.getRequest().getRemoteAddress().getAddress().getHostAddress()); return just; }}
@Configurationpublic class RemoteKeyResolver {    @Bean(name="remoteAddrKeyResolver")    public RemoteAddrKeyResolver remoteAddrKeyResolver() {        return new RemoteAddrKeyResolver();    }}

在此我们是根据ip地址限流的, Mono<String> just = Mono.just(exchange.getRequest().getRemoteAddress().getAddress().getHostAddress())

application.yml配置文件配置如下:

spring:  application:    name: gateway-service#  redis:#    database: 0#    host: localhost#    port: 6379#    password:#    timeout: 1000ms#    lettuce:#      pool:#        max-active: 8#        max-idle: 8#        min-idle: 1#        max-wait: 1000ms#  cache:#    type: REDIS  cloud:    gateway:      discovery:        locator:          enabled: true      routes:        - id: order          uri: lb://order-service          predicates:          - Path=/api/order-service/**          filters:          - StripPrefix=1          - name: RequestRateLimiter            args:              key-resolver: '#{@remoteAddrKeyResolver}'              redis-rate-limiter.replenishRate: 1              redis-rate-limiter.burstCapacity: 2

上面贴出的是完整的springcloud Gateway的配置, 主要配置为filters下的-RequestRateLimiter,

key-resolver表示使用名为remoteAddKeyResolver的限流配置配置类,此限流方式采用的是令牌桶算法的限流方式
redis-rate-limiter.repleushRate :令牌桶每秒填充平均速率。
redis-rate-limiter.burstCapacity: 令牌桶的总容量

转载地址:http://tlnsa.baihongyu.com/

你可能感兴趣的文章
bbb板运行rtems-编写led底层驱动
查看>>
如何从零安装Mysql
查看>>
Appium简介及工作原理
查看>>
IP 类型转换
查看>>
mysql实践1
查看>>
struts2 Preparable接口
查看>>
hdu4578(线段树)
查看>>
写一个脚本简单检测局域网存活的机器
查看>>
Dubbo
查看>>
angular与jquery 进行json提交数据,报文头格式不一致的解决方案
查看>>
更换笔记本内存:自己动手修电脑(一)
查看>>
POJ2262-Goldbach's Conjecture
查看>>
区分扫描枪输入和键盘输入的实现
查看>>
【ssh服务配置】
查看>>
【mongdb主从复制和同步】
查看>>
下载文件downloadFile
查看>>
课后作业-阅读任务-阅读笔记-3
查看>>
hdoj1078(介绍记忆化搜索及其模板)
查看>>
cf-Round542-Div2-B(贪心)
查看>>
有关Python的PIL库的学习体会和实例
查看>>