Sentinel入門
什么是Sentinel
- Sentinel(分布式系統(tǒng)的流量防衛(wèi)兵)是阿里開源的一套用于服務容錯的綜合性解決方案。它們流量為切入點,從流量控制,熔斷降級,系統(tǒng)負載保護等多個維度來保護服務的穩(wěn)定性。
Sentinel具有以下特征:
- 豐富的應用場景:Sentinel承接了阿里巴巴近10年的雙十一大促流量的核心場景,例如秒殺(即突發(fā)流量控制在系統(tǒng)容量可以承受的范圍),消息削峰填谷。集群流量控制,實時熔斷下游不可用應用等。
- 完備的實時監(jiān)控:Sentinel提供了實時的監(jiān)控功能。通過控制可以看到接入應用的單臺機器秒級數(shù)據(jù),甚至500臺以下規(guī)模的集群的匯總運行情況。
- 廣泛的開源生態(tài):Sentinel提供開箱即用的與其他開源框架/庫的整合模塊,例如與SpringCLoud,Dubbo,gRPC的整合。只需要進入相應的依賴并進行簡單的配置即可快速地接入Sentinel。
- 完善的SPI擴展點:Sentinel提供簡單易用,完善的SPI擴展接口。您可以通過實現(xiàn)擴展接口來快速地定制邏輯。例如定制規(guī)則管理,適配動態(tài)數(shù)據(jù)源等。
Sentinel分為兩個部分:
- 核心(Java客戶端)不依賴任何框架/庫,能夠運行于所有Java運行時環(huán)境,同時對Dubbo/Spring Cloud等框架也有比較好的支持。
- 控制臺(Dashboard)基于Spring Boot開發(fā),打包后可以直接運行,不需要額外的Tomcat等應用容器。
微服務集成Sentinel
- 為微服務集成Sentinel非常簡單,只需要加入Sentinel的依賴即可
- 1.在pom.xml中加入下面依賴
<!--Sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
- 編寫一個Controller測試使用
@RestController
@Slf4j
public class OrderControllerTwo {
@RequestMapping("/order/message1")
public String message1(){
return "測試高并發(fā)";
}
@RequestMapping("/order/message2")
public String message2(){
return "測試高并發(fā)";
}
}
安裝Sentinel控制臺
- Sentinel提供一個輕 量級的控制臺,它提供機器發(fā)現(xiàn)、單機資源實時監(jiān)控以及規(guī)則管理等功能。
- 1.下載jar包,解壓到文件夾
https://github.com/alibaba/Sentinel/releases
- 2.啟動控制臺
#直接使用jar命令啟動項目(控制臺本身是一個SpringBoot項目)
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -jar sentinel-dashboard-1.7.0.jar
- 3.修改shop-order,在里面加入有關控制臺的配置
spring:
cloud:
sentinel:
transport:
port: 9999
dashboard: 192.168.110.130:8080
實現(xiàn)一個接口的限流
-
1.通過控制臺為message1添加一個流量控制規(guī)則
image
image -
2.通過控制臺快速頻繁訪問,觀察效果
image
使用Docker安裝Sentinel控制臺
- 執(zhí)行安裝腳本
docker run --name sentinel-dashboard -d -p 8858:8858 bladex/sentinel-dashboard:1.7.0