限流算法-令牌桶算法

限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。常用的限流算法有令牌桶法和漏桶法,而Google开源项目Guava中的RateLimiter使用的就是令牌桶算法。在使用令牌桶算法时需要引入如下依赖:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>29.0-jre</version>
</dependency>

令牌桶算法的概念:以固定的频率向桶中放入令牌,例如一秒钟2枚令牌,实际业务在每次响应请求之前都从桶中获取令牌,只有取到令牌的请求才会被成功响应。

令牌桶法的原理图如下:

示例代码如下: 

import com.google.common.util.concurrent.RateLimiter;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.Res

版权声明:本文为y_bccl27原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。