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