关于限流问题

java小咖 发布于 11/18 22:15
阅读 395
收藏 0

如何实现控制一个方法5分钟内最多调用100次?如果第一分钟调用了10次,第5分钟调用了90次,那么第六分钟是不是可以最多调用10次?网上很多方案都不适合

加载中
0
牧头
牧头
令牌桶算法正是你需要的
k
ksopenapi
不行吧,滑动窗口,不是每5分钟100个。是最近5分钟100个。
0
f
freezingsky
固定时间内最多调用次数吧,这个需要自己写。
0
v
vs-wilson

弄两个全局静态变量 或者 单列模式就可以

0
l_1196
l_1196

每5分钟生成100个令牌,拿到一个令牌就可以调用,拿不到就给提示。

0
shangguan1024
shangguan1024

redis,方便快捷

0
找不着北的墙
找不着北的墙

guava 有专门的限流功能

0
JPer
JPer

滑动窗口不好解决

0
会做菜更懂爱
会做菜更懂爱

每次请求存入一条记录到redis,设置过期时间为5分钟。然后每次请求进来先统计redis的记录有没有大于100条,大于就拒绝请求,小于就放行,并将请求存入一条记录到redis,设置过期时间为5分钟。如果不存入redis,弄个全局静态集合变量也可以,只不过需要自己比对一下时间,并注意线程安全。

返回顶部
顶部