Sentinel dashboard的使用;Nacos保存Sentinel限流规则
Sentinel dashboard的使用
往期文章
- Nacos环境搭建
- Nacos注册中心的使用
- Nacos配置中心的使用
- Sentinel 容灾中心的使用
参考文档
Sentinel · alibaba/spring-cloud-alibaba Wiki · GitHub
限流结果

下载sentinel-dashboard
github地址:Sentinel/sentinel-dashboard at master · alibaba/Sentinel · GitHub
启动脚本
创建sentinel-dashboard的启动脚本,并添加如下信息:
java -jar -Dserver.port=8350 -Dcsp.sentinel.dashboard.server=localhost:8350 -Dproject.name=sentinel-dashboard --add-exports=java.base/sun.net.util=ALL-UNNAMED sentinel-dashboard-1.8.4.jar
目录:

Jar(客户端)
<!-- 一定要放在前面 -->
<!--Sentinel -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- sentinel-dashboard -->
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artifactId>
</dependency>
<!--Spring Cloud Alibaba Nacos Discovery-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--Spring Cloud Alibaba Nacos Config-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--LoadBalancer-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
yml
注意:sentinel-dashboard默认会在8720端口接收注册服务的数据,所以dashboard使用的端口和接收数据的端口不要一样。
消费者
server:port: 8581
spring:application:name: nacos-consumercloud:nacos:config:group: DEFAULT_GROUPserver-addr: localhost:8848sentinel:transport:port: 8720dashboard: localhost:8350eager: trueconfig:import:# 父类配置要放在前面,相同的项会被后面的配置覆盖- optional:nacos:nacos-discovery.yaml
management:endpoints:web:exposure:include: '*'
nacos-discovery.yml
spring:cloud:nacos:discovery:server-addr: localhost:8848username: devilvanpassword: 741258963hjklfailure-tolerance-enabled: true
Sentinel Dashboard的使用
1. 关闭服务端硬编码的限流规则
服务端的代码参考:Sentinel 容灾中心的使用

2. 在dashboard中设置限流规则(不推荐)
不推荐的原因,客户端、服务端重启后规则不会保存


3. 限流效果:

Nacos配置并保存Sentinel限流规则
步骤
- 引入sentinel和sentinel dashboard相关依赖
- 服务端给对应controller添加
@SentinelResource注解,并定义一个限流/熔断处理类负责处理该resource的限流/熔断逻辑(注:方法必须有static修饰)。 - Nacos配置中心保存sentinel resource的配置信息,即限流规则
Jar(服务端)
<!-- 一定要放在前面 -->
<!--Sentinel -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- SpringCloud Alibaba CircuitBreaker Sentinel-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-circuitbreaker-sentinel</artifactId>
</dependency>
<!-- sentinel-dashboard -->
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artifactId>
</dependency>
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId><version>${sentinel-version}</version>
</dependency>
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-spring-webmvc-adapter</artifactId><version>${sentinel-version}</version>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<!--Spring Cloud Alibaba Nacos Discovery-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--Spring Cloud Alibaba Nacos Config-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
yml(服务端)
server:port: 8481
spring:application:name: nacos-providercloud:nacos:config:group: DEFAULT_GROUPserver-addr: localhost:8848discovery:server-addr: localhost:8848username: devilvanpassword: 741258963hjklsentinel:transport:port: 8720dashboard: localhost:8350eager: truedatasource:echo:nacos:server-add: ${spring.cloud.nacos.config.server-addr}groupId: ${spring.cloud.nacos.config.group}dataId: ${spring.application.name}-rulesrule-type: flowdata-type: jsonconfig:import:# 父类配置要放在前面,相同的项会被后面的配置覆盖- optional:nacos:nacos-discovery.yaml
management:endpoints:web:exposure:include: '*'
Nacos配置并保存Sentinel限流规则
1. Nacos配置中心添加配置文件
注:建议单独起resource的名字,不要将路由信息当做resource

