当前位置: 首页 > 知识库问答 >
问题:

Spring云网关redis速率限制器不工作

孔扬
2023-03-14

我不能玩春云之门的限速器。我在这里配置网关:

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
      #Admin
      - id: haft-upms-admin
        uri: lb://haft-upms-admin
        predicates:
        - Path=/admin/**
        filters:
        - name: RequestRateLimiter
          args:
            key-resolver: '#{@remoteAddrKeyResolver}'
            redis-rate-limiter.replenishRate: 1
            redis-rate-limiter.burstCapacity: 1
        - name: Hystrix
          args:
            name: default
            fallbackUri: 'forward:/fallback'

我使用JMeter调用API循环1000次,但网关没有响应429响应中的请求太多。我哪里错了?

共有1个答案

谷梁襦宗
2023-03-14

路径是:localhost:xxxx/eureka-client/xxxx将转发到我的服务eureka-client并匹配路由id my_-coute1,因此您可以参考我的示例,您必须匹配路由id。

 类似资料:
  • 我试图在Spring云网关中设置速率限制。 我试图在应用程序中配置过滤器。yaml如下所示 我得到下面的错误 如何在spring云网关中实现速率限制?

  • 假设我的用户订阅了一个计划。那么,是否可以使用SpringCloudGateway根据订阅计划对用户请求进行分级限制?考虑到白银和黄金的计划,它是否会让白银订阅的充值率/容量为5/10,黄金订阅的充值率/容量为50/100? 我天真地想到传递RedisRateLimiter的新实例(见下文,我用5/10设置构建了一个新实例)到过滤器,但我需要从请求中以某种方式获取用户的信息,以便能够找出它是否是白

  • 我需要限制每分钟的请求数。我还没有找到任何方法来使用Spring云网关redis。下面是当前的实现:图像实现 customRouter.getBurstCapacitycustomRouter.getReplenishRate 两者都仅在几秒钟内运行。示例:20 个请求在同一秒内与。 我在1分钟内需要20个请求。

  • 我想了解限速器是怎么工作的。 我在博客中看到的是: 到现在为止,我忽略了删除旧的钥匙。我不明白这个索伦是怎么工作的?正如上面所说,在多线程环境中,代码将在一秒钟内完成10个以上的api调用。它只能通过将redisclient.get(key)同步到callApi()代码来解决。 我从 假设在当前的第二个中已经服务了9个请求,现在同时出现了5个新的请求,所有这些新的线程在这5个线程中的任何一个执行“

  • 我正试图使用极限速率API来实现Spring Boot Rest应用程序,bucket4j基于以下在线资源 请在下面找到我的配置: 下面是为使用4bucketj而添加的maven依赖项: 以下是我的application.yml配置: 下面我添加了ehcache。路径src/main/resources/中的xml: 最后,我在一个配置类中添加了EnableCaching,该类在spring启动时

  • 我的特定用例是,我想使用redis速率限制器在spring cloud gateway实现速率限制,例如,对于特定路由,每分钟4个请求。 但它并没有像预期的那样工作,一旦一个请求完成,它就会自动填充存储桶。使用了spring cloud论坛提供的相同实现,但无法限制我对特定时间窗口的请求: 通过将RequiredRate设置为所需的请求数、requestedTokens设置为以秒为单位的时间跨度、