Sentinel是什麼
Sentinel的官方標題是:分佈式系統的流量防衛兵。從名字上來看,很容易就能猜到它是用來作服務穩定性保障的。對於服務穩定性保障組件,如果熟悉Spring Cloud的用戶,第一反應應該就是Hystrix。但是比較可惜的是Netflix已經宣佈對Hystrix停止更新。那麼,在未來我們還有什麼更好的選擇呢?除了Spring Cloud官方推薦的resilience4j之外,目前Spring Cloud Alibaba下整合的Sentinel也是用戶可以重點考察和選型的目標。
Sentinel的功能和細節比較多,一篇內容很難介紹完整。所以下面我會分多篇來一一介紹Sentinel的重要功能。本文就先從限流入手,說說如何把Sentinel整合到Spring Cloud應用中,以及如何使用Sentinel Dashboard來配置限流規則。通過這個簡單的例子,先將這一套基礎配置搭建起來。
1.啓動Sentinel Dashboard
下載地址:sentinel
啓動方式:java -Dserver.port=8888 -jar sentinel-dashboard-1.6.0.jar
可以通過-Dserver.port=8888來切換啓動的端口,-Dserver.servlet.session.timeout=7200: 用於指定 Spring Boot 服務端 session 的過期時間,如 7200 表示 7200 秒;60m 表示 60 分鐘,默認爲 30 分鐘;
這裏我碰到一個問題:使用最新的sentinel Dashboard 1.7.1.jar會出現問題
Sentinel Dashboard界面新增流控規則時報錯:失敗:invalid type
主要問題是Sentinel Dashboard的jar包版本過高,導致代碼裏的sentinel-code版本與dashboard的版本不一致,最終報錯。
github上的issue:https://github.com/alibaba/Sentinel/issues/1236#issuecomment-571907232
啓動後輸入賬號密碼,全部爲sentinel,進入主頁面
到此sentinel dashboard的啓動就完成了,接下來啓動項目
pom中加入
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
在配置文件中加入相關配置
spring
cloud:
sentinel:
transport:
dashboard: localhost:8080
在項目中寫一個簡單接口
@GetMapping("/unLock")
public String lock() throws Exception {
return "success";
}
啓動項目就可以了,在dashboard查看前,先調用接口幾次,不然dashboard上可能看不到,這裏我用jmeter請求了500次
接下來測試限流的作用,點擊簇點鏈路,選擇要限流的接口,點擊流控
使用jmeter發起500次請求
限流生效