老师布置的Sentinel拓展把流控规则持久化
服务重启的话Sentinel保存的流控规则就会消失,每次都要重新配置
从早上9点弄到下午14点,一共5个小时,总之出现的问题就是Nacos配置了之后Sentinel刷不出来,我还是太菜了
在服务里添加依赖
<!-- 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>
在application.yml文件配置
spring:
application:
name: product-service
cloud:
# 配置 nacos
nacos:
discovery:
server-addr: localhost:8848
# 将本服务与 sentinel监控进行绑定
sentinel:
transport:
port: 8719 #跟控制台交流的端口,随意指定一个未使用的端口即可,默认为8719
dashboard: localhost:8080 # 指定控制台服务的地址
web-context-unify: false
datasource:
# 自定义命名
flow-rule:
# 支持多种持久化数据源:file、nacos、zk、apollo、redis、consul
nacos:
# naco服务地址
server-addr: localhost:8848
# 命名空间,根据环境配置
namespace: public
# 这里我做了一下细分,不同规则设置不同groupId
group-id: PRODUCT_SENTINEL_FLOW_GROUP
# 仅支持JSON和XML类型
data-id: ${spring.application.name}
# 规则类型:flow、degrade、param-flow、system、authority
rule-type: flow
# 饥饿加载
eager: true
访问Nacos,添加Data ID和Group需要对应

配置资源

resource : 资源名称
limitApp : 来源应用
grade : 0表示线程数,1表示QPS
count : 单机阈值
strategy : 流控模式,0直接,1关联,2链路
controllerBehavior : 流控效果,0快速失败,1Warm Up,2排队等待
clusterMode : 是否集群
[
{
"resource": "/资源路径",
"limitApp": "default",
"grade": 1,
"count": 1,
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}
]
重新启动服务,然后访问Sentinel就可以看到我们在Nacos里配置的流控规则了
