zuul實現的限流

限流一般可以根據客戶端IP,請求的URL,用戶登陸信息進行限制,每秒鐘限制多次數,這從別一方面也提升了系統的性能,無用的併發沒那麼多了。

依賴包

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>com.marcosbarbero.cloud</groupId>
            <artifactId>spring-cloud-zuul-ratelimit</artifactId>
            <version>1.3.2.RELEASE</version>
        </dependency>

zuul的配置

zuul:
  routes: #實現了反向代碼和負載均衡,負載均衡採用輪詢的方式實現
    a:
      path: /a/**
      sensitiveHeaders: "*" #不過濾任何頭信息
      serviceId: servicea
    b:
      path: /b/**
      sensitiveHeaders: "*"
      serviceId: serviceb
    c:
      path: /c/**
      sensitiveHeaders: "*"
      serviceId: servicec
  add-proxy-headers: false
  stripPrefix: true #爲true的情況下:向後端轉發之後是不會攜帶 '/a' 的。爲 false 則相反

ratelimit限制配置

ratelimit:
  enabled: true
  repository: REDIS #使用redis存儲,一定要大寫!
  policies:
    a: #針對上面那個服務的限流
      limit: 100 #每秒多少個請求
      refreshInterval: 60 #刷新時間窗口的時間,默認值 (秒)
      type:
        - ORIGIN #這裏一定要大寫,類型說明:URL通過請求路徑區分,ORIGIN通過客戶端IP地址區分,USER是通過登錄用戶名進行區分,也包括匿名用戶

這樣,服務a的限流就做好了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章