用工具guavan进行限流


1、pom


    com.google.guava
    guava
    23.0

2、在拦截器里拦截统计放行

private static final RateLimiter rateLimiter = RateLimiter.create(0.5);
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 立即失败机制,如果3s拿不到流量,便拒绝。tryAcquire方法可以不带参数,不带参数的话就是立即拒绝
        if (!rateLimiter.tryAcquire(3, TimeUnit.SECONDS)) {
            System.out.println("限流中......");
            return false;
        }
        System.out.println("请求成功");
        return true;
    }
RateLimiter基于“令牌通算法”来实现限流,RateLimiter只能用于单机的限流

相关