规则持久化【结合 Nacos】

发布时间 2023-12-13 10:03:42作者: 爱新觉罗LQ

规则持久化【结合 Nacos】

如果 sentinel 流控规则没有持久化,当重启调用API/接口所在微服务后,规则就会丢失,需要重新加入

需求:

  1. 为member-service-nacos-consumer-81 微服务的/member/openfeign/consumer/get/1 API 接口添加流控规则QPS=1/快速失败.
  2. 要求将该流控规则加入到nacos server 配置中心,实现持久化

1. 在 Nacos Server 配置中心增加 Sentinel 客户端 / 微服务模块 的流控规则


点击 + 号,新增配置

新增json配置

[
    {
        "resource":"/member/openfeign/consumer/get/1",	// 资源名称;
        "limitApp": "default",	//	流控针对的调用来源,若为 default 则不区分调用来源
        "grade": 1,	//	阈值类型【0:线程数,1:QPS】
        "count": 1,	//	限流阈值
        "strategy": 0,	//	流控模式【0:直接,1:关联,2:链路】
        "controlBehavior": 0,	//	流控效果【0:快速失败,1: Warm Up,2:排队等待】
        "clusterMode": false	//	是否集群
    }
]

2. 在Nacos Server 配置中心增加Sentinel 客户端/微服务模块的流控规则参数说明

<!-- 引入 sentinel 和 nacos 持久化整合依赖,使用版本仲裁 -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

修改 application.yml,配置该微服务从 Nacos Server 获取流控规则 datasource 和 transport 一个层级

    cloud:
      nacos:
        discovery:
          server-addr: localhost:8848
      # 配置 sentinel
      sentinel:
        transport:
          dashboard: localhost:9999
          port: 8888
        datasource:
          ds1:
            # 流控规则配置是从 Nacos Server【Redis】 配置中心获取
            nacos:
              server-addr: localhost:8848
              dataId: member-service-nacos-consumer-81
              groupId: DEFAULT_GROUP  # 指定组【Nacos Server 配置中心】
              data-type: json # 指定配置流控规则的数据类型
              rule-type: flow # 规则类型:流控 【文档】

测试:

其它规则:

名称 规则
flow 流控规则
degrade 降级规则
param-flow 热点规则
system 系统规则

3. 配置其它规则

参考文档:https://sentinelguard.io/zh-cn/docs/basic-api-resource-rule.html