Sentinel 規則持久化
一、修改order-service服務
修改OrderService,讓其監聽Nacos中的sentinel規則配置。
具體步驟如下:
1.引入依賴
在order-service中引入sentinel監聽nacos的依賴:
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
2.配置nacos地址
在order-service中的application.yml檔案配置nacos地址及監聽的配置資訊:
spring:
cloud:
sentinel:
datasource:
flow:
nacos:
server-addr: localhost:8848 # nacos地址
dataId: orderservice-flow-rules
groupId: SENTINEL_GROUP
rule-type: flow # 還可以是:degrade、authority、param-flow
二、修改sentinel-dashboard原始碼
SentinelDashboard預設不支援nacos的持久化,需要修改原始碼。
1. 解壓
sentinel原始碼包:
然後並用IDEA開啟這個專案,結構如下:
2. 修改nacos依賴
在sentinel-dashboard原始碼的pom檔案中,nacos的依賴預設的scope是test,只能在測試時使用,這裡要去除:
將sentinel-datasource-nacos依賴的scope去掉:
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> </dependency>
3. 新增nacos支援
在sentinel-dashboard的test包下,已經編寫了對nacos的支援,我們需要將其拷貝到main下。
4. 修改nacos地址
然後,還需要修改測試程式碼中的NacosConfig類:
修改其中的nacos地址,讓其讀取application.properties中的配置:
在sentinel-dashboard的application.properties中新增nacos地址配置:
nacos.addr=localhost:8848
5. 配置nacos資料來源
另外,還需要修改com.alibaba.csp.sentinel.dashboard.controller.v2包下的FlowControllerV2類:
讓我們新增的Nacos資料來源生效:
6. 修改前端頁面
接下來,還要修改前端頁面,新增一個支援nacos的選單。
修改src/main/webapp/resources/app/scripts/directives/sidebar/目錄下的sidebar.html檔案:
將其中的這部分註釋開啟:
修改其中的文字:
7. 重新編譯、打包專案
執行IDEA中的maven外掛,編譯和打包修改好的Sentinel-Dashboard:
8.啟動
啟動方式跟官方一樣:
java -jar sentinel-dashboard.jar
如果要修改nacos地址,需要新增引數:
java -jar -Dnacos.addr=localhost:8848 sentinel-dashboard.jar