勵志

勵志人生知識庫

限流的方法

限流的方法主要包括以下幾種:

計數器算法:這是一種最簡單的限流算法,它在一個指定的時間周期內累加訪問次數,當訪問次數達到設定的閾值時,觸發限流策略。計數器算法的缺點是存在單位時間視窗的臨界問題,即在視窗切換時可能會產生突發的流量。

滑動視窗算法:滑動視窗算法是計數器算法的改進版,它通過將時間視窗劃分為若幹個等份的小視窗,每個小視窗對應不同的時間點,擁有獨立的計數器。當請求的時間點大於當前視窗的最大時間點時,將視窗向前平移一個小視窗,整個視窗的所有請求數相加不能大於閾值。

令牌桶限流算法:令牌桶算法是一種控制令牌生成速度的限流算法。對於每一個請求,都需要從令牌桶中獲得一個令牌;如果沒有獲得令牌,則需要觸發限流策略。系統會以恆定速度往固定容量的令牌桶中放入令牌。

漏桶限流算法:漏桶算法的作用是控制數據注入網路的速度,平滑網路上的突發流量。漏桶的核心就是不管上面的水流速度有多快,漏桶水滴的流出速度始終保持不變。

合法性驗證限流:比如驗證碼、IP黑名單等,這些手段可以有效的防止惡意攻擊和爬蟲採集。

容器限流:比如TomcatNginx等限流手段,其中Tomcat可以設定最大執行緒數,當並發超過最大執行緒數會排隊等待執行;而Nginx提供了兩種限流手段:一是控制速率,二是控制並發連線數。