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

spring cloud gateway的Redis速率限制,按分钟限制

傅元龙
2023-03-14

我需要限制每分钟的请求数。我还没有找到任何方法来使用Spring云网关redis。下面是当前的实现:图像实现

private void builderRouter(CustomRouterLocatorDto customRouter) {
    customRouter.getBuilder().route(r -> r
            .path(customRouter.getPath())
            .filters(f -> {
                if(!customRouter.getRewritePath().equals("/"))
                    f.rewritePath(customRouter.getRewritePath() + "(?<segment>/?.*)", "$\\{segment}");

                f.circuitBreaker(c -> c.setName("cbServicies").setFallbackUri("forward:/offlineservicies/down"));

                if(customRouter.isEnableRateLimiter()) {
                    f.requestRateLimiter()
                            .rateLimiter(RedisRateLimiter.class, rl ->
                                    rl.setBurstCapacity(customRouter.getBurstCapacity())
                                        .setReplenishRate(customRouter.getReplenishRate())
                            ).and();
                }

                return f;
            })
            .metadata(RouteMetadataUtils.RESPONSE_TIMEOUT_ATTR, RESPONSE_TIMEOUT_ATTR_VALUE_MILLIS)
            .metadata(RouteMetadataUtils.CONNECT_TIMEOUT_ATTR, CONNECT_TIMEOUT_ATTR_VALUE_MILLIS)
            .uri(customRouter.getUriType() + customRouter.getServiceName())
    );
}

customRouter.getBurstCapacitycustomRouter.getReplenishRate

两者都仅在几秒钟内运行。示例:20 个请求在同一秒内与。

我在1分钟内需要20个请求。

共有1个答案

贲凌
2023-03-14

在这里,您可以找到如何配置每小时/分钟的不同速率限制数。

https://blog.fearcat.in/a?ID=01800-3ce32767-eb18-418c-b9f2-d16f522fb72b

基本上,您需要设置为每分钟20个请求

补给率:1突发容量:60请求令牌:3

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

  • 速率限制配置参考 filter.http.RateLimit filter.http.RateLimit proto { "domain": "...", "stage": "...", "request_type": "...", "timeout": "{...}" } domain (string, REQUIRED) 需要调用速率限制服务时的域。 stage (uint3

  • 速率限制配置参考。 filter.network.RateLimit filter.network.RateLimit proto { "stat_prefix": "...", "domain": "...", "descriptors": [], "timeout": "{...}" } stat_prefix (string, REQUIRED) 发布统计信息时使用的前缀。

  • 速率限制配置概述。 { "name": "rate_limit", "config": { "domain": "...", "stage": "...", "request_type": "...", "timeout_ms": "..." } } domain (required, string) 调用速率限制服务时使用的域。 stage (opt

  • 速率限制配置参考。 { "name": "ratelimit", "config": { "stat_prefix": "...", "domain": "...", "descriptors": [], "timeout_ms": "..." } } stat_prefix (required, string) 发布统计信息时使用的前缀。 domai

  • 速率限制架构概述 v1 API 参考 v2 API 参考 当请求的路由或虚拟主机有一个或多个符合过滤器设置的速率限制配置时,HTTP速率限制过滤器将调用速率限制服务。路由可以选择包含虚拟主机速率限制配置。可配置多个应用于请求。每个配置描述符都会导致被发送到速率限制服务。 如果速率限制服务被调用,并且任何响应超出限制的描述符,都将返回429响应。 组成操作 注意:本文是为v1 API编写的,但这些概