sentinel不單提供了豐富、靈活的各種規則:流控、降級、熱點、系統、授權,還提供了可視化的控制面板dashboard,通過控制面板可以實現
-
規則實時配置、動態刷新
-
資源監控
下面我們來搭建一個sentinel控制面板,它其實是一個基於springboot的應用,因此搭建起來非常簡單!
1.下載sentinel dashboard
訪問地址:https://github.com/alibaba/Sentinel/tree/master/sentinel-dashboard,可以直接下載sentinel dashboard項目。
我下載的是整個sentinel項目,訪問地址:https://github.com/alibaba/Sentinel,下載後解壓
找到sentinel-dashboard,進入目錄,執行命令
mvn clean package
即可打包sentinel-dashboard
2.啓動sentinel dashboard
打開控制檯窗口,執行以下命令啓動控制面板
java -Dserver.port=8858 -Dcsp.sentinel.dashboard.server=localhost:8858 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
啓動完成,訪問地址:http://127.0.0.1:8858/,輸入默認的sentinel賬號:sentinel/sentinel,即可進入控制面板
成功登陸後主界面
3.應用接入sentinel dashboard
登錄sentinel dashboard控制面板,看到左邊菜單展現應用,應用下有相應的規則子菜單:實時監控、簇點鏈路、流控規則、熔斷規則、熱點規則、系統規則、授權規則、集羣流控、機器列表。
通過該控制面板,我們可以給每個應用實時配置規則,實現動態刷新。那麼關鍵是如何把應用接入進來呢?非常簡單。
3.1.引入依賴
sentinel提供了sentinel-transport-simple-http模塊,負責應用與控制面板之間的通信
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>1.8.2</version>
</dependency>
3.2.設置啓動應用參數
應用接入sentinel dashboard控制面板,需要在啓動時,設置相應的jvm參數
-
指定控制面板server地址
-
以及本地應用通過監聽哪個端口,來實現與sentinel dashboard通信
-Dcsp.sentinel.dashboard.server=127.0.0.1:8858 -Dcsp.sentinel.api.port=8719
比如我在idea啓動項目時,進行了設置
3.3.啓動應用,查看控制面板
注意:應用與sentinel dashboard之間是懶加載,啓動應用後,需要訪問應用,才能在控制面板看到應用的信息。訪問地址:http://127.0.0.1:8080/sentinel/degrade?userId=1
刷新控制面板,看到應用已經加載到sentinel dashboard
點擊流控規則
點擊熔斷規則
可以看到應用中,初始加載的流控規則、熔斷規則已經在控制面板中展示
4.動態刷新規則
我們前面說過,通過sentinel控制面板,可以實現規則的配置、動態刷新規則、以及監控。來試一下
4.1.查看流控規則
可以看到,這正是我們在應用中初始化加載的規則,此時配置的閾值是1,即每秒中超過1次請求,會發生流控。
4.2.修改流控規則
將流控規則,閾值調整爲:100,表示每秒鐘中允許通過100個請求,超過100纔會流控。
然後再次訪問:http://127.0.0.1:8080/sentinel/flow?userId=1,瘋狂刷新,發現不限流了!