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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定