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

分布式流控

一、功能描述

控制单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,实现比起全局流控来说更加简单。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值