限流算法之漏桶法(Java实现)
前面几篇介绍了限流的其他方法,请参考
今天再看看最后一种漏桶算法,这个也比较简单,
漏桶算法
漏桶(Leaky Bucket)算法:请求先进入到漏桶里,漏桶以一定的速度出水,当水流入速度过大或者漏桶已满会直接溢,然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率。
示意图
漏桶实现
实现的关键点
定义一个桶的最大量
记录上次桶刷新的时间和水量,以便后续计算当前桶里面的水
定义水的流出速率,速率越小,限制流量越小
每次请求,先检查桶的水量,如果没有达到最大值,往桶里面加水
代码比较简单,下面就是完整的代码,
漏桶算法
最后做个测试,用一个线程池模拟多个请求,看看是否到达限流的效果,到此限流的常用算法就介绍完了,欢迎讨论,一起学习,一起进步。
测试