1. 程式人生 > 其它 >【奈米經典案例】行動式示波器多通道資料採集系統

【奈米經典案例】行動式示波器多通道資料採集系統

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後,再次請求後流控規則出現,實現了流控規則持久化,不用每次都配置!!