目录

  • 背景
  • 官网对Spring Cloud Gateway的介绍
  • maven依赖
    • 核心依赖
    • Redis依赖
  • yml配置项
  • 令牌桶算法核心参数解析
  • 源码分析

背景

  • Spring Cloud Gateway①入门以及自定义过滤器开发
  • Spring Cloud Gateway②聚合Swagger
  • Spring Cloud Gateway③编码实现动态增加、修改、删除路由
  • Spring Cloud Gateway④自定义限流控制策略
  • Spring Cloud Gateway⑤令牌桶算法

官网对Spring Cloud Gateway的介绍

Spring Cloud Gateway

maven依赖

核心依赖

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>

Redis依赖

Spring Cloud Gateway默认限流算法采用的是令牌桶算法,令牌桶算法是基于Redis实现的,因此需要添加如下依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis-reactive</artifactId></dependency>

yml配置项

spring:cloud:gateway:routes:# id可以随便取- id: requestratelimiter_route# 目标地址,通过是挂到gateway上的微服务APIuri: https://example.org# 必须指定filter才会开启限流,不指定相当于无限制filters:- name: RequestRateLimiterargs:# 允许用户每秒执行多少请求,而不丢弃任何请求。这是令牌桶的填充速率redis-rate-limiter.replenishRate: 1000# 允许用户在一秒钟内执行的最大请求数。这是令牌桶可以保存的令牌数。将此值设置为零将阻止所有请求。redis-rate-limiter.burstCapacity: 1000# 是每个请求消耗多少个令牌,默认是1redis-rate-limiter.requestedTokens: 1

令牌桶算法核心参数解析

参数 说明
replenishRate 每秒生产的令牌数量
burstCapacity 令牌桶的最大容量
requestedTokens 每个请求消耗的令牌数量

这是令牌桶算法的核心参数,Spring Cloud GatewayrequestedTokens参数是写死为1,所以只对外开放另外2个参数的配置。requestedTokens=1代表每个请求消耗1个令牌。replenishRate是每秒生产的令牌数量,可以理解为每秒允许的请求数。如果每秒实际的请求数大于replenishRate,那么多出来请求就会消耗burstCapacity里面的令牌,当burstCapacity令牌数消耗完之后,就会拒绝请求,返回429。

稳定速率是通过在replenishRate(补充令牌速度) 和 burstCapacity(令牌桶容量)中设置相同的值来实现的。可通过设置burstCapacity高于replenishRate来允许临时突发流浪。在这种情况下,限流器需要在两次突发之间留出一段时间(根据replenishRate),因为连续两次突发将导致请求丢失 (HTTP 429 - Too Many Requests)

源码分析

  • 令牌桶算法限速的类是RedisRateLimiterisAllowed方法决定是否允许请求

    • RequestRateLimiterGatewayFilterFactory
    • 令牌桶算法是通过执行RedisLua脚本实现的,脚本放的位置在: spring-cloud-gateway-core-2.1.2.RELEASE.jar/META-INF/request_rate_limiter.lua

Spring Cloud Gateway⑤令牌桶算法相关推荐

  1. 【229期】Spring Boot 使用令牌桶算法+拦截器+自定义注解+自定义异常实现简单的限流...

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

  2. 限流10万QPS、跨域、过滤器、令牌桶算法-网关Gateway内容都在这儿

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 作者:雄 ...

  3. 实战 Spring Cloud Gateway 之限流篇

    来源:https://www.aneasystone.com/archives/2020/08/spring-cloud-gateway-current-limiting.html 话说在 Sprin ...

  4. 微服务网关Zuul迁移到Spring Cloud Gateway

    https://juejin.im/post/5ba8daa56fb9a05cfe486ebf 背景 在之前的文章中,我们介绍过微服务网关Spring Cloud Netflix Zuul,前段时间有 ...

  5. Spring Cloud Gateway(限流)

    在高并发的应用中,限流是一个绕不开的话题.限流可以保障我们的 API 服务对所有用户的可用性,也可以防止网络攻击. 一般开发高并发系统常见的限流有:限制总并发数(比如数据库连接池.线程池).限制瞬时并 ...

  6. Spring Cloud Gateway介绍(一)

    特性 基于 Java 8 编码 基于 Spring Framework 5 + Project Reactor + Spring Boot 2.0 构建 支持动态路由,能够匹配任何请求属性上的路由 支 ...

  7. 网关限流(令牌桶算法)

    一.需求: 每个ip地址1秒内只能发送1次请求,多出来的请求返回429错误. 二.引入依赖 spring cloud gateway 默认使用redis的RateLimter限流算法来实现.所以我们要 ...

  8. spring cloud gateway 网关_微服务网关Spring Cloud Gateway全搞定

    一.微服务网关Spring Cloud Gateway 1.1 导引 文中内容包含:微服务网关限流10万QPS.跨域.过滤器.令牌桶算法. 在构建微服务系统中,必不可少的技术就是网关了,从早期的Zuu ...

  9. spring cloud gateway 之限流篇

    转载请标明出处: https://www.fangzhipeng.com 本文出自方志朋的博客 在高并发的系统中,往往需要在系统中做限流,一方面是为了防止大量的请求使服务器过载,导致服务不可用,另一方 ...

  10. ws配置 zuul_微服务网关 Spring Cloud Gateway

    1.  为什么是Spring Cloud Gateway 一句话,Spring Cloud已经放弃Netflix Zuul了.现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是 ...

最新文章

  1. java控制台两个字符串_java控制台输入字符串
  2. Python函数参数的五种类型
  3. 李飞飞点赞的NeurIPS新赛道,刚刚公布了第一批数据集benchmark入围名单
  4. html 自定义标签使用实现方法
  5. 面对大规模 K8s 集群,如何先于用户发现问题?
  6. vista 中php4, php5 共存
  7. linux与windows编码转化
  8. 21-win10下ElasticSearch.6.1.0安装SQL插件
  9. STM32工作笔记0042---认识三极管的集电极,发射极,基极
  10. JVM启动参数手册——JVM之八
  11. DependsOn注解
  12. yolov3gpu配置_YOLO3-WIN10-GPU版配置详细教程
  13. EXCEL常用函数的操作及使用技巧(上篇)
  14. SequelizeAccessDeniedError的原因和解决方式
  15. 博弈 - SG函数和SG定理
  16. access 命令不符 等级考试_全国计算机等级考试二级笔试样卷Access数据库程序设计...
  17. PowerBI 实现中国式报表
  18. oracle部门总工资的函数,Oracle分析函数
  19. java 语音包_有人开发了马保国语音包
  20. 质量小议19 -- 熵

热门文章

  1. 制作纯净版WinPE2.0
  2. 博科 5300 光纤交换机配置 备份和恢复
  3. Xmind8 乱码问题解决(查看文件字体并下载安装相应字体)
  4. HDOJ(航电)题目分类大全
  5. 关于 nektar 连接电脑使用的一些问题说明, nektar Impact GX61/GX49/SE25
  6. RK3288-安卓5.1-AP6212-WIFI模组调试
  7. 机器学习实践:Spark MLlib库介绍与使用-3
  8. kail linux暴力破解wifi
  9. 使用SAXReader所需jar包
  10. office2012产品密钥