天天看點

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

文章目錄

    • 一。簡介
      • 1.Sentinel 是什麼?
      • 2.Sentinel的特征
      • 3.Sentinel的特性
    • 二。下載下傳安裝Sentinel控制台
    • 三。整合Sentinel
    • 四。測試

一。簡介

Sentinel: 分布式系統的流量防衛兵

1.Sentinel 是什麼?

随着微服務的流行,服務和服務之間的穩定性變得越來越重要。Sentinel 以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個次元保護服務的穩定性。

2.Sentinel的特征

  • 豐富的應用場景

    :Sentinel 承接了阿裡巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發流量控制在系統容量可以承受的範圍)、消息削峰填谷、叢集流量控制、實時熔斷下遊不可用應用等。
  • 完備的實時監控

    :Sentinel 同時提供實時的監控功能。您可以在控制台中看到接入應用的單台機器秒級資料,甚至 500 台以下規模的叢集的彙總運作情況。
  • 廣泛的開源生态

    :Sentinel 提供開箱即用的與其它開源架構/庫的整合子產品,例如與 Spring Cloud、Dubbo、gRPC的整合。您隻需要引入相應的依賴并進行簡單的配置即可快速地接入 Sentinel。
  • 完善的 SPI 擴充點

    :Sentinel 提供簡單易用、完善的 SPI擴充接口。您可以通過實作擴充接口來快速地定制邏輯。例如定制規則管理、适配動态資料源等。

3.Sentinel的特性

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

官方中文文檔:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D

二。下載下傳安裝Sentinel控制台

1.sentinel元件由兩部分組成:

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

2.jar包下載下傳位址:https://github.com/alibaba/Sentinel/releases

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

根據自己的需要進行下載下傳,這裡我選擇的是較為穩定的1.7版本:

3.運作前提條件:

  • jdk環境已經配好,從 Sentinel 1.5.0 開始僅支援 JDK 1.7 或者以上版本。Sentinel 1.5.0

    之前的版本最低支援 JDK 1.6。

  • sentinel預設8080端口未被占用

4.使用java-jar指令即可運作

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

5.通路http://localhost:8080/,即可打開sentinel控制台,初始登入賬号以及密碼均為sentinel:

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

三。整合Sentinel

1.在pom.xml檔案中添加以下依賴:

<!--springcloud alibb nacos依賴 -->
  <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      <version>2.2.3.RELEASE</version>
  </dependency>

<!--springcloud alibb sentinel依賴  1.7版本依賴-->
   <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        <version>2.2.0.RELEASE</version>
    </dependency>

    <!--springcloud alibb sentinel依賴  1.8版本依賴-->
    <!--<dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        <version>2.2.3.RELEASE</version>
    </dependency>-->

  <!--springBoot整合web依賴 -->
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

           

2.在application.yml配置檔案中添加以下配置:

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

3.啟動類加上@EnableDiscoveryClient注解,将服務注冊到nacos:

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

4.controller控制器示例代碼如下:

@RestController
public class SentinelController {

    @GetMapping("/testA")
    public String testA() {
        return "------testA";
    }

    @GetMapping("/testB")
    public String testB() {

        return "------testB";
    }

}
           

四。測試

1.首先啟動nacos注冊中心:

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

2.啟動8401服務:

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

3.通路通路http://localhost:8080/,打開sentinel控制台

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

發現空空如也,沒有監測到任何的服務,這是因為sentinel所采用的懶加載機制,若不通路相關的接口,sentinel将不會進行加載

4.通路相應的接口,再次重新整理sentinel控制台,發現接口已被監測到:

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作
SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

5.多通路幾次相關接口,可以在實時監控中看見每一個restful風格接口時段通路資料情況:

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作
SpringCloud Alibaba微服務中使用Sentinel監控服務的實作
SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

6.在簇點鍊路中可以檢視到全部的接口情況:

SpringCloud Alibaba微服務中使用Sentinel監控服務的實作

繼續閱讀