在使用过程中我们发现在Sentinel 控制台中配置了规则之后,随着服务的重启,配置的规则也随之消失。Sentinel 控制台控制台默认是将这些规则保存在内存中,服务没了,规则也没了。试想一下如果我们配置了很多规划或者是因为某种原因服务挂掉了,那我们配置的数据也就丢失了,显然这不是我们想要的。
Sentinel将规则存储在文件、数据库或者配置中心当中,Sentinel默认提供的数据源有file、zookeeper、Redis、consul、apollo、nacos,当然也可以自己自定义数据源。
快速开始
下面就以nacos 做为数据源来演示一下Sentinel的限流规划持久化,项目还是沿用上一篇文章的。 分别启动nacos server 和 Sentinel控制台。
- 引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel-datasource</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
复制代码
sentinel-datasource-nacos 不需要填写版本号,因为在spring-cloud-alibaba-sentinel-datasource已经配置了。
- 修改配置文件
server.port=8085
# 服务名
spring.application.name=SentinelProvider
#
spring.cloud.sentinel.transport.port=8719
# dashboard 地址
spring.cloud.sentinel.transport.dashboard=127.0.0.1:8080
spring.cloud.sentinel.datasource.flow_ds.nacos.server-addr=localhost:8848
spring.cloud.sentinel.datasource.flow_ds.nacos.data-id=sentinel_provider_flow_rule
spring.cloud.sentinel.datasource.flow_ds.nacos.group-id=SENTINEL_PROVIDER_GROUP
spring.cloud.sentinel.datasource.flow_ds.nacos.data-type=json
spring.cloud.sentinel.datasource.flow_ds.nacos.rule-type=flow
复制代码
欲知配置的作用,请接着往下看
- 在nacos中配置规则 nacos配置中心可以看这篇文章SpringCloud Alibaba 2021版 nacos 配置中心教程 在nacos配置列表中发布如下配置&#x