Sentinel熱門詞匯限流的實現(xiàn)詳解
熱點參數(shù)限流
何為熱點?熱點即經(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)用生效。
基本使用
1、引入maven依賴
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-parameter-flow-control</artifactId> <version>x.y.z</version> </dependency>
2、手動編寫代碼添加限流規(guī)則
@RequestMapping("/getUserOrder") public String getUserOrder(Long userId) { Entry entry = null; try { entry = SphU.entry(getUserOrder, EntryType.IN, 1, userId); return "根據(jù)userId獲取用戶訂單信息成功"; } catch (Exception e) { return "您操作的比較頻繁,請稍后重試!"; } finally { if (entry != null) { entry.exit(); } } } // 定義熱點限流的規(guī)則,對第一個參數(shù)設(shè)置 qps 限流模式,閾值為1 ParamFlowRule rule = new ParamFlowRule(getUserOrder) .setParamIdx(0) .setGrade(RuleConstant.FLOW_GRADE_QPS) .setCount(1); ParamFlowRuleManager.loadRules(Collections.singletonList(rule));
或者使用控制臺形式添加熱詞限流規(guī)則
正常編寫Java接口
@RequestMapping("/getUserOrder") @SentinelResource(value = "getUserOrder") public String getUserOrder(Long userId) { return "根據(jù)userId獲取用戶訂單信息成功"; }
索引名:參數(shù)下表從 0 開始
單機閾值:單機部署時在統(tǒng)計時間內(nèi)可以訪問多少次
統(tǒng)計窗口時長:統(tǒng)計熱詞的時間
可以給指定的參數(shù)額外設(shè)定閾值:例如:VIP用戶擁有特定的標識,判斷為VIP用戶時,可以請求接口的次數(shù)增加。
到此這篇關(guān)于Sentinel熱門詞匯限流的實現(xiàn)詳解的文章就介紹到這了,更多相關(guān)Sentinel熱詞限流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java協(xié)程編程之Loom項目實戰(zhàn)記錄
這篇文章主要介紹了Java協(xié)程編程之Loom項目嘗鮮,如果用嘗鮮的角度去使用Loom項目,可以提前窺探JVM開發(fā)者們是如何基于協(xié)程這個重大特性進行開發(fā)的,這對于提高學習JDK內(nèi)核代碼的興趣有不少幫助,需要的朋友可以參考下2021-08-08Java中==與equals()及hashcode()三者之間的關(guān)系詳解
最近也是在讀Hollis的《深入理解Java核心技術(shù)》里面一節(jié)講到了equals()和hashcode()的關(guān)系,對于這個高頻面試點,咱們需要認真理清一下幾者之間的關(guān)系2022-10-10詳解SpringBoot2.0的@Cacheable(Redis)緩存失效時間解決方案
這篇文章主要介紹了詳解SpringBoot2.0的@Cacheable(Redis)緩存失效時間解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04Java環(huán)境變量的設(shè)置方法(圖文教程)
想要成功配置Java的環(huán)境變量,那肯定就要安裝JDK,才能開始配置的。2013-05-05