nacos持久化sentinel规则配置

问题

当微服务一旦重启,sentinel规则就会消失,我们需要将配置规则进行持久化。

解决

我们可以将这些规则持久化到Nacos,只要Nacos里面的配置不删除,sentinel控制台的规则就持续有效 。

步骤

 1. mava中引入依赖

<!-- Sentinel Datasource 依赖 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-sentinel-datasource</artifactId>
</dependency>

<!-- Sentinel Datasource Nacos 依赖 -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>


 2. yml中配置

server:
  port: 8888
spring:
  application:
    name: sentinel-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848         #Nacos服务注册中心地址
    sentinel:
      transport:
        dashboard: localhost:8080 #配置Sentinel dashboard控制台服务地址
        port: 8719 #默认8719端口,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口
      datasource:
        flow: #流控规则
          nacos:
            server-addr: localhost:8848
            dataId: ${spring.application.name}-flow-rules
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: flow
        degrade: #熔断规则
          nacos:
#            namespace: public
            server-addr: localhost:8848
            dataId: ${spring.application.name}-degrade-rules
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: degrade

我配置yml的时候遇到一个问题,我是打算配置在public的namespace上,但是我如果指定了namespace:public,那么sentinel中的熔断规则就没有显示,但是注释掉就显示了。不清楚是不是哪里配置有问题,还是public就是这样的,有没有大佬指点一下

3. Nacos中添加配置

  接下来就去看看有没有配置成功吧

五种规则的json串及yml配置

需要自己删除掉json串的注释之后再添加到nacos中的配置中o

流控规则

Json :

[
      { 流控规则
        // 资源名
        "resource": "/test1",
        // 针对来源,若为 default 则不区分调用来源
        "limitApp": "default",
        // 限流阈值类型(1:QPS;0:并发线程数)
        "grade": 1,
        // 阈值
        "count": 1,
        // 是否是集群模式
        "clusterMode": false,
        // 流控效果(0:快速失败;1:Warm Up(预热模式);2:排队等待)
        "controlBehavior": 0,
        // 流控模式(0:直接;1:关联;2:链路)
        "strategy": 0,
        // 预热时间(秒,预热模式需要此参数)
        "warmUpPeriodSec": 10,
        // 超时时间(排队等待模式需要此参数)
        "maxQueueingTimeMs": 500,
        // 关联资源、入口资源(关联、链路模式)
        "refResource": "rrr"
      }
    ] 

yml:

spring:
  cloud:
    sentinel:
      datasource:
        flow: #流控规则
          nacos:
            namespace: public
            server-addr: localhost:8848
            dataId: ${spring.application.name}-flow-rules
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: flow

 熔断规则

json:   

[
    { 熔断规则
      // 资源名
      "resource": "/test2",
      "limitApp": "default",
      // 熔断策略(0:慢调用比例,1:异常比率,2:异常计数)
      "grade": 0,
      // 最大RT、比例阈值、异常数
      "count": 200,
      // 慢调用比例阈值,仅慢调用比例模式有效(1.8.0 引入)
      "slowRatioThreshold": 0.2,
      // 最小请求数
      "minRequestAmount": 5,
      // 当单位统计时长(类中默认1000)
      "statIntervalMs": 1000,
      // 熔断时长
      "timeWindow": 10
    }
  ]

yml:

spring:
  cloud:
    sentinel:
      datasource:
        degrade: #熔断规则
          nacos:
            namespace: public
            server-addr: localhost:8848
            dataId: ${spring.application.name}-degrade-rules
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: degrade

热点规则

Json:

[
    { 
      // 资源名
      "resource": "/test3",
      // 限流模式(QPS 模式,不可更改)
      "grade": 1,
      // 参数索引
      "paramIdx": 0,
      // 单机阈值
      "count": 13,
      // 统计窗口时长
      "durationInSec": 6,
      // 是否集群 默认false
      "clusterMode": false,
      "burstCount": 0,
      // 集群模式配置
      "clusterConfig": {
        "fallbackToLocalWhenFail": true,
        "flowId": 2,
        "sampleCount": 10,
        "thresholdType": 0,
        "windowIntervalMs": 1000
      },
      // 流控效果(支持快速失败和匀速排队模式)
      "controlBehavior": 0,
      "limitApp": "default",
      "maxQueueingTimeMs": 0,
      // 高级选项
      "paramFlowItemList": [
        {
          // 参数类型
          "classType": "int",
          // 限流阈值
          "count": 222,
          // 参数值
          "object": "2"
        }
      ]
    }
  ]

yml:

spring:
  cloud:
    sentinel:
      datasource:
        param-flow: #热点参数规则
          nacos:
            namespace: public
            server-addr: localhost:8848
            dataId: ${spring.application.name}-param-flow-rules
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: param-flow

系统规则

json:

[
    { 
      // RT
      "avgRt": 1,
      // CPU 使用率
      "highestCpuUsage": -1,
      // LOAD
      "highestSystemLoad": -1,
      // 线程数
      "maxThread": -1,
      // 入口 QPS
      "qps": -1
    }
  ]

yml:

spring:

  cloud:

    sentinel:

      datasource:

        system: #系统规则

          nacos:

            namespace: public

            server-addr: localhost: 8848

            dataId: ${spring.application.name}-system-rules

            groupId: DEFAULT_GROUP

            data-type: json

            rule-type: system

授权规则

Json:

  [
    {
      // 资源名
      "resource": "/test4",
      // 流控应用
      "limitApp": "app1,app2",
      // 授权类型(0代表白名单;1代表黑名单。)
      "strategy": 0
    }
  ]

yml:

spring:
  cloud:
    sentinel:
      datasource:
        authority: #授权规则
          nacos:
            namespace: public
            server-addr: localhost:8848
            dataId: ${spring.application.name}-authority-rules
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: authority

rule-type说明

  • 31
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值