码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 两天学会微服务网关Gateway-Gateway网关限流


    锋哥原创的微服务网关Gateway视频教程:

    Gateway微服务网关视频教程(无废话版)_哔哩哔哩_bilibiliGateway微服务网关视频教程(无废话版)共计17条视频,包括:1_Gateway简介、2_Gateway工作原理、3_Gateway HelloWorld快速入门等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV1oX4y1u7ZJ/gateway默认给我们提供了限流实现,也就是网关拦截器RequestRateLimiter。

    6.1 令牌桶限流算法

    RequestRateLimiter底层实现是令牌桶算法;

    令牌桶内存储令牌,令牌桶需要设置令牌容量,也就是系统最大的并发大;

    以一定的速率生成令牌(具体速率根据系统性能设置),放到令牌桶,如果桶慢了,则丢弃;

    客户端来一个请求,则先去令牌桶获取令牌,拿到令牌,则处理请求,否则 丢弃或者返回失败;

    令牌桶算法的优点:

    通过恒定的速率生成令牌桶,能够让请求处理更均匀,不会出现短时间大量的请求处理;

    比较友好的控制高并发;

    6.2 Gateway网关限流实例

    Spring Cloud Gateway官方提供了 RequestRateLimiterGatewayFilterFactory 过滤器工厂,使用 Redis 和 Lua 脚本实现了令牌桶,来实现网关限流;

    添加下Redis依赖:

    1. <!-- spring boot redis 缓存引入 -->
    2. <dependency>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-starter-data-redis</artifactId>
    5. </dependency>
    6. <!-- lettuce pool 缓存连接池 -->
    7. <dependency>
    8. <groupId>org.apache.commons</groupId>
    9. <artifactId>commons-pool2</artifactId>
    10. </dependency>
    URI限流

    配置类:

    1. package com.java1234.config;
    2. import org.springframework.cloud.gateway.filter.ratelimit.KeyResolver;
    3. import org.springframework.context.annotation.Bean;
    4. import org.springframework.context.annotation.Configuration;
    5. import reactor.core.publisher.Mono;
    6. /**
    7. * 限流规则配置类
    8. * @author java1234_小锋
    9. * @site www.java1234.com
    10. * @company Java知识分享网
    11. * @create 2021-01-23 11:16
    12. */
    13. @Configuration
    14. public class keyResolverConfiguration {
    15. @Bean
    16. public KeyResolver pathKeyResolver(){
    17. /*return new KeyResolver() {
    18. @Override
    19. public Mono resolve(ServerWebExchange exchange) {
    20. return Mono.just(exchange.getRequest().getURI().getPath());
    21. }
    22. };*/
    23. return exchange -> Mono.just(exchange.getRequest().getURI().getPath()); // URI限流
    24. }
    25. }

    yml配置:

    1. spring:
    2. application:
    3. name: gateway-server
    4. cloud:
    5. gateway:
    6. routes:
    7. - id: rateLimiter
    8. uri: http://localhost:8080/
    9. predicates:
    10. - Path=/product/**
    11. filters:
    12. - name: RequestRateLimiter # 限流过滤器
    13. args:
    14. redis-rate-limiter.replenishRate: 1 # 令牌桶每秒填充速率
    15. redis-rate-limiter.burstCapacity: 2 # 令牌桶总容量
    16. redis-rate-limiter.requestedTokens: 1 # 一个请求需要消费的令牌数
    17. key-resolver: "#{@pathKeyResolver}"
    18. redis: # redis配置
    19. host: 192.168.0.103 # IP
    20. port: 6379 # 端口
    21. password: # 密码
    22. connect-timeout: 10s # 连接超时时间
    23. lettuce: # lettuce redis客户端配置
    24. pool: # 连接池配置
    25. max-active: 8 # 连接池最大连接数(使用负值表示没有限制) 默认 8
    26. max-wait: 200s # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
    27. max-idle: 8 # 连接池中的最大空闲连接 默认 8
    28. min-idle: 0 # 连接池中的最小空闲连接 默认 0

    访问过多之后,报429错误;

  • 相关阅读:
    LocalStroage,SessionStroage,Cookide,IndexedDB
    使用imx 8m 测试matter协议功能
    零基础学Linux内核之设备驱动篇(10)_添加设备节点
    asp.net教师调课系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
    java基础-集合-ArrayList(JDK1.8)源码学习
    切分支解决切不走因为未合并的路径如何解决
    Electron环境搭建及HelloWorld
    Matlab:数组索引
    java计算机毕业设计客户关系智能管理系统源码+mysql数据库+系统+lw文档+部署
    如何处理Vue2项目里大规模的数据计算?
  • 原文地址:https://blog.csdn.net/caoli201314/article/details/136469517
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号