`
blueswind8306
  • 浏览: 124552 次
  • 来自: ...
社区版块
存档分类
最新评论

时间窗口的实现思路

 
阅读更多
参考以下博客:
关于两种限流模式

其中,我理解的时间窗口的实现方式:
1. 建立一个定长数组,数组每个位置代表一个相对时间窗口,内容存储这个窗口内的限流计数器(AtomicInteger)
2. 保存一个初始索引指针,用来记录指针变更
3. 当请求过来时,先将当前时间取模定位到数组中的某个位置(代表某个相对时间),然后判断此位置是否等于索引指针,如果等于说明还在当前窗口内,则将它的值+1;如果不等于则说明不在当前窗口内了,则需要先将此位置的值覆盖为1,再将指针移动。

这里需要注意移动指针的并发操作问题。
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics