首页
学习
活动
专区
圈层
工具
发布
34 篇文章
1
Spring Cloud Gateway的概念和背景
2
Spring Cloud Gateway的基本原理和特性
3
Spring Cloud Gateway 的架构和核心组件(一)
4
Spring Cloud Gateway 的架构和核心组件(二)
5
Spring Cloud Gateway环境搭建和配置(一)
6
Spring Cloud Gateway环境搭建和配置(二)
7
Spring Cloud Gateway路由的基本概念
8
Spring Cloud Gateway配置路由规则(一)
9
Spring Cloud Gateway配置路由规则(二)
10
Spring Cloud Gateway配置路由规则(三)
11
Spring Cloud Gateway路由规则的匹配和优先级(一)
12
Spring Cloud Gateway路由规则的匹配和优先级(二)
13
Spring Cloud Gateway过滤器配置
14
Spring Cloud Gateway过滤器配置-示例
15
Spring Cloud Gateway 过滤器的作用(一)
16
Spring Cloud Gateway 过滤器的作用(二)
17
Spring Cloud Gateway 过滤器的分类
18
Spring Cloud Gateway过滤器的执行顺序
19
Spring Cloud Gateway负载均衡(一)
20
Spring Cloud Gateway负载均衡-随机策略
21
Spring Cloud Gateway负载均衡-加权轮询策略
22
Spring Cloud Gateway负载均衡-加权随机策略
23
Spring Cloud Gateway限流(一)
24
Spring Cloud Gateway限流(二)
25
Spring Cloud Gateway高可用的实现
26
Spring Cloud Gateway网关安全性的保障(一)
27
Spring Cloud Gateway网关安全性的保障(二)
28
Spring Cloud Gateway 网关与微服务架构的整合(一)
29
微服务架构的基本概念和组件
30
Spring Cloud Gateway 的监控(一)
31
Spring Cloud Gateway 的监控(二)
32
Spring Cloud Gateway监控配置示例
33
Spring Cloud Gateway 的调试
34
使用 Spring Cloud Gateway 进行微服务架构的 API 网关实践

Spring Cloud Gateway限流(二)

步骤四:配置过滤器

在application.yml文件中配置限流过滤器:

代码语言:javascript
复制
spring:
  cloud:
    gateway:
      default-filters:
        - name: RedisRateLimiter
          args:
            key-resolver: "#{@pathKeyResolver}"
            permits: 10
            duration: 1
            header: X-RateLimit-Header

我们在这里将该过滤器命名为RedisRateLimiter,并设置了一些参数,如key-resolver(用于解析Redis键)、允许的请求数量(permits)、限流时间(duration)和请求头中的标识符(header)。

步骤五:创建键解析器

创建一个名为PathKeyResolver的类来解析Redis键:

代码语言:javascript
复制
@Component
public class PathKeyResolver implements KeyResolver {

    @Override
    public Mono<String> resolve(ServerWebExchange exchange) {
        return Mono.just(exchange.getRequest().getPath().toString());
    }
}

这个解析器简单地将请求路径作为键,使用Mono.just将其包装在Mono容器中,以与Reactive RedisTemplate一起使用。

步骤六:测试限流

现在,我们可以使用Postman等工具测试我们的限流过滤器是否有效了。我们可以使用以下方式来测试:

  1. 使用Postman发送10个请求(或更多)到我们的API端点。
  2. 然后等待1秒钟(或更长时间),再次发送10个请求。
  3. 应该看到第一个批次的所有请求都成功,而第二个批次的所有请求都应该被拒绝,并返回429(过多请求)状态码。
下一篇
举报
领券