用工具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只能用于单机的限流