Sentinel 規則持久化

文章目錄

  • Sentinel 規則持久化
    • 一、修改order-service服務
      • 1.引入依賴
      • 2.配置nacos地址
    • 第二步修改非常麻煩,可以略過,直接使用已經打好包的來使用
    • 二、修改sentinel-dashboard源碼
      • 1. 解壓
      • 2. 修改nacos依賴
      • 3. 添加nacos支持
      • 4. 修改nacos地址
      • 5. 配置nacos數據源
      • 6. 修改前端頁面
      • 7. 重新編譯、打包項目
      • 8.啟動
      • 9. 瀏覽器端測試
      • 10. 修改好后的sentinel規則可持久化文件

Sentinel 規則持久化

需要大量修改源碼,很麻煩,下面也只是修改了一小部分
阿里有一個收費的sentinel云服務,開源sentinel沒有實現最佳版本可能就是為了給收費版讓路吧

一、修改order-service服務

修改OrderService,讓其監聽Nacos中的sentinel規則配置。

具體步驟如下:

1.引入依賴

在order-service中引入sentinel監聽nacos的依賴:

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

2.配置nacos地址

在order-service中的application.yml文件配置nacos地址及監聽的配置信息:

spring:cloud:sentinel:datasource:flow:nacos:server-addr: localhost:8848 # nacos地址dataId: orderservice-flow-rulesgroupId: SENTINEL_GROUPrule-type: flow # 還可以是:degrade、authority、param-flow

直接從datasource開始復制,粘貼過去

在這里插入圖片描述


第二步修改非常麻煩,可以略過,直接使用已經打好包的來使用

鏈接:https://pan.baidu.com/s/1mffAD62BZt3IDp59NxO7OQ
提取碼:hzan


二、修改sentinel-dashboard源碼

SentinelDashboard默認不支持nacos的持久化,需要修改源碼。

1. 解壓

解壓課前資料中的sentinel源碼包:

在這里插入圖片描述

然后并用IDEA打開這個項目,結構如下:

在這里插入圖片描述

2. 修改nacos依賴

在sentinel-dashboard源碼的pom文件中,nacos的依賴默認的scope是test,只能在測試時使用,這里要去除:

在這里插入圖片描述

在這里插入圖片描述

將sentinel-datasource-nacos依賴的scope去掉:

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

3. 添加nacos支持

在sentinel-dashboard的test包下,已經編寫了對nacos的支持,我們需要將其拷貝到main下。

在這里插入圖片描述

4. 修改nacos地址

然后,還需要修改測試代碼中的NacosConfig類:
復制后的
在這里插入圖片描述

修改其中的nacos地址,讓其讀取application.properties中的配置:

在這里插入圖片描述

