目录
目前,Sentinel Dashboard中添加的规则数据存储在内存,微服务停掉规则数据就消失,在生产环境下不合适。我们可以将Sentinel规则数据持久化到Nacos配置中心,让微服务从Nacos获取规则数据。
一、pom
<!-- Sentinel⽀持采⽤ Nacos 作为规则配置数据源,引⼊该适配依赖 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
二、application.yml中配置Nacos数据源
spring:
application:
name: lagou-service-autodeliver
cloud:
nacos:
discovery:
################ 配置nacos server地址
server-addr: 127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850
sentinel:
transport:
dashboard: 127.0.0.1:8080 # sentinel dashboard/console地址
port: 8719 # sentinel会在该端⼝启动http server,那么这样的话,控制台定义的⼀些限流等规则才能发送传递过来,
#如果8719端⼝被占⽤,那么会依次+1
# ************** 基于 Nacos 实现 Sentinel 规则持久化 【开始】 **************
datasource:
# 自定义的流控规则数据源名称
flow: # 流控规则
nacos:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
data-id: ${spring.application.name}-flow-rules
groupId: DEFAULT_GROUP
data-type: json
rule-type: flow # 类型来自RuleType类
# 自定义的降级规则数据源名称
degrade:
nacos:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
data-id: ${spring.application.name}-degrade-rules
groupId: DEFAULT_GROUP
data-type: json
rule-type: degrade # 类型来自RuleType类
# ************** 基于 Nacos 实现 Sentinel 规则持久化 【结束】 **************
三、Nacos Server中添加对应规则配置集
1、lagou-service-autodeliver-flow-rules
[
{
"resource":"findResumeOpenState",
"limitApp":"default",
"grade":1,
"count":1,
"strategy":0,
"controlBehavior":0,
"clusterMode":false
}
]
2、lagou-service-autodeliver-degrade-rules
[
{
"resource":"findResumeOpenState",
"grade":2,
"count":1,
"timeWindow":5
}
]
四、项目重启
发起一次请求,然后看一下sentinel控制台。
重启之后,还是可以看到之前配置的流控规则和降级规则
并且,是生效的
五、注意
在nacos的配置,可以同步到sentinel,但是返回来,sentinel直接配置的话,是不能同步到nacos的。