当前位置: 首页 > news >正文

Spring Cloud Alibaba全家桶(八)——Sentinel规则持久化

前言

在这里插入图片描述

本文小新为大家带来 Sentinel规则持久化 相关知识,具体内容包括,Sentinel规则推送三种模式介绍,包括:原始模式拉模式推模式,并对基于Nacos配置中心控制台实现推送进行详尽介绍~

不积跬步,无以至千里;不积小流,无以成江海。每天进步一点点,在成为强者的路上,小新与大家共同成长!

📌博主主页:小新要变强 的主页
👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~
👉Java微服务开源项目可参考:企业级Java微服务开源项目(开源框架,用于学习、毕设、公司项目、私活等,减少开发工作,让您只关注业务!)

↩️本文上接:Spring Cloud Alibaba全家桶(七)——Sentinel控制台规则配置


目录

Sentinel规则持久化

  • 前言
  • 目录
  • 一、原始模式
  • 二、拉模式
  • 三、推模式
  • 后记

在这里插入图片描述

Sentinel规则的推送有下面三种模式:

推送模式说明优点缺点
原始模式API 将规则推送至客户端并直接更新到内存中,扩展写数据源(WritableDataSource)简单,无任何依赖不保证一致性;规则保存在内存中,重启即消失。严重不建议用于生产环境
Pull 模式扩展写数据源(WritableDataSource), 客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS、文件 等简单,无任何依赖;规则持久化不保证一致性;实时性不保证,拉取过于频繁也可能会有性能问题。
Push 模式扩展读数据源(ReadableDataSource),规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos,Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。生产环境下一般采用 push 模式的数据源。规则持久化;一致性;快速引入第三方依赖

一、原始模式

如果不做任何修改,Dashboard 的推送规则方式是通过 API 将规则推送至客户端并直接更
新到内存中:

在这里插入图片描述

这种做法的好处是简单,无依赖;坏处是应用重启规则就会消失,仅用于简单测试,不能
用于生产环境。

二、拉模式

pull 模式的数据源(如本地文件、RDBMS 等)一般是可写入的。使用时需要在客户端注册数据源:将对应的读数据源注册至对应的 RuleManager,将写数据源注册至 transport 的
WritableDataSourceRegistry 中。

三、推模式

生产环境下一般更常用的是 push 模式的数据源。对于 push 模式的数据源,如远程配置中心
(ZooKeeper, Nacos, Apollo等等),推送的操作不应由 Sentinel 客户端进行,而应该经控
制台统一进行管理,直接进行推送,数据源仅负责获取配置中心推送的配置并更新到本
地。

因此推送规则正确做法应该是:
配置中心控制台/Sentinel 控制台配置中心Sentinel 数据源Sentinel

而不是经 Sentinel 数据源推送至配置中心。这样的流程就非常清晰了。

基于Nacos配置中心控制台实现推送:

官方demo: sentinel­demo­nacos­datasource

🍀(1)引入依赖

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel‐datasource‐nacos</artifactId>
</dependency>

🍀(2)nacos配置中心中配置流控规则

[{"resource": "TestResource","controlBehavior": 0,"count": 10.0,"grade": 1,"limitApp": "default","strategy": 0}
]

在这里插入图片描述
🍀(3)application.yml中进行配置

spring:application:name: mall‐user‐sentinel‐democloud:nacos:discovery:server‐addr: 127.0.0.1:8848sentinel:transport:# 添加sentinel的控制台地址dashboard: 127.0.0.1:8080# 指定应用与Sentinel控制台交互的端口,应用本地会起一个该端口占用的HttpServerport: 8719datasource:ds1:nacos:server‐addr: 127.0.0.1:8848dataId: ${spring.application.name}groupId: DEFAULT_GROUPdata‐type: jsonrule‐type: flow

🍀(4)nacos配置中心中添加

[{"resource": "userinfo","limitApp": "default","grade": 1,"count": 1,"strategy": 0,"controlBehavior": 0,"clusterMode": false}
]

在这里插入图片描述
引入依赖:

<!‐‐sentinel持久化 采用 Nacos 作为规则配置数据源‐‐>
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel‐datasource‐nacos</artifactId>
</dependency>

增加application.yml配置:

