从上一个章节的流控来看,其实就能看出来,Sentinel的根本是只需要关注资源的定义,它就会对资源进行流控,上一个章节我们基于Sentinel Dashboard控制台对资源进行流控,但是不知道大家在实操过程中有没有发现一个问题,当服务重启,再回头看控制台的时候发现:所有的流控规则都消失了,其实这是因为相关数据都是保存在内存里的,一旦应用重启,这些数据就会被清楚,所以为了解决这个问题,Sentinel专门提供了动态数据源支持
目前,Sentinel支持多个数据源的拓展:Consul、ZK等等,下面我们主要讲一下集成Nacos实现动态流控规则,步骤如下:
1、添加Nacos数据源的依赖
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
<version>1.7.0</version>
</dependency>
2、添加配置文件
spring:
application:
name: sentinel-server
cloud:
sentinel:
transport:
dashboard: 127.0.0.1:8080
datasource: #支持redis、zk等中间件,用哪一个,下面的- key就跟上哪一个即可
- nacos:
server-addr: 127.0.0.1:8848
data-id: ${spring.application.name}-nacos
group-id: DEFAULT_GROUP
data-type: json
rule-type: flow
3、定义一个接口
@RestController
public class DashController {
@GetMapping("/dash")
public String dash(){
return "dash";
}
}
4、 进入Nacos控制台,添加配置文件
5、启动项目,查看Sentinel Dashboard流控规则列表
?这个资源名,会在服务启动的时候,加载nacos刚才配置的资源,然后调用/dynamic接口,会出现限流json,如下:
?至此,动态限流规则就完成了
|