zuul實現的限流
限(xian)流一(yi)般可以根據客戶端IP,請求的URL,用戶登陸信息(xi)進行(xing)限(xian)制,每(mei)秒鐘(zhong)限(xian)制多(duo)次數,這(zhe)從別一(yi)方面(mian)也提(ti)升(sheng)了系統的性能,無用的并(bing)發沒那么多(duo)了。
依賴包
<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是通過登錄用戶名進行區分,也包括匿名用戶
這(zhe)樣,服務a的限流就做好了!