关于springcloud Gateway中的限流

栏目: Java · 发布时间: 6年前

内容简介:我们在开发系统的时候可能会对系统进行限流的需求, springcloudGateway有自带限流的方案,在此之前可以先去学习一下springcloud gateway中的filter。springcloud Gateway中提供了一个RequestRateLimiterGatewayFilterFactory。这种限流方式用到了redis, 先添加redis的依赖。

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

springcloud Gateway中提供了一个RequestRateLimiterGatewayFilterFactory。

这种限流方式用到了redis, 先添加 redis 的依赖。

配置类如下:

public class RemoteAddrKeyResolver implements KeyResolver {

    public static final String BEAN_NAME = "remoteAddrKeyResolver";

    @Override
    public Mono<String> resolve(ServerWebExchange exchange) {
        System.out.println("hello");
        Mono<String> just = Mono.just(exchange.getRequest().getRemoteAddress().getAddress().getHostAddress());
        return just;
    }
}
@Configuration
public 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: 令牌桶的总容量


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java遗传算法编程

Java遗传算法编程

Lee Jacobson、Burak Kanber / 王海鹏 / 人民邮电出版社 / 2016-12-6 / 49元

本书简单、直接地介绍了遗传算法,并且针对所讨论的示例问题,给出了Java代码的算法实现。全书共分灾6章。第1章简单介绍了人工智能和生物进化的知识背景,这也是遗传算法的历史知识背景。第2章给出了一个基本遗传算法的实现;第4章和第5章,分别针对机器人控制器、旅行商问题、排课问题展开分析和讨论,并给出了算法实现。在这些章的末尾,还给出了一些练习供读者深入学习和实践。第6章专门讨论了各种算法的优化问题。 ......一起来看看 《Java遗传算法编程》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具