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

相关文章

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Java中StopWatch的使用示例详解

《Java中StopWatch的使用示例详解》stopWatch是org.springframework.util包下的一个工具类,使用它可直观的输出代码执行耗时,以及执行时间百分比,这篇文章主要介绍... 目录stopWatch 是org.springframework.util 包下的一个工具类,使用它

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip