Spring Cloud Gateway使用限流器

Posted 一个抓手

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Gateway使用限流器相关的知识,希望对你有一定的参考价值。

1.引入reactive redis maven坐标

        <!--redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
        </dependency>
        <!--连接池-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

2.定义限流规则

@Configuration
public class KeyResolverConfig {

    @Primary
    @Bean
    public KeyResolver apiKeyResolver() {
        // 通过URL限流
        return exchange -> Mono.just(exchange.getRequest().getURI().getPath());
    }
}

3.配置限流过滤器,完成

spring:
  cloud:
    gateway:
      routes:
        - id: 用户服务
          uri: lb://user-server
          predicates:
            - Path=/user-server/**
          filters:
            # 配置限流过滤器
            - name: RequestRateLimiter
              args:
                # 指定限流规则
                key-resolver: "#{@apiKeyResolver}"
                # 令牌每秒生成的速度
                redis-rate-limiter.replenishRate: 2
                # 每秒可以请求的次数
                redis-rate-limiter.burstCapacity: 2

源码位置:

 

以上是关于Spring Cloud Gateway使用限流器的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud Gateway 之限流操作

Spring Cloud Gateway 之限流操作

Spring Cloud Gateway 限流操作

spring cloud gateway整合sentinel作网关限流

spring cloud 2.x版本 Gateway熔断限流教程

Spring Cloud Gateway限流实战