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

相关文章

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息