當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Cloud Alibaba:Sentinel 热点参数限流
生活随笔
收集整理的這篇文章主要介紹了
Spring Cloud Alibaba:Sentinel 热点参数限流
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 前言
- 2. 熱點規則配置
- 3. 參數例外項
1. 前言
Sentinel版本:1.8.0
何為熱點?熱點即經常訪問的數據。很多時候我們希望統計某個熱點數據中訪問頻次最高的 Top K 數據,并對其訪問進行限制。比如:
- 商品 ID 為參數,統計一段時間內最常購買的商品 ID 并進行限制
- 用戶 ID 為參數,針對一段時間內頻繁訪問的用戶 ID 進行限制
熱點參數限流會統計傳入參數中的熱點參數,并根據配置的限流閾值與模式,對包含熱點參數的資源調用進行限流。熱點參數限流可以看做是一種特殊的流量控制,僅對包含熱點參數的資源調用生效。
Sentinel 利用 LRU 策略統計最近最常訪問的熱點參數,結合令牌桶算法來進行參數級別的流控。熱點參數限流支持集群模式。
2. 熱點規則配置
- 參數索引:接口參數的位置,從0開始
- 單機閾值:統計窗口時長內,相同參數最多允許的次數
寫個接口測試:
@SentinelResource(value = "order1")@GetMapping("/order1")public String order1(String name, Integer age) throws Exception {return name + "," + age;}流控規則:order1 這個接口的name參數值,在10秒內只能傳遞一次
- 打開瀏覽器,訪問 http://localhost:8020/order1?name=fuhb
- 這時把name參數換個值,訪問 http://localhost:8020/order1?name=zhangsan&age=10,結果正常
- 但是,只要在10秒內,name參數再次傳遞fuhb或者zhangsan,就會被熔斷
- 這就是熱點參數限流的作用
3. 參數例外項
上面的例子,參數在10秒內重復傳值都會被限流。
假設現在有個需求:當name=fuhb的時候,QPS允許達到5,其他情況下QPS仍然保持1。這時就需要配置參數例外項。
如下圖,應該很一目了然:
這時,我們反復訪問 http://localhost:8020/order1?name=fuhb&age=10 接口,只要10秒內不超過5次,就不會被熔斷。
總結
以上是生活随笔為你收集整理的Spring Cloud Alibaba:Sentinel 热点参数限流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Cloud Alibaba
- 下一篇: Spring Cloud Alibaba