微服務之間的通訊安全(七)-Sentinel入門之熱點參數限流及系統限流


1、熱點參數限流

1.1、何為熱點?熱點即經常訪問的數據。很多時候我們希望統計某個熱點數據中訪問頻次最高的 Top K 數據,並對其訪問進行限制。比如:

a、商品 ID 為參數,統計一段時間內最常購買的商品 ID 並進行限制

b、用戶 ID 為參數,針對一段時間內頻繁訪問的用戶 ID 進行限制

熱點參數限流會統計傳入參數中的熱點參數,並根據配置的限流閾值與模式,對包含熱點參數的資源調用進行限流。熱點參數限流可以看做是一種特殊的流量控制,僅對包含熱點參數的資源調用生效

Sentinel 利用 LRU 策略統計最近最常訪問的熱點參數,結合令牌桶算法來進行參數級別的流控。熱點參數限流支持集群模式。

1.2、定義資源,我們將獲取訂單信息設置為資源

 1.2、定義規則,我們使用控制台來設置熱點參數規則,對獲取訂單限流為每秒10個請求,但是當第一個參數,也就是id為123是,每秒一個請求。

 1.3、測試,快速點擊獲取訂單請求,參數不為123時,正常,但參數為123時,異常

  

控制台打印如下,可以看到當參數為123時,請求過快,拋出了ParamFlowException,說明我們設置的熱點規則生效了。

2、系統限流

  Sentinel不僅僅支持資源層面的限流、對整個應用的入口流量也可以做出限制,從單台機器的 load、CPU 使用率、平均 RT、入口 QPS 和並發線程數等幾個維度監控應用指標,讓系統盡可能跑在最大吞吐量的同時保證系統整體的穩定性。如下圖,可以通過控制台進行設置:

  • Load 自適應(僅對 Linux/Unix-like 機器生效):系統的 load1 作為啟發指標,進行自適應系統保護。當系統 load1 超過設定的啟發值,且系統當前的並發線程數超過估算的系統容量時才會觸發系統保護(BBR 階段)。系統容量由系統的 maxQps * minRt 估算得出。設定參考值一般是 CPU cores * 2.5
  • CPU usage(1.5.0+ 版本):當系統 CPU 使用率超過閾值即觸發系統保護(取值范圍 0.0-1.0),比較靈敏。
  • 平均 RT:當單台機器上所有入口流量的平均 RT 達到閾值即觸發系統保護,單位是毫秒。
  • 並發線程數:當單台機器上所有入口流量的並發線程數達到閾值即觸發系統保護。
  • 入口 QPS:當單台機器上所有入口流量的 QPS 達到閾值即觸發系統保護。

 

 

 項目源碼:https://github.com/caofanqi/study-security/tree/dev-sentinel3


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM