電商平台行銷時候,常常會碰到的大流量問題,除了做流量分流處理,可能還要做用戶黑白名單、信譽分析,進而根據用戶ip信譽權重做相應的流量攔截、限制流量。
Nginx本身有的請求限制模組ngx_http_limit_req_module、流量限制模組ngx_stream_limit_conn_module基於令牌桶演算法,可以方便的控制令牌速率,自訂調節限流,實現基本的限流控制。
演算法想法是:
#令牌以固定速率產生,並快取到令牌桶中;
令牌桶放滿時,多餘的令牌被丟棄;
請求要消耗等比例的令牌才能被處理;
令牌不夠時,請求被快取.
漏桶演算法:
#演算法想法是:
##水(請求)從上方倒入水桶,從水桶下方流出(被處理);來不及流出的水存在水桶中(緩衝),以固定速率流出;水桶滿後水溢出(丟棄)。 這個演算法的核心是:快取請求、勻速處理、多餘的請求直接丟棄。Nginx官方版本限制IP的連線和同時分別有兩個模組:
limit_req_zone 用來限制單位時間內的請求數,也就是速率限制,採用的漏桶演算法"leaky bucket"。 limit_req_conn 用來限制相同時間連結數,即並發限制。 更多Nginx相關技術文章,請造訪Nginx使用教學欄位進行學習!
以上是nginx怎麼限流的詳細內容。更多資訊請關注PHP中文網其他相關文章!