规则持久化【结合 Nacos】
规则持久化【结合 Nacos】
如果 sentinel 流控规则没有持久化,当重启调用API/接口所在微服务后,规则就会丢失,需要重新加入
需求:
- 为member-service-nacos-consumer-81 微服务的/member/openfeign/consumer/get/1 API 接口添加流控规则QPS=1/快速失败.
- 要求将该流控规则加入到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