Sentinel控制台配置 持久化到nacos

news2024/11/28 18:41:30

 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;

    @Bean
    public Converter<List<FlowRuleEntity>, String> flowRuleEntityEncoder() {
        return JSON::toJSONString;
    }

    @Bean
    public Converter<String, List<FlowRuleEntity>> flowRuleEntityDecoder() {
        return s -> JSON.parseArray(s, FlowRuleEntity.class);
    }

    @Bean
    public 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: false
      datasource:
        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-rules
            data-type: json
            rule-type: flow

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

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

大功告成,去试试效果吧

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React TypeScript 定义组件的各种方式

目录 举例说明1. 使用 class 定义2. 使用函数定义2.1 使用普通函数2.2 使用函数组件 举例说明 比如我们要定义一个计数器 Counter&#xff0c;它包含一个 label 和一个 button&#xff0c;计数器的初始值由外部传入&#xff0c;点击 button 计数加 1: 这虽然是个简单组件&…

第25章_瑞萨MCU零基础入门系列教程之看门狗定时器-WDT

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

iOS17正式版9月18日正式发布!怎么更新即将发布的iOS17正式版?

苹果在今天举办的“好奇心上头”发布会结束后&#xff0c;推送了iOS 17和iPadOS 17发布候选版本&#xff08;Release Candidate Version&#xff09;&#xff0c;同时宣布将于9月18日面向iPhone和iPad 用户&#xff0c;推送iOS17/iPadOS 17正式版更新。苹果表示iOS 17的设计理念…

C# Onnx Yolov8 Detect 物体检测

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System…

自动化办公更简单了:新版python-office,有哪些更新?

#职场经验谈# 大家好&#xff0c;这里是程序员晚枫&#xff0c;小破站/小红薯都叫这个名。 去年4月开源了一个Python自动化办公项目&#xff1a;python-office&#xff0c;GitHub和Gitee都能看到。1行代码实现复杂的自动化办公任务&#xff0c;帮助不懂代码的小白&#xff0c;…

处理SQLSyntaxErrorException异常:数据库表 ‘books‘ 不存在;

目录 背景介绍 我的问题中的解决方法 通用方法 背景介绍 今天遇见了这个问题&#xff0c;解决后发出来分享一下 Java应用程序中的SQLSyntaxErrorException&#xff1a;表 bookmanagement.books 不存在问题解决 解决MySQL错误&#xff1a;无法找到表 bookmanagement.books…

Java native 关键字

如你在看 JDK 的源代码的时候&#xff0c;大概率会看到很多方法使用了 native 关键字。 下面是 String 对象 JDK 中的源代码&#xff0c;就带有了一个 native 关键字。 native 是干什么用的 简单来说就是 Java 的 native 方法的实现不是用 Java 实现的&#xff0c;可能在其他…

2023最新AI创作商用ChatGPT源码分享+支持AI绘画

一、SparkAI智能创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文…

OPENCV--实现meanshift图像分割

Meanshift原理 效果图 API # -*- coding:utf-8 -*- """ 作者:794919561 日期:2023/9/13 """ import cv2 import numpy as npimg = cv2.imread("F:\\learnOpenCV\\openCVLearning\\pictures\\Lena.jpg

计算机视觉的应用14-目标检测经典算法之YOLOv1-YOLOv5的模型架构与改进过程详解,便于记忆

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用14-目标检测经典算法之YOLOv1-YOLOv5的模型架构与改进过程详解&#xff0c;便于记忆。YOLO&#xff08;You Only Look Once&#xff09;是一种目标检测深度学习模型。想象一下&#xff0c;传统的目…

做机器视觉工程师,其实挺没意思的

3.康耐视VisionPro高级脚本系列教程-3.脚本编辑错误和运行错误调试方法&#xff0c;break和Contitinuee的差别_哔哩哔哩_bilibili 其实人生就是“有时有意思&#xff0c;有时没意思”。 心里有太多的不甘心&#xff0c;太多的苦水&#xff0c;是没法再吃学习的苦&#xff0c…

Linux系统编程多线程(C++)

目录 【1】引入如何看待地址空间和列表 【2】什么是线程 【3】线程的优点 【4】线程的缺点 【5】线程异常 【6】线程用途 【7】线程VS进程 【8】Linux线程控制 【8.1】查看轻量级线程指令 【8.2】线程创建 【8.2.1】POSIX线程库 【8.2.2】创建线程 【8.2.3】一次性…

1054. 距离相等的条形码;823. 带因子的二叉树;1878. 矩阵中最大的三个菱形和

1054. 距离相等的条形码 核心思想&#xff1a;隔一个数填一个&#xff0c;优先填写出现次数多的数。注意点就是条形码的长度为奇数和偶数&#xff0c;但是我们遵循先优先填偶数就不会出错即可。 823. 带因子的二叉树 核心思想&#xff1a;递归。定义dfs(val)表示以值val作为根…

[UE虚幻引擎插件介绍] DTSQLite 插件说明 :蓝图操作SQLite3文件,执行SQL语句。

本插件可以在UE里面使用蓝图操作SQLite3文件&#xff0c;并且执行SQL语句&#xff0c;CREATE&#xff0c;SELECT&#xff0c;DELETE&#xff0c;INSERT&#xff0c;UPDATE。 直接操作数据库&#xff0c;并返回相应结果集&#xff0c;并可以把结果集转换为TArray<TMap<FSt…

Microsoft Excel 101 简介

什么是 Microsoft Excel&#xff1f; Microsoft Excel 是一个电子表格程序&#xff0c;用于记录和分析数值数据。 将电子表格想像成构成表格的列和行的集合。 字母通常分配给列&#xff0c;数字通常分配给行。 列和行相交的点称为像元。 单元格的地址由代表列的字母和代表行的…

华为云征文|华为云云耀云服务器L实例使用教学(一)

目录 国内免费云服务器&#xff08;体验&#xff09; 认识国内免费云服务器 如何开通国内免费云服务器 云耀云服务器 HECS HECS适用于哪些场景&#xff1f; 网站搭建 电商建设 开发测试环境 云端学习环境 为什么选择华为云耀云服务器 HECS 国内免费云服务器&#xff…

LeetCode 40. Combination Sum II【回溯,剪枝】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

Loopback for Mac:专业级的音频处理能力

Loopback for Mac是一款功能强大的虚拟音频设备&#xff0c;它能够将应用程序的音频输出路由到其他应用程序的输入&#xff0c;从而实现音频数据的传输和交互。以下是Loopback for Mac的一些主要功能和特色介绍&#xff1a; 创建虚拟音频设备&#xff1a;Loopback可以创建虚拟…

基于Python开发的Excel数据分析系统(源码+可执行程序+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python开发的Excel数据分析系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0…

源码编译risc-v虚拟机和编译器 riscv-gnu-toolchain 和 riscv-tools 在ubuntu 22.04

1. 编译 riscv-gnu-toolchain 1.1 预备环境 $ sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev 1.2 下载源代码 http…