springcloud3 Sentinel的搭建及案例操作方法
一 sentinel的概念
1.1 sentinel
Sentinel是分布式系統(tǒng)流量控制的哨兵,阿里開源的一套服務(wù)容錯的綜合性解決方案。
主要用來處理:
服務(wù)降級
服務(wù)熔斷
超時處理
流量控制
sentinel 的使用可以分為兩個部分:
核心庫(Java 客戶端):不依賴任何框架/庫,能夠運行于 Java 8 及以上的版本的運行時環(huán)境,同時對 Dubbo / Spring Cloud 等框架也有較好的支持。
控制臺(Dashboard):Dashboard 主要負(fù)責(zé)管理推送規(guī)則、監(jiān)控、管理機(jī)器信息等。基于 Spring Boot 開發(fā),打包后可以直接運行。
二 sentinel的安裝
2.1 sentinel的安裝
中文文檔:
程序包下載:
Releases · alibaba/Sentinel · GitHub

啟動jar包
F:\>java -jar sentinel-dashboard-1.7.2.jar
頁面訪問: sentinel / sentinel
輸入地址: http://localhost:8080/

三 sentinel的各種用途
3.1 實時監(jiān)控
3.1.1 架構(gòu)圖

3.1.2 sentinel消費項目
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ù)注冊中心地址
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.啟動類
@EnableDiscoveryClient
@SpringBootApplication
public class App
{
public static void main( String[] args )
{
SpringApplication.run(App.class, args);
}
}3.1.3 操作
1.啟動nacos

2.啟動sentinel服務(wù)

3.啟動sentinel消費服務(wù)

3.1.4 進(jìn)行監(jiān)控訪問
訪問地址: http://localhost:7005/testA 多次刷新訪問幾次

2.查看監(jiān)控

訪問地址: http://localhost:7005/testB 多次刷新訪問幾次

3.2 流量控制
3.2.1 qps+閾值進(jìn)行限流
1.查看資源,針對資源進(jìn)行流控

2.設(shè)置配置
1秒鐘qps的閾值為3,一秒鐘請求大于3,則容錯提示。

聯(lián)系請求大于3次,則 給出如下提示:

3.2.2 線程數(shù)+閾值進(jìn)行限流
當(dāng)線程數(shù)達(dá)到閾值后,進(jìn)行限流提示。
1.設(shè)置

2.訪問驗證

3.2.3 線程數(shù)+閾值+關(guān)聯(lián)進(jìn)行限流
1.通過資源A關(guān)聯(lián)的資源B,資源B發(fā)生qps超過規(guī)定的閾值,則導(dǎo)致資源A進(jìn)行限流提示。
2.設(shè)置

3.postman定時這是



4.查看訪問資源A:http://localhost:7005/testA

3.2.4 線程數(shù)+閾值+關(guān)聯(lián)+預(yù)熱進(jìn)行限流
1.說明:
默認(rèn)的colorfactor為3,QPS是從(threshold/3)開始,即
系統(tǒng)初始化的閾值為:12/3約等于4,,即閾值初始化為4,經(jīng)過5秒后閾值才升到設(shè)定的12.
2.配置

3.訪問
前5秒,不停刷新會提示限流信息,

5秒過后,不停刷新(手工不停刷新達(dá)不到設(shè)定的閾值12),所以不再限流

3.2.5 線程數(shù)+閾值+排隊等待進(jìn)行限流
1.說明
勻速排隊:讓請求以均勻的速度通過,閾值類型必須設(shè)置成QPS,否則無效。
設(shè)置含義:/testB 每秒3次請求,超過閾值后就進(jìn)行排隊,等待大于20秒則滿足超時時間,進(jìn)行請求。
2.配置

3.查看效果

到此這篇關(guān)于springcloud3 Sentinel的搭建以及案例操作的文章就介紹到這了,更多相關(guān)springcloud3 Sentinel搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 在SpringBoot項目中使用Spring Cloud Sentinel實現(xiàn)流量控制
- SpringCloud?集成Sentinel的實戰(zhàn)教程
- Spring?Cloud?中使用?Sentinel?實現(xiàn)服務(wù)限流的兩種方式
- Spring?Cloud中Sentinel的兩種限流模式介紹
- Spring?Cloud微服務(wù)架構(gòu)Sentinel數(shù)據(jù)雙向同步
- Spring?Cloud?Alibaba微服務(wù)組件Sentinel實現(xiàn)熔斷限流
- Spring?Cloud?Gateway整合sentinel?實現(xiàn)流控熔斷的問題
- Java之SpringCloudAlibaba Sentinel組件案例講解
- Sentinel 斷路器在Spring Cloud使用詳解
相關(guān)文章
Java集合中的fail-fast(快速失敗)機(jī)制詳解
這篇文章主要給大家介紹了關(guān)于Java集合中fail-fast(快速失敗)機(jī)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
mybatis plus saveOrUpdate實現(xiàn)有重復(fù)數(shù)據(jù)就更新,否則新增方式
這篇文章主要介紹了mybatis plus saveOrUpdate實現(xiàn)有重復(fù)數(shù)據(jù)就更新,否則新增方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
Java基礎(chǔ)之并發(fā)相關(guān)知識總結(jié)
隨著摩爾定律逐步失效,cpu單核性能達(dá)到瓶頸,并發(fā)逐漸逐漸得到廣泛應(yīng)用,因而學(xué)習(xí)了解以及使用并發(fā)就顯得十分重要,但并發(fā)相關(guān)的知識比較瑣碎,不易系統(tǒng)學(xué)習(xí),因而本篇文章參照王寶令老師《Java并發(fā)編程》來勾勒出一張“并發(fā)全景圖”,需要的朋友可以參考下2021-05-05