/*** @author Eric Zhao* @since 1.4.0*/
@Configuration
@ConfigurationProperties(prefix = "nacos")
public class NacosConfig {// nacos地址private String addr;@Beanpublic ConfigService nacosConfigService() throws Exception {return ConfigFactory.createConfigService(addr);}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}@Beanpublic Converter<List<FlowRuleEntity>, String> flowRuleEntityEncoder() {return JSON::toJSONString;}@Beanpublic Converter<String, List<FlowRuleEntity>> flowRuleEntityDecoder() {return s -> JSON.parseArray(s, FlowRuleEntity.class);}}

在sentinel-dashboard的application.properties中添加nacos地址配置:

nacos.addr=localhost:8848

5. 配置nacos數據源

另外,還需要修改com.alibaba.csp.sentinel.dashboard.controller.v2包下的FlowControllerV2類:

在這里插入圖片描述

讓我們添加的Nacos數據源生效:

在這里插入圖片描述

6. 修改前端頁面

接下來,還要修改前端頁面,添加一個支持nacos的菜單。

修改src/main/webapp/resources/app/scripts/directives/sidebar/目錄下的sidebar.html文件:

在這里插入圖片描述

將其中的這部分注釋打開:

在這里插入圖片描述

修改其中的文本:

在這里插入圖片描述

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

7. 重新編譯、打包項目

運行IDEA中的maven插件,編譯和打包修改好的Sentinel-Dashboard:

在這里插入圖片描述

報錯就先clean,再package

在這里插入圖片描述

打包好的文件如下,可以直接使用,就不要自己動手改了,確實很麻煩

鏈接:https://pan.baidu.com/s/1YpHITSBC3dUSAj8zQF_niQ
提取碼:hzan

復制到一個目錄下,并重命名,以示區分

在這里插入圖片描述

8.啟動

啟動方式跟官方一樣:

java -jar sentinel-dashboard.jar

如果要修改nacos地址,需要添加參數:(可以動態指定nacos的地址,外部依賴的地址,當然要動態指定啦)

java -jar -Dnacos.addr=localhost:8848 sentinel-dashboard.jar

9. 瀏覽器端測試

先正常登錄nacos,然后訪問一個資源,觸發一個簇點鏈路

然后可能地址沒換,之前的官方nacos前端有緩存,需要清空一下,清空指定網頁緩存操作如下圖
在這里插入圖片描述

然后就會出現我們修改的基于nacos持久化的流控規則
在這里插入圖片描述

那么目前在流控規則-nacos菜單下新建的規則可以持久化
其他菜單還是不行,得一個個修改,所以修改量會非常大,這也只是修改了一小部分

新增試試
在這里插入圖片描述

到nacos下面看:多出了一個配置項: orderservice-flow-rules
在這里插入圖片描述

訪問:http://localhost:10010/order/101?authorization=admin

確實被限流了
在這里插入圖片描述

重啟OrderApplication微服務,以前會丟失,現在不會丟失了
(其他菜單下新建規則,然后重啟OrderApplication微服務,查看確實丟失了)

10. 修改好后的sentinel規則可持久化文件

打包好的文件如下,可以直接使用,就不要自己動手改了,確實很麻煩

鏈接:https://pan.baidu.com/s/1YpHITSBC3dUSAj8zQF_niQ
提取碼:hzan

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/43594.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/43594.shtml
英文地址,請注明出處:http://en.pswp.cn/news/43594.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HCIP第五節------------------------------------------ospf

一、OSPF基礎 1、動態路由分類 2、距離矢量協議 運行距離矢量路由協議的路由器周期性地泛洪自己的路由表。通過路由的交互&#xff0c;每臺路由器都從相鄰的路由器學習到路由&#xff0c;并且加載進自己的路由表中&#xff0c;然后再通告給其他相鄰路由器。 對于網絡中的所有…

Django框架使用定時器-APScheduler實現定時任務:django實現簡單的定時任務

一、系統環境依賴 系統&#xff1a;windows10 python: python3.9.0 djnago3.2.0 APScheduler3.10.1 二、django項目配置 1、創建utils包&#xff0c;在包里面創建schedulers包 utils/schedulers/task.py #1、設置 Django 環境&#xff0c;就可以導入項目的模型類這些了 …

AR/VR眼鏡轉接器方案,實現同時傳輸視頻快充方案

簡介 虛擬現實頭戴顯示器設備&#xff0c;簡稱VR頭顯VR眼鏡&#xff0c;是利用仿真技術與計算機圖形學人機接口技術多媒體技術傳感技術網絡技術等多種技術集合的產品&#xff0c;是借助計算機及最新傳感器技術創造的一種嶄新的人機交互手段。VR頭顯VR眼鏡是一個跨時代的產品。不…

AgentBench——AI智能體基準測試和排行榜

如果您有興趣了解有關如何對AI大型語言模型或LLM進行基準測試的更多信息,那么一種新的基準測試工具Agent Bench已成為游戲規則的改變者。這個創新工具經過精心設計,將大型語言模型列為代理,對其性能進行全面評估。該工具的首次亮相已經在AI社區掀起了波瀾,揭示了ChatGPT-4目…

Selenium 測試用例編寫

編寫Selenium測試用例就是模擬用戶在瀏覽器上的一系列操作&#xff0c;通過腳本來完成自動化測試。 編寫測試用例的優勢&#xff1a; 開源&#xff0c;免費。 支持多種瀏覽器 IE&#xff0c;Firefox&#xff0c;Chrome&#xff0c;Safari。 支持多平臺 Windows&#xff0c;Li…

day-23 代碼隨想錄算法訓練營(19)part09

669.修剪二叉搜索樹 思路一&#xff1a;根據二叉搜索樹的特性進行中間值與去區間值判斷&#xff0c;有三種情況&#xff1a;1.在區間中&#xff0c;所以左右子樹都可能在區間中&#xff1b; 2.在區間外面的左側&#xff0c;必然只有右子樹可能存在區間中&#xff1b;3.在區間外…

Spring中JavaBean的生命周期及模式

( 本篇文章大部分講述了是底層知識&#xff0c;理念及原理 ) ( 如果只想了解&#xff0c;看我標記的重點即可&#xff0c;如果想明白其中原理&#xff0c;請耐心看完&#xff0c;對你大有受益 ) 目錄 一、簡介 ( 1 ) 是什么 ( 2 ) 背景概述 ( 3 ) 作用 二、生命周期 2.1 …

【計算機視覺|生成對抗】StackGAN:使用堆疊生成對抗網絡進行文本到照片逼真圖像合成

本系列博文為深度學習/計算機視覺論文筆記&#xff0c;轉載請注明出處 標題&#xff1a;StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks 鏈接&#xff1a;[1612.03242] StackGAN: Text to Photo-realistic Image Synthesis…

ViewFs And Federation On HDFS

序言 ViewFs 是在Federation的基礎上提出的,用于通過一個HDFS路徑來訪問多個NameSpace,同時與ViewFs搭配的技術是client-side mount table(這個就是具體的規則配置信息可以放置在core.xml中,也可以放置在mountTable.xml中). 總的來說ViewFs的其實就是一個中間層,用于去連接不…

Vue3 setup語法糖 解決富文本編輯器上傳圖片64位碼過長問題 quill-image-extend-module

引言&#xff1a; 富文本編輯器傳圖片會解碼成64位&#xff0c;非常長導致數據庫會報錯第一種方法&#xff1a;將數據庫類型改成 mediumtext第二種辦法&#xff1a;本文中的方法 說明&#xff0c;本周文所用語法糖為Vue3 setup語法&#xff0c;即<script setup> 思路 攔…

HIVE SQL通過Lateral View + explode實現列轉行

原表&#xff1a; abAndy<碟中諜>,<諜影重重>,<007>MOMO<小鞋子>,<朋友啊你的家在哪里> 實現效果 abAndy<碟中諜>Andy<諜影重重>Andy<007>MOMO<小鞋子>MOMO<朋友啊你的家在哪里> 實現代碼&#xff1a; selec…

STM32 F103C8T6學習筆記8:0.96寸單色OLED顯示屏顯示字符

使用STM32F103 C8T6 驅動0.96寸單色OLED顯示屏: OLED顯示屏的驅動&#xff0c;在設計開發中OLED顯示屏十分常見&#xff0c;因此今日學習一下。一篇文章從程序到顯示都講通。 文章提供源碼、原理解釋、測試工程下載&#xff0c;測試效果圖展示。 目錄 OLED驅動原理—IIC通信…

無涯教程-Perl - undef函數

描述 此函數未定義EXPR的值。用于標量,列表,哈希,函數或類型范圍。在帶有諸如undef $hash {$key}之類的語句的哈希上使用&#xff1b;實際上將指定鍵的值設置為未定義的值。 如果要從哈希中刪除元素,請使用delete函數。 語法 以下是此函數的簡單語法- undef EXPRundef返回…

Java進階篇--迭代器模式

目錄 同步迭代器&#xff08;Synchronous Iterator&#xff09;&#xff1a; Iterator 接口 常用方法&#xff1a; 注意&#xff1a; 擴展小知識: 異步迭代器&#xff08;Asynchronous Iterator&#xff09;&#xff1a; 常用的方法 注意&#xff1a; 總結&#xff1a…

LeetCode 每日一題 2023/8/14-2023/8/20

記錄了初步解題思路 以及本地實現代碼&#xff1b;并不一定為最優 也希望大家能一起探討 一起進步 目錄 8/14 617. 合并二叉樹8/15 833. 字符串中的查找與替換8/16 2682. 找出轉圈游戲輸家8/17 1444. 切披薩的方案數8/18 1388. 3n 塊披薩8/19 2235. 兩整數相加8/20 8/14 617. 合…

【學習FreeRTOS】第9章——FreeRTOS任務調度

1.開啟任務調度器 vTaskStartScheduler() 作用&#xff1a;用于啟動任務調度器&#xff0c;任務調度器啟動后&#xff0c; FreeRTOS 便會開始進行任務調度【動態創建任務為例】 創建空閑任務如果使能軟件定時器&#xff0c;則創建定時器任務關閉中斷&#xff0c;防止調度器開…

Microsoft ISA服務器配置及日志分析

Microsoft ISA 分析器工具&#xff0c;可分析 Microsoft ISA 服務器&#xff08;或 Forefront 威脅管理網關服務器&#xff09;的日志并生成安全和流量報告。支持來自 Microsoft ISA 服務器組件的以下日志&#xff1a; 數據包過濾器ISA 服務器防火墻服務ISA 服務器網絡代理服務…

透過源碼理解Flutter中widget、state和element的關系

1、framework源碼組成 Flutter中widget、state、element的源碼位于framework.dart中&#xff0c;整個文件6693行(版本Flutter 3.12.0-14.0.pre.28)。整個代碼可劃分為若干部分&#xff0c;主要包括key、widget、state、element四部分。 1.1 key 關于key的代碼65行到272行&am…

NVIDIA GPU驅動和CUDA工具包 Linux CentOS 7 在線安裝指南

挑選指定系統和對應的GPU型號下載驅動和CUDA工具包: Linux CentOS安裝NVIDIA GPU驅動程序和NVIDIA CUDA工具包_centos安裝顯卡驅動和cuda_Entropy-Go的博客-CSDN博客 相比之下&#xff0c;本文是在線安裝NVIDIA GPU驅動和CUDA工具包方式&#xff0c;省去挑選對應正確安裝包的煩…

Uniapp Syntax Error: Error: Unbalanced delimiter found in string

報錯 in ./src/pages/user/components/tasks.vue?vue&typescript&langjs&Syntax Error: Error: Unbalanced delimiter found in string...這邊導致文件的原因&#xff1a;可能是條件編譯語法不小心刪了某個字符&#xff0c;導致不全&#xff0c;無法形成一對。 //…