首頁 > 軟體

springcloud3 Sentinel的搭建及案例操作方法

2023-01-31 06:02:24

一 sentinel的概念

1.1 sentinel

Sentinel是分散式系統流量控制的哨兵,阿里開源的一套服務容錯的綜合性解決方案。

主要用來處理:

服務降級

服務熔斷

超時處理

流量控制

sentinel 的使用可以分為兩個部分:

核心庫(Java 使用者端):不依賴任何框架/庫,能夠執行於 Java 8 及以上的版本的執行時環境,同時對 Dubbo / Spring Cloud 等框架也有較好的支援。

控制檯(Dashboard):Dashboard 主要負責管理推播規則、監控、管理機器資訊等。基於 Spring Boot 開發,打包後可以直接執行。

二 sentinel的安裝

2.1 sentinel的安裝

中文檔案:

quick-start | Sentinel

程式包下載:

Releases · alibaba/Sentinel · GitHub

啟動jar包

F:>java -jar sentinel-dashboard-1.7.2.jar

頁面存取: sentinel /  sentinel

輸入地址: http://localhost:8080/

三   sentinel的各種用途

3.1 實時監控

3.1.1 架構圖

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 後續做持久化用到-->
    <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服務註冊中心地址
    sentinel:
      transport:
        dashboard: localhost:8080 #設定Sentinel dashboard地址
        port: 8719
 
management:
  endpoints:
    web:
      exposure:
        include: '*'

3.業務類

@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服務

 3.啟動sentinel消費服務

 3.1.4 進行監控存取

存取地址: http://localhost:7005/testA      多次重新整理存取幾次

 2.檢視監控

存取地址: http://localhost:7005/testB      多次重新整理存取幾次

3.2 流量控制

3.2.1 qps+閾值進行限流

1.檢視資源,針對資源進行流控

 2.設定設定

1秒鐘qps的閾值為3,一秒鐘請求大於3,則容錯提示。

 聯絡請求大於3次,則 給出如下提示:

 3.2.2 執行緒數+閾值進行限流

當執行緒數達到閾值後,進行限流提示。

1.設定

2.存取驗證

 3.2.3 執行緒數+閾值+關聯進行限流

1.通過資源A關聯的資源B,資源B發生qps超過規定的閾值,則導致資源A進行限流提示。

2.設定

 3.postman定時這是

4.檢視存取資源A:http://localhost:7005/testA

 3.2.4 執行緒數+閾值+關聯+預熱進行限流

1.說明:

預設的colorfactor為3,QPS是從(threshold/3)開始,即

系統初始化的閾值為:12/3約等於4,,即閾值初始化為4,經過5秒後閾值才升到設定的12.

2.設定

3.存取

前5秒,不停重新整理會提示限流資訊,

 5秒過後,不停重新整理(手工不停重新整理達不到設定的閾值12),所以不再限流

 3.2.5 執行緒數+閾值+排隊等待進行限流

1.說明

勻速排隊:讓請求以均勻的速度通過,閾值型別必須設定成QPS,否則無效。

設定含義:/testB 每秒3次請求,超過閾值後就進行排隊,等待大於20秒則滿足超時時間,進行請求。

2.設定

 3.檢視效果

到此這篇關於springcloud3 Sentinel的搭建以及案例操作的文章就介紹到這了,更多相關springcloud3 Sentinel搭建內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com