SpringCloud(Alibaba版)Sentinel初識篇


一、Sentinel簡介

是什么:

  Spring Cloud Alibaba Sentinel 是面向於雲原生微服務的高可用流控防護組件,主要以流量為切入點,從流量控制、熔斷降級、系統自適應保護等多個維度來幫助用戶保障微服務的穩定性。 一句話解釋,就是之前學習過的 Hystrix 升級版。

Hystrix VS Sentinel:

Hystrix Sentinel
需要程序員手工搭建監控平台 單獨一個組件、可以獨立出來
沒有一套Web界面可以給程序員進行更加細粒度化得配置,比如流控、速率控制、服務熔斷、服務降級 直接界面化的細粒度統一配置

Sentinel的主要特性:

 

二、安裝並運行Sentinel

去哪下載?

  先訪問 Sentinel 的 GitHub 地址:https://github.com/alibaba/Sentinel,找到並單擊 releases 菜單:

點擊 tags 標簽,能夠查看 Sentinel 發布的所有版本:

 

我自己使用的是 sentinel-dashboard-1.7.1.jar 版本,單擊下載即可:

你也可以查看 Sentinel 官網https://sentinelguard.io,有快速開始相關文檔教程:

Sentinel組件由兩部分組成:

  • 核心庫(Java客戶端)不依賴任何框架/庫,能夠運行於所有 Java 運行時環境,同時對 Dubbo / Spring Cloud 等框架也有較好的支持。

  • 控制台(Dashboard)基於 Spring Boot 開發,打包后可以直接運行,不需要額外的 Tomcat 等應用容器。

運行Sentinel:

運行前提:需要最低Java8 JDK環境OK,8080端口不能被占用。在原來8080端口會被說為是 Tomcat 默認端口,不知道為什么,Sentinel 確選擇了8080作為自己的端口號。

在自己下載的 Sentinel Jar包目錄中,長按 Shift 在此處打開 Powershell 窗口,輸入 start cmd 命令並打開 Windows 終端窗口,接着輸入 java -jar sentinel-dashboard-1.7.1.jar 命令成功啟動 Sentinel 控制台如下:

如何驗證是否運行成功呢?

  很簡單,命令運行成功后直接訪問http://localhost:8080/,會轉發到 Sentinel 登錄頁面,輸入默認登錄賬號密碼均為 sentinel,都是小寫:

登錄后,一進來能夠看到 Sentinel 控制台 1.7.1 頁面,就表示你的 Sentinel 容錯、限流、監控平台安裝完成了:

 

三、SpringBoot集成Sentinel初始化監控

本節需要了解 Nacos注冊中心 一些基本配置知識,如果沒學過,自覺進入該鏈接。

1)build.gradle項目依賴

創建gradle模塊service-sentinel並添加web、actuator監控、alibaba-nacos-discovery與alibaba-sentinel依賴

dependencies {
   compile group: 'org.springframework.boot', name: 'spring-boot-starter-web'

   compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator'

   compile group: 'com.alibaba.cloud', name: 'spring-cloud-starter-alibaba-nacos-discovery', version: '2.1.0.RELEASE'

   compile group: 'com.alibaba.cloud', name: 'spring-cloud-starter-alibaba-sentinel', version: '2.1.0.RELEASE'
}

2)application.yaml配置文件

server:
  port: 7070
spring:
  application:
    name: service-sentinel
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #指定Nacos服務地址
    sentinel:
      transport:
        dashboard: 127.0.0.1:8080 #指定Sentinel DashBoard服務地址
        port: 8719 #默認8719端口,假如被占用會自動從8719開始依次+1掃描,直至找到未被占用的端口
management:
  endpoints:
    web:
      exposure:
        include: '*'
View Code

3)啟動類ServiceSentinelApplication.java

package org.wesson.cloudalibaba.sentinel;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class ServiceSentinelApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceSentinelApplication.class, args);
    }

}
View Code

4)Controller

package org.wesson.cloudalibaba.sentinel.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class FlowLimitController {

    @GetMapping(value = "/hello")
    public String hello() {
        return "Hello Sentinel";
    }

}
View Code

5)測試

Step1:啟動 Nacos 服務器

Step2:啟動 Sentinel Dashboard 服務器

Step3:運行 service-sentinel 啟動類,端口為7070

Step4:然后訪問http://localhost:8848/nacos,找到服務管理下的服務列表,就能夠看到一個服務名為 service-sentinel 的應用程序注冊至 Nacos 服務管理頁面了:

Step5:接着訪問http://localhost:8080請求,切換到 Sentinel 登錄頁面進入到 Dashboard 首頁。此時 Sentinel 控制台並沒有監控任何微服務,是弄錯了嗎?並不是,其實 Sentinel 是采用了懶加載的機制(可以簡單理解為每天上班都需要打一次卡,就代表某個微服務注冊到 Sentinel 控制台了)。

Step6:需要執行一次訪問即可,瀏覽器請求http://localhost:7070/hello,返回結果:

可以多次請求 Controller 接口,就能夠看到波峰流量的流動效果了,綠線代表通過,藍線代表拒絕:

此時 Sentinel 控制台正在監控微服務 service-sentinel,也可以說 Sentinel Dashboard 代替了 Hystrix Dashboard 功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM