在springcloud中自定义限流过滤器

关于gvava限流器

常用的限流算法有漏桶算法和令牌桶算法,guava的RateLimiter使用的是令牌桶算法,也就是以固定的频率向桶中放入令牌,例如一秒钟10枚令牌,实际业务在每次响应请求之前都从桶中获取令牌,只有取到令牌的请求才会被成功响应,获取的方式有两种:阻塞等待令牌或者取不到立即返回失拜

 首先创建一个限流器,参数为:每秒生成两个令牌

RateLimiter rateLimiter = RateLimiter.create(2.0);

 如果用户发来请求,首先判断一下用户是否获得令牌

if(rateLimiter.tryAcquire()){
            log.info("获取到了令牌");
        }else {
            log.error("未获取到令牌");
        }

获得令牌就可以执行相应的操作,通常用在秒杀等系统中

发布了38 篇原创文章 · 获赞 1 · 访问量 639

猜你喜欢

转载自blog.csdn.net/weixin_43698185/article/details/104396525