日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Alibaba Sentinel规则持久化-推模式-手把手教程【基于Nacos】

發布時間:2024/9/27 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Alibaba Sentinel规则持久化-推模式-手把手教程【基于Nacos】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面,已經為Sentinel實現了 基于拉模式的規則持久化 ,本文來實現基于 推模式的規則持久化。

文章目錄

          • 一、推模式架構圖
          • 二、原理簡述
          • 三、微服務改造
            • 3.1. 加依賴
            • 3.2. 添加配置
          • 四、Sentinel控制臺改造
          • 五、編譯 & 啟動
          • 六、測試
            • 測試1:
            • 測試2:
            • 測試3:
          • 七、萬里長征才進行了第一步…
          • 八、懶人包
          • 九、推模式優缺點分析
          • 十、參考文檔
          • 十一、案例測試
            • 11.1. 下載
            • 11.2. 啟動
            • 11.3. 清空瀏覽器緩存
            • 11.4. 訪問口控制臺
            • 11.5. 接口請求
            • 11.6. 登陸nacos
            • 11.7. 添加降級規則
            • 11.8. nacos查看降級規則
            • 11.9. 內容中心和 Sentinel控制臺服務關閉
            • 11.10. 重新啟動服務
            • 11.11. 登陸Sentinel控制臺查看降級規則

一、推模式架構圖

圖片引用自 https://github.com/alibaba/Sentinel/wiki/在生產環境中使用-Sentinel

二、原理簡述

控制臺推送規則:
將規則推送到Nacos或其他遠程配置中心
Sentinel客戶端鏈接Nacos,獲取規則配置;并監聽Nacos配置變化,如發生變化,就更新本地緩存(從而讓本地緩存總是和Nacos一致)
控制臺監聽Nacos配置變化,如發生變化就更新本地緩存(從而讓控制臺本地緩存總是和Nacos一致)

三、微服務改造
3.1. 加依賴
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId> </dependency>
3.2. 添加配置
spring:cloud:sentinel:datasource:# 名稱隨意flow:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-flow-rulesgroupId: SENTINEL_GROUP# 規則類型,取值見:# org.springframework.cloud.alibaba.sentinel.datasource.RuleTyperule-type: flowdegrade:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-degrade-rulesgroupId: SENTINEL_GROUPrule-type: degradesystem:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-system-rulesgroupId: SENTINEL_GROUPrule-type: systemauthority:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-authority-rulesgroupId: SENTINEL_GROUPrule-type: authorityparam-flow:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-param-flow-rulesgroupId: SENTINEL_GROUPrule-type: param-flow
四、Sentinel控制臺改造

控制臺改造主要是為規則實現
DynamicRuleProvider:從Nacos上讀取配置
DynamicRulePublisher:將規則推送到Nacos上
修改pom.xml,找到:

<!-- for Nacos rule publisher sample --><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId><scope>test</scope></dependency>

將 test 這一行注釋掉,即改為如下:

<!-- for Nacos rule publisher sample --> <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId><!--<scope>test</scope>--> </dependency>

找到 sentinel-dashboard/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos目錄,將整個目錄拷貝到 sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos,如圖:

修改 com.alibaba.csp.sentinel.dashboard.controller.v2.FlowControllerV2 ,找到

@Autowired @Qualifier("flowRuleDefaultProvider") private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider; @Autowired @Qualifier("flowRuleDefaultPublisher") private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;

修改為:

@Autowired @Qualifier("flowRuleNacosProvider") private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider; @Autowired @Qualifier("flowRuleNacosPublisher") private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;

修改 sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html,找到:

<!--<li ui-sref-active="active">--><!--<a ui-sref="dashboard.flow({app: entry.app})">--><!--<i class="glyphicon glyphicon-filter"></i>&nbsp;&nbsp;流控規則 V1</a>--> <!--</li>-->

把注釋解開,即改為:

<li ui-sref-active="active"><a ui-sref="dashboard.flow({app: entry.app})"><i class="glyphicon glyphicon-filter"></i>&nbsp;&nbsp;流控規則 V1</a> </li>

齊活兒啦!終于把流控規則改造成推模式持久化啦!

五、編譯 & 啟動

執行 mvn clean package -DskipTests
在項目的 target 目錄找到sentinel-dashboard.jar ,執行 java -jar sentinel-dashboard.jar 啟動控制臺。

六、測試
測試1:

用Sentinel控制臺【菜單欄的 流控規則 V1 】推送流控規則,規則會存儲到Nacos;

測試2:

直接在Nacos上修改流控規則,然后刷新Sentinel控制臺,控制臺上的顯示也會被修改;

測試3:

重啟Sentinel控制臺,并重啟微服務;刷新控制臺,可以發現規則依然存在。

七、萬里長征才進行了第一步…

以上,其實只實現了流控規則的持久化。Sentinel有若干種規則,例如降級規則、系統規則、授權規則、熱點規則等,都需要使用類似的方式,修改 com.alibaba.csp.sentinel.dashboard.controller 包中對應的Controller,才能實現持久化。

八、懶人包

已經基于Sentinel Dashboard 1.6.2做了修改,為如下規則提供了持久化:

  • 流控規則
  • 降級規則
  • 系統規則
  • 授權規則
  • 參數熱點規則
    GitHub地址:https://github.com/eacdy/Sentinel-Dashboard-Nacos ,
    使用1.6.2-NACOS分支即可。

使用說明:https://github.com/eacdy/Sentinel-Dashboard-Nacos/releases

修改的文件:

九、推模式優缺點分析

優點
規則持久化
一致性好
性能優秀
改動多、并且麻煩
引入額外的依賴(Nacos)

十、參考文檔
https://github.com/alibaba/Sentinel/wiki/在生產環境中使用-Sentinel
十一、案例測試

如果需要二次開發,請切換到使用1.6.2-NACOS分支下載源碼開發即可

11.1. 下載

GitHub地址:https://github.com/eacdy/Sentinel-Dashboard-Nacos/releases

11.2. 啟動
java -jar sentinel-dashboard-1.6.2-NACOS.jar
11.3. 清空瀏覽器緩存

11.4. 訪問口控制臺

http://localhost:8080/

11.5. 接口請求

Sentine控制臺采用懶加載,因此,需要請求一下服務接口,后期可以修改懶加載策略關閉

11.6. 登陸nacos

http://localhost:8848/nacos

11.7. 添加降級規則


11.8. nacos查看降級規則

刷新nacos,查看降級規則


11.9. 內容中心和 Sentinel控制臺服務關閉

11.10. 重新啟動服務

重新啟動 Sentinel控制臺和內容中心

11.11. 登陸Sentinel控制臺查看降級規則



從上圖可以看出,測試通過!

總結

以上是生活随笔為你收集整理的Alibaba Sentinel规则持久化-推模式-手把手教程【基于Nacos】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。