server:port: 8806spring:application:name: mall‐user‐sentinel‐rule‐push‐demo #微服务名称#配置nacos注册中心地址cloud:nacos:discovery:server‐addr: 127.0.0.1:8848sentinel:transport:# 添加sentinel的控制台地址dashboard: 127.0.0.1:8080# 指定应用与Sentinel控制台交互的端口,应用本地会起一个该端口占用的HttpServer#port: 8719datasource:# ds1: #名称自定义,唯一# nacos:# server‐addr: 127.0.0.1:8848# dataId: ${spring.application.name}# groupId: DEFAULT_GROUP# data‐type: json# rule‐type: flowflow‐rules:nacos:server‐addr: 127.0.0.1:8848dataId: ${spring.application.name}‐flow‐rulesgroupId: SENTINEL_GROUP # 注意groupId对应Sentinel Dashboard中的定义data‐type: jsonrule‐type: flowdegrade‐rules:nacos:server‐addr: 127.0.0.1:8848dataId: ${spring.application.name}‐degrade‐rulesgroupId: SENTINEL_GROUPdata‐type: jsonrule‐type: degradeparam‐flow‐rules:nacos:server‐addr: 127.0.0.1:8848dataId: ${spring.application.name}‐param‐flow‐rulesgroupId: SENTINEL_GROUPdata‐type: jsonrule‐type: param‐flowauthority‐rules:nacos:server‐addr: 127.0.0.1:8848dataId: ${spring.application.name}‐authority‐rulesgroupId: SENTINEL_GROUPdata‐type: jsonrule‐type: authoritysystem‐rules:nacos:server‐addr: 127.0.0.1:8848dataId: ${spring.application.name}‐system‐rulesgroupId: SENTINEL_GROUPdata‐type: jsonrule‐type: system

以流控规则测试,当在sentinel dashboard配置了流控规则,会在nacos配置中心生成对应
的配置。

在这里插入图片描述


后记

在这里插入图片描述

👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~

相关文章:

Spring Cloud Alibaba全家桶(八)——Sentinel规则持久化

前言 本文小新为大家带来 Sentinel规则持久化 相关知识&#xff0c;具体内容包括&#xff0c;Sentinel规则推送三种模式介绍&#xff0c;包括&#xff1a;原始模式&#xff0c;拉模式&#xff0c;推模式&#xff0c;并对基于Nacos配置中心控制台实现推送进行详尽介绍~ 不积跬步…...

Mysql不锁表备份之Xtrabackup的备份与恢复

一、Xtrabackup介绍 MySQL冷备、热备、mysqldump都无法实现对数据库进行增量备份。如果数据量较大我们每天进行完整备份不仅耗时且影响性能。而Percona-Xtrabackup就是为了实现增量备份用于MySQL数据库物理热备的备份工具&#xff0c;xtrabakackup有2个工具&#xff0c;分别是x…...

flex布局:输入框布局demo

目标效果 首先&#xff0c;生成输入框&#xff1a; 代码&#xff1a; 结果&#xff1a; 设置基本样式 包括&#xff1a;去除边距、设置父盒子的宽度(如果不设置宽度&#xff0c;会使用整个浏览器的宽度&#xff09;、添加父盒子边框等 代码&#xff1a; *{margin: 0;pad…...

PHP请求的好处,PHP如何请求淘宝开放接口

PHP的好处有很多&#xff0c;最主要的特性就是PHP的安全性和兼容性明显。 1、良好的安全性 PHP是开源软件&#xff0c;所有PHP的源代码每个人都可以看得到&#xff0c;同时它与Apache编绎在一起的方式也可以让它具有灵活的安全设定&#xff0c; PHP具有了公认的安全性能。开源…...

精选出来的几道Java语法基础面试题

1.成员变量与局部变量的区别有那些? 从语法形式上&#xff0c;看成员变量是属于类的&#xff0c;而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public,private,static等修饰符所修饰&#xff0c;而局部变量不能被访问控制修饰符及static所修饰;成员变量和局部…...

uniapp或者小程序图片选择中的sizeType属性到底是什么

sizeType属性到底是什么 https://developers.weixin.qq.com/community/develop/doc/0006c261a300089771f9a233a56c00 https://ask.dcloud.net.cn/question/146679 第一个链接来自微信小程序社区&#xff0c;有开发者提了个问题&#xff1a;sizeType: ["original", &q…...

判断一个字符串是否是回文

目录 判断一个字符串是否是回文 程序设计 程序分析 判断一个字符串是否是回文 【问题描述】编写一个程序,判断一个字符串是否为"回文"(顺读和倒读都一样的字符串称为"回文")。 【输入形式】长度小于100的任意字符串 【输出形式】如果输入字符串是回…...

