Sentinel 提供一個輕量級的開源控制台,它提供機器發現以及健康情況管理、監控(單機和集群),規則管理和推送的功能。
比如我們之前是直接在代碼中初始限流的值,接入控制台后可以直接通過控制台進行限流參數的動態配置,非常方便。
Sentinel 控制台最少應該包含如下功能:
- 查看機器列表以及健康情況:收集 Sentinel 客戶端發送的心跳包,用於判斷機器是否在線。
- 監控 (單機和集群聚合):通過 Sentinel 客戶端暴露的監控 API,定期拉取並且聚合應用監控信息,最終可以實現秒級的實時監控。
- 規則管理和推送:統一管理推送規則。
- 鑒權:生產環境中鑒權非常重要。這里每個開發者需要根據自己的實際情況進行定制。
部署控制台
需要先下載控制台的jar包,可以直接從 https://github.com/alibaba/Sentinel/releases 頁面進行下載,也可以自己下載源碼進行編譯(https://github.com/alibaba/Sentinel/tree/master/sentinel-dashboard),推薦直接下載編譯好的。
下載之后使用下面的命令啟動即可:
java -Dserver.port=8333 -Dcsp.sentinel.dashboard.server=localhost:8333 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.4.2.jar
-
-Dserver.port
指定控制台的端口 -
-Dcsp.sentinel.dashboard.server
指定控制台的地址,相當於自己注冊自己,這樣啟動后就能看到自身的信息 -
-Dproject.name
指定接入的應用名稱
啟動后訪問 http://localhost:8333 即可跳轉到控制台的主頁,如下圖:
這個控制台里面的操作我們就不進行講解了,大家自己去嘗試下就會了,比如說我們要看實時監控的數據,那么就點擊第一個實時監控的菜單,可以看到下面的效果:
可以看到每個URI的QPS啊,拒絕的QPS等信息。
客戶端接入控制台
上面其實是把控制台自己接入進來了,如果要接入我們實際工作中的項目,該怎么接入?
客戶端需要引入 Transport 模塊來與 Sentinel 控制台進行通信。您可以通過 pom.xml 引入 JAR 包:
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>1.4.1</version>
</dependency>
同樣的增加JVM啟動參數指定控制台的地址:
-Dcsp.sentinel.dashboard.server=localhost:8333
注:若您的應用為 Spring Boot 或 Spring Cloud 應用,您可以使用 Spring Cloud Alibaba,通過 Spring 配置文件來指定配置,詳情請參考 Spring Cloud Alibaba Sentinel 文檔 以及 示例。
這個我們后面再進行講解,目前就直接用JVM參數設置。
Sentinel 會在客戶端首次調用的時候進行初始化,開始向控制台發送心跳包。然后就可以在控制台上看到我們自己接入的應用了。
可以看到多了一個應用,因為我們沒有指定應用名,就是默認的啟動類的全稱。
接入之后就可以查看這個應用的一些信息了,還可以動態的修改限流的規則:
當然這些規則目前只是存儲在內存中,應用重啟之后就丟失了,后面我們再學習如何持久化這些數據。