首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

限流算法之漏桶法

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

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

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

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

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

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

漏桶算法

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

示意图

漏桶实现

实现的关键点

定义一个桶的最大量

记录上次桶刷新的时间和水量,以便后续计算当前桶里面的水

定义水的流出速率,速率越小,限制流量越小

每次请求,先检查桶的水量,如果没有达到最大值,往桶里面加水

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

漏桶算法

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

测试

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200517A05NHR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券