Sentinel控制台配置 持久化到nacos

 sentinel控制台,使用方便,功能强大。使用官方的jar包,配置不会持久化,sentinel重启后会导致,之前的规则全部丢失,下面一起改造源码实现规则数据的持久化

sentinel源码地址

(github访问太慢,直接上镜像版)

Sentinel: Sentinel 是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要icon-default.png?t=N7T8https://gitee.com/mirrors/Sentinel.git

因为项目使用的是Spring-cloud-alibaba,Sentinel支持和nacos整合,就持久化到nacos数据库中,同时sentinel还能读取nacos中做的流控规则。

1 源码目录

1.1、后台源码修改

小惊喜:sentinel中有和nacos中对接的源码,只不过没有使用。

1、改成 默认后台使用sentinel对接nacos,而不是存到内存,

2、前台页面接口调用nacos对应的接口

1.1.1 sentinel-dashboard中需要改动的位置

pom.xml中将sentinel-datasource-nacos包的scope注释掉

1.1.2 源码持久化到nacos的实现位置

不多说,先复制到main目录rule包下

nacos包中的4个类:

  • FlowRuleNacosProvider: 动态获取Nacos配置中心流控规则,读取流控规则
  • FlowRuleNacosPublisher: publish上传流控规则到Nacos配置中心,写入流控规则
  • NacosConfig: Nacos配置
  • NacosConfigUtils: 流控规则在nacos中配置文件的一些细节:后缀、组别等

1.1.3 NacosConfig配置

只实现了本地nacos并且需要默认配置,需要支持自定义配置

改造后

NacosConfig源码

/** Copyright 1999-2018 Alibaba Group Holding Ltd.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**      http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/
package com.alibaba.csp.sentinel.dashboard.rule.nacos;import com.alibaba.csp.sentinel.dashboard.datasource.entity.rule.FlowRuleEntity;
import com.alibaba.csp.sentinel.datasource.Converter;
import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.api.PropertyKeyConst;
import com.alibaba.nacos.api.config.ConfigFactory;
import com.alibaba.nacos.api.config.ConfigService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.List;
import java.util.Properties;/*** @author Eric Zhao* @since 1.4.0*/
@Configuration
public class NacosConfig {@Value("${sentinel.nacos.address}")private String nacosAddr;@Value("${sentinel.nacos.username}")private String nacosUsername;@Value("${sentinel.nacos.password}")private String nacosPassword;@Beanpublic Converter<List<FlowRuleEntity>, String> flowRuleEntityEncoder() {return JSON::toJSONString;}@Beanpublic Converter<String, List<FlowRuleEntity>> flowRuleEntityDecoder() {return s -> JSON.parseArray(s, FlowRuleEntity.class);}@Beanpublic ConfigService nacosConfigService() throws Exception {Properties properties = new Properties();properties.put(PropertyKeyConst.SERVER_ADDR, nacosAddr);properties.put(PropertyKeyConst.USERNAME, nacosUsername);properties.put(PropertyKeyConst.PASSWORD, nacosPassword);return ConfigFactory.createConfigService(properties);}
}

1.1.4 修改配置文件 application.properties

增加nacos配置信息

#Sentinel  连接nacos配置
sentinel.nacos.address= 192.168.1.109:8848
sentinel.nacos.username= nacos
sentinel.nacos.password= nacos

 1.1.5 配置v2版本controller,调用nacos提供的服务层

1.2 前端页面源码修改

1.2.1 配置中添加nacos接口并修改地址

文件 src/main/webapp/resources/app/scripts/controllers/identity.js

搜FlowServiceV1 改为 FlowServiceV2

/dashboard/flow/ 改为 /dashboard/v2/flow/

 1.2.2 修改页面中的路由地址

文件 src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html

dashboard.flowV1定位57行去掉V1

文件 src/main/webapp/resources/app/views/flow_v2.html

注释掉回到单机页面按钮

2.项目引用

2.1 微服务引入jar包 pom.xml

        <!-- SpringCloud Alibaba Nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- Sentinel --><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency>

2.2 微服务sentinel相关配置

