Sentinel學習

sentinel是阿里巴巴研發的一款微服務組件,主要為用戶提供服務保護,包括限流熔斷等措施

(一)主要功能

流量控制(限流):比如限制1s內有多少請求能到達服務器,防止大量請求打崩服務器

熔斷降級:當下級服務響應慢或者不可用時,熔斷服務,快速失敗,保護上游服務

(二)使用方法

去Releases · alibaba/Sentinel · GitHub下載對應的jar包
在jar包所在的目錄cmd運行命令

java -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.8.jar

然后通過8080端口即可訪問sentinel的控制臺 ,賬號密碼均為sentinel

然后去項目中添加依賴

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artifactId><version>x.y.z</version>
</dependency>

同時修改服務的application.yml

spring:cloud:sentinel:transport:dashboard: localhost:8090   # 指定 Sentinel Dashboard 地址port: 8719                  # 客戶端監控端口,用于與 Sentinel Dashboard 通信

dashboard的地址必須和sentinel控制臺的地址一致,連接控制臺
port端口號是服務與sentinel的通信端口,是獨立的,不能和運行服務的端口一樣

在項目的代碼中使用:

@SentinelResource注解

常用參數

value:指定資源名,在控制臺中可看
blockHandler:觸發限流規則時會調用哪個方法,一般會寫一個兜底方法,方法參數要和設置了限流的方法一致,但可以加一個BlockException
fallback:觸發異常時調用哪個兜底方法,和上面的很像,但是上面是用于觸發限流后用的,這個是用于觸發異常用的,方法參數可以加一個Throwable

(三)限流規則

限流主要是阻止大量請求同時打到服務器上

資源名 與@SentinelResource的value對應
針對來源 就是調用這個controller發送請求的來源,你要限流哪些來源的,默認全部
閾值類型:QPS每秒通過多少個(多少個就是單機閾值的數量),并發線程數通常配合線程池使用
是否集群:多服務器的情況下會用,也要設置一個閾值
比如,設置全局閾值12,比如進來100個請求,有三個服務器,它們總共只能處理12個請求
如果設置的單機均攤12,進來100個請求,就會每個服務器都能處理12個請求,總共36

繼續看:

流控模式分為3種:直接、關聯和鏈路

直接沒什么好說的,就是對單一資源進行限流
關聯就是a資源關聯b資源,當b資源訪問量大觸發限流時,a也會被限流
鏈路就是當同一個方法會被多種渠道調用時,只對部分渠道進行限流

流控效果分三種:快速失敗、warm up和排隊等待

快速失敗就是觸發限流后,后面的請求全部丟棄,報錯
warm up就是冷啟動,需要設置啟動時間n,前n秒內處理量大概為閾值的1/3,后面再逐步提高處理量達到閾值
排隊等待就是觸發限流后,后面的請求不會丟棄,而是排隊等待前面的執行完后它再執行,需要設置排隊時間,超過這個時間請求還未被處理的話,丟棄

ps:只有快速失敗支持關聯和鏈路,其它兩種不支持

(四)熔斷規則

當a服務調用b服務時,b服務可能會卡住執行很久,也可能會異常,這時a要及時熔斷,切斷與b的聯系,保護自己

又有一個問題?怎么判斷服務有問題去熔斷呢?熔斷之后怎么恢復連接呢?

答:判斷熔斷主要根據熔斷策略,符合條件即熔斷。恢復連接的話,當a、b服務間斷開的時長達到熔斷時長后,服務會切換到半開狀態,a會向b發送一個或幾個請求,如果這些請求正常執行,那就取消熔斷恢復運行,如果這些請求有問題(滿足熔斷條件),就會繼續保持熔斷

熔斷策略有三種:慢調用、異常比例和異常數

選擇慢調用

最大RT:最大的響應時間,超過這個時間判定為慢調用
比例閾值:當n%的調用是慢調用時,觸發熔斷
熔斷時長:熔斷多久
最小請求數:要觸發熔斷起碼要有多少個請求,低于這個數值不會熔斷
統計時長:統計時長

選擇異常比例

其他不變,沒用最大RT,比例閾值改為當n%的調用是異常時觸發熔斷

選擇異常數

其他不變,比例閾值改為異常數

(五)熱點規則

就是可以對方法的具體參數進行限流
當用戶調用這個方法,攜帶了3個參數,你可以設置熱點來對具體的第幾個參數進行限流

(六)總結

sentinel是服務保護的重要組件,起到限流、熔斷等作用

首先下載sentinel的jar包,用命令運行,用瀏覽器打開sentinel的控制臺

然后去項目中添加對應依賴,修改代碼,添加@SentinelResource,并寫對應的兜底方法

