一 介紹
Sentinel 是什麼?
随着微服務的流行,服務和服務之間的穩定性變得越來越重要。Sentinel 以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個次元保護服務的穩定性。
Sentinel 具有以下特征:
- 豐富的應用場景:Sentinel 承接了阿裡巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發流量控制在系統容量可以承受的範圍)、消息削峰填谷、叢集流量控制、實時熔斷下遊不可用應用等。
- 完備的實時監控:Sentinel 同時提供實時的監控功能。您可以在控制台中看到接入應用的單台機器秒級資料,甚至 500 台以下規模的叢集的彙總運作情況。
- 廣泛的開源生态:Sentinel 提供開箱即用的與其它開源架構/庫的整合子產品,例如與 Spring Cloud、Dubbo、gRPC 的整合。您隻需要引入相應的依賴并進行簡單的配置即可快速地接入 Sentinel。
- 完善的 SPI 擴充點:Sentinel 提供簡單易用、完善的 SPI 擴充接口。您可以通過實作擴充接口來快速地定制邏輯。例如定制規則管理、适配動态資料源等。
Sentinel 的主要特性:
Sentinel 分為兩個部分:
- 核心庫(Java 用戶端)不依賴任何架構/庫,能夠運作于所有 Java 運作時環境,同時對 Dubbo / Spring Cloud 等架構也有較好的支援。
- 控制台(Dashboard)基于 Spring Boot 開發,打包後可以直接運作,不需要額外的 Tomcat 等應用容器。
阿裡巴巴官網對于Sentinel的介紹大概就這麼多,下面我們來簡單使用一下Sentinel。
Sentinel分為:服務端和用戶端
服務端有可視化界面,便于操作,功能十分強大和實用。
用戶端如果是maven項目,需引入jar後,大家都知道,既然分為服務端和用戶端,用戶端必須配置連接配接服務端的位址,即可和服務端通信并完成限流功能。
二 服務端
找到官方位址,下載下傳jar,位址:https://github.com/alibaba/Sentinel/releases
啟動jar即可,由于我是在windows搭建的,進入jar所在目錄,在位址欄目輸入 cmd,進入指令視窗,輸入指令:java -jar sentinel-dashboard-1.8.0.jar
通路web位址:http://localhost:8080 預設使用者名和密碼都是sentinel/sentinel,然後進入首頁
至此服務端搭建完成,接下來使用spring boot2內建sentinel
三 用戶端
pom.xml中引入依賴
<!-- sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
配置檔案中添加配置項
# sentinel 配置
spring.application.name=frms
spring.cloud.sentinel.transport.dashboard=localhost:8080
spring.cloud.sentinel.transport.heartbeat-interval-ms=500
啟動用戶端服務,調用接口,可在服務端檢視用戶端資訊,如圖:
流控規則配置
給selectUnitTreeList查詢接口添加流控規則,它的QPS(每秒請求數)為1,如圖:
通過頻繁調用selectUnitTreeList查詢接口,通過監控可以看到如圖資訊:
降級規則配置
給selectUnitTreeList接口查詢添加一個降級規則配置,如果QPS大于1,且平均響應時間大于20ms,則接口下來接口在2秒鐘無法通路,之後自動恢複。
熱點,授權等操作,根據自己需求自行配置即可,至此內建完畢。