使用Sentinel配置限流和熔断发现只要服务重启dashboard中的规则就会全部消失,将配置持久化到Nacos,服务启动自动同步规则到Sentinel。
导入依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
Nacos创建配置,一个类型的规则创建一个配置即可,多的可以追加。
限流配置
![]()
[{"resource":"/user/login","limitApp":"default","grade":1,"count":2,"strategy":0,"controlBehavior":0}]
- resource:资源名,需要保护的接口
- limitApp:流控针对的来源
- grade: 阈值类型,1表示QPS
- count:阈值大小,QPS
- strategy:流控模式,0表示直接流控
- controlBehavior:流控效果,0表示快速失败
熔断配置
![]()
[{"resource":"/user/getNearUserPhotoById/{id}","grade":0,"count":0.05,"timeWindow":5,"minRequestAmount":5,"statIntervalMs":10000,"slowRatioThreshold":0.2}]
- resource:资源名(接口名)
- grade:熔断策略
- count:阈值
- timeWindow:熔断持续时间(秒)
- minRequestAmount:最小请求数
- statIntervalMs:统计时间窗口(毫秒)
- slowRatioThreshold:慢调用比例阈值(0~1)
yml文件中增加配置
spring:cloud:sentinel:transport:dashboard:localhost:8866port:8719datasource:ds1:#添加nacos数据源的配置,将sentinel配置持久化到nacos里面 nacos:server-addr:localhost:8848dataId:sentinel-limit groupId:sentinel data-type:json rule-type:flow ds2:nacos:server-addr:localhost:8848dataId:sentinel-breaker groupId:sentinel data-type:json rule-type:degrade nacos:discovery:server-addr:localhost:8848
重启项目后请求接口发现规则同步成功
![]()
![]()