Guava-RateLimiter实现令牌桶控制接口限流方案
Posted xhq1024
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Guava-RateLimiter实现令牌桶控制接口限流方案相关的知识,希望对你有一定的参考价值。
一.前言
限流的目的是通过对并发/一个时间窗口内的请求进行限速来达到保护系统的效果,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理。
二.常见限流方案
原理 | 优点 | 缺点 | |
计数器法 |
在单位时间段内,对请求数进行计数,如果数量超过了单位时间的限制,则执行限流策略,当单位时间结束后,计数器清零,这个过程周而复始,就是计数器法。 | null | 不能均衡限流,在一个单位时间的末尾和下一个单位时间的开始,很可能会有两个访问的峰值,导致系统崩溃。 |
漏桶算法 |
假设有一个水桶,水桶有一定的容量,所有请求不论速度都会注入到水桶中,然后水桶以一个恒定的速度向外将请求放出,当水桶满了的时候,新的请求被丢弃。 | 可以平滑请求,削减峰值。 | 瓶颈在漏出的速度,可能会拖慢整个系统,且不能有效地利用系统的资源。 |
令牌桶算法 (推荐) |
有一个令牌桶,单位时间内令牌会以恒定的数量和速度加入到令牌桶中,所有请求都需要获取令牌才可正常访问。当令牌桶中没有令牌可取的时候,则拒绝请求。 | 相比漏桶算法,令牌桶算法允许一定的突发流量,但是又不会让突发流量超过我们给定的限制(单位时间窗口内的令牌数)。即限制了我们所说的 QPS(每秒查询率)。 | null |
以上是关于Guava-RateLimiter实现令牌桶控制接口限流方案的主要内容,如果未能解决你的问题,请参考以下文章