系統設計入門:Rate Limiting
Published in
May 1, 2022
*Poke* *Poke* *Poke*….你戳太多次了!!!
Rate Limiting
指系統一段時間發requests的上限次數。原目的是為了避免DoS攻擊,透過限制每1秒限制收1個request,或每10秒收5個requests等等。
DoS Attack (denial-of-service attack) 阻斷服務攻擊
指他人透過網路重複發送請求,使目標電腦的網路或系統資源耗盡,導致服務暫時中斷或停止,結果就是一般使用者無法存取。
而當今日有人透過2台以上電腦或殭屍網路進行攻擊,就稱為DDoS attack(distributed denial-of-service attack),分散式阻斷服務攻擊。
DDoS可能導致的結果:
1. 網路異常緩慢
2. 特定網站無法存取
3. 無法存取任何網站
4. 垃圾郵件的數量急劇增加
5. 無線或有線網路連接異常斷開
6. 長時間嘗試存取網站或任何網際網路服務時被拒絕
7. 伺服器容易斷線、卡頓、存取延遲
如何防禦?
- 限速: 如文初提到的作法,直接在client端限制每秒可傳送request次數上限,避免頻寬過載或資源耗盡。
舉例來說,Redis就可用作是rate limiting中介。 - 防火牆: 使用工具來基於一系列規則篩選 Web 流量,例如,限制異常IP位址發出的請求,或是透過防火牆監控和分析網絡流量。