SpringCloud(40)——Sentinel熱點Key

什么是熱點?我們看一下官網(wǎng)的解釋

image.png

我個人理解,之前的流控和降級是針對接口級別來進行限流的,而熱點可以做到更細粒度的限流,從參數(shù)的角度來進行限流。

回滾方法
之前的case,當觸發(fā)限流后,都是用sentinel系統(tǒng)默認的提示:Blocked by Sentinel(flow limiting)
我們能不能像使用hystrix那樣,某個方法出問題了,可以找到對應(yīng)的自定義的降級方法呢?
當然是可以以的,只不過在hystrix中我們使用的是@HystrixCommand而在Sentinel中,我們要使用@SentinelResource

新增controller測試方法

    @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,o(╥﹏╥)o";  //sentinel系統(tǒng)默認的提示:Blocked by Sentinel (flow limiting)
    }

需要注意的是testHotKey是我們的測試方法,方法里有兩個非必填的參數(shù),方法上面使用了@SentinelResource注解,意思是開啟了Sentinel資源配置的一些功能,value就是資源名,而blockHandler就相當于hystrix的回滾方法了。

接下來我們配置熱點規(guī)則

image.png

注意:資源名不是controller的方法名,而是配置的@SentinelResource的value名

image.png

參數(shù)索引表示的是第幾個參數(shù),比如我們要對p1進行限流就要填0,對p2限流就填1。
熱點限流都是根據(jù)QPS來判定的,因此我們設(shè)置的這條熱點規(guī)則的意思是:
當配置testHostKey這個資源的請求中含有第一個參數(shù)(也就是p1)的請求的QPS大于1時,觸發(fā)限流。

接下來我們進行測試
測試結(jié)果:
QPS大于1時(也就是一直發(fā)送請求)
當請求參數(shù)是p1時,會發(fā)生限流
當請求參數(shù)是p1和p2時,也會發(fā)生限流
當請求參數(shù)是p2時,不會發(fā)生限流

而且打印的是我們自定義的方法中的回滾信息。

image.png
?著作權(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)容