国产软件爆发!中国版Navicat,SQL Studio成数据库管理工具热门

如果关注2023年的A股市场&#xff0c;会发现各行各业都掀起了“国产化替代”运动的热潮。不仅仅是芯片&#xff0c;新能源、医疗器械甚至软件等领域&#xff0c;也都加快了国产化进程。 长期以来&#xff0c;中国的软件业比较依赖国际巨头。比如操作系统以微软为主&#xff0c…...

算法学习day51

算法学习day511.力扣309.最佳买卖股票时机含冷冻期1.1 题目描述1.2分析1.3 代码2.力扣714.买卖股票的最佳时机含手续费2.1 题目描述2.2 分析2.3 代码3.参考资料1.力扣309.最佳买卖股票时机含冷冻期 1.1 题目描述 题目描述 给定一个整数数组&#xff0c;其中第i个元素代表了第…...

10 JS01——初识JS

目标&#xff1a; 1、初识JavaScript 2、JavaScript注释 3、JavaScript输入输出语句 一、初识JavaScript 1、JavaScript是什么 JavaScript是世界上最流行的语言之一&#xff0c;是一种运行在客户端的脚本语言(Script是脚本的意思) 脚本语言:不需要编译&#xff0c;运行过程…...

【软考备考-综合知识】安全性、可靠性与系统性能评测基础知识

计算机的安全性 安全等级 计算机系统中的三类安全性是指技术安全性、管理安全性和政策法律安全性。 信息安全五要素 机密性&#xff1a;全包信息不暴露给未授权的实体或进程。 完整性&#xff1a;只有得到允许的人才能够修改数据&#xff0c;并能够判别出数据是否已被篡改。…...

匆忙之间难免疏忽,写代码更加如此

一个方法包含了多个知识点的合计&#xff0c;合计起来用。实战开发特点1&#xff1b; 基础知识点不牢固&#xff0c;您必定就会感觉寸步难行啊 public class AddJiChuShu{int a 1;int b 2;int c 0;int d 0;string str "";string str2 "张三";//mothe…...

低代码(七)低代码平台后端技术选型2.0

JWT 登录token Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准&#xff08;(RFC 7519).该token被设计为紧凑且安全的&#xff0c;特别适用于分布式站点的单点登录&#xff08;SSO&#xff09;场景。JWT的声明一般被用来在身份提供者和服…...

UDS介绍

首先要有网络网络七层的概念&#xff1a; 学习链接&#xff1a; 七层网络模型-CSDN博客 UDS网络层/TP层&#xff08;ISO 15765-2&#xff09;的解读 - 知乎 (zhihu.com) 概念&#xff1a; UDS&#xff08;Unified Diagnostic Services&#xff0c;统一的诊断服务。 标准名是《…...

ASP.NET Core MVC 从入门到精通之初窥门径

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…...

英码科技智慧环卫:构建宜居城市新篇章

随着城市化进程的加快&#xff0c;城市环境卫生问题日益凸显。如何提高城市环境卫生管理水平&#xff0c;提升城市品质&#xff0c;成为了各级政府和社会各界关注的焦点。智慧环卫作为一种结合现代信息技术的环境卫生管理方式&#xff0c;正在逐渐成为解决城市环境卫生问题的有…...

在Spring Boot微服务使用HashOperations操作Redis Hash哈希散列

记录&#xff1a;403 场景&#xff1a;在Spring Boot微服务使用RedisTemplate的HashOperations操作Redis Hash哈希散列。 版本&#xff1a;JDK 1.8,Spring Boot 2.6.3,redis-6.2.5 1.微服务中Redis配置信息 1.1在application.yml中Redis配置信息 spring:redis:host: 192.1…...

innobackupex备份mysql产生returned OS error 124

解决使用innobackupex备份mysql产生returned OS error 124 xtrabackup 报错Too many open files 故障处理 一、背景 客户反馈数据库备份失败。 二、环境描述 [rootmes-node1 ~]# mysql -V mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper [root…...

明明有index.jsp文件访问的时候却显示404

重建一下项目...

人工智能前沿——「全域全知全能」人类新宇宙ChatGPT

