SpringCloudAlibaba--Sentinel熱點參數限流

Sentinel熱點參數限流

在這裏插入圖片描述

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

  • 商品 ID 爲參數,統計一段時間內最常購買的商品 ID 並進行限制
  • 用戶 ID 爲參數,針對一段時間內頻繁訪問的用戶 ID 進行限制

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

示例

//熱點限流
    @GetMapping("/testHotKey")
    @SentinelResource(value = "testHotKey", blockHandler = "deal_testHotKey")
    public String testHotKey(@RequestParam(value = "p1", required = false) String p1,
                             @RequestParam(value = "p2", required = false) String p2) {
        return "*****testHotKey";
    }
    
    public String deal_testHotKey (String p1, String p2, BlockException exception) {
        return "****deal_testHotKey";
    } 

配置:索引爲第0個的參數(p1)閾值爲1
在這裏插入圖片描述

  • 攜帶p1參數快速多次訪問:
    在這裏插入圖片描述
    超過1秒一次的限制,觸發blockHandler方法。

  • 攜帶p2參數快速訪問多次:
    在這裏插入圖片描述
    一切正常。

  • 同時攜帶p1和p2參數快速訪問:
    在這裏插入圖片描述
    觸發blockHandler方法。

參數例外項

在這裏插入圖片描述

上述案例在訪問超過1秒1個後馬上被限流。但是,我們希望p1參數當它時某個特殊值時,它的限流值和平時不一樣。

比如:當p1=5時,它的閾值可以達到200;其它值仍然爲1

在這裏插入圖片描述

  • 攜帶p1=5快速多次訪問:正常
    在這裏插入圖片描述

  • 攜帶p1=3快速多次訪問:觸發blockHandler方法
    在這裏插入圖片描述

注意:

  • @SentinelResource處理的是Sentinel控制檯配置的違規情況,有blockHandler方法配置的兜底處理;
  • 如果邏輯代碼中出現其它RuntimeException,@SentinelResource是不管的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章