限流算法整理——滑动窗口限流算法

限流算法描述

滑动窗口限流需要将每个窗口空间划分为无限小的窗口区间,并且动态调整区间的起始点,并且在调整完毕之后需要判断各个区间,累加各个区间的请求,查看是否到达最大的阈值,以此返回允许请求还是拒绝请求

算法实现

结构定义

首先需要定义结构,因为在滑动窗口中,起到限流作用的应该是最大请求数和当前的小时间窗口(单位: 时间/ 毫秒),一开始的窗口起点应该是最新的当前系统时间

 private long windowStart = System.currentTimeMillis();
//滑动窗口的单位(小)窗口长度
 private long windowSize;
//限流最大的请求数量
 private int maxRequest;
private Map<Long, LongAdder> windowCount = new ConcurrentHashMap<>();

限流分析

首先进入tryAcquire方法中需要判断最新的时间是否已经走过了窗口的右侧,如果是,更新窗口,并且清空窗口内的请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值