# Spring
spring:cloud:sentinel:eager: true# sentinel 地址transport:dashboard: ${sentinel.host}:${sentinel.port}filter:enabled: falsedatasource:ds1:nacos:server-addr: ${nacos.host}:${nacos.port}username: ${nacos.name}password: ${nacos.pwd}namespace: ${nacos.namespace}group-id: ${nacos.group}data-id: ${spring.application.name}-flow-rulesdata-type: jsonrule-type: flow

3 nacos增加sentinel持久化配置文件

以下文件后缀与组名需要对应

大功告成,去试试效果吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/131439.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式学习笔记(25)串口通信的基本原理

三根通信线&#xff1a;Tx Rx GND &#xff08;1&#xff09;任何通信都要有信息作为传输载体&#xff0c;或者有线的或则无线的。 &#xff08;2&#xff09;串口通信时有线通信&#xff0c;是通过串口线来通信的。 &#xff08;3&#xff09;串口通信最少需要2根&#xff…

MCU芯片测试:性能指标测试痛点是什么?ATECLOUD能否解决?

MCU芯片测试指标的核心是性能指标&#xff0c;包括处理器性能、存储器容量和读写速度&#xff0c;外设性能等。芯片测试对自动化测试的要求很高&#xff0c;ATECLOUD-IC不仅解决了传统测试方法的问题&#xff0c;而且也可以满足芯片测试的高要求&#xff0c;高效地完成MCU芯片性…

ChartJS使用-环境搭建(vue)

1、介绍 Chartjs简约不简单的JavaScript的图表库。官网https://chart.nodejs.cn/ Chart.js 带有内置的 TypeScript 类型&#xff0c;并与所有流行的 JavaScript 框架 兼容&#xff0c;包括 React 、Vue 、Svelte 和 Angular 。 你可以直接使用 Chart.js 或利用维护良好的封装程…

SpringBoot课堂笔记20230913

本篇文章为SpringBoot学习笔记&#xff0c;方便自己再复习。 Maven&#xff1a;jar包管理工具 注解&#xff1a; Controller:处理http请求&#xff0c;返回的视图 RestController: 相当于ResponseBody和Controller一起用&#xff0c;返回的是json ResponseBody:返回响应内容 …

自动化监控系统PrometheusGrafana

Prometheus 算是一个全能型选手&#xff0c;原生支持容器监控&#xff0c;当然监控传统应用也不是吃干饭的&#xff0c;所以就是容器和非容器他都支持&#xff0c;所有的监控系统都具备这个流程&#xff0c;数据采集→数据处理→数据存储→数据展示→告警 Prometheus 特点展开…

摩洛哥6.9级地震 网络出现轻度中断

北京时间2023年9月9日6时11分(当地时间8日23时11分)&#xff0c;摩洛哥发生6.9级强震。埃文科技的监测数据显示&#xff0c;受地震影响&#xff0c;摩洛哥地区的网络也出现了轻度中断。 9月9日6时10分后&#xff0c;摩洛哥地区活跃前缀数量开始减少&#xff0c;在6时50分左右达…

利用 Python 中的地理空间数据与 GeoPandas

推荐&#xff1a;使用 NSDT编辑器快速搭建3D应用场景 空间数据的真正潜力在于它能够连接数据点及其各自的位置&#xff0c;为高级分析创造无限的可能性。地理空间数据科学是数据科学中的一个新兴领域&#xff0c;旨在利用地理空间信息并通过空间算法和机器学习或深度学习等先进…

算法通关村第十九关:白银挑战-动态规划高频问题

白银挑战-动态规划高频问题 1. 最少硬币数 LeetCode 322 https://leetcode.cn/problems/coin-change/description/ 思路分析 尝试用回溯来实现 假如coins[2,5,7]&#xff0c;amount27&#xff0c;求解过程中&#xff0c;每个位置都可以从[2,5,7]中选择&#xff0c;因此可以…

error:Failed building wheel for XXX

解决方案适用于大多数的pip 安装时出现的Failed building wheel for XXX 出现问题 按以往快速安装包的经验&#xff0c;第一反应当然是使用简单又快捷的terminal命令加上镜像&#xff0c;如下&#xff1a; pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple结…

关闭训练过程中的wandb

