快捷搜索:  汽车  科技

限流算法实现,限流算法之漏桶法

限流算法实现,限流算法之漏桶法实现的关键点示意图限流算法之令牌桶法(Java实现)今天在看看最后一种漏桶算法,这个也比较简单,漏桶(Leaky Bucket)算法:请求先进入到漏桶里 漏桶以一定的速度出水,当水流入速度过大或者漏桶已满会直接溢,然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率。

限流算法实现,限流算法之漏桶法(1)

限流算法之漏桶法(Java实现)

前面几篇介绍了限流的其他方法,请参考

限流算法之计数器算法(Java实现)

限流算法之滑动窗口法(Java实现)

限流算法之令牌桶法(Java实现)

今天在看看最后一种漏桶算法,这个也比较简单,

漏桶算法

漏桶(Leaky Bucket)算法:请求先进入到漏桶里 漏桶以一定的速度出水,当水流入速度过大或者漏桶已满会直接溢,然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率。

限流算法实现,限流算法之漏桶法(2)

示意图

漏桶实现

实现的关键点

  • 定义一个桶的最大量
  • 记录上次桶刷新的时间和水量,以便后续计算当前桶里面的水
  • 定义水的流出速率,速率越小,限制流量越小
  • 每次请求,先检查桶的水量,如果没有达到最大值,往桶里面加水

代码比较简单,下面就是完整的代码,

限流算法实现,限流算法之漏桶法(3)

漏桶算法

最后做个测试,用一个线程池模拟多个请求,看看是否到达限流的效果,到此限流的常用算法就介绍完了,欢迎讨论,一起学习,一起进步。

限流算法实现,限流算法之漏桶法(4)

测试

猜您喜欢: