使用Zuul中的過濾器結合谷歌提供的工具類RateLimiter達到限流ide
在網關服務中建立一個過濾器,並添加到容器中工具
@Component public class RateLimitFilter extends ZuulFilter { private static final RateLimiter RATE_LIMITER = RateLimiter.create(1);//設置每秒訪問的次數,這裏是每秒只能被訪問一次 @Override public String filterType() {
//設置爲前置過濾器 return PRE_TYPE; } @Override public int filterOrder() {
//設置優先級,這裏設置的優先級是最高級 return SERVLET_DETECTION_FILTER_ORDER-1; } @Override public boolean shouldFilter() { return true; } @Override public Object run() throws ZuulException { if(!RATE_LIMITER.tryAcquire()){ //這裏咱們能夠直接拋出異常,提示友好信息給用戶 System.out.println("限流"); } return null; } }
這樣能夠經過網關實現簡單的限流操做ui