导语
在Java开发过程中,经常用到的限流算法有两种,一种是令牌桶算法,一种是漏斗桶算法,那么下面就来分别看看两种算法的Java实现方式。
文章目录
限流算法之漏桶算法
漏桶算法:首先保证请求先进入到漏桶中,漏桶再通过一定的速度将流量引出,这里需要注意的是当流量太大或者是漏桶已经满了之后会直接溢出,然后就开始拒绝请求,可以看出漏桶算法能强行限制数据传输的速率。如图所示,图来自网络
漏桶的实现
实现的关键点:
- 1、定义这个桶的最大容量;
- 2、记录好上次操作完成后的时间以及桶的剩余量,用来记录后续计算当前桶的容量;
- 3、定义好流速,速率越小,流控越大,流量越小;
- 4、每次请求,需要先检查桶大小,如果超过最大值,则拒绝,如果没有超过最大值则继续进行操作;