训练的过程中反复提醒wandb的账户&#xff0c;自动化执行的话&#xff0c;不是很方便&#xff0c;因此需要关闭这个wandb的功能 提醒的方式是这样的&#xff1a; 解决办法1、注释掉wandb相关的代码&#xff0c;并且添加关闭命令&#xff1a;wandb None 参考&#xff1a; 训…

儿童折叠式和非折叠式椅子和凳子加拿大认证标准要求介绍 ASTM F2613-21

儿童折叠式和非折叠式椅子和凳子是带有刚性框架的座椅家具&#xff0c;用于支撑儿童的身体&#xff0c;使其可以直立或倾斜的姿势坐立或休息。 此次合规要求更新适用于儿童折叠式和非折叠式椅子和凳子。这类产品可以折叠起来&#xff0c;以便运输或储存。儿童椅是带有刚性框架的…

05JVM_类加载阶段

一、类加载阶段 1.加载 1.1介绍 ①Java源代码经编译生成字节码文件&#xff0c;通过类加载阶段将字节码载入方法区。 ②类加载阶段内部是C的instanceKlass描述java类&#xff0c;重要的域field有: _java_mirror&#xff0c;java类镜像。例如对String来说&#xff0c;就是St…

OpenCV(四十):图像分割—漫水填充

1.漫水填充原理 图像分割中的漫水填充&#xff08;Flood Fill&#xff09;算法是一种基于区域增长的像素分类方法。其原理是在图像中从种子点开始&#xff0c;逐渐向周围扩展&#xff0c;并根据一定的条件决定是否将相邻的像素归属于同一区域。 漫水填充的基本原理如下&#x…

通过数据模板自动生成表格table

1.数据模板中的主要几个参数需要注意下(需要加样式可自由设置参数)&#xff1a; title:填入表格的内容 col:1,占一列&#xff0c;row: 3&#xff0c;占3行 align:center居中对齐, pdL&#xff1a;14&#xff0c;padding-left:14, bold:true,加粗 width&#xff1a;100&#xff…

第十五届全国大学生数学竞赛报名快要截止了,你报上名了吗?

关于组织参加 第十五届全国大学生数学竞赛的通知 01 为了培养人才、服务教学、提高大学生学习数学的兴趣&#xff0c;培养学生分析问题、解决问题的能力&#xff0c;发现和选拔数学创新人才&#xff0c;为学生提供一个展示基础知识和思维能力的舞台&#xff0c;我校决定组织参…

02目标检测-传统检测方法

目录 一、目标学习的检测方法变迁及对比 二、 基于传统手工特征的检测算法的定义 三、传统主要手工特征与算法 Haar特征与 人脸检测算法 - Viola-Jones(了解) HOG特征与 SVM 算法(了解)&#xff08;行人检测、opencv实现&#xff09; SIFT特征与SIFT算法(了解) DPM&#…

[Java] String详解

愿一分耕耘,一份收获 文章目录 前言1. String基础概念2. String对象的比较2.1 与equals()的应用 3. 字符串的转化3.1 数字与字符串的转化3.2 大小写转换3.3 字符串与字符数组转换4. 字符串修改1.引入库2.读入数据 总结 前言 String这部分是面试中常常考到的题.string常量池,Sr…

java复习-线程的同步和死锁

线程的同步和死锁 同步问题引出 当多个线程访问同一资源时&#xff0c;会出现不同步问题。比如当票贩子A&#xff08;线程A&#xff09;已经通过了“判断”&#xff0c;但由于网络延迟&#xff0c;暂未修改票数的间隔时间内&#xff0c;票贩子B&#xff08;线程B&#xff09;…

带你打穿三层内网-红日靶场七

文章目录 前记环境配置web1信息搜集cve-2021-3129redis未授权|ssh密钥后渗透 Win7&#xff08;PC1&#xff09;永恒之蓝 web2docker逃逸 win7&#xff08;PC2&#xff09;|DC 前记 所用工具 msfcsvenomfrp蚁剑冰蝎laravel.pyfscan 注意事项 msf的永恒之蓝每次都需要两次才能…

Java 代理模式之静态代理与动态代理

1&#xff0c;代理模式 代理模式给某一个对象提供一个代理对象&#xff0c;并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。 代理模式的目的&#xff1a; &#xff08;1&#xff09;通过引入代理对象的方式来间接访问目标对象&#xff0c;防…