方案一、 Guava工具包 实现单机版限流
Demo的Git地址:https://gitee.com/deepjava/test-api-limit.git
使用Google的Guava工具包提工单 RateLimiter类 可以实现单机状态下的接口限流
@RestController
@RequestMapping("/test")
public class ApiLimitController {// 接口0.5秒 能够访问一次RateLimiter rateLimiter = RateLimiter.create(0.5);@GetMapping("/a")public String testA(HttpServletRequest request){boolean b = rateLimiter.tryAcquire();if(b){return "a";}else {return "限流";}}
}
方案二、Redis + lua脚本 实现分布式系统的接口限流
// 持续更新中 todo