網(wǎng)站建設(shè)圖片怎么做阿里云建站費(fèi)用
10. SpringCloud Alibaba Sentinel 規(guī)則持久化部署詳細(xì)剖析
文章目錄
- 10. SpringCloud Alibaba Sentinel 規(guī)則持久化部署詳細(xì)剖析
- 1. 規(guī)則持久化
- 1.1 Nacos Server 配置中心-規(guī)則持久化實例
- 2. 最后:
1. 規(guī)則持久化
規(guī)則沒有持久化的問題
如果 sentinel 流控規(guī)則沒有持久化,當(dāng)重啟調(diào)用 API/接口 所在微服務(wù)后,規(guī)則就會丟失,需要 重新加入。
解決方案:通過 Nacos 進(jìn)行持久化
規(guī)則持久化方案:
- 阿里云 Ahas[最方便/付費(fèi)]:https://help.aliyun.com/zh/ahas/
- 在 Nacos Server 配置規(guī)則, 完成持久化 -官方推薦:將規(guī)則持久化到本地文件, 定時同步
1.1 Nacos Server 配置中心-規(guī)則持久化實例
需求:
-
member-service-nacos-consumer-80 微 服務(wù)的 /member/openfeign/consumer/get/1 API 接口添加流控規(guī)則 QPS=1/快速失敗 .
-
要求將該流控規(guī)則加入到 nacos server 配置中心,實現(xiàn)持久化
代碼+配置實現(xiàn)步驟:
- 在 Nacos Server 配置中心增加 Sentinel 客戶端/微服務(wù)模塊的流控規(guī)則。
[{"resource": "/member/openfeign/consumer/get/1","limitApp": "default","grade": 1,"count": 1,"strategy": 0,"controlBehavior": 0,"clusterMode": false}
]
在 Nacos Server 配置中心增加 Sentinel 客戶端/微服務(wù)模塊 的流控規(guī)則參數(shù)說明resource∶資源名稱;limlitApp∶ 來源應(yīng)用;grade∶閾值類型,0表示線程數(shù),1表示QPS;count∶單機(jī)閾值;strategy∶流控模式,0表示直接,1表示關(guān)聯(lián),2表示鏈路;controlBehavior∶流控效果,0表示快速失敗,1表示W(wǎng)arm Up,2表示排隊等待;clusterMode∶是否集群
修改 member-service-nacos-consumer-80 的 pom.xml, 加入 sentinel 和 nacos 持久化整合依賴
<!-- 引入 sentinel 和 nacos 持久化整合依賴,使用版本仲裁--><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency>
修改 member-service-nacos-consumer-80 的 application.yml , 配置該微服務(wù)從 Nacos Server 獲取流控規(guī)則
在application.yaml 當(dāng)中配置 rule-typle 規(guī)則:
datasource:ds1:# 流控規(guī)則配置是從 nacos server 配置中心獲取nacos:server-addr: localhost:8848 # 指定 nacos server 配置中心地址dataId: member-service-nacos-consumer # nacos server 配置中心當(dāng)中對應(yīng)的ID保持一致,一定要保持一致才行groupId: DEFAULT_GROUP # 指定組[nacos server配置中心]data-type: json # 指定配置流控規(guī)則的數(shù)據(jù)類型rule-type: flow # 規(guī)則類型:流控規(guī)則 表示可以看文檔rule-type: flow # 規(guī)則類型:流控規(guī)則 表示可以看文檔 有:flow流量控制,degrade熔斷降級規(guī)則,system系統(tǒng)保護(hù)規(guī)則,authority 訪問控制規(guī)則
spring:application:name: member-service-nacos-consumer-80#配置 nacos 注冊中心cloud:nacos:discovery:server-addr: localhost:8848 # 配置 nacos server的地址sentinel:transport:dashboard: localhost:9090 # 指定 sentinel 控制臺地址(dash board)port: 8719 # 設(shè)置端口默認(rèn)是 8719 如果該端口被占用,就自動從8791+1進(jìn)行掃描,直到找到一個沒有占用的端口.datasource:ds1:# 流控規(guī)則配置是從 nacos server 配置中心獲取nacos:server-addr: localhost:8848 # 指定 nacos server 配置中心地址dataId: member-service-nacos-consumer # nacos server 配置中心當(dāng)中對應(yīng)的ID保持一致,一定要保持一致才行groupId: DEFAULT_GROUP # 指定組[nacos server配置中心]data-type: json # 指定配置流控規(guī)則的數(shù)據(jù)類型rule-type: flow # 規(guī)則類型:流控規(guī)則 表示可以看文檔
測試
瀏覽器: ht啟動 Nacos Server 8848
啟動 Sentinel8080 控制臺/Sentinel dashboard
啟動 member-service-nacos-provider-10004/10006啟動 member-service-nacos-consumer-80tp://localhost/member/openfeign/consumer/get/1
- 瀏覽器輸入: http://localhost/member/openfeign/consumer/get/1 , 目前是 Openfeign 調(diào)用(負(fù)載均衡), 而且流控規(guī)則已經(jīng)生效了.
- 注意看 sentinel, 這個流控規(guī)則已經(jīng)生成了
- 查看 Sentinel 控制臺 發(fā)現(xiàn)已經(jīng)同步了流控規(guī)則
注意事項和細(xì)節(jié):
- 在 nacos server 配置 sentinel 流控規(guī)則的 Data ID 也可以自己指定,比如寫成 hsp-id, 只要在 sentinel client/微服務(wù) 的 applicaion.yml 的 datasource.ds1.nacos.dataId 的值保持一致即可。
2. 最后:
“在這個最后的篇章中,我要表達(dá)我對每一位讀者的感激之情。你們的關(guān)注和回復(fù)是我創(chuàng)作的動力源泉,我從你們身上吸取了無盡的靈感與勇氣。我會將你們的鼓勵留在心底,繼續(xù)在其他的領(lǐng)域奮斗。感謝你們,我們總會在某個時刻再次相遇。”