Sentinel熱點規(guī)則

官方文檔

https://github.com/alibaba/Sentinel/wiki/%E7%83%AD%E7%82%B9%E5%8F%82%E6%95%B0%E9%99%90%E6%B5%81

什么是熱點規(guī)則

何為熱點?熱點即經(jīng)常訪問的數(shù)據(jù)。很多時候我們希望統(tǒng)計某個熱點數(shù)據(jù)中訪問頻次最高的 Top K 數(shù)據(jù),并對其訪問進行限制。比如:

  • 商品 ID 為參數(shù),統(tǒng)計一段時間內(nèi)最常購買的商品 ID 并進行限制
  • 用戶 ID 為參數(shù),針對一段時間內(nèi)頻繁訪問的用戶 ID 進行限制

熱點參數(shù)限流會統(tǒng)計傳入?yún)?shù)中的熱點參數(shù),并根據(jù)配置的限流閾值與模式,對包含熱點參數(shù)的資源調(diào)用進行限流。熱點參數(shù)限流可以看做是一種特殊的流量控制,僅對包含熱點參數(shù)的資源調(diào)用生效。

image.png

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

配置實現(xiàn)

controller

    /**
     * 使用@SentinelResource標簽開啟熱點參數(shù)限流功能
     * @SentinelResource(value)對應(yīng)Sentinel控制臺-熱點規(guī)則-資源名
     * @SentinelResource(blockHandeler)指定熱點限流生效后的處理函數(shù)
     */
    @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){
        // sentinel默認的提示為:Blocked by Sentinel(flow limiting),這里可以自定義修改
        return "-------------------- 自定義返回內(nèi)容 --------------------------";
    }

Sentinel控制臺-熱點規(guī)則-新增熱點規(guī)則
這里需要注意,當指定參數(shù)索引為0時,指定的是/testHostKey接口的第一個參數(shù)P1,即該熱點參數(shù)限流規(guī)則只針對參數(shù)p1生效。
例如http://localhost:8005/testHotKey?p2=haha并不會觸發(fā)該熱點限流規(guī)則
只有當參數(shù)中存在p1時才會觸發(fā)該熱點限流規(guī)則,例如http://localhost:8005/testHotKey?p1=haha

image.png

上圖中熱點限流的規(guī)則為,當資源testHostKey第1個參數(shù)的QPS超過1時,將進行限流操作,返回結(jié)果如下

image.png

參數(shù)例外項

image.png

上圖配置的意思為,當資源testHotKey第一個參數(shù)QPS超過1時,會觸發(fā)限流,但是有一個例外情況就是,當?shù)谝粋€參數(shù)的值為5時限流的閾值為200而不是1,這里可以配置多個參數(shù)例外項。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容