限流通常能夠根據客戶端IP,請求的URL,用戶登錄信息進行限制,每秒鐘限制屢次數,這從別一方面也提高了系統的性能,無用的併發沒那麼多了。redis
<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: 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: enabled: true repository: REDIS #使用redis存儲,必定要大寫! policies: a: #針對上面那個服務的限流 limit: 100 #每秒多少個請求 refreshInterval: 60 #刷新時間窗口的時間,默認值 (秒) type: - ORIGIN #這裏必定要大寫,類型說明:URL經過請求路徑區分,ORIGIN經過客戶端IP地址區分,USER是經過登陸用戶名進行區分,也包括匿名用戶
這樣,服務a的限流就作好了!spring