@RestController
public class UserController {@GetMapping("/user")@SentinelResource(value = "getUser",               // 資源名,用于控制臺設置規則fallback = "fallbackMethod",    // 業務異常兜底方法blockHandler = "blockHandlerMethod" // 流控、熔斷時的處理方法)public String getUser(@RequestParam(required = false) String name) {if ("error".equals(name)) {throw new RuntimeException("模擬業務異常");}return "用戶:" + name;}// fallback 方法:處理業務異常(如運行時異常)public String fallbackMethod(String name, Throwable e) {return "fallback:業務處理異常,返回兜底用戶";}// blockHandler 方法:處理被 Sentinel 限流、降級、熔斷的情況public String blockHandlerMethod(String name, BlockException ex) {return "blockHandler:服務被限流或熔斷,返回默認用戶";}
}

其實代碼部分很少,主要用控制臺對限流規則、熔斷規則進行配置即可

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

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

相關文章

Linux中進程的屬性:進程優先級

一、優先級和進程優先級 1.1什么是優先級 優先級就是獲取某種資源的先后順序&#xff0c;比如打飯時排隊&#xff1a;排隊就是在確認優先級 1.2為什么要有優先級 本質上其實是目標資源相對于需求者來說比較少&#xff0c;如CPU&#xff0c;磁盤&#xff0c;顯示器&#xff…

基于LangChain 實現 Advanced RAG-后檢索優化(上)-Reranker

摘要 Advanced RAG 的后檢索優化&#xff0c;是指在檢索環節完成后、最終響應生成前&#xff0c;通過一系列策略與技術對檢索結果進行深度處理&#xff0c;旨在顯著提升生成內容的相關性與質量。在這些優化手段中&#xff0c;重排序優化&#xff08;Reranker&#xff09;作為核…

【云備份】熱點管理模塊

目錄 1.熱點管理文件的基本思路 2.熱點管理類的設計 3.熱點管理類的實現 1.熱點管理文件的基本思路 服務器端的熱點文件管理是對上傳的非熱點文件進行壓縮存儲&#xff0c;節省磁盤空間。 而熱點文件的判斷在于上傳的文件的最后一次訪問時間是否在熱點判斷時間之內。 實…

LeetCode 560. 和為 K 的子數組 | 前綴和與哈希表的巧妙應用

文章目錄 方法思路&#xff1a;前綴和 哈希表核心思想關鍵步驟 代碼實現復雜度分析示例解析總結 題目描述 給定一個整數數組 nums 和一個整數 k&#xff0c;請統計并返回該數組中和為 k 的子數組的數量。 子數組是數組中連續的非空元素序列。 示例 輸入&#xff1a;nums …

Windows配置grpc

Windows配置grpc 方法一1. 使用git下載grph下載速度慢可以使用國內鏡像1.1 更新子模塊 2. 使用Cmake進行編譯2.1 GUI編譯2.2 命令行直接編譯 3. 使用Visual Studio 生成解決方法 方法二1. 安裝 vcpkg3.配置vckg的環境變量2. 使用 vcpkg 安裝 gRPC3. 安裝 Protobuf4. 配置 CMake…

【算法基礎】快速排序算法 - JAVA

一、算法基礎 1.1 什么是快速排序 快速排序&#xff08;Quick Sort&#xff09;是一種高效的分治排序算法&#xff0c;由英國計算機科學家Tony Hoare于1960年提出。它的核心思想是&#xff1a; 選擇一個基準元素&#xff08;pivot&#xff09;將數組分成兩部分&#xff1a;小…

Linux用戶管理命令和用戶組管理命令

一、用戶管理命令 1.1、adduser 添加新用戶 1、基本語法 adduser 用戶名 &#xff08;功能描述&#xff1a;添加新用戶&#xff09; 應用場景1&#xff1a;企業開發&#xff0c;多人協同&#xff08;也會有多人使用相同的一個低權限用戶&#xff09;。 應用場景2&#x…

記錄兩個免費開源又好用的后臺模版vue3

一.element-plus-admin 一套基于vue3、element-plus、typesScript、vite的后臺集成方案 1.簡介 vue-element-plus-admin 是一個基于 element-plus 免費開源的中后臺模版。使用了最新的 Vue3&#xff0c;Vite&#xff0c;Typescript等主流技術開發&#xff0c;開箱即用的中后…

Flip PDF Plus Corp7.7.22電子書制作軟件

flip pdf plus corporate7.7.22中文版由FlipBuilder官方出品的一款企業級的翻頁電子書制作軟件&#xff0c;擁有豐富的模板&#xff0c;主題和動畫場景&#xff0c;每本書最大頁數1000頁&#xff0c;每本書的最大大小1GB&#xff0c;即可以幫助企業用戶制作好豐富的電子書籍。 …

C語言藍橋杯真題代碼

以下是不同屆藍橋杯C語言真題代碼示例&#xff0c;供參考&#xff1a; 第十三屆藍橋杯省賽 C語言大學B組 真題&#xff1a;卡片 題目&#xff1a;小藍有很多數字卡片&#xff0c;每張卡片上都是數字1-9。他想拼出1到n的數列&#xff0c;每張卡片只能用一次&#xff0c;求最大的…

[Windows] Kazumi番劇采集v1.6.9:支持自定義規則+在線觀看+彈幕,跨平臺下載

[Windows] Kazumi番劇采集 鏈接&#xff1a;https://pan.xunlei.com/s/VOPLMhEQD7qixvAnoy73NUK9A1?pwdtu6i# Kazumi是一款基于框架; 開發的輕量級番劇采集工具&#xff0c;專為ACG愛好者設計。通過;自定義XPath規則; 實現精準內容抓取&#xff0c;支持多平臺&#xff08;An…

探秘數據結構:構建高效算法的靈魂密碼

摘要 數據結構作為計算機科學的基石&#xff0c;其設計與優化直接影響算法效率、資源利用和系統可靠性。本文系統闡述數據結構的基礎理論、分類及其核心操作&#xff0c;涵蓋數組、鏈表、棧、隊列、樹、圖、哈希表與堆等經典類型。深入探討各結構的應用場景與性能對比&#xf…

機器人--架構及設備

機器人的四大組成部分 控制系統 驅控系統 執行系統 電機屬于執行系統的設備。 傳感系統 傳感系統分為內部傳感系統和外部傳感系統。 內部傳感系統(內部傳感器)&#xff1a; 用于獲取機器人內部信息&#xff0c;比如IMU&#xff0c;力傳感器等。 外部傳感系統(外部傳感器):…

人工智能:如何快速篩選出excel中某列存在跳號的單元格位置?

前提&#xff1a; 電腦上必須提前安裝好了【office AI】軟件工具 方法如下&#xff1a; 1、打開要操作的excel表格&#xff0c;點擊上方的【officeAI】&#xff0c;再點擊左邊的【右側面板】按鈕&#xff0c;就會出現如下右側的【OfficeAI助手】 2、在OfficeAI助手的聊天框…

Spring MVC入門

介紹了Spring MVC框架的概念、特征及核心功能&#xff0c;通過案例詳細介紹了Spring MVC開發所需要的開發環境以及基本的開發步驟。 一、Spring MVC框架概述 Spring MVC是Spring框架的一個模塊&#xff0c;是一個基于Java的實現了MVC設計模式的輕量級Web框架。它通過一套注解和…

貪心算法求解邊界最大數

貪心算法求解邊界最大數&#xff08;拼多多2504、排列問題&#xff09; 多多有兩個僅由正整數構成的數列 s1 和 s2&#xff0c;多多可以對 s1 進行任意次操作&#xff0c;每次操作可以置換 s1 中任意兩個數字的位置。多多想讓數列 s1 構成的數字盡可能大&#xff0c;但是不能比…

Ubuntu ZLMediakit的標準配置文件(rtsp->rtmp->hls)

最近在工作中遇到不生成hls資源的問題,后面發現是配置文件有誤,特此記錄正確的config.ini配置文件,方便查閱。 最終解決方案,通過下面這種格式可以訪問到flv視頻,具體為什么不太清楚,rtmp格式:rtmp://39.113.48.113:8089/live/1744168516937396175 記錄最終解決方案:ht…

# LeetCode 1007 行相等的最少多米諾旋轉

LeetCode 1007 行相等的最少多米諾旋轉 原題英文&#xff1a;Minimum Domino Rotations For Equal Row 難度&#xff1a;中等 | 標簽&#xff1a;數組、貪心 1?題目重述 給定兩行長度相同的多米諾骨牌&#xff1a; tops[i] 表示第?i?張骨牌上面的數字&#xff1b;bottoms[…

大數據技術:從趨勢到變革的全景探索

??個人主頁??:一ge科研小菜雞-CSDN博客 ????期待您的關注 ???? 在數字化時代的浪潮下,大數據已經不再是一個陌生的概念。從日常生活中的社交媒體,到企業決策支持系統,再到公共管理的大數據應用,它正在改變著我們的工作和生活方式。隨著技術的進步,傳統的數據…

前端八股Day5——XHS某中廠實習前端一面

沒寫完&#xff0c;睡醒補 CSS盒模型 //出現頻率好高&#xff0c;感覺每次寫面經都遇到 W3C標準盒模型(content-box)&#xff1a;盒子寬高width/heightpaddingbordermargin IE怪異盒模型(border-box)&#xff1a;盒子寬高width/heigth(包括padding和border)margin 默認標準切換…