Sentinel 规则配置,一旦我们重启服务过后,所有的规则都会消失。我们可以通过 Zookeeper , Applo , Nacos 等配置中心将这些规则配置存储起来,让服务重启或者启动多节点的时候可以共享配置数据。


之前的项目我们通过 Nacos 来作为服务注册中心和服务配置中心,我们也可以将 Nacos 作为 Sentinel 的配置数据存储仓库,来为我们提供Sentinel 配置数据的持久化。 如下图所示

​使用 Nacos 存储 Sentinel 规则信息_配置信息

增加 Nacos 存储依赖

需要独立引入如下依赖,来申明 sentinel 的规则数据存储在 nacos 中。

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


添加 YML 配置

我们如果使用 Sentinel 的独立数据源功能,那么需要在 yaml 文件中申明数据源配置信息。


spring:
application:
name: stock-service
profiles:
active: dev
cloud:
sentinel:
transport:
port: 8719
dashboard: localhost:8080
enabled: true
datasource:
ds:
nacos:
dataId: ${spring.application.name}-flow-rules
groupId: DEFAULT_GROUP
datatype: json
ruletype: flow


Nacos 增加配置

在 Nacas 配置中心,我们需要添加规则配置并且发布,这里需要注意 dataId 和 groupId 一定不要搞错,不然会导致找不到数据配置,如下图所示:


​使用 Nacos 存储 Sentinel 规则信息_数据_02

数据模板


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


Sentinel 查看配置

最后我们启动服务和 Sentinel 控制台,就可以在流控信息这个菜单下面查看到我们在配置中心定义的流控信息。


​使用 Nacos 存储 Sentinel 规则信息_持久化_03


总结

至此我们就完成了,Sentinel 对规则持久化到 Nacos 的全部操作。这里有一个小小的问题就是我们在 Sentinel 控制台修改规则过后默认不能直接同步到 Nacos 中,如果需要同步到 Nacos 中的需要修改 Sentinel 控制台的源码,配置信息通过 “推模式”同步到 Nacos 中存储。