想法很直接,就是想在一定时间内把请求限制在一定范围内,保证系统不被冲垮,同时尽可能提升系统的吞吐量
限流常用的方式
计数器、滑动窗口、漏桶、令牌
计数器
计数器是限流里最简单的,简单来说,比如 我限制1...到了2018-02-27 16:24:00,把计数器归零! 周而复始!
?
但这种会有问题!比如我在前58s都不请求,而在最后一秒请求60次!这样的效果跟木有啥区别.....滑动窗口其实就是 细分之后的计数器!
?
这样假设, 先把一分钟划分成6段! 也就是10s一个段!在第一段里,假如请求61次,那么直接触发了规则!肯定就过不去了!如果只请求了1次!则是正常的!...如图所示,漏桶就是一个固定的桶,桶底有个漏洞,进水速率不用管不用管,有多少水不用管,反正就这个孔里漏出去!...如果桶里没有令牌了,则这个处理可以”抛弃掉”
令牌桶的好处就是,可以允许匀速,也允许范围内的突发处理!
类似于 我桶容量是100! 这时候1s一个请求,令牌速度也是1s一个!