本文列舉了應用防護規則常見的問題。

  1. 請求鏈路頁面添加規則是給單臺機器添加還是給所有機器都添加?

    添加規則會推送到所有機器。

  2. 流控規則中的來源應用是什么意思?

    Sentinel支持按調用來源限流。流控規則中來源應用(針對應用)指的是調用該資源的調用方標識,例如在Dubbo中就對應Dubbo Consumer的應用名稱。默認來源應用設為default,代表不區分來源應用。

  3. 流控規則中的每種流控模式是什么意思?

    • 直接:直接按照當前資源的調用來源進行限流,若來源為default則不區分調用來源。
    • 關聯:當兩個資源之間具有資源爭搶或者依賴關系的時候,這兩個資源便具有了關聯。關聯限流會根據當前資源的關聯資源進行限流。

      比如read_db和write_db這兩個資源分別代表數據庫讀寫,我們可以給read_db設置限流規則來達到寫優先的目的:設置關聯資源為write_db。這樣當寫庫操作過于頻繁時,讀數據的請求會被限流。

    • 鏈路:根據調用鏈路入口限流。需要在規則中配置入口資源,即該調用鏈路入口的上下文名稱。
  4. 流控規則中的每種流控方式是什么意思?

    • 快速失敗:達到閾值時,立即攔截請求。
    • Warm Up:當流量突然增大的時候,希望系統從空閑狀態到繁忙狀態的切換的時間長一些,即如果系統在此之前長期處于空閑的狀態,希望處理請求的速率緩慢增加,經過預期的時間以后,到達系統處理請求速率的設定值;默認會從配置QPS閾值的1/3開始慢慢往上增加QPS。
    • 排隊等待:請求勻速通過,允許排隊等待,通常用于消息隊列削峰填谷等場景。比如配置了QPS為5,則代表請求每200 ms才能通過一個,多出的請求將排隊等待通過。超時時間代表最大排隊時間,超出最大排隊時間的請求將會直接被拒絕。注意排隊等待模式下QPS不要超過1000(請求間隔1 ms)。
  5. 降級規則中的RT模式、異常比例模式是什么意思?

    Sentinel熔斷降級支持兩種策略:

    • RT:按照秒級的平均響應時間進行降級,單位是毫秒。如果持續進入5個請求,對應的平均RT都持續超過降級閾值,則會被自動降級。
    • 異常比例:按照秒級的異常比例進行降級。當資源的每秒異常總數占通過量的比值超過閾值之后,資源進入降級狀態。

    資源進入降級狀態后,在配置的降級窗口時間內,請求都會快速失敗。

  6. 什么是系統保護規則?

    系統保護規則可以從系統指標維度(入口QPS、RT、線程數、Load等)來進行流量控制,讓系統盡可能跑在最大吞吐量水位的同時保證系統整體的穩定性。系統保護規則是整體維度的而不是資源維度的,并且僅對入口流量生效。入口流量指的是進入應用的流量,比如Web服務或Dubbo服務端接收的請求,都屬于入口流量。

    系統規則支持的種類有以下幾種:

    • 系統Loadload1):按照系統load1以及實時的吞吐量進行流量控制。
    • 總體平均RT:當單臺機器上所有入口流量的平均RT達到閾值即觸發系統保護。
    • 總體QPS:當單臺機器上所有入口流量的QPS達到閾值即觸發系統保護。
    • 總體線程數:當單臺機器上所有入口流量的并發線程數達到閾值即觸發系統保護。

    對于一個應用來說,每種相同的系統保護規則最多只能存在一條。