SpringCloud学习笔记 - Sentinel流控规则配置的持久化 - Sentinel

1. 为什么要将流控规则持久化

默认的的流控规则是配置在sentinel中的,又因为sentinel是懒加载的,只有当我们访问了一个请求的时候,sentinel才能监控到我们的簇点链路,我们才能对该链路进行流控配置,一旦我们重启应用sentinel将会丢失我们的监控链路,sentinel规则也将会消失,这样对我们的生产服务器的重新部署是非常不友好的。
那么我们能不能将我们配置的流控规则保存在一个地方,让sentinel在任何时候只要需要就能获取到我们配置的流控规则呢?

2. 将流控规则持久化进nacos中

我们知道nacos中是内置了一个轻量化的数据库的,我们就可以将我们的流控规则通过一种方式配置在nacos中的,只要Nacos里面的配置不删除,sentinel上的流控规则就持续有效。

1. 引入sentinel的持久化依赖


<dependency>
    <groupId>com.alibaba.cspgroupId>
    <artifactId>sentinel-datasource-nacosartifactId>
dependency>

2. 在nacos中创建某个微服务的流控配置规则

在nacos中新建流控规则配置文件:
SpringCloud学习笔记 - Sentinel流控规则配置的持久化 - Sentinel_第1张图片

SpringCloud学习笔记 - Sentinel流控规则配置的持久化 - Sentinel_第2张图片

[{
    "resource": "customerBlockHandler",
    "limitApp": "default",
    "grade": 1,
    "count": 1, 
    "strategy": 0,
    "controlBehavior": 0,
    "clusterMode": false
}]

resource可以是请求的映射,也可以是在@SentinelResource中指定的value = "customerBlockHandler"名称

sentinel中的规则配置对照:
SpringCloud学习笔记 - Sentinel流控规则配置的持久化 - Sentinel_第3张图片

3. 在该微服务的application.yaml中添加nacos数据源配置信息
SpringCloud学习笔记 - Sentinel流控规则配置的持久化 - Sentinel_第4张图片

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中的流控规则消失,重启后会自动加载
SpringCloud学习笔记 - Sentinel流控规则配置的持久化 - Sentinel_第5张图片

你可能感兴趣的:(springcloud,spring,cloud,学习,sentinel)