springCloud-Alibaba——改造sentinel控制台数据规则推送持久化到nacos

本文主要是介绍springCloud-Alibaba——改造sentinel控制台数据规则推送持久化到nacos,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

A、核心思路:

B、自己修改—注释流控规则内存页:

C、自己修改—注释流控规则回到单机页面按钮:

D、自己修改—簇点链路中流控存到nacos:

E、自己修改—增加可配置nacos地址:

F、微服务接入控制台增加配置信息:

G、启动测试:

F、个人修改后安装包下载地址:


本文采用的是生产环境使用的Push模式将sentinel规则持久化到nacos:

官方说明:

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel

网上大佬修改步骤:https://www.imooc.com/article/289464

网上大佬修改后源码地址(使用1.6.2版本):https://github.com/eacdy/Sentinel-Dashboard-Nacos/tree/1.6.2-NACOS

本人修改也是在网上大佬修改后的1.6.2源码基础上进行稍微修改,如果以后需要对高版本的官网源码修改时,可参照网上大佬修改后的1.6.2源码版本以及大佬修改步骤进行修改。

A、核心思路:

从Sentinel 1.4.0开始,Sentinel 控制台提供DynamicRulePublisher 和DynamicRuleProvider接口用于实现应用维度的规则推送和拉取,并提供了相关的示例。Sentinel 提供应用维度规则推送的示例页面(/v2/flow),用户改造控制台对接配置中心后可直接通过 v2 页面推送规则至配置中心。

因此对于流控规则、降级规则、系统规则、授权规则、热点规则等5种数据规则,后台修改都是一个思路。创建对应的实体类,实现DynamicRulePublisher 和DynamicRuleProvider接口,并指定接口传递对应的5种数据规则的实体的集合,分别重写对应的push、getRules方法,方法核心就是将数据推送到nacos中或从nacos中获取数据。

在sentinel控制台源码中向nacos推送数据需要注意:sentinel控制台读取的数据规则格式与sentinel在微服务中的客户端获取的数据规则格式不同,因此在nacos中一种数据规则存储2个dataId的配置文件,一个是让sentinel控制台读取的,一个是让sentinel微服务中客户端读取的。两个配置文件中配置的数据规则是一致的。

通过这样就可以实现在sentinel控制台修改数据规则,数据规则马上推送到nacos中进行保存,并且nacos是持久化到mysql中的,因此sentinel控制台配置的数据规则也就持久化到nacos对应的mysql数据库中了,sentinel微服务中的客户端会根据配置文件中配置的nacos中的数据文件进行获取并监听配置是否发生变化,如果发生变化就会自动获取最新数据规则。即便是重新启动sentinel控制台和微服务,以前配置的数据规则也正常运行,因为已经持久化到nacos中的mysql数据库了。

B、自己修改—注释流控规则内存页:

自己的修改,都是在网上大佬修改的1.6.2版本源码基础上进行修改的。

将下图内容注释掉,下图自己修改后的是:

C、自己修改—注释流控规则回到单机页面按钮:

将下图内容注释掉,下图自己修改后的是:

D、自己修改—簇点链路中流控存到nacos:

由于簇点链路中流控默认的是将数据保存在内存中的,因此修改按钮调用的请求地址,将地址转到自己修改好的保存在nacos中即可。将1修改为2即可,图片中是修改后的:

E、自己修改—增加可配置nacos地址:

配置文件增加nacos地址参数:

后台代码读取配置文件nacos地址参数:

F、微服务接入控制台增加配置信息:

在上方描述了微服务接入控制台步骤,配置好以后,增加配置微服务中的sentinel客户端从nacos中读取对应的5种数据规则。

配置信息demo:

注意:下面配置的信息,只有server-addr中的地址修改成自己nacos-config的地址即可,其余信息都不需要动,尤其是groupId、dataId的格式(应用名-flow-rules、应用名-degrade-rules、应用名-system-rules、应用名-authority-rules、应用名-param-flow-rules)、rule-type不能修改,这个是与sentinel控制台源码中推送数据到nacos约定好的。

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: flow# 名称随意,降级数据规则配置degrade:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-degrade-rulesgroupId: SENTINEL_GROUPrule-type: degrade# 名称随意,系统数据规则配置system:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-system-rulesgroupId: SENTINEL_GROUPrule-type: system# 名称随意,授权数据规则配置authority:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-authority-rulesgroupId: SENTINEL_GROUPrule-type: authority# 名称随意,热点数据规则配置param-flow:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-param-flow-rulesgroupId: SENTINEL_GROUPrule-type: param-flow

G、启动测试:

启动nacos、sentinel控制台,各个微服务业务项目。先在浏览器中访问微服务接口,然后在sentinel控制台可以看到对应微服务服务名下各种数据规则和监控,在sentinel中配置数据规则,然后登录到nacos控制台在配置列表就可以看到对应的微服务服务名开头的两个配置文件,一个是sentinel控制台读取用的,一个是微服务中的sentinel客户端读取用的。并且配置的数据规则立马就会对浏览器中访问的对应接口产生效果。

经过此次修改,数据规则推送和使用改造完毕。

F、个人修改后安装包下载地址:

个人经过完善修改后的sentinel运行包下载地址如下:

sentinel-1.6.2数据规则持久化nacos的控制台运行包:

https://download.csdn.net/download/LSY_CSDN_/12253762

sentinel-1.6.2控制台增加监控数据持久化mysql和规则数据持久化nacos部署jar包:

https://download.csdn.net/download/LSY_CSDN_/12254178

sentinel-1.6.2控制台增加监控数据持久化mysql和规则数据持久化nacos部署war包:

https://download.csdn.net/download/LSY_CSDN_/12254182

这篇关于springCloud-Alibaba——改造sentinel控制台数据规则推送持久化到nacos的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/358167

相关文章

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (