用工具guavan进行限流
1、pom
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
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只能用于单机的限流

浙公网安备 33010602011771号