Spring Cloud整合Sentinel

1、引入依賴

鏈接: 點擊查看依賴關系
在這里插入圖片描述
在這里插入圖片描述
父pom

<spring.cloud.version>Hoxton.SR12</spring.cloud.version>
<spring.cloud.alibaba.version>2.2.10-RC1</spring.cloud.alibaba.version>

Sentinel應用直接引用starter

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

2、配置規則

限流著重于防止整體系統的入口流量過大,通過量化控制進入系統的請求速度。
降級是在系統負載過高或部分服務不可用時,采取的一種策略,它允許系統犧牲部分非核心功能或降低服務質量,以保證核心功能的正常運行。

// 限流配置規則@PostConstructpublic static void initFlowRules() {List<FlowRule> rules = new ArrayList<>();FlowRule rule = new FlowRule();rule.setResource("ordering"); //設置資源名稱rule.setGrade(RuleConstant.FLOW_GRADE_QPS);//QPS 每秒的訪問量// Set limit QPS to 20.rule.setCount(2);rules.add(rule);FlowRuleManager.loadRules(rules);}// 降級規則//@PostConstructpublic  void initFlowRules2() {List<DegradeRule> rules = new ArrayList<>();DegradeRule rule = new DegradeRule();rule.setResource("ordering2"); //設置資源名稱rule.setGrade(DEGRADE_GRADE_EXCEPTION_RATIO);// Set limit QPS to 20.rule.setCount(0.5);rule.setMinRequestAmount(10);rule.setTimeWindow(10); // 10s 熔斷時長10srule.setStatIntervalMs(10*1000); 10s 統計時長,統計的窗口(單位為 ms)rules.add(rule);DegradeRuleManager.loadRules(rules);}

3、為接口設置熔斷與降級方法

blockHandler與fallback命名規則

  1. blockHandler方法應該接收與原始方法相同類型的參數,并且額外添加一個 BlockException 類型的參數,用于傳遞被 Sentinel 阻塞的具體原因。
    命名規則是:
  • 原方法名 + “_blockHandler”,比如在示例中,對應的 blockHandler 方法應該是 ordering_blockHandler(Integer id, BlockException ex)。
  • 必須為static方法
  1. fallback方法應該接收與原始方法相同類型的參數
    命名規則是:
  • 原方法名 + “_fallback”,此方法應該接收與原始方法相同的參數列表,并返回與原始方法相同的返回類型。
  • 必須為static方法
    在示例中,對應的 fallback 方法應該是 ordering_fallback(Integer id)也可以ordering_fallback(Integer id, Throwable ex)

上述的 _blockHandler 和 _fallback 后面是可以帶上任意的參數類型,但至少需要包含原始方法的所有參數類型,以及在 blockHandler 方法中加入 BlockException 參數。

驗證限流

@RestController
@RequestMapping("/api/order")
@Slf4j
public class OrderController {private  static AtomicInteger count = new AtomicInteger(0);@GetMapping@SentinelResource(value = "HelloWorld",blockHandlerClass=OrderController.class,blockHandler = "ordering_blockHandler")public String ordering(Integer id) {int i = count.incrementAndGet();log.debug(id + "進來了 - > "+i);return "下單成功";}public static String  ordering_blockHandler(Integer id,BlockException ex){int i = count.incrementAndGet();log.debug("熔斷了 -> "+i );return "系統繁忙,請稍后重試";}@PostConstruct //初始化執行private  void initFlowRules(){List<FlowRule> rules = new ArrayList<>();FlowRule rule = new FlowRule();rule.setResource("HelloWorld");rule.setGrade(RuleConstant.FLOW_GRADE_QPS);// Set limit QPS to 20.rule.setCount(2);rules.add(rule);FlowRuleManager.loadRules(rules);}
}

驗證降級

