令牌桶算法:
1.名词解释
令牌:可以理解为一次性的门禁卡
产生令牌:以恒定的速率产生令牌放入桶中
消耗令牌:每一次请求都会消耗桶中的令牌,大的数据包需要的令牌多一些,小的数据包需要的令牌少一些
令牌桶大小:令牌桶的容量
2.场景
- 当请求消耗令牌的速率持续小于产生令牌的速率时,令牌桶在一定时间就会变满,此时新产生的令牌就无效,不放入令牌桶
- 当请求消耗令牌的速率大于令牌产生的速率时,此时就会消耗令牌桶中的存货(第一种情况也会消耗,但是会及时补充,所以就可以理解为不消耗)来保持现在的请求速率,当令牌桶存货消耗为空时,请求速率就被限制为令牌的产生速率。
3.优点
在限流的情况下,偶尔的高流量(请求很多)是不可避免的,多余的请求只有被丢弃。
令牌桶算法有效解决了这一问题,有了令牌桶做缓冲,偶尔的高流量(请求很多)并不会被直接丢弃