簡介
Sentinel的官方标題是:分布式系統的流量防衛兵。
Sentinel 以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個次元保護服務的穩定性。
Sentinel 分為兩個部分:
- 微服務用戶端整合:每個微服務用戶端引入sentinel相應的依賴并進行簡單的配置即可快速地接入Sentinel功能,每個微服務用戶端能将監控資訊上報給sentinel-dashboard(控制台)展示以及在控制台實時的更改限流或熔斷規則等。
- sentinel-dashboard(控制台):類似與hystrix-dashboard,除了與hystrix-dashboard一樣提供實時監控之外,還提供了流控規則、熔斷規則的線上維護等功能,它比hystrix-dashboard更為強大一些。
Sentinel Dashboard安裝
下載下傳位址:https://github.com/alibaba/Sentinel/releases
使用指令啟動:
java -Dserver.port=8088 -jar sentinel-dashboard-1.8.0.jar
通路位址:
http://localhost:8088/localhost:8088
可以看到如下頁面:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxiMJR0T3FFRPVnVXF2bO5mYox2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLzMjNyITO1YTM5ETMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
預設使用者名和密碼都是
sentinel
微服務用戶端整合引入Sentinel
1、在微服務應用的pom.xm引入Sentinel子產品
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
2、在微服務應用的配置檔案中配置參數
通過
spring.cloud.sentinel.transport.dashboard
參數配置sentinel dashboard的通路位址
server.port=8001
# sentinel dashboard
spring.cloud.sentinel.transport.dashboard=localhost:8088
3、建立rest接口示例
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@Slf4j
@RestController
static class TestController {
@GetMapping("/test")
public String hello() {
return "yuanmahy.com";
}
}
}
4、啟動示例微服務應用,測試接口
通過curl或者postman通路localhost:8001/test接口。
$ curl localhost:8001/test
yuanmahy.com
Sentinel Dashboard(控制台)實時監控示例微服務以及接口調用情況。
如下圖所示:
配置限流規則
點選簇點鍊路菜單,選擇/test接口記錄,點選流控按鈕
對該接口設定限流規則
配置說明:
- 門檻值類型選擇:QPS
- 單機門檻值:2
表示對該接口的限流政策是每秒最多允許2個請求進入。
驗證限流規則
快速的通路這個接口,驗證是否會觸發限流控制
接口傳回資訊:Blocked by Sentinel (flow limiting) 表示觸發限流,驗證成功。
在Sentinel Dashboard(控制台)記錄 1秒通路5次QPS,通過2次,限流3次,統計圖藍色線表示限量,綠色表示
如果覺得文章能幫到您,歡迎關注wx公衆号:大資料技術天涯,共同進步!
持續分享java微服務技術,大資料、人工智能等科技類原創文章。