Spring Cloud Alibaba - Sentinel入門案例(四)(熱點規則 )

胡歌粉絲發表於2020-07-06

Spring Cloud Alibaba - Sentinel入門案例(四)(熱點規則 )

回溯

什麼是Sentinel?

Sentinel (分散式系統的流量防衛兵) 是阿里開源的一套用於服務容錯的綜合性解決方案。它以流量
為切入點, 從流量控制、熔斷降級、系統負載保護等多個維度來保護服務的穩定性。

本文主要講解 Sentinel 容錯功能之一 熱點規則

正文

環境準備

需要啟動好 Sentinel 控制檯,以及監控一個消費者。
在這裡插入圖片描述
若對這一步有疑慮,請參考SpringCloud Alibaba - Sentinel入門案例(一)

編寫一個消費者呼叫生產者的方法,並呼叫。

	/**
     * 注意這裡必須使用 @SentinelResource 這個註解標識,否則熱點規則不生效
     * @param name
     * @param age
     * @param other
     * @return
     */
    @RequestMapping("/testMessageFunction4")
    @SentinelResource("/HotspotRules")
    public String testMessageFunction4(String name, Integer age ,String other) {
        return name + age +other;
    }

在這裡插入圖片描述

簡單使用

熱點引數流控規則是一種更細粒度的流控規則, 它允許將規則具體到引數上。

在這裡插入圖片描述
熱點規則的限流模式只有一種 QPS 模式

  • 引數索引:填寫此服務的請求引數下標,預設從0開始。ps(以上面請求為例:name下標是0 / age下標是1 / other下標是2 (有使用過 javassist 的會比較容易理解))。
  • 單機閾值:視窗時長中符合條件的次數。
  • 統計窗機時長:統計時間。

依照上圖的配置,意思是,當在三秒內,接收到了兩次下標是0(name)的請求,會被降級。
在這裡插入圖片描述
在這裡插入圖片描述

若是沒有傳遞下標為0(name)的引數,則不會限流。
在這裡插入圖片描述
在這裡插入圖片描述
以上證明,測試成功。

複雜使用

在這裡插入圖片描述
ps(高階選項只有當點選編輯的時候才會顯示,而新增的時候是沒有的)。
在這裡插入圖片描述
引數例外項 是對簡單配置的引數索引進行更纖細的配置。
如上,我對下標為0(name)的索引進行了配置,當為胡歌的時候,並且在三秒內請求過一次後,進行降級。
在這裡插入圖片描述

在這裡插入圖片描述
可是當我name為劉亦菲的時候訪問第二次並不會觸發降級,只有當訪問超過兩次才會觸發降級。
在這裡插入圖片描述
在這裡插入圖片描述

注意事項

  • 當設定熱點規則的時候,如果滿足了引數例外項,那麼觸發降級。
  • 不滿足引數例外項,但卻滿足簡單配置項,也會觸發降級。
  • 引數例外項優先順序高於簡單配置項。

相關文章