zuul進行rate limit


maven

<dependency>
            <groupId>com.marcosbarbero.cloud</groupId>
            <artifactId>spring-cloud-zuul-ratelimit</artifactId>
            <version>1.0.7.RELEASE</version>
        </dependency>

配置

product:
  ribbon:
    listOfServers: 192.168.99.100:8080
zuul:
  routes:
    product:
      path: /product/**
      stripPrefix: false
  ratelimit:
    enabled: true #default false
    behind-proxy: true #default false
    policies:
      product:
        limit: 10
        refresh-interval: 120 #60 default value (in seconds)
        type: #optional
          - user
          - origin
          - url
spring:
  redis:
    timeout: 10
    database: 0
    host: 192.168.99.100
    port: 6379
    pool:
      max-active: 8
      max-idle: 8
      max-wait: -1
      min-idle: 0

filterOrder

類似spring-core-4.3.4.RELEASE-sources.jar!/org/springframework/core/Ordered.java

    /**
     * Useful constant for the highest precedence value. * @see java.lang.Integer#MIN_VALUE */ int HIGHEST_PRECEDENCE = Integer.MIN_VALUE; /** * Useful constant for the lowest precedence value. * @see java.lang.Integer#MAX_VALUE */ int LOWEST_PRECEDENCE = Integer.MAX_VALUE; 

默認越小優先級越高,排查負數的情況下,0優先級最高

RateLimitFiltercom/marcosbarbero/zuul/filters/pre/ratelimit/RateLimitFilter.java

它的order為-1,表示更先執行

測試

wrk -t12 -c100 -d10s -T30s --latency http://localhost:8080/product

限流結果:

workspace curl -i http://localhost:8080/product\?debug=true HTTP/1.1 429 X-Application-Context: application X-RateLimit-Limit: 10 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 13000 Content-Length: 0 Date: Sun, 09 Apr 2017 06:44:02 GMT

doc


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM