Spring Cloud Alibaba Sentinel 持久化数据到Nacos中配置json及SpringCloud代码集成

默认情况下sentinel dashboard中配置的规则是API 将规则推送至客户端并直接更新到内存中,扩展写数据源(WritableDataSource),当服务重启或者重新部署后,配置的规则需要重新配置,不保证一致性;规则保存在内存中,重启即消失。严重不建议用于生产环境

持久化数据到nacos中(Push模式)

生产环境下一般更常用的是 push 模式的数据源。对于 push 模式的数据源,如远程配置中心(ZooKeeper, Nacos, Apollo等等),推送的操作不应由 Sentinel 客户端进行,而应该经控制台统一进行管理,直接进行推送,数据源仅负责获取配置中心推送的配置并更新到本地。因此推送规则正确做法应该是 配置中心控制台/Sentinel 控制台 → 配置中心 → Sentinel 数据源 → Sentinel,而不是经 Sentinel 数据源推送至配置中心。这样的流程就非常清晰了:
在这里插入图片描述

  • 配置jar包,先检查下,如果不存在此包在增加

     <!--sentinel数据持久化-->
     <dependency>
         <groupId>com.alibaba.csp</groupId>
         <artifactId>sentinel-datasource-nacos</artifactId>
     </dependency>
    
  • nacos 对当前项目的配置文件中增加持久化配置

    spring:
      cloud:
        sentinel:
          # nacos 持久化数据
          datasource:
            # 可配置多个规则
            # 可自定义key-流控规则
            dashboard-flow:
              nacos:
                server-addr: http:localhost
                dataId: ${spring.application.name}-flow
                file-extension: json
                rule-type: flow
                namespace: ${spring.profiles.active}
            # 可自定义key-系统规则
            dashboard-system:
              nacos:
                server-addr: http:localhost
                dataId: ${spring.application.name}-system
                file-extension: json
                rule-type: system
                namespace: ${spring.profiles.active}
    
    • nacos配置名,例如项目名demo
      在这里插入图片描述

规则json

配置时需要把注释删除掉否则报错

流控规则

根据实际的需要改变减少对应的参数即可

[
  {
    // 资源名
    "resource": "/test",
    // 针对来源,若为 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"
  }
]

降级规则

根据实际的需要改变减少对应的参数即可

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

热点规则

根据实际的需要改变减少对应的参数即可

[
  {
  	// 资源名
    "resource": "/test1",
    // 限流模式(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"
      }
    ]
  }
]

系统规则

负值表示没有阈值检查。不需要删除参数

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

受权规则

根据实际的需要改变对应的参数即可

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

!!!!SpringCloudAlibaba项目集成代码示例!!!

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
Spring Cloud NacosSentinel都支持持久化配置文件,可以通过以下步骤进行配置: 1.在Nacos创建配置文件。可以使用Nacos的Web界面或Nacos的API创建配置文件,例如在Nacos的Web界面创建名为“sentinel”的配置文件。 2.在Sentinel添加配置文件。可以通过在Sentinel添加以下配置来指定Nacos作为配置心: ``` -Dcsp.sentinel.datasource.type=nacos -Dcsp.sentinel.datasource.nacos.serverAddr=${nacos.serverAddr} -Dcsp.sentinel.datasource.nacos.namespace=${nacos.namespace} -Dcsp.sentinel.datasource.nacos.dataId=${nacos.dataId} -Dcsp.sentinel.datasource.nacos.groupId=${nacos.groupId} ``` 其,${nacos.serverAddr}、${nacos.namespace}、${nacos.dataId}和${nacos.groupId}是Nacos配置文件的相关信息。 3.在Sentinel启用持久化配置。可以通过在Sentinel Dashboard配置以下参数来启用持久化配置: ``` -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel -Dcsp.sentinel.api.port=8721 -Dcsp.sentinel.dashboard.auth.username=sentinel -Dcsp.sentinel.dashboard.auth.password=sentinel -Dcsp.sentinel.log.use.pid=true -Dcsp.sentinel.datasource.config.file=${user.home}/sentinel/config/properties -Dcsp.sentinel.datasource.config.file.name=sentinel.properties -Dcsp.sentinel.datasource.config.encrypt.key=q9Ec7J6K8sR1T2L4 ``` 其,${user.home}/sentinel/config/properties是持久化配置文件的路径。 4.在Nacos修改配置文件。可以通过Nacos的Web界面或Nacos的API修改配置文件。例如,在Nacos的Web界面修改名为“sentinel”的配置文件。 5.在Sentinel更新配置。可以通过在Sentinel Dashboard的“配置心”页面点击“刷新”按钮来更新配置配置更新后,Sentinel会自动加载新配置。 通过以上步骤,就可以实现Spring Cloud NacosSentinel持久化配置文件功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值