Java学习五分钟系列,目的是为让大家在短时间内搞清楚一项技术的概念、优缺点和适用场景,想要深入的了解,还需要投入更多的时间。
大部分时候,一个系统的能力是有限的,一些对外提供的接口需要做限流控制,不然在请求突增的时候,会导致系统直接崩溃;所以当流量请求超过规定的数值,我们就要对请求进行引流或拒绝。
说到限流,那就要提到限流算法,常用的有【漏桶算法】和【令牌桶算法】两种限流算法。
漏桶算法
漏桶算法,顾名思义,漏桶可以储水,只有一个固定大小的出口;漏桶算法中,可以把一个队列看做是漏斗,如果队列(漏桶)满了,那么数据包(水)就被被丢弃。漏桶算法可以控制数量的输出速度,平滑突发流量,最终实现“提供稳定的输出”。
![f3ef60e36d968189d41dd98f97ee5f11.png](https://i-blog.csdnimg.cn/blog_migrate/7f44af814848d05d40b93b3d8ae8bb22.jpeg)
令牌桶算法
如果把漏斗算法是看做是限制出水的速度,那么令牌通算法就是在进水的时候就做了限制。
令牌通算法的原理,是以一个恒定的速度往桶里放入请求,如果请求需要被处理,则需要先获得一个令牌,当桶里没有令牌可取的时候,