Sentinel 介紹
隨着微服務的流行,服務和服務之間的穩定性變得越來越重要。 Sentinel 以流量爲切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。
Sentinel 具有以下特徵:
-
豐富的應用場景: Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發流量控制在系統容量可以承受的範圍)、消息削峯填谷、實時熔斷下游不可用應用等。
-
完備的實時監控: Sentinel 同時提供實時的監控功能。您可以在控制檯中看到接入應用的單臺機器秒級數據,甚至 500 臺以下規模的集羣的彙總運行情況。
-
廣泛的開源生態: Sentinel 提供開箱即用的與其它開源框架/庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應的依賴並進行簡單的配置即可快速地接入 Sentinel。
-
完善的 SPI 擴展點: Sentinel 提供簡單易用、完善的 SPI 擴展點。您可以通過實現擴展點,快速的定製邏輯。例如定製規則管理、適配數據源等。
Sentinel 控制檯
Sentinel 控制檯最少應該包含如下功能:
- 查看機器列表以及健康情況:收集 Sentinel 客戶端發送的心跳包,用於判斷機器是否在線。
- 監控 (單機和集羣聚合):通過 Sentinel 客戶端暴露的監控 API,定期拉取並且聚合應用監控信息,最終可以實現秒級的實時監控。
- 規則管理和推送:統一管理推送規則。
- 鑑權:生產環境中鑑權非常重要。這裏每個開發者需要根據自己的實際情況進行定製。
Sentinel控制檯部署步驟:
1. 下載sentinel-dashboard.jar
2. 啓動
nohup java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar &
其中 -Dserver.port=8080
用於指定 Sentinel 控制檯端口爲 8080
。比如:-Dcsp.sentinel.dashboard.server=10.122.97.198:8080
Springboot適配sentinel
1. springboot項目引入sentinel,需要加上以下依賴:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>1.7.1</version>
</dependency>
spring-cloud-starter-alibaba-sentinel:用於啓動sentinel
sentinel-transport-simple-http :客戶端需要引入 Transport 模塊來與 Sentinel 控制檯進行通信
sentinel-core :是sentinel的核心包
2. 配置啓動參數,需要在配置文件或jvm啓動加入參數
spring:
application:
name: cloud-game-web
cloud:
sentinel:
transport:
port: 8720
dashboard: 10.122.97.198:8080
或者應用
啓動時加入 JVM 參數 -Dcsp.sentinel.dashboard.server=consoleIp:port
指定控制檯地址和端口
3. 觸發客戶端初始化
確保客戶端有訪問量,Sentinel 會在客戶端首次調用的時候進行初始化,開始向控制檯發送心跳包。