Sentinel限流、降級配置詳解


安裝Sentinel

  • 下載sentinel-dashboard-1.8.2.jar
  • 安裝有jdk環境,8080端口未被占用
  • 在jar包所在目錄打開cmd,輸入命令啟動:java -jar sentinel-dashboard-1.8.2.jar
  • 瀏覽器訪問sentinel的web控制台,用戶名和密碼是sentinel:http://localhost:8080/

限流:流控模式

  1. 直接
    當我們監控到請求后,在請求下面,點擊流控規則 --> 新增流控規則;資源名為接口映射路徑

    以上選擇QPS+單機閾值表示每秒鍾請求超過閾值后,直接失敗;若選擇線程數+單機閾值表示當線程數達到閾值時限流;區別:選擇QPS,達到閾值后就不能請求了,選擇線程數,達到閾值后依然可以請求,但請求會一直堵着

  2. 關聯:
    A請求關聯B請求,當B請求達到閾值后會限制A請求

  3. 鏈路:
    業務層有一個方法getOrder,控制層有兩個方法test1、test2都調用了getOrder方法,當getOrder請求數達到閾值,限制test1的請求,test2依然可請求

    詳情可參考:https://blog.csdn.net/Ezerbel/article/details/107919230

限流:流控效果

  1. 快速失敗:請求數超過閾值后,返回錯誤信息
  2. Warm Up(預熱):

    單機閾值/3=初始時每秒的處理數量;以上表示最初每秒能處理3條請求,經過預熱時長5秒后每秒能處理10條
  3. 排隊:
    指定每秒能處理的請求數,超出閾值后的請求將繼續等待,等待時間為 <超時時間ms>

降級

  1. 平均響應時間:
    序號1表示選擇平均響應時間策略,序號2表示閾值,序號3表示熔斷時間

    以上表示:訪問testD請求,平均響應時間表示1秒處理5個請求,序號2表示200ms處理5條,導致處理不了;且每秒訪問testD請求超過5條,兩個條件同時滿足時,會觸發服務降級熔斷1秒;1秒過后,關閉降級

    Sentinel 1.7.0才有平均響應時間(DEGRADE_GRADE_RT),Sentinel 1.8.0的沒有這項,取而代之的是慢調用比例

  2. 異常比例:
    訪問testD請求,每秒請求數大於5條,且每秒出現異常的比例大於0.2,則觸發降級


    若在一秒內發送一條請求,這條請求會出異常,這時每秒請求數小於5,異常比例100%超出閾值,就不會觸發降級,而是返回一個錯誤頁面

  3. 異常數:
    每分鍾訪問的請求中,出現異常的數量超過閾值5則觸發降級

  • 降級是請求超時或出現異常時能返回提示信息或有執行備用的方法,返回Blocked by Sentinel (flow limiting)是sentinel默認提示信息

熱點參數限流

  • 統計某個請求訪問時傳入的參數,當該參數達到閾值則進行限流

  • 熱點key限流案例:
    編寫方法接口/testHotKey,@SentinelResource中指定資源名和兜底的方法

    在sentinel請求下面,點擊熱點規則 --> 新增熱點限流規則;參數索引0表示該請求的第一個參數p1

    以上表示訪問/testHotkey同時傳入參數p1,每秒訪問次數超過閾值1則執行兜底的方法

    以上表示:訪問該請求且傳入第一個參數,訪問次數超過閾值則執行兜底的方法,如果第一個參數的值等於5,每秒訪問達到200才執行兜底的方法
    只有sentinel頁面配置的限流規則才能觸發降級,方法本身的異常不能觸發降級

系統規則:


系統規則是限流系統所有的請求訪問,例如訪問系統的請求總數不能超過閾值,或系統的cup使用率不能超過指定值


免責聲明!

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



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