@RestController
@RequestMapping("/api/order2")
@Slf4j
public class Order2Controller {@GetMapping@SentinelResource(value = "ordering2",fallbackClass= Order2Controller.class,fallback = "ordering_fallback")public String ordering(Integer id) {log.debug("進來了");if (id == 4) {throw new IllegalArgumentException("參數異常");}return "下單成功";}//? 什么時候觸發? ordering_fallback 有什么要求嗎?public static String ordering_fallback(Integer id, Throwable ex) {log.debug("降級");return "降級了";}@PostConstruct //初始化執行 降級規則private  void initDegradeRule(){List<DegradeRule> rules = new ArrayList<>();DegradeRule rule = new DegradeRule("ordering2").setGrade(CircuitBreakerStrategy.ERROR_COUNT.getType())// Max allowed response time 錯誤數量.setCount(2)// Retry timeout (in second) 熔斷10s.setTimeWindow(20).setMinRequestAmount(10) //最小請求數.setStatIntervalMs(10*1000);//10s 統計時長,統計的窗口(單位為 ms)rules.add(rule);DegradeRuleManager.loadRules(rules);}
}
高級配置
  1. 流量控制規則 (FlowRule)
    在這里插入圖片描述
  2. 熔斷降級規則 (DegradeRule)
    在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13482.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13482.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13482.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【UE5.1】* 動畫重定向 (讓你的角色可以使用小白人全部動畫)

前言 這里以小白人動畫重定向給商城資產“Adventure Character”中的角色為例&#xff0c;闡述如何使用UE5.1進行動畫重定向。 步驟 1. 創建一個IK綁定 這里選擇小白人的骨骼網格體 這里命名為“IKRig_Mannequin” 2. 再新建一個IK綁定&#xff0c;這里使用你要替換給的角色…

MyBatis入門——MyBatis XML配置文件(3)

目錄 一、配置連接字符串和MyBatis 二、寫持久層代碼 1、添加 mapper 接口 2、添加 USerInfoXmlMapper.xml 3、測試類代碼 三、增刪改查操作 1、增&#xff08;Insert&#xff09; 返回自增 id 2、刪&#xff08;Delete&#xff09; 3、改&#xff08;update&#xf…

軟考--試題六--中介者模式(Mediator)

中介者模式(Meditor) 意圖 用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用&#xff0c;從而使其耦合松散&#xff0c;而且可以獨立地改變它們之間的交互 結構 適用性 1、一組對象以定義良好但是復雜的方式進行通信&#xff0c;產生的相互依賴關…

民國漫畫雜志《時代漫畫》第17期.PDF

時代漫畫17.PDF: https://url03.ctfile.com/f/1779803-1248612629-85326d?p9586 (訪問密碼: 9586) 《時代漫畫》的雜志在1934年誕生了&#xff0c;截止1937年6月戰爭來臨被迫停刊共發行了39期。 ps:資源來源網絡&#xff01;

力扣HOT100 - 1143. 最長公共子序列

解題思路&#xff1a; 動態規劃 class Solution {public int longestCommonSubsequence(String text1, String text2) {int m text1.length(), n text2.length();int[][] dp new int[m 1][n 1];for (int i 1; i < m; i) {char c1 text1.charAt(i - 1);for (int j 1…

深度學習之基于YoloV5的動物識別系統

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景與目標 在生態研究、動物保護、以及畜牧業等多個領域&#xff0c;對動物進行準確、高效的識別都具有重…

形態學操作:腐蝕、膨脹、開閉運算、頂帽底帽變換、形態學梯度區別與聯系

一、總述相關概念 二、相關問題 1.形態學操作中的腐蝕和膨脹對圖像有哪些影響&#xff1f; 形態學操作中的腐蝕和膨脹是兩種常見的圖像處理技術&#xff0c;它們通過對圖像進行局部區域的像素值替換來實現對圖像形狀的修改。 腐蝕操作通常用于去除圖像中的噪聲和細小的細節&a…

單鏈表oj

練習 1. 刪除val節點 oj鏈接 這道題最先想出來的方法肯定是在遍歷鏈表的同時刪除等于val的節點&#xff0c;我們用第二中思路:不等于val的節點尾插&#xff0c;讓后返回新節點。代碼如下&#xff1a; struct ListNode* removeElements(struct ListNode* head, int val) {str…

XML基礎知識

1. 常見配置文件類型 properties文件,例如druid連接池就是使用properties文件作為配置文件 XML文件,例如Tomcat就是使用XML文件作為配置文件 YAML文件,例如SpringBoot就是使用YAML作為配置文件 json文件,通常用來做文件傳輸&#xff0c;也可以用來做前端或者移動端的配置文件…

