完整目录清单页面(必看)
细心的伙伴将会发现,当sentinel重新启动时,sentinel dashboard中原来的数据将会全部消失,这样就需要重新定义限流规则,无疑是不可取的。sentinel默认是把配置放内存里的。
我们可以将sentinel中定义的限流规则保存到Nacos配置中心里面,实现持久化。
具体实现步骤:
1,添加sentinel的nacos支持
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> </dependency>
2,在nacos中定义策略
[ { "resource": "helloWorld_springcloud", "limitApp": "default", "grade": 1, "count": 2, "strategy": 0, "controlBehavior": 0, "clusterMode": false } ]
Data Id :和配置中的data_id相对应
Group:配置文件中的group-id
配置内容:
resource:接口名,即限流规则的作用对象
limitApp:流控针对的调用来源,若为 default 则不区分调用来源
grade:限流阈值类型(QPS 或并发线程数);0代表根据并发数量来限流,1代表根据QPS来进行流量控制
count:限流阈值
strategy:调用关系限流策略( 直接、链路、关联 )
controlBehavior:流量控制效果(直接拒绝、Warm Up、匀速排队)
clusterMode:是否为集群模式
3,项目配置,sentinel下面的dataSource中配置nacos
spring: application: name: sentinel_springcloud # 设置应用名称 cloud: sentinel: transport: dashboard: localhost:8080 # 设置Sentinel连接控制台的主机地址和端口 datasource: ds: nacos: server-addr: localhost:8848 # nacos连接地址 group-id: DEFAULT_GROUP # nacos连接的分组 rule-type: flow # 流控规则 rule-type 配置表示该数据源中的规则属于哪种类型的规则(flow,degrade,authority,system, param-flow, gw-flow, gw-api-group) data-id: java1234-sentinel # 读取配置文件的 data-id data-type: json # 读取培训文件类型为json
4,测试
我们启动项目,发现sentinel控制台读取到了nacos里的配置,频繁刷新也能流控;