Sentinel 基于Nacos规则持久化-推模式
文章目錄
- 一、推模式架構圖
- 二、原理簡述
- 2.1. 組件版本關系
- 2.2. 控制臺推送規則
- 三、Sentinel控制臺改造
- 3.1. 下載源碼
- 3.2. 修改pom
- 3.3. 重要文件復制
- 3.4. 注冊地址修改
- 3.5. 請求實例需改
- 3.6. 菜單新增
- 四、編譯 & 啟動
- 4.1. 先啟動nacos
- 4.2. 編譯打包
- 4.3. 創建微服務 && 啟動
- 4.4. 刷新sentinel
- 4.5. 登錄nacos
- 4.6. sentinel 規則刪除
- 4.7. nacos規則查看
- 4.8. (企業案例)規則擴展
一、推模式架構圖
圖片引用自 https://github.com/alibaba/Sentinel/wiki/在生產環境中使用-Sentinel
二、原理簡述
2.1. 組件版本關系
| 2.2.6.RELEASE | 1.8.1 | 1.4.2 | 4.4.0 | 2.7.8 | 1.3.0 |
| 2021.1 or 2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE | 1.8.0 | 1.4.1 | 4.4.0 | 2.7.8 | 1.3.0 |
| Spring Cloud Hoxton.SR9 | 2.2.6.RELEASE | 2.3.2.RELEASE | 1.4.2 | 1.8.202 |
2.2. 控制臺推送規則
將規則推送到Nacos或其他遠程配置中心
Sentinel客戶端鏈接Nacos,獲取規則配置;并監聽Nacos配置變化,如發生變化,就更新本地緩存(從而讓本地緩存總是和Nacos一致)
控制臺監聽Nacos配置變化,如發生變化就更新本地緩存(從而讓控制臺本地緩存總是和Nacos一致)
三、Sentinel控制臺改造
控制臺改造主要是為規則實現
DynamicRuleProvider:從Nacos上讀取配置
DynamicRulePublisher:將規則推送到Nacos上
3.1. 下載源碼
這里使用1.8版本演示
https://github.com/alibaba/Sentinel/tags
3.2. 修改pom
將
改為
<!-- for Nacos rule publisher sample --><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency>3.3. 重要文件復制
由于sentinel持久化默認不支持持久化,但是官方關于sentinel提供了nacos、zookeeper、apollo這3種方式,但是需要自己集成。
找到 sentinel-dashboard/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos目錄,將整個目錄拷貝到 sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos,如圖:
3.4. 注冊地址修改
3.5. 請求實例需改
修改sentinel頁面端保存規則請求的url控制層
修改后的配置
3.6. 菜單新增
修改 sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html,找到:
修改后
齊活兒啦!終于把流控規則改造成推模式持久化啦!
四、編譯 & 啟動
4.1. 先啟動nacos
https://nacos.io/zh-cn/docs/quick-start.html
這里一windows環境演示
里面的配置先忽略
4.2. 編譯打包
執行 mvn clean package -DskipTests
在項目的 target 目錄找到sentinel-dashboard.jar ,執行 java -jar sentinel-dashboard.jar 啟動控制臺。
登錄
4.3. 創建微服務 && 啟動
創建微服務模塊
添加依賴
配置文件
server:port: 9000 spring:cloud:nacos:discovery:service: product-servserver-addr: localhost:8848sentinel:transport:dashboard: localhost:8080filter:enabled: false management:endpoints:web:exposure:include: '*'創建測試方法
package com.gblfy.controller;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController;@RestController public class ProductController {//http://localhost:9000/product/" + productId@GetMapping("/product/{productId}")public String getProductName(@PathVariable Integer productId) {return "IPhone 12";} }啟動應用
請求url
http://localhost:9000/product/1
4.4. 刷新sentinel
4.5. 登錄nacos
4.6. sentinel 規則刪除
4.7. nacos規則查看
規則也隨之刪除了
4.8. (企業案例)規則擴展
以上只是將流控規則擴展好了,其他需要其他模塊,還需要根據官網文檔自行擴展
附上:
(企業案例)使用Nacos持久化規則,改造sentinel-dashboard
總結
以上是生活随笔為你收集整理的Sentinel 基于Nacos规则持久化-推模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用dubbo后尽量不用要@Refere
- 下一篇: vscode中 解决格式化后将单引号变双