spring cloud gateway限流算法

方案一.Guava中的RateLimiter、Bucket4j、RateLimitJ都是基于令牌桶算法实现的限流工具。以Bucket4j为例

引入spring cloud gateway和bucket4j依赖

编写GatewayRateLimitFilterByIp并实现GatewayFilter,Ordered接口

方案二.spring cloud gateway内置的过滤器工厂限流,名为RequestRateLimiterGatewayFilterFactory的过滤器工厂,使用名为request_rate_limiter.lua的lua脚本实现限流。

RequestRateLimiterGatewayFilterFactory的实现依赖redis,需要引入spring cloud gateway和spring-boot-starter-data-redis-reactive依赖

在application.yml配置Gateway相关的限流配置

spring:

  application:

    name:  gateway-rate-limit

  redis:

    host: localhost

    port: 6379

  cloud:

    gateway:

      routes:

        - id: rateLimit_route

          uri: http://localhost:8000/hello/rateLimit

          order: 0

          predicates:

            - Path=/test/rateLimit

          filters:

            - name: RequestRateLimiter

              args:

                #使用SpEL按名称引用bean

                key-resolver: "#{@remoteAddrKeyResolver}"

                #允许用户每秒处理多少个请求

                redis-rate-limiter.replenishRate: 1

                #令牌桶的容量,允许在一秒钟内完成的最大请求数

                redis-rate-limiter.burstCapacity: 5

KeyResolver

3.

posted @   华府家丁9527  阅读(63)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示