您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Sentinel熱門詞匯限流如何實現”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Sentinel熱門詞匯限流如何實現”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
何為熱點?熱點即經常訪問的數據。很多時候我們希望統計某個熱點數據中訪問頻次最高的 Top K 數據,并對其訪問進行限制。比如:
商品 ID 為參數,統計一段時間內最常購買的商品 ID 并進行限制
用戶 ID 為參數,針對一段時間內頻繁訪問的用戶 ID 進行限制
熱點參數限流會統計傳入參數中的熱點參數,并根據配置的限流閾值與模式,對包含熱點參數的資源調用進行限流。熱點參數限流可以看做是一種特殊的流量控制,僅對包含熱點參數的資源調用生效。
1、引入maven依賴
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-parameter-flow-control</artifactId> <version>x.y.z</version> </dependency>
2、手動編寫代碼添加限流規則
@RequestMapping("/getUserOrder") public String getUserOrder(Long userId) { Entry entry = null; try { entry = SphU.entry(getUserOrder, EntryType.IN, 1, userId); return "根據userId獲取用戶訂單信息成功"; } catch (Exception e) { return "您操作的比較頻繁,請稍后重試!"; } finally { if (entry != null) { entry.exit(); } } } // 定義熱點限流的規則,對第一個參數設置 qps 限流模式,閾值為1 ParamFlowRule rule = new ParamFlowRule(getUserOrder) .setParamIdx(0) .setGrade(RuleConstant.FLOW_GRADE_QPS) .setCount(1); ParamFlowRuleManager.loadRules(Collections.singletonList(rule));
或者使用控制臺形式添加熱詞限流規則
正常編寫Java接口
@RequestMapping("/getUserOrder") @SentinelResource(value = "getUserOrder") public String getUserOrder(Long userId) { return "根據userId獲取用戶訂單信息成功"; }
索引名:參數下表從 0 開始
單機閾值:單機部署時在統計時間內可以訪問多少次
統計窗口時長:統計熱詞的時間
可以給指定的參數額外設定閾值:例如:VIP用戶擁有特定的標識,判斷為VIP用戶時,可以請求接口的次數增加。
讀到這里,這篇“Sentinel熱門詞匯限流如何實現”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。