1.问题描述
经过我们多次的测试发现,一旦重启服务后,sentinel配置的规则就被初始化了,需要我们重新再配置,如果上生产环境的话肯定需要持久化的。
2.持久化效果
例如我们服务的端口号为8401,我们将限流规则配置持久化进Nacos保存,只要刷新8401某个rest地址,sentinel控制台的流控规则就能看到,只要Nacos里的配置不删除,针对8401上Sentinel的流控规则就持续有效
3.持久化配置
3.1引入依赖
首先要在工程里引入sentinel持久化的依赖
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
3.2添加Nacos数据源配置
在application.yml里添加
3.3在Nacos里新建配置
注意:data ID要和yaml里配置的data ID保持一直
流控规则:
resource:资源名称;
limitApp:来源应用;
grade:阈值类型,0表示线程数,1表示QPS;
count:单机阈值;
strategy:流控模式。0表示直接,1表示关联,2表示链路;
controlBehavior:流控效果,0表示快速失败,1表示Warm up,2表示排队等待;
clusterMode:是否集群
其实这些参数就是sentinel新增流控规则的input属性
到这里我们的持久化就配置好了。
4.测试
我们重启服务可以直接看到配置的持久化规则了。
而且测试一下也是生效的。