Sentinel和Nacos的整合可以实现规则动态配置,即在Nacos中修改规则后,Sentinel能够实时地读取并应用新的规则。而规则持久化则是指将规则保存在Nacos中,以避免意外故障或重启时规则被丢失。
实现规则持久化,可以按照以下步骤进行操作(流控规则为例):
- 📥 导入依赖
<!-- sentinel数据源持久化进nacos -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
- bootstrap.yml🧰 配置文件
spring:
  application:
    name: user-server
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.157.129:8848
      config:
        server-addr: 192.168.157.129:8848
        file-extension: yaml
    sentinel:
      transport:
        dashboard: 192.168.157.129:8081
        port: 8791
      web-context-unify: false
      datasource:
        # 自定义命名
        flow-rule:
          # 支持多种持久化数据源:file、nacos、zk、apollo、redis、consul
          nacos:
            # nacos服务地址
            server-addr: 192.168.157.129:8848
            # 命名空间,根据环境配置
#            namespace: public
            # 这里我做了一下细分,不同规则设置不同groupId
            group-id: USER_SENTINEL_FLOW_GROUP
            # 仅支持JSON和XML类型
            data-id: ${spring.application.name}
            # 规则类型:flow、degrade、param-flow、system、authority
            rule-type: flow
            data-type: json
- 🛡️ 编写接口
@GetMapping("/get001")
@SentinelResource(value = "/resource/user/get001")
public Integer get001(@RequestParam("i") Integer i){
    return 111;
}
- 在Nacos中创建一个配置文件,用于保存Sentinel规则
📝 创建配置文件
Data ID和Group需要对应

流控规则持久化配置参数:
[
    {
        "resource": "/resource/user/get001",
        "limitApp": "default",
        "grade": 1,
        "count": 1,
        "strategy": 0,
        "controlBehavior": 0,
        "clusterMode":  false
    }
]
流控规则持久化配置参数说明:
 🔧 配置规则
- resource : 资源名称(@SentinelResource(value = "/resource/user/get001"))
- limitApp : 来源应用
- grade : 0表示线程数,1表示QPS
- count : 单机阈值
- strategy : 流控模式,0直接,1关联,2链路
- controllerBehavior : 流控效果,0快速失败,1Warm Up,2排队等待
- clusterMode : 是否集群

- 重新启动服务,然后访问/resource/user/get001资源,刷新一下Sentinel控制台就可以看到我们在Nacos里配置的流控规则了
 🚀 重启服务
  
👀 更新规则
如果在Nacos中更新了规则,Sentinel会自动读取并应用新的规则。同时,也可以从Sentinel Dashboard中查看规则信息。
请注意,Sentinel Nacos适配器要求Nacos版本为1.1.4及以上。在使用之前,请确保您安装的Nacos版本满足要求。



















