流量突增限流策略

2021-10-04 08:21:41 字數 859 閱讀 5333

由於疫情,我們做的是網際網路教育類,所以今年我們的產品流量增加了兩倍,但是通過擴容加機器資源的方式完全扛住了,突然想到如果是爆發式的,假如流量突增10倍甚至20倍該如何處理呢?仔細思考了了一下這個問題,加上查詢資料,就想簡單寫寫有哪些方案。

假如乙個系統最大只能接受10w的併發訪問量,現在我們有乙個秒殺活動,秒殺活動開始的時候預計併發訪問量可以達到100w。很明顯100w遠遠超過系統正常的承載量,該怎麼解決這突增的流量呢?從使用者訪問開始,其實請求要經歷好幾個階段,我們可以針對每個階段來做層層限流。

首先我們思考就是這100w包括正常訪問的使用者,也存在惡意刷單的使用者,甚至某些機械人,那麼我們肯定是要攔截刷單和機械人的請求的,因為這些請求嚴重影響正常使用者的購買需求。那麼怎麼在這一層限流呢,首先非常簡單其實,就是加乙個驗證碼,首先,驗證碼可以攔截掉機械人的請求,其次可以拉長使用者的訪問時間。然後可以使用ip限制,如果通過網路技術發現了某些下單請求只需要幾毫秒,或者是重複購買同一種商品,就能認為該請求使用者不是合法使用者或者是機械人,這樣我們可以將這個ip加入黑名單限制禁止訪問。最後,不是必須的情況下,不到秒殺開始的時間我們不開放秒殺位址入口

現在,經過第一層合法性限流之後,還是有大概50w的流量進來了,我們可以使用nginx**流量到服務端集群裡,假如我們集群有3臺機器,每台機器只需要處理大概17w的併發訪問量。再者,我們知道根據網路七層模型,nginx處於第七層,我們也可以在其它的網路層進行負載,比如說我們在第二層的資料鏈路層進行mac位址的負載,我們可以生成乙個虛擬mac,然後將這個位址對映到其它3臺伺服器上,同樣的可以在第三層通過網路ip進行負載,在第四層通過埠號進行負載。大多數我們通常使用nginx,或者nginx+lvs進行負載即可。

nginx限流策略

參考 limit req zone binary remote addr zone mylimit 10m rate 2r s server binary remote addr 表示針對每個ip限流 zone mylimit 10m 表示建立乙個大小為 10m 的名為 mylimit 的記憶體區域...

流量調整和限流技術

在早期的計算機領域,限流技術 time limiting 被用作控制網路介面收發通訊資料的速率。可以用來優化效能,減少延遲和提高頻寬等。現在在網際網路領域,也借鑑了這個概念,用來為服務控制請求的速率,如果雙十一的限流,12306的搶票等。即使在細粒度的軟體架構中,也有類似的概念。兩種常用演算法 令牌...

流量調整和限流技術

在早期的計算機領域,限流技術 time limiting 被用作控制網路介面收發通訊資料的速率。可以用來優化效能,減少延遲和提高頻寬等。現在在網際網路領域,也借鑑了這個概念,用來為服務控制請求的速率,如果雙十一的限流,12306的搶票等。即使在細粒度的軟體架構中,也有類似的概念。兩種常用演算法 令牌...