spring cloud gateway RequestRateLimiter 限流

spring:
  cloud:
    gateway:
      routes:
      - id: requestratelimiter_route
        uri: http://example.org
        filters:
        - name: RequestRateLimiter
          args:
            redis-rate-limiter.replenishRate: 10
            redis-rate-limiter.burstCapacity: 20
            key-resolver: "#{@ipKeyResolver}"

重要参数:

  1. name 必选RequestRateLimiter
  2. redis-rate-limiter.replenishRate 充满令牌数。简单说就是允许每秒并发用户数
  3. 每秒总并发数量
  4. key-resolver: 这是限流规则,ipKeyResolver这是一个bean的名字,bean里面定义了限流规则。

bean 定义

    @Bean
    KeyResolver ipKeyResolver() {
        return exchange -> Mono.just(exchange.getRequest().getRemoteAddress().getHostString());
    }

这里是根据用户的访问ip进行限流。
还有其他的根据名字参数之类的限流形式,定义好bean替换了就行

你可能感兴趣的:(spring,cloud)