天天看點

Spring Boot2 內建 Sentinel 實作接口流制和降級一  介紹二  服務端三  用戶端

一  介紹

Spring Boot2 內建 Sentinel 實作接口流制和降級一  介紹二  服務端三  用戶端

Sentinel 是什麼?

随着微服務的流行,服務和服務之間的穩定性變得越來越重要。Sentinel 以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個次元保護服務的穩定性。

Sentinel 具有以下特征:

  • 豐富的應用場景:Sentinel 承接了阿裡巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發流量控制在系統容量可以承受的範圍)、消息削峰填谷、叢集流量控制、實時熔斷下遊不可用應用等。
  • 完備的實時監控:Sentinel 同時提供實時的監控功能。您可以在控制台中看到接入應用的單台機器秒級資料,甚至 500 台以下規模的叢集的彙總運作情況。
  • 廣泛的開源生态:Sentinel 提供開箱即用的與其它開源架構/庫的整合子產品,例如與 Spring Cloud、Dubbo、gRPC 的整合。您隻需要引入相應的依賴并進行簡單的配置即可快速地接入 Sentinel。
  • 完善的 SPI 擴充點:Sentinel 提供簡單易用、完善的 SPI 擴充接口。您可以通過實作擴充接口來快速地定制邏輯。例如定制規則管理、适配動态資料源等。

Sentinel 的主要特性:

Spring Boot2 內建 Sentinel 實作接口流制和降級一  介紹二  服務端三  用戶端

Sentinel 分為兩個部分:

  • 核心庫(Java 用戶端)不依賴任何架構/庫,能夠運作于所有 Java 運作時環境,同時對 Dubbo / Spring Cloud 等架構也有較好的支援。
  • 控制台(Dashboard)基于 Spring Boot 開發,打包後可以直接運作,不需要額外的 Tomcat 等應用容器。

阿裡巴巴官網對于Sentinel的介紹大概就這麼多,下面我們來簡單使用一下Sentinel。

Sentinel分為:服務端和用戶端

服務端有可視化界面,便于操作,功能十分強大和實用。

用戶端如果是maven項目,需引入jar後,大家都知道,既然分為服務端和用戶端,用戶端必須配置連接配接服務端的位址,即可和服務端通信并完成限流功能。

二  服務端

找到官方位址,下載下傳jar,位址:https://github.com/alibaba/Sentinel/releases

Spring Boot2 內建 Sentinel 實作接口流制和降級一  介紹二  服務端三  用戶端

啟動jar即可,由于我是在windows搭建的,進入jar所在目錄,在位址欄目輸入 cmd,進入指令視窗,輸入指令:java -jar sentinel-dashboard-1.8.0.jar

Spring Boot2 內建 Sentinel 實作接口流制和降級一  介紹二  服務端三  用戶端

通路web位址:http://localhost:8080   預設使用者名和密碼都是sentinel/sentinel,然後進入首頁

Spring Boot2 內建 Sentinel 實作接口流制和降級一  介紹二  服務端三  用戶端
Spring Boot2 內建 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
           

啟動用戶端服務,調用接口,可在服務端檢視用戶端資訊,如圖:

Spring Boot2 內建 Sentinel 實作接口流制和降級一  介紹二  服務端三  用戶端

流控規則配置

給selectUnitTreeList查詢接口添加流控規則,它的QPS(每秒請求數)為1,如圖:

Spring Boot2 內建 Sentinel 實作接口流制和降級一  介紹二  服務端三  用戶端

通過頻繁調用selectUnitTreeList查詢接口,通過監控可以看到如圖資訊:

Spring Boot2 內建 Sentinel 實作接口流制和降級一  介紹二  服務端三  用戶端

降級規則配置

給selectUnitTreeList接口查詢添加一個降級規則配置,如果QPS大于1,且平均響應時間大于20ms,則接口下來接口在2秒鐘無法通路,之後自動恢複。

Spring Boot2 內建 Sentinel 實作接口流制和降級一  介紹二  服務端三  用戶端

熱點,授權等操作,根據自己需求自行配置即可,至此內建完畢。

繼續閱讀