SpringCloud Alibaba整合Sentinel


SpringCloud Alibaba整合Sentinel

Sentinel 控制台

1. 概述

Sentinel 提供一個輕量級的開源控制台,它提供機器發現以及健康情況管理、監控(單機和集群),規則管理和推送的功能。另外,鑒權在生產環境中也必不可少。這里,我們將會詳細講述如何通過簡單的步驟就可以使用這些功能。

接下來,我們將會逐一介紹如何整合 Sentinel 核心庫和 Dashboard,讓它發揮最大的作用。同時我們也在阿里雲上提供企業級的控制台:AHAS Sentinel 控制台,您只需要幾個簡單的步驟,就能最直觀地看到控制台如何實現這些功能。

Sentinel 控制台包含如下功能:

注意:Sentinel 控制台目前僅支持單機部署。

2. 啟動控制台[Sentinel服務端]

2.1 獲取 Sentinel 控制台
  1. 您可以從 release 頁面 下載最新版本的控制台 jar 包。

  2. 您也可以從最新版本的源碼自行構建 Sentinel 控制台:

    • 下載 控制台 工程
    • 使用以下命令將代碼打包成一個 fat jar: mvn clean package
2.2 啟動

注意:啟動 Sentinel 控制台需要 JDK 版本為 1.8 及以上版本。

使用如下命令啟動控制台:

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
# 注意上述命令在PowerShell 執行不了,要在cmd中執行

其中 -Dserver.port=8080 用於指定 Sentinel 控制台端口為 8080

從 Sentinel 1.6.0 起,Sentinel 控制台引入基本的登錄功能,默認用戶名和密碼都是 sentinel。可以參考 鑒權模塊文檔 配置用戶名和密碼。

注:若您的應用為 Spring Boot 或 Spring Cloud 應用,您可以通過 Spring 配置文件來指定配置,詳情請參考 Spring Cloud Alibaba Sentinel 文檔

Sentinel 客戶端

FeginService.java

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @Author xiongmin
 * @Description //TODO
 * @Date 2020/12/5 20:15
 * @Version 1.0
 **/
@FeignClient(value = "nacos-provider", fallback = FallBackFeginServiceImpl.class)
public interface FeginService {

    @GetMapping(value = "/echo/{message}")
    String echo(@PathVariable String message);

    @GetMapping(value = "/test/{message}")
    String test(@PathVariable String message);
}

FallBackFeginServiceImpl.java

import org.springframework.stereotype.Component;

/**
 * @Author xiongmin
 * @Description //TODO
 * @Date 2020/12/13 19:54
 * @Version 1.0
 **/
@Component
public class FallBackFeginServiceImpl implements FeginService {

    @Override
    public String echo(String message) {
        String result = "FallBack echo() method";
        return result;
    }

    @Override
    public String test(String message) {
        String result = "FallBack test() method";
        return result;
    }
}

編寫一個SpringCloud的消費者用例,配置如下:前提,要先啟動Nacos和Sentinel

spring:
  application:
    name: nacos-consumer-feign
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    sentinel:
      transport:
        port: 8720
        dashboard: localhost:8080

server:
  port: 9092

feign:
  sentinel:
    enabled: true

management:
  endpoints:
    web:
      exposure:
        include: "*"
  1. 應用名稱為nacos-consumer-feign,如果不指定,在dashboard上就會顯示你的包路徑,很丑。
  2. spring.cloud.sentinel.transport.port是本地啟的端口,與dashboard進行數據交互。官方文檔是這樣寫的:這里的 spring.cloud.sentinel.transport.port 端口配置會在應用對應的機器上啟動一個 Http Server,該 Server 會與 Sentinel 控制台做交互。比如 Sentinel 控制台添加了一個限流規則,會把規則數據 push 給這個 Http Server 接收,Http Server 再將規則注冊到 Sentinel 中。
  3. spring.cloud.sentinel.transport.dashboard是指明了dashboard的地址,格式為IP:Port

Sentinel 客戶端注冊到SentinelDashboard 需要時間,項目啟動之后可能要等待一會;如果SentinelDashboard一直沒有加載Sentinel 客戶端的話,可以將服務提供者暫時關閉,那么請求接口就會在SentinelDashboard有記錄。

如果SentinelDashboard檢測到Sentinel 客戶端的話,那么此時會多一個名為 應用程序名 的服務

image-20201216165648379

參考鏈接


免責聲明!

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



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