nginx限流
爲什麼要限流?
在微服務開發中,主要是爲了解決微服務的雪崩,nginx限流時有效辦法之一。nginx相當於大門
方式1
控制速率
解釋:
1.全局配置
$binary_remote_addr : 表示根據用戶的ip進行限流
10m:限流大小爲10m
zone:表示當前緩存空間的名稱--one,大小爲10m
rate:速率 ---1個請求每秒
2.局部使用
limit_req zone=one : 表示使用前面配置的速率控制算法
注意:改完記得重啓nginx : 重啓並加載配置文件
./nginx -s reload
綜上:兩行配置
limit_req_zone $binary_remote_addr zone=contentRateLimit:10m rate 3r/s;
limit_req zone=contentRateLimit;
如果有時正常流量突然增大,超出的請求將被拒絕,無法處理突發
流量,可以結合 burst 參數使用來解決該問題,圖中的burst所示:
burst=5表示:每秒緩衝的最大請求量爲5,能處理的只要一個,剩下四個在緩衝隊列中
,在burst後還可以加上nodelay : 表示所有請求併發執行
2.併發量控制(客戶端)
由於阿里雲服務器不能訪問到本地的微服務.所以openresty還得安裝到本地的linux中,而且用到了lua,還得重新安裝一次lua.我內心有點小崩潰....