springcloud3 Sentinel的搭建及案例操作方法
一 sentinel的概念
1.1 sentinel
Sentinel是分布式系統(tǒng)流量控制的哨兵,阿里開源的一套服務(wù)容錯(cuò)的綜合性解決方案。
主要用來(lái)處理:
服務(wù)降級(jí)
服務(wù)熔斷
超時(shí)處理
流量控制
sentinel 的使用可以分為兩個(gè)部分:
核心庫(kù)(Java 客戶端):不依賴任何框架/庫(kù),能夠運(yùn)行于 Java 8 及以上的版本的運(yùn)行時(shí)環(huán)境,同時(shí)對(duì) Dubbo / Spring Cloud 等框架也有較好的支持。
控制臺(tái)(Dashboard):Dashboard 主要負(fù)責(zé)管理推送規(guī)則、監(jiān)控、管理機(jī)器信息等?;?Spring Boot 開發(fā),打包后可以直接運(yùn)行。
二 sentinel的安裝
2.1 sentinel的安裝
中文文檔:
程序包下載:
Releases · alibaba/Sentinel · GitHub
啟動(dòng)jar包
F:\>java -jar sentinel-dashboard-1.7.2.jar
頁(yè)面訪問(wèn): sentinel / sentinel
輸入地址: http://localhost:8080/
三 sentinel的各種用途
3.1 實(shí)時(shí)監(jiān)控
3.1.1 架構(gòu)圖
3.1.2 sentinel消費(fèi)項(xiàng)目
1.pom
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> <scope>test</scope> </dependency> <!--SpringCloud ailibaba nacos --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2021.1</version> </dependency> <!--SpringCloud ailibaba sentinel-datasource-nacos 后續(xù)做持久化用到--> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> <version>1.5.2</version> </dependency> <!--SpringCloud ailibaba sentinel --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> <version>2021.1</version> </dependency> <!--openfeign--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <!-- SpringBoot整合Web組件+actuator --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--日常通用jar包配置--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>4.6.3</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
2.application配置文件
server: port: 7005 spring: application: name: mscloud-sentinel-consumer cloud: nacos: discovery: server-addr: localhost:8848 #Nacos服務(wù)注冊(cè)中心地址 sentinel: transport: dashboard: localhost:8080 #配置Sentinel dashboard地址 port: 8719 management: endpoints: web: exposure: include: '*'
3.業(yè)務(wù)類
@RestController @Slf4j public class DataLimitController { @GetMapping("/testA") public String testA() { return "------testA"; } @GetMapping("/testB") public String testB() { log.info(Thread.currentThread().getName()+"\t"+"...testB"); return "------testB"; } }
4.啟動(dòng)類
@EnableDiscoveryClient @SpringBootApplication public class App { public static void main( String[] args ) { SpringApplication.run(App.class, args); } }
3.1.3 操作
1.啟動(dòng)nacos
2.啟動(dòng)sentinel服務(wù)
3.啟動(dòng)sentinel消費(fèi)服務(wù)
3.1.4 進(jìn)行監(jiān)控訪問(wèn)
訪問(wèn)地址: http://localhost:7005/testA 多次刷新訪問(wèn)幾次
2.查看監(jiān)控
訪問(wèn)地址: http://localhost:7005/testB 多次刷新訪問(wèn)幾次
3.2 流量控制
3.2.1 qps+閾值進(jìn)行限流
1.查看資源,針對(duì)資源進(jìn)行流控
2.設(shè)置配置
1秒鐘qps的閾值為3,一秒鐘請(qǐng)求大于3,則容錯(cuò)提示。
聯(lián)系請(qǐng)求大于3次,則 給出如下提示:
3.2.2 線程數(shù)+閾值進(jìn)行限流
當(dāng)線程數(shù)達(dá)到閾值后,進(jìn)行限流提示。
1.設(shè)置
2.訪問(wèn)驗(yàn)證
3.2.3 線程數(shù)+閾值+關(guān)聯(lián)進(jìn)行限流
1.通過(guò)資源A關(guān)聯(lián)的資源B,資源B發(fā)生qps超過(guò)規(guī)定的閾值,則導(dǎo)致資源A進(jìn)行限流提示。
2.設(shè)置
3.postman定時(shí)這是
4.查看訪問(wèn)資源A:http://localhost:7005/testA
3.2.4 線程數(shù)+閾值+關(guān)聯(lián)+預(yù)熱進(jìn)行限流
1.說(shuō)明:
默認(rèn)的colorfactor為3,QPS是從(threshold/3)開始,即
系統(tǒng)初始化的閾值為:12/3約等于4,,即閾值初始化為4,經(jīng)過(guò)5秒后閾值才升到設(shè)定的12.
2.配置
3.訪問(wèn)
前5秒,不停刷新會(huì)提示限流信息,
5秒過(guò)后,不停刷新(手工不停刷新達(dá)不到設(shè)定的閾值12),所以不再限流
3.2.5 線程數(shù)+閾值+排隊(duì)等待進(jìn)行限流
1.說(shuō)明
勻速排隊(duì):讓請(qǐng)求以均勻的速度通過(guò),閾值類型必須設(shè)置成QPS,否則無(wú)效。
設(shè)置含義:/testB 每秒3次請(qǐng)求,超過(guò)閾值后就進(jìn)行排隊(duì),等待大于20秒則滿足超時(shí)時(shí)間,進(jìn)行請(qǐng)求。
2.配置
3.查看效果
到此這篇關(guān)于springcloud3 Sentinel的搭建以及案例操作的文章就介紹到這了,更多相關(guān)springcloud3 Sentinel搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 在SpringBoot項(xiàng)目中使用Spring Cloud Sentinel實(shí)現(xiàn)流量控制
- SpringCloud?集成Sentinel的實(shí)戰(zhàn)教程
- Spring?Cloud?中使用?Sentinel?實(shí)現(xiàn)服務(wù)限流的兩種方式
- Spring?Cloud中Sentinel的兩種限流模式介紹
- Spring?Cloud微服務(wù)架構(gòu)Sentinel數(shù)據(jù)雙向同步
- Spring?Cloud?Alibaba微服務(wù)組件Sentinel實(shí)現(xiàn)熔斷限流
- Spring?Cloud?Gateway整合sentinel?實(shí)現(xiàn)流控熔斷的問(wèn)題
- Java之SpringCloudAlibaba Sentinel組件案例講解
- Sentinel 斷路器在Spring Cloud使用詳解
相關(guān)文章
spring boot中多線程開發(fā)的注意事項(xiàng)總結(jié)
spring boot 通過(guò)任務(wù)執(zhí)行器 taskexecutor 來(lái)實(shí)現(xiàn)多線程和并發(fā)編程。下面這篇文章主要給大家介紹了關(guān)于spring boot中多線程開發(fā)的注意事項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-09-09淺談Java內(nèi)存區(qū)域與對(duì)象創(chuàng)建過(guò)程
下面小編就為大家?guī)?lái)一篇淺談Java內(nèi)存區(qū)域與對(duì)象創(chuàng)建過(guò)程。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07java中如何實(shí)現(xiàn) zip rar 7z 壓縮包解壓
這篇文章主要介紹了java中如何實(shí)現(xiàn) zip rar 7z 壓縮包解壓?jiǎn)栴},具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07在@Value注解內(nèi)使用SPEL自定義函數(shù)方式
這篇文章主要介紹了在@Value注解內(nèi)使用SPEL自定義函數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02SpringBoot特點(diǎn)之依賴管理和自動(dòng)裝配(實(shí)例代碼)
在使用SpringBoot的時(shí)候,會(huì)自動(dòng)將Bean裝配到IoC容器中,操作也很簡(jiǎn)單,今天小編給大家介紹下SpringBoot特點(diǎn)之依賴管理和自動(dòng)裝配的知識(shí),感興趣的朋友一起看看吧2022-03-03在Spring中使用Knife4j進(jìn)行API文檔生成與管理的操作方法
Knife4j 是為Java MVC 框架(如Spring Boot、Spring MVC等)集成 Swagger 生成 API 文檔的增強(qiáng)解決方案,它基于 Swagger 的核心功能,通過(guò)定制化的前端界面和一些額外的特性,本文介紹了在Spring中使用Knife4j進(jìn)行API文檔生成與管理的操作方法,需要的朋友可以參考下2024-12-12IDEA查看所有的斷點(diǎn)(Breakpoints)并關(guān)閉的方式
我們?cè)谑褂肐DEA開發(fā)Java應(yīng)用時(shí),基本上都需要進(jìn)行打斷點(diǎn)的操作,這方便我們排查BUG,也方便我們查看設(shè)計(jì)的是否正確,不過(guò)有時(shí)候,我們不希望進(jìn)入斷點(diǎn),所以我們需要快速關(guān)閉所有斷點(diǎn),故本文給大家介紹了IDEA查看所有的斷點(diǎn)(Breakpoints)并關(guān)閉的方式2024-10-10