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

为什么X-RateLimit-Remning-1在响应报头,而使用与redisSpring云api网关rateLimit?

谈琦
2023-03-14

我在SpringCloudAPI网关中使用redis实现了ratelimit。下面是应用程序的一部分。yml

spring:  
  cloud:
    gateway:
      httpclient:
        ssl:
          useInsecureTrustManager: true
      discovery:
        locator:
          enabled: true
      routes:
        - id: test-rest-service
          uri: lb://test-rest-service
          predicates:
            - Path=/test/**
          filters:
            - RewritePath=/test/(?<path>.*), /$\{path}
            - name: RequestRateLimiter
              args:
                key-resolver: "#{@userRemoteAddressResolver}"
                redis-rate-limiter.replenishRate: 2
                redis-rate-limiter.burstCapacity: 3

我通过postman调用了GETAPI并检查了响应头。

X-RateLimit-Remaining -1
X-RateLimit-Burst-Capacity 3
X-RateLimit-Replenish-Rate 2

费率限制不起作用。为什么我得到负值的X-RateLimit-剩余?这是什么意思?我要怎么修?

共有2个答案

须衡虑
2023-03-14

我最近也遇到了同样的问题。在我的例子中,安装了一个旧版本的Redis,导致X-RateLimit-Remaining不断地设置为-1。

redis-cli shutdown
厍兴腾
2023-03-14

这发生在我身上,因为没有启动Redis实例。您有两个选择:

1) 使用docker下载并运行Redis实例:

docker run --name redis -d redis

2) 您可以通过添加maven依赖项来测试嵌入式Redis服务器,如下文所述:

<dependency>
  <groupId>it.ozimov</groupId>
  <artifactId>embedded-redis</artifactId>
  <version>0.7.2</version>
  <scope>test</scope>
</dependency>

并包括以下代码段:

@TestConfiguration
public class TestRedisConfiguration {

    private RedisServer redisServer;

    public TestRedisConfiguration() {
        this.redisServer = new RedisServer(6379);
    }

    @PostConstruct
    public void postConstruct() {
        redisServer.start();
    }

    @PreDestroy
    public void preDestroy() {
        redisServer.stop();
    }
}
 类似资料:
  • 在2006年的模糊C代码竞赛中。请解释sykes2。c 有一个语句“

  • 使用TomCat为网站提供服务。通常,当我更新网站时,Chrome会对缓存感到困惑,并继续使用缓存中的旧页面,即使新的页面可用。这似乎是基于一个更基本的问题,Chrome也没有从服务器获得最新的响应头,这似乎阻止了任何控制缓存的能力。 我选择了一个javascript文件,做了一个小的修改来更改文件系统中文件的日期。然后我用Mozilla和Chrome重新蚀刻了页面。Mozilla似乎运行正常:服

  • 问题内容: 为什么Google会优先使用其(私有)JSON响应? 例如,这是在Google日历中打开和关闭日历时的响应: 我认为这是为了防止人们对此进行操作,但是您真正要做的就是替换,然后进行设置。我认为评估是为了确保人们编写安全的JSON解析代码。 我也曾在其他几个地方使用过此功能,但在Google(邮件,日历,通讯录等)中使用了更多功能。奇怪的是,GoogleDocs以开头,而Google C

  • 我最近遇到了几个错误,因为Numpy数组的形状是(x)-这些可以很容易地通过下面的代码段修复 但这确实让我想知道,为什么(x,)是1D数组的默认形状?

  • 我在我的swift应用程序中使用Moya进行网络请求。 我能够获得请求和映射结果使用Moya-Object Mapper。 我以前使用过alamofire,我熟悉如何进行post,获取请求和阅读响应头。 然而,我似乎无法理解我怎么能在莫亚也这样做。 我确实浏览了文档,但它没有说明任何关于读取响应头的内容。 有没有任何例子或教程,我可以遵循如何做一个HTTP身份验证和读取响应头。以及如何发出post

  • 对于微服务,常用的设计模式是API-Gateway。我对它的实现和含义有点困惑。我的问题/顾虑如下: 为什么没有普遍讨论微服务的其他模式?如果是,那么我错过了吗? 如果我们部署网关服务器,不是瓶颈吗? 网关服务器是否容易因单点请求过多而崩溃/失败?我相信此时负载会很大(请记住Netflix正在做这样的事情)。如果我理解错误,请纠正我。 流/下载/上传数据(如文件、视频、图像)也将与其他中间件服务一