勿以浮沙筑高台
这里使用nacos做持久化配置
sentinel持久化配置
1.在nacos中配置一个新的用户,用于sentinel进行访问。
创建一个sentinel用户
2.新增一个管理sentinel用户角色的命名空间
3.绑定角色
4.设置权限
5.引入持久化maven
<!-- sentinel-datasource-nacos 后续持久化用 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
6.修改yml文件
spring:
cloud:
datasource:
flow:
nacos:
# nacos配置文件id
dataId: ${spring.application.name}-flow-rules
# nacos服务地址
server-ddr: ${spring.cloud.nacos.server-addr}
groupId: SENTINEL_GROUP
# 命名空间ID
namespace: 440e79f0-92a7-4d61-acea-87c5c8cb9917
# 用户名
username: sentinel
# 密码
password: 123123
# 配置文件格式
dataType: json
#表示是什么规则
ruleType: flow
7.修改nacos文件
选择配置列表,命名空间为sentinel_space新增配置数据与yml文件里的一致
下面是配置的限流信息配置
[
{
"resource": "fallbackResource",
"limitApp": "default",
"grade": "1",
"count": "1",
"strategy": "0",
"controlBehavior": "0",
"clusterMode": false
}
]
resource:资源名称
limitApp:应用资源
grade:阈值类型:0代表线程数,1代表QPS
count: 单机阈值
strategy: 流控模式,0表示直接,1表示关联,2表示链路
controlBehavior: 流控效果,0表示快速失败,1表示warmup,2表示排队等候
clusterMode: 是否集群
7.测试,限流成功
其他规则配置model
nacos: #nacos地址
server-addr: ${spring.cloud.nacos.discovery.server-addr} #nacos dataId 详细看 sentinel 客户端添加到nacos下的保持一致
dataId: ${spring.application.name}-flow-rules #nacos namespace 详细看 sentinel 客户端添加到nacos下的保持一致
namespace: ${spring.cloud.nacos.discovery.namespace} #nacos namespace 详细看 sentinel 客户端添加到nacos下的保持一致
groupId: SENTINEL_GROUP
#data-type: json
# 规则类型,取值见:
# org.springframework.cloud.alibaba.sentinel.datasource.RuleType
rule-type: flow
#熔断降级 名称随意
degrade:
nacos:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
dataId: ${spring.application.name}-degrade-rules
namespace: ${spring.cloud.nacos.discovery.namespace}
groupId: SENTINEL_GROUP
rule-type: degrade
#系统规则 名称随意
system:
nacos:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
dataId: ${spring.application.name}-system-rules
namespace: ${spring.cloud.nacos.discovery.namespace}
groupId: SENTINEL_GROUP
rule-type: system
#授权规则 名称随意
authority:
nacos:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
dataId: ${spring.application.name}-authority-rules
namespace: ${spring.cloud.nacos.discovery.namespace}
groupId: SENTINEL_GROUP
rule-type: authority
#参数规则 名称随意
param-flow:
nacos:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
dataId: ${spring.application.name}-param-flow-rules
namespace: ${spring.cloud.nacos.discovery.namespace}
groupId: SENTINEL_GROUP
rule-type: param-flow