前言:
相信很多小伙伴在使用sentinel做流控时,都会遇到这样的问题,当服务重启时,sentinel控制台中的流控规则会全部消失不见,这是由于sentinel没有做持久化配置,本篇博客主要介绍sentinel如何将持久化入nacos。
1.导入依赖
在pom.xml文件中导入sentinel持久化到nacos依赖:
<!--springcloud alibb sentinel持久化进入nacos依赖-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
<version>1.7.0</version>
</dependency>
2.流控示例:
控制器示例代码:
sentinel流控配置:
快速刷新点击,触发限流:
但是当项目服务重启之后,sentinel中的流控规则又会被清空。
3.添加nacos数据源配置
spring:
cloud:
sentinel:
datasource:
ds1:
nacos:
server-addr: localhost:8848
dataId: ${
spring.application.name}
groupId: DEFAULT_GROUP
data-type: json
rule-type: flow
4.nacos配置:
[
{
"resource": "/testRulePersistence",
"limitApp": "default",
"grade": 1,
"count": 1,
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}
]
参数 说明:
注意dataId就是我们配置的服务名(application.name)
5.测试
重启项目,刷新sentinel控制台,发现并没有流控规则:
这个时候需要我们手动去调用接口,多刷新几次,流控规则便出现了:
快速刷新点击,同样触发限流: