sentinel持久化nacos配置

导入pom依赖

<!--      sentinel持久化到nacos  -->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
        </dependency>

创建sentinel命名空间

创建配置

流控规则, 权限规则,降级规则,系统规则,授权规则,热点参数规则 配置到nacos中

 配置内容

 不同的规则对应不同的配置

流控规则

[
  {
    // 资源名
    "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": "sentinel_spring_web_context",
    // 流控应用
    "limitApp": "/test",
    // 授权类型(0代表白名单;1代表黑名单。)
    "strategy": 0
  }
]

降级规则

[
  {
      // 资源名
    "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
  }
]

系统规则

  [
    {
      // 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
  }
]

热点参数规则

[
  {
    // 资源名
    "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"
      }
    ]
  }
]

yml文件配置 

yml文件配置和nacos中配置相对应

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos 服务地址
    sentinel:
      eager: true   #饿加载
      transport:
        dashboard: localhost:8089 #配置 Sentinel dashboard 地址
      datasource:
        flow:   #流控规则
          nacos:
            namespace: 1efe62b0-b759-45ff-a5e7-4fb5c27350c7
            server-addr: localhost:8848
            dataId: ${spring.application.name}-flow-rules
            groupId: SENTINEL_GROUP
            data-type: json
            rule-type: flow
        degrade:
          nacos:
            namespace: 1efe62b0-b759-45ff-a5e7-4fb5c27350c7
            server-addr: localhost:8848
            dataId: ${spring.application.name}-degrade-rules
            groupId: SENTINEL_GROUP
            data-type: json
            rule-type: degrade
        system:
          nacos:
            namespace: 1efe62b0-b759-45ff-a5e7-4fb5c27350c7
            server-addr: localhost:8848
            dataId: ${spring.application.name}-system-rules
            groupId: SENTINEL_GROUP
            data-type: json
            rule-type: system
        authority:
          nacos:
            namespace: 1efe62b0-b759-45ff-a5e7-4fb5c27350c7
            server-addr: localhost:8848
            dataId: ${spring.application.name}-authority-rules
            groupId: SENTINEL_GROUP
            data-type: json
            rule-type: authority
        param-flow:
          nacos:
            namespace: 1efe62b0-b759-45ff-a5e7-4fb5c27350c7
            server-addr: localhost:8848
            dataId: ${spring.application.name}-param-flow-rules
            groupId: SENTINEL_GROUP
            data-type: json
            rule-type: param-flow

总结:

配置naocs中只能实现配置持久化,不能实现修改sentinel中规则改变nacos中的配置,如果想要实现,需要修改sentinel-dashboard.

修改sentinel-dashboard连接

sentinel基于nacos的持久化,改造sentinel-dashboard-1.8_小乚唠java的博客-CSDN博客

### 回答1: b'sentinel规则持久化nacos'的意思是将Sentinel的规则持久化Nacos中,使得在规则发生变化时,可以自动同步至Nacos中,保证系统的稳定性和可靠性。这样做也便于管理和维护规则信息。 ### 回答2: Sentinel规则持久化是指将在Sentinel配置的规则信息保存到外部存储器中,以便于在应用启动时,可以从外部存储器中加载规则,从而实现规则的自动化配置Nacos是一款开源的动态服务发现、配置管理和服务管理平台。它可以用于管理应用程序的配置信息、服务发现和服务注册。Sentinel是阿里巴巴开源的一款微服务框架。它可以用于在分布式系统中实现流量控制、熔断降级和系统负载保护等功能。 在分布式环境中,由于存在多个节点,这些节点之间需要共享配置信息和规则信息。传统的配置和规则信息的管理方式比较繁琐,需要手动配置,而且容易出现人为错误。因此,将规则信息持久化Nacos中,可以实现自动化配置和管理,从而提高规则信息的管理效率和运维效率。 具体来说,Sentinel可以通过配置文件的方式将规则信息持久化Nacos中。首先需要在Nacos中创建一个配置集群,然后在Sentinel中进行配置,指定配置的数据源为Nacos。这样就可以将Sentinel中的规则信息保存到Nacos中。 在系统运行时,Sentinel可以从Nacos中加载规则信息,并根据规则信息对流量进行控制。如果规则信息发生变化,Sentinel也可以及时地更新规则信息。因此,利用Nacos持久化规则信息,可以实现规则的动态管理和自动化配置,提高系统的稳定性和可靠性。 总之,Sentinel规则持久化Nacos中,可以实现规则的自动化管理和动态配置。它具有管理效率高、运维效率高、稳定性好等优点。因此,在分布式环境中,将规则信息持久化Nacos中,是一种非常值得推广的做法。 ### 回答3: Sentinel规则持久化Nacos是为了让Sentinel控制台中配置的规则在重启后仍能够保留,避免重启后规则丢失需要重新手动配置的问题。Nacos是一个开源的注册中心和配置中心,支持分布式场景下的服务注册、配置管理和服务发现。在Sentinel中,我们可以通过将规则持久化Nacos中来实现持久化的功能。 首先,我们需要在控制台中配置Nacos的相关信息,包括Nacos Server地址、Data ID和Group信息等。其中,Data ID和Group信息用于标识Sentinel规则的唯一性。 接下来,我们需要通过编写代码来实现将Sentinel规则持久化Nacos中。具体实现方式可以参考官方文档中提供的示例代码,主要包括以下几个步骤: 1. 创建Nacos配置管理客户端,可以通过NacosFactory.createConfigService()方法获取。 2. 将Sentinel规则序列化成JSON字符串,可以通过Jackson等工具实现。 3. 调用Nacos的API,将JSON字符串保存到Nacos中,例如使用configService.publishConfig()方法。 4. 在Sentinel应用启动时,需要从Nacos中读取保存的规则信息,并将其解析成Sentinel规则对象,例如使用configService.getConfig()方法获取Nacos中的配置信息,之后再调用SentinelRuleParser.parseRules()方法将其转换为Sentinel规则对象。 5. 在控制台中修改或删除规则时,需要通过调用Nacos的API来更新或删除相应的配置信息,例如使用configService.publishConfig()和cconfigService.removeConfig()方法实现。 通过以上步骤,我们就可以实现将Sentinel规则持久化Nacos中的功能,保证了应用重启后规则仍能够得到保留。同时,使用Nacos作为规则持久化的中心,还能够实现多节点之间的规则同步和分布式配置的管理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值