SpringCloud学习笔记 - Sentinel流控规则配置的持久化 - Sentinel
1. 为什么要将流控规则持久化
默认���的流控规则是配置在sentinel中的,又因为sentinel是懒加载的,只有当我们访问了一个请求的时候,sentinel才能监控到我们的簇点链路,我们才能对该链路进行流控配置,一旦我们重启应用sentinel将会丢失我们的监控链路,sentinel规则也将会消失,这样对我们的生产服务器的重新部署是非常不友好的。
那么我们能不能将我们配置的流控规则保存在一个地方,让sentinel在任何时候只要需要就能获取到我们配置的流控规则呢?
2. 将流控规则持久化进nacos中
我们知道nacos中是内置了一个轻量化的数据库的,我们就可以将我们的流控规则通过一种方式配置在nacos中的,只要Nacos里面的配置不删除,sentinel上的流控规则就持续有效。
1. 引入sentinel的持久化依赖
com.alibaba.csp sentinel-datasource-nacos
2. 在nacos中创建某个微服务的流控配置规则
在nacos中新建流控规则配置文件:
[{ "resource": "customerBlockHandler", "limitApp": "default", "grade": 1, "count": 1, "strategy": 0, "controlBehavior": 0, "clusterMode": false }]
resource可以是请求的映射,也可以是在@SentinelResource中指定的value = "customerBlockHandler"名称
sentinel中的规则配置对照:
3. 在该微服务的application.yaml中添加nacos数据源配置信息
server: port: 8401 spring: application: name: cloudalibaba-sentinel-service cloud: nacos: discovery: server-addr: localhost:8848 #Nacos服务注册中心地址 sentinel: transport: dashboard: localhost:8080 #配置Sentinel dashboard地址 port: 8791 #默认端口 datasource: ds1: nacos: server-addr: localhost:8848 #nacos的服务地址,根据实际情况而定 data-id: cloudalibaba-sentinel-service #在nacos中新建的配置文件的名称 group-id: DEFAULT_GROUP #新建时分配的组别 data-type: json #配置文件的数据格式 rule-type: flow
关闭cloudalibaba-sentinel-service的服务后,sentinel中的流控规则消失,重启后会自动加载
The End