[{"resource": "echo","limitApp": "default","grade": 1,"count": 1,"strategy": 0,"controlBehavior": 0,"clusterMode": false},{"resource": "echo2","limitApp": "default","grade": 1,"count": 1,"strategy": 0,"controlBehavior": 0,"clusterMode": false}
]
2. 服务端后台代码
注意:echo2()方法是通过代码层面的try catch来进行限流/熔断的,在nacos配置中定义的echo2的resource不能在该处添加@SentinelResource注解
/*** @Description Nacos生产者 控制层*/
@RestController
@RequestMapping(value = "nacosProviderController")
public class NacosProviderController {@Resource(name = "nacosProviderServiceImpl")private NacosProviderService nacosProviderService;@GetMapping(value = "/echo/{str}")@SentinelResource(value = "echo", fallback = "echoFallback", fallbackClass = EchoFallback.class,blockHandler = "echoBlockHandler", blockHandlerClass = EchoFallback.class)public ResultMessage<String> echo(@PathVariable String str) {return nacosProviderService.echo(str);}@GetMapping(value = "/echo2/{str}")public ResultMessage<String> echo2(@PathVariable String str) {return nacosProviderService.echo2(str);}
}
3. 限流/熔断处理类
注意:该类中的限流/熔断方法必须static修饰
/*** @Description echo方法 异常回调类*/
public class EchoFallback {/*** 遇到异常走的逻辑** @param str 原方法的参数* @param e 异常信息* @return 异常回调方法返回值,和原方法返回值一致*/public static ResultMessage<String> echoFallback(String str, Throwable e) {ResultMessage<String> resultMessage = new ResultMessage<>();String message = "熔断-echo方法调用异常,str: " + str + "\n" + e;resultMessage.setMessage(message);return resultMessage;}/*** 方法限流逻辑** @param str 原方法的参数* @param e 异常信息* @return 限流回调方法返回值,和原方法返回值一致*/public static ResultMessage<String> echoBlockHandler(String str, BlockException e) {ResultMessage<String> resultMessage = new ResultMessage<>();String message = "限流-echo方法进行 限流,str: " + str + "\n" + e;resultMessage.setMessage(message);return resultMessage;}
}
4. 生产者业务逻辑代码
注:echo2()方法中使用的是sentinel的api实现限流,高亮的部分需要指定配置文件中已存在,或在代码中定义限流规则的resource,即"echo2"资源需要对应上方Nacos配置文件中的resource。
/*** @Description Nacos生产者 业务逻辑实现类*/
@Service
public class NacosProviderServiceImpl implements NacosProviderService {/*** 测试限流/熔断的方法** @param str 原方法的参数* @return 回调*/@Overridepublic ResultMessage<String> echo(String str) {ResultMessage<String> resultMessage = new ResultMessage<>();if ("devilvan".equals(str)) {String msg = "Hello Nacos Discovery " + str;resultMessage.setMessage(msg);} else {throw new RuntimeException();}return resultMessage;}/*** 测试sentinel设置资源并使用的方法** @param str 入参字符串* @return 回调*/@Overridepublic ResultMessage<String> echo2(String str) {String resource = "echo2";ResultMessage<String> resultMessage = new ResultMessage<>();Entry entry = null;try {entry = SphU.entry(resource);if ("devilvan".equals(str)) {String msg = "Hello Nacos Discovery " + str;resultMessage.setMessage(msg);} else {throw new RuntimeException();}} catch (BlockException e) {String msg = "限流-echo2方法调用异常,str: " + str + "\n" + e;resultMessage.setMessage(msg);} catch (Exception e) {String msg = "熔断-echo2方法调用异常,str: " + str + "\n" + e;resultMessage.setMessage(msg);} finally {if (entry != null) {entry.exit();}}return resultMessage;}
}
相关文章:
Sentinel dashboard的使用;Nacos保存Sentinel限流规则
Sentinel dashboard的使用 往期文章 Nacos环境搭建Nacos注册中心的使用Nacos配置中心的使用Sentinel 容灾中心的使用 参考文档 Sentinel alibaba/spring-cloud-alibaba Wiki GitHub 限流结果 下载sentinel-dashboard github地址:Sentinel/sentinel-dashboar…...
vue学习之插值表达式{{}}与显示数据(v-text和v-html)
1. 记得导入 <!-- 在线导入 --> <!-- 开发环境版本,包含了用帮助的命令行警告 --> <script src"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <!-- 生产环境版本,优化了尺寸和速度 --> <scri…...
2,认识N(logN)的排序【p3】
认识N( logN} 的排序 2.1归并排序2.1.1代码实现归并排序2.1.1.1自己c实现归并排序2.1.1.2gptc实现归并排序2.1.1.3总结2.1.1.4比较行为 2.1.2归并排序使用master公式2.1.3归并排序的扩展2.1.3.1小和问题2.1.3.2逆序对问题 2.2快排、荷兰国旗问题2.2.1问题一2.2.2问题二(荷兰国旗…...
华为机考--服务失效判断--带答案
新2023年华为OD真题机考题库大全-带答案(持续更新)or2023华为OD统一考试(AB卷)题库清单-带答案(持续更新) 题目描述 某系统中有众多服务,每个服务用字符串(只包含字母和数字,长度<…...
C++对C的加强(全)
目录 C对C的加强 命名空间 为什么要使用命名空间 怎么使用命名空间 命名空间的定义 命名空间的使用 使用域解析符 :: 使用using声明 内联命名空间 嵌套命名空间 随时将新的成员加入命名空间 命名空间中 函数的声明和实现分开 无名命名空间 命名空间取别名 使用u…...
ES6及以上新特性
ES6(ECMAScript 2015)及以上版本引入了许多新特性,每个版本都有不同的增强和改进。以下是 ES6 及以上版本的新特性的详细描述: ES6(ECMAScript 2015): let 和 const 声明:引入块级作…...
伦敦金在非农双向挂单
对伦敦金投资有一定经验的投资者都知道,在非农时期,伦敦金市场会出现很大的波动,那么我们如何才能抓住这些波动呢?答案是很难的。但是,有些投资者在多年实践中发明了一种双向挂单的方法,这里和大家一切分享…...
【C语言】—— __attribute__((fallthrough))
__attribute__((fallthrough)) 是一个在编译器中使用的特性,用于指示在 switch 语句中的 case 标签中故意省略 break 语句时的意图。它告诉编译器,故意省略 break 是有意为之,而不是出现了错误或遗漏。 当使用 switch 语句时,通常…...
【深度学习】生成对抗网络Generative Adversarial Nets
序言 本文是GAN网络的原始论文,发表于2014年,我们知道,对抗网络是深度学习中,CNN基础上的一大进步; 它最大的好处是,让网络摆脱训练成“死模型”到固定场所处去应用,而是对于变化的场景…...
【深度学习】从现代C++中的开始:卷积
一、说明 在上一个故事中,我们介绍了机器学习的一些最相关的编码方面,例如 functional 规划、矢量化和线性代数规划。 本文,让我们通过使用 2D 卷积实现实际编码深度学习模型来开始我们的道路。让我们开始吧。 二、关于本系列 我们将学习如何…...
金融数学方法:蒙特卡洛模拟
1.方法介绍 蒙特卡洛模拟是一种基于概率和统计的数值计算方法,用于解决各种复杂问题。它以概率统计为基础,通过随机抽样和重复实验的方式进行模拟,从而得到问题的近似解。它的基本思想是通过大量的随机样本来近似计算问题的解…...
vue 文件扩展名中 esm 、common 、global 以及 mini 、 dev 、prod 、runtime 的含义
vue 文件扩展名中 esm 、common 、global 以及 mini 、 dev 、prod 、runtime 的含义 vue.js 直接用在 script 标签中的完整版本(同时包含编译器 compiler 和运行时 runtime),可以看到源码,适用于开发环境。 这个版本视图可以写在…...
微服务契约测试框架Pact-Python实战
Pact是一个契约测试框架,有多种语言实现,本文以基于pact-python探究契约测试到底是什么?以及如何实现 官网:自述文件 |契约文档 (pact.io) 契约测试步骤 1、为消费者写一个单元测试,让它通过,并生成契约…...
Linux 给用户 赋某个文件夹操作的权限(实现三权分立)
Linux 给用户 赋某个文件夹操作的权限 这里用的ubuntu16.04 一、配置网站管理员 linux文件或目录的权限分为,读、写、可执行三种权限。文件访问的用户类别分为,文件创建者、与文件创建者同组的用户、其他用户三类。 添加用户 useradd -d /var/www/htm…...
【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)
目录 一、初始化列表 ⭕初始化列表概念 ⭕初始化列表的优点 ⭕使用场景 ⭕explicit关键字 二、Static成员 ⭕Static成员概念 🔴静态数据成员: 🔴静态函数成员: ⭕使用静态成员的优点 ⭕使用静态成员的注意事项 三、友…...
“深入理解Spring Boot:从入门到高级应用“
标题:深入理解Spring Boot:从入门到高级应用 摘要:本文将介绍Spring Boot的基本概念、原理和使用方法,并探讨如何在实际开发中充分发挥Spring Boot的优势。通过详细的示例代码,读者将能够深入理解Spring Boot的各个方…...
Apache Spark 的基本概念和在大数据分析中的应用
Apache Spark是一种快速、通用、可扩展的大数据处理引擎,用于大规模数据处理任务,如批处理、交互式查询、实时流处理、机器学习和图形处理等。它的主要特点包括: 1. 速度:Spark使用In-Memory计算技术,将计算结果存储在…...
Debian LNMP架构的简单配置使用
一、LNMP简介 LinuxNginxMysqlPHP组成的网站架构,常用于中小型网站服务。 二、环境 Debian 6.1.27-1kali1 (2023-05-12) Nginx/1.22.1 10.11.2-MariaDB(mysql) PHP 8.2.7 (Debian 6.1.27包含以上包,直接使用即…...
CAN转EtherNet/IP网关can协议破解服务
JM-EIP-CAN 是自主研发的一款 ETHERNET/IP 从站功能的通讯网关。该产品主要功能是将各种 CAN 总线和 ETHERNET/IP 网络连接起来。 本网关连接到 ETHERNET/IP 总线中做为从站使用,连接到 CAN 总线中根据节点号进行读写。 技术参数 ETHERNET/IP 技术参数 网关做为 …...
最适合新手的Java项目/SpringBoot+SSM项目《苍穹外卖》/项目实战、笔记(超详细、新手)[持续更新……]
小知识 软件设计中提到的UI设计中的UI是什么意思? 在软件设计中,UI设计中的UI是User Interface的简称,即用户界面。UI设计是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计可以让软件变得有个性有品位,同时让操作…...
终极自动化指南:如何用AALC解放你的Limbus Company游戏时间
终极自动化指南:如何用AALC解放你的Limbus Company游戏时间 【免费下载链接】AhabAssistantLimbusCompany AALC,PC端Limbus Company小助手。AALC,Limbus Company Assistant on PC 项目地址: https://gitcode.com/gh_mirrors/ah/AhabAssista…...
MultiHighlight:用智能色彩标记彻底改变你的代码阅读体验
MultiHighlight:用智能色彩标记彻底改变你的代码阅读体验 【免费下载链接】MultiHighlight Jetbrains IDE plugin: highlight identifiers with custom colors 🎨💡 项目地址: https://gitcode.com/gh_mirrors/mu/MultiHighlight 你是…...
AI科技热点日报 | 2026年5月22日
文章目录AI科技热点日报 | 2026年5月22日1、大模型技术突破OpenAI高管离职:安全主管Aleksander Madry转向AI经济研究Google发布Gemini Omni:多模态视频生成与编辑新突破ChatGPT集成Microsoft PowerPoint:AI生成演示文稿功能上线2、AI投融资动…...
Bazzite 42.20250417深度解析:云原生游戏操作系统的技术革命
Bazzite 42.20250417深度解析:云原生游戏操作系统的技术革命 【免费下载链接】bazzite Bazzite makes gaming and everyday use smoother and simpler across desktop PCs, handhelds, tablets, and home theater PCs. 项目地址: https://gitcode.com/gh_mirrors/…...
Java编程入门科普:从“一杯咖啡”到亿万应用
在数字化时代,我们每天都在与Java打交道:刷手机时的Android APP、逛电商时的后台系统、银行转账的安全校验、甚至智能家居的控制程序,背后都有Java的身影。作为一门诞生近30年仍稳居热门的编程语言,它不仅是程序员的“入门优选”&…...
ABAP云迁移中SAML Bearer断言实战指南
1. 这不是“配置一下就能用”的流程——SAML Bearer Assertion 在 ABAP 云迁移中到底在替谁干活?你刚接手一个 SAP S/4HANA Cloud 扩展项目,客户要求“把本地 ABAP 系统里的用户身份,安全地透传到新上线的 Node.js 微服务里”。运维同事甩来一…...
实战指南:如何构建企业级Chrome自动化测试环境
实战指南:如何构建企业级Chrome自动化测试环境 【免费下载链接】chrome-for-testing 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-for-testing Chrome for Testing 是Google专为浏览器自动化测试设计的专业解决方案,解决了传统Chrome版…...
还在为macOS与Android文件传输而烦恼吗?OpenMTP给你终极解决方案!
还在为macOS与Android文件传输而烦恼吗?OpenMTP给你终极解决方案! 【免费下载链接】openmtp OpenMTP - Advanced Android File Transfer Application for macOS 项目地址: https://gitcode.com/gh_mirrors/op/openmtp 你是否曾经在macOS上尝试连接…...
Windows 11系统优化终极方案:用Win11Debloat免费提升电脑性能
Windows 11系统优化终极方案:用Win11Debloat免费提升电脑性能 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter…...
构造函数、this指向和原型链机制
今天在刷力扣 [146. LRU 缓存](https://leetcode.cn/problems/lru-cache/) 的时候,遇到了原型链的写法,想想这个写法我正式开发中从来都没有用过,到底是个什么玩意?遂将各个节点和变量都定义在外面,但是代码居然报错啦…...