&#x1f680;&#x1f680;&#x1f680;OpenAI聊天机器人ChatGPT——「全域全知全能」人类全宇宙大爆炸&#xff01;&#xff01;&#x1f525;&#x1f525;&#x1f525; 一、什么是ChatGPT?&#x1f340;&#x1f340; ChatGPT是生成型预训练变换模型&#xff08;Chat G…...

从零构建高性能技术博客:SSG选型、自动化部署与SEO优化实战

1. 项目概述&#xff1a;一个技术博客的诞生与演进“wangtunan/blog”&#xff0c;这看起来只是一个简单的GitHub仓库名&#xff0c;背后却是一个技术人持续输出、构建个人知识体系的完整实践。它不仅仅是一个存放Markdown文件的代码库&#xff0c;更是一个集成了现代前端技术栈…...

Solidworks PDM二次开发实战:文件夹权限与数据卡配置详解

1. Solidworks PDM二次开发入门指南 如果你正在使用Solidworks PDM管理产品数据&#xff0c;可能会遇到需要批量创建文件夹并设置权限的场景。比如新项目启动时&#xff0c;需要为不同部门创建标准化的文件夹结构&#xff0c;同时设置工程师只读、管理员完全控制的权限规则。手…...

基于AI智能体的渗透测试框架:从自动化到智能协同的范式转变

1. 项目概述&#xff1a;一个面向渗透测试的智能体框架最近在整理自己的工具链时&#xff0c;发现了一个挺有意思的项目&#xff0c;叫GH05TCREW/pentestagent。乍一看这个名字&#xff0c;你可能会觉得这又是一个“缝合怪”式的自动化渗透工具&#xff0c;把Nmap、SQLmap之类的…...

3分钟高效恢复Windows 11 LTSC微软商店:完整解决方案指南

3分钟高效恢复Windows 11 LTSC微软商店&#xff1a;完整解决方案指南 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你是否在使用Windows 11 24H2 LT…...

【HarmonyOS 6.1 全场景实战】《灵犀厨房》之【营养分析引擎】计算个性化卡路里建议:给《灵犀厨房》装上“营养大脑”

【营养分析引擎】计算个性化卡路里建议&#xff1a;给《灵犀厨房》装上“营养大脑” 摘要&#xff1a;从“爱吃什么”到“该吃什么”&#xff0c;是《灵犀厨房》进化的关键一步。上一篇我们刚打通了 Health Kit 数据&#xff0c;今天&#xff0c;我们就要基于 Mifflin-St Jeor …...

NCM格式转换实战指南:ncmdumpGUI全面解析

NCM格式转换实战指南&#xff1a;ncmdumpGUI全面解析 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾为网易云音乐下载的NCM格式音乐无法在其他设备播…...

从GitHub克隆到点亮LED:手把手教你用Ubuntu编译调试别人的STM32工程

从GitHub克隆到点亮LED&#xff1a;手把手教你用Ubuntu编译调试别人的STM32工程 在开源硬件社区&#xff0c;GitHub上每天都有大量优秀的STM32项目被分享——从智能家居控制器到四轴飞行器飞控系统。但当开发者满怀期待地git clone后&#xff0c;却常常在第一步"编译通过&…...

DS3502 I2C数字电位器:从原理到Arduino/Python实战应用

1. 项目概述&#xff1a;告别手动旋钮&#xff0c;拥抱数字控制如果你和我一样&#xff0c;厌倦了在面包板上反复拧动电位器旋钮来调试电路&#xff0c;或者正在寻找一种能够通过程序精确控制电阻值的方法&#xff0c;那么DS3502这类I2C数字电位器绝对是你的“梦中情芯”。它本…...

基于CircuitPython与加速度计的魔法9号球:嵌入式交互项目实践

1. 项目概述&#xff1a;当硬件遇上玄学&#xff0c;用代码打造你的专属“决策神器”在嵌入式开发的世界里&#xff0c;我们常常与传感器、显示屏和逻辑代码打交道&#xff0c;构建着一个个解决实际问题的智能设备。但谁说硬件项目就一定要严肃刻板&#xff1f;今天&#xff0c…...

【Midjourney图像生成黑科技】:树胶重铬酸盐工艺原理、复刻难点与AI艺术胶片质感还原全流程指南

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;树胶重铬酸盐工艺的历史溯源与数字时代复兴意义 树胶重铬酸盐工艺&#xff08;Gum Bichromate Process&#xff09;诞生于19世纪中叶&#xff0c;是人类最早实现光敏图像复制的化学摄影术之一。其核心原…...