【奈米經典案例】行動式示波器多通道資料採集系統
阿新 • • 發佈:2022-03-14
1.產生原因
一旦我們重啟應用,sentinel規則將消失,生產環境需要將配置規則進行持久化
2.持久化思想
以8401為例。
將限流配置規則持久化進Nacos儲存,只要重新整理8401某個rest地址,sentinel控制檯的流量規則就能看到,只要Nacos裡面的配置不刪除,針對8401上sentinel上的流控規則持續有效。
3.實現步驟
3.1 改POM
在POM中增加Sentinel持久化的引入
<!--SpringCloud alibaba sentinel-datasource-nacos 後續做持久化用到--> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> </dependency>
3.2 改YML
server:
port: 8401
spring:
application:
name: cloudalibaba-sentinel-service
cloud:
nacos:
discovery:
#Nacos服務註冊中心地址
server-addr: localhost:8848
sentinel:
transport:
#配置Sentinel dashboard地址
dashboard: localhost:8080
#預設8719埠,假如被佔用會自動8719開始依次+1掃描,直至找到未被佔用的埠
port: 8719
datasource:
ds1:
nacos:
server-addr: localhost:8848
dataId: cloudalibaba-sentinel-service
groupId: DEFAULT_GROUP
data-type: json
rule-type: flow
management:
endpoints:
web:
exposure:
include: '*'
3.3 在Nacos中配置規則
json:
[ { "resource":"/rateLimit/byUrl", "limitApp":"default", "grade":1, "count":1, "strategy":0, "controlBehavior":0, "clusterMode":false } ]
引數說明:
resource:資源名稱;
limitApp:來源應用;
grade:閾值型別,0表示執行緒數,1表示QPS;
count:單機閾值;
strategy:流控模式,0表示直接,1表示關聯,2表示鏈路;
controlBehavior:流控效果,0表示快速失敗,1表示Warm Up,2表示排隊等待;
clusterMode:是否叢集;
java中controller方法
//======Nacos datasource Sentinel======
@GetMapping("/rateLimit/byUrl")
public String byUrl(){
return "------/rateLimit/byUrl";
}
請求一次在Sentinel中可以檢視流控規則
快速請求是觸發流控限制
停掉8401服務後,Sentinel中流控規則消失
重啟8401後,再次請求後流控規則出現,實現了流控規則持久化,不用每次都配置!!