軟考高級-信息系統項目管理師案例題選擇題做題總結

1.不應該只會建立變更和配置管理的規則&#xff0c;應該建立變更控制流程 2.變更的影響不應該只由工程師評估 3.沒有對變更和修改進行記錄 4.變更完成后&#xff0c;客戶沒有對變更進行驗證 5.變更沒有通知相關人員 6.變更沒有和配置管理關聯 7.項目變更管理的工作流程&#xf…

SOLIDWORKS科研版的介紹

SOLIDWORKS科研版的介紹 針對研究項目充分利用軟件功能&#xff0c;無任何限制訪問有關工程和科學的最新技術&#xff0c;并與世界各地的其他用戶進行交流。 SOLIDWORKS科研版可為研究人員提供有關 SOLIDWORKS 設計和科學工程技術的最新知識&#xff0c;并使他們與世界范圍內的…

08.CNN

文章目錄 Observation 1Pooling - Max PoolingFlattenApplication&#xff1a;Playing Go使用驗證集選擇模型食物分類 Observation 1 Pooling - Max Pooling Pooling主要為了降低運算量&#xff0c;現在一般不用了&#xff0c;全convolution Flatten Application&#xff1a;P…

學校上課,是耽誤我學習了。。

>>上一篇&#xff08;文科生在三本院校&#xff0c;讀計算機專業&#xff09; 2015年9月&#xff0c;我入學了。 我期待的大學生活是多姿多彩的&#xff0c;我會參加各種社團&#xff0c;參與各種有意思的活動。 但我是個社恐&#xff0c;有過嘗試&#xff0c;但還是難…

Linux|如何在 awk 中使用流控制語句

引言 當您從 Awk 系列一開始回顧我們迄今為止介紹的所有 Awk 示例時&#xff0c;您會注意到各個示例中的所有命令都是按順序執行的&#xff0c;即一個接一個。但在某些情況下&#xff0c;我們可能希望根據某些條件運行一些文本過濾操作&#xff0c;這就是流程控制語句的方法。 …

鯨尾識別獲獎方案總結

文章目錄 1st solution(classification)2nd place code, end to end whale Identification model3rd place solution with code: ArcFace4th Place Solution: SIFT Siamese5th solution blog post code -Siamese7th place Pure Magic thanks Radek solution: classification9…

QGIS DEM數據快速獲取

背景 Dem 是非常重要的數據&#xff0c;30 m 的精度也是最容易獲取的&#xff0c;目前有很多種方式可以獲取&#xff0c;比如地理空間數據云&#xff0c;今天介紹用 QGIS插件獲取。 這種方式的最大優勢是方便快捷。 插件下載與安裝 插件-管理并安裝插件-搜索下載 OpenTopogr…

linux:信號深入理解

文章目錄 1.信號的概念1.1基本概念1.2信號的處理基本概念1.3信號的發送與保存基本概念 2.信號的產生2.1信號產生的五種方式2.2信號遺留問題(core,temp等) 3.信號的保存3.1 信號阻塞3.2 信號特有類型 sigset_t3.3 信號集操作函數3.4 信號集操作函數的使用 4.信號的處理4.1 信號的…

C# Winform實現五子棋游戲(代完善)

實現了基本的玩法。 BoardController.cs using System;namespace GomokuGame {public class BoardController{private static BoardController instance;private readonly int[,] board;private const int boardSize 15;private BoardController(){board new int[boardSize…

uniapp(h5 app) 中 webview和h5通信

1 uniapph5 和h5頁面 通信 h5 window.parent.postMessage(message, *); uniapph5 onload中 window.addEventListener(message, function (e) { // 監聽 message 事件 //console.log(e.origin) console.log(收到的cocos游戲ID,e.data) …

Python實現天氣數據采集

Python實現天氣數據采集 一、需求介紹二、完整代碼一、需求介紹 本次天氣數據采集的需求是獲取每日的最高溫、最低溫、風力、風向、天氣狀況、AQI指數,如圖所示,完整代碼附后: 本次采集的目標網址是2345天氣網: 上圖的URL中,beijing是城市名稱的縮寫,54511即為城市代碼…