首页

通过guava的RateLimiter实现令牌桶方式高并发限流代码应用实例

标签:gujava,RateLimiter,高并发限流,令牌桶,漏桶,代码示例,限流技术,接口性能优化     发布时间:2018-03-24   

一、前言

通过gujava软件包的com.google.common.util.concurrent.RateLimiter的实现通过令牌桶的方式在高并发应用接口场景下进行系统限流,其他限流方式还有漏桶、滑动窗口、计数器等。

通过guava的RateLimiter实现令牌桶方式高并发限流代码应用实例

二、源码示例

下面RateLimiterTest测试类,通过RateLimiter.create(2)每秒生成两个令牌,下面第一次获取5个令牌,第二部等他延时2.5s(2.497107)、第二次获取2个令牌需要1s(0.994163)

package com.xwood.gujava;@b@@b@import com.google.common.util.concurrent.RateLimiter;@b@@b@public class RateLimiterTest {@b@@b@	 public static void main(String[] args) {@b@	        RateLimiter rateLimiter = RateLimiter.create(2);@b@	        System.out.println(rateLimiter.acquire(5));@b@	        System.out.println(rateLimiter.acquire(2));@b@	        System.out.println(rateLimiter.acquire(1));@b@	}@b@@b@}

控制台结果

0.0@b@2.497107@b@0.994163