分布式流控

一、功能描述

控制单jvm内接口每秒钟的有效请求数

二、特点

1、粒度控制到接口

2、阈值为单jvm阈值

三、适用场景

1.保护单jvm服务请求

2.适用于交易链路商品维度的

3.适用于浏览线

4.压力在应用

四、使用举例

适用于自身能力的防护,无整体tps限制要求,可根据单机器请求量来控制

五、实现方式

同样也是通过切面的方式切入到需要做流控的接口方法前,流控的处理流程逻辑如下所示:

分布式流控介绍和实现原理

1、先获取接口当前时间秒的本地配额对象Map<timeSecondKey, 配额对象>

2、如果当前时间秒的配额对象存在

​ 2.1、判断当前秒的流控状态是否为已流控,如果是已流控直接返回接口流控,并记录被流控的请求数量。

​ 2.2、如果未流控,先获取本地配额锁,判断配额是否充足,配额充足则本地配额-1,返回未被流控继续执行接口主体方法。如果配额不足设置接口状态为被流控,并返回流控,流控请求数+1

3、如果当前时间秒配额对象不存在

​ 获取配额锁,创建配额对象,配额值-1,返回未流控;创建对象前将接口配额对象map中timeSecondKey为60s前的记录删除。

六、分布式流控和全局流控对比

分布是流控是到单JVM维度,不需要依赖redis,实现比起全局流控来说更加简单。

相关文章:

  • 2021-05-30
  • 2021-11-28
  • 2021-12-21
  • 2021-12-11
  • 2021-06-26
  • 2022-12-23
猜你喜欢
  • 2021-07-22
  • 2021-10-03
  • 2021-04-25
  • 2022-12-23
  • 2021-12-11
  • 2021-10-10
  • 2021-11-24
相关资源
相似解决方案