技术组件(一)-X-Limitor(混合限流器)

实现目标

实现spring-boot插件话限流轻量型工具,用户可

  1. 自定义配置同步规则(无论zk,applo等等,可以自己定义)
  2. 自定义超限策略
  3. 自定义检查规则
  4. 单台限流和集群限流支持
  5. 支持后续的监控扩展

为什么要限流

  1. 每台服务器都有自己的处理能力上限,不论TPS还是QPS,超过上限后服务可能将进入不可控状态,所以这时候对于每台服务的处理上限我们在入口就要做好防护措施,防止服务不可用,甚至造成雪崩情况发生.

  2. 集群的限流使用,我们经常使用到依赖场景,比如底层打款接口的tps为90,如果我们不做限流,通过我们请求打款会造成超限的各种不可控的异常问题.

常见算法了解

  1. 令牌桶:

    1. 会有令牌生产者按一定频次向桶中放令牌
    2. 请求线程每次取一个令牌后才可访问


      技术组件(一)-X-Limitor(混合限流器)_第1张图片
      image.png
  2. 漏斗

    1. 漏斗设置了最大访问阈值,超过阈值将会溢出
    2. 漏斗限制了出口大小,控制了最大并发请求数,超出请求可能会阻塞等待


      技术组件(一)-X-Limitor(混合限流器)_第2张图片
      image.png
  1. 计数器算法(信号量限制)
    1. 计数器算法,控制了单位时间内最大访问数量
    2. 不进行流速控制
技术组件(一)-X-Limitor(混合限流器)_第3张图片
image.png

XLimitor实现架构

1.核心实现功能点:

  1. 分布式redis实现限流,对应等待时间的逻辑设计
  2. 单台服务限流通过RateLimiter配置
  3. 监听器动态更新规则配置,可用户自己实现监听逻辑规则
  4. 超限策略自定义实现
  5. 监控扩展
  6. 动态插拔,不限位置,灵活使用(比如说网关系统可以插入拦截器,service层限流aop等,或者代码植入限流器配置)
  7. 降级相关策略支持

2. 架构图:

技术组件(一)-X-Limitor(混合限流器)_第4张图片
X-Limitor.png

说明:
1.dispatch-center:调度中心,负责所有请求拦截规则管理、限流器规则管理等等工作

  1. irule:拦截规则定义,如根据uri、ip、自定义商编等等规则配置

  2. limitor:限流器组件,实现集群限流、单台限流、阻塞配置、容错降级等逻辑

  3. exchange-map:交换处理器,绑定irule和limitor之间关系

  4. refresher:刷新者,用于对外提供更新api

  5. AccessPoint:接入适配,提供常用接入场景

  6. monitor-extend:对于性能监控扩展模块

  7. 最上的监听自定义扩展点是提供对外业务自定义扩展功能

3. 源代码

建设中,后补.....

你可能感兴趣的:(技术组件(一)-X-Limitor(混合限流器))