上文中我记录了在Springboot项目中链接sentinel-dashboard使用限流规则的全过程。
但是呢,有一个小小的问题,我重启了一下我本地的sentinel-dashboard服务,然后,我之前创建的所有的流控规则都没了……
这……好像有点不合理啊,咱就不能找地儿存储一下?你这一重启就没了,我这可咋整。
Sentinel的流控配置是可以存储在nacos配置中心中的。但是这个我好想没有在官方文档中找到对应的信息。
嗯,有点意思~
下边我记录一下Springboot3整合sentinel将规则持久化到nacos配置中心的全过程。
一:添加pom依赖
<!-- sentinel-Nacos 配置持久化 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
<version>1.8.8</version>
</dependency>
二:yml配置文件
spring:
cloud:
sentinel:
eager: true #是否开启网关限流,默认true
transport:
dashboard: 127.0.0.1:8858
#clientIp: 113.226.34.58
#port: 8857 #跟控制台交流的端口,随意指定一个未使用的端口即可
datasource:
ds:
nacos:
server-addr: 127.0.0.1:8848 # nacos IP 这个可以是远程ip,只要能访问到即可
username: nacos # 用户名
password: nacos # 密码
namespace: a005a00c-35b4-4891-bedb-e2709d55f672 # 命名空间
data-id: cloudalibaba-sentinel-service # 设置Nacos中配置文件的名字
group-id: DEFAULT_GROUP # 所属组
data-type: json # 配置文件格式
rule-type: flow # 必填的重要字段,指定当前规则类型是"限流“ 也可以是 degrade, param-flow, etc.
重点是datasource开头那段儿,参数具体是啥意思如下图所示:
都有标记,具体参照即可。
三:限流规则配置
具体配置信息请参考官方文档:
官方文档没事多看看,能发现一些很有意思的事情,我就是掉进了不仔细看官方文档的坑。
[{
"resource": "msg1",
"limitApp": "default",
"grade": 1,
"count": 1,
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}]
上方对应字段的解释:
#resource: 资源名称;
#limitApp:来源应用;
#grade:阈值类型, 0表示线程数, 1表示QPS;
#count:单机阈值;
#strategy:流控模式,0表示直接,1表示关联, 2表示链路;
#controlBehavior:流控效果,0表示快速失败, 1表示Warm Up, 2表示排队等待;
#clusterMode:是否集群。
这部分官方文档里边有,参考即可。
最后这里需要注意,你在sentinel-dashboard中创建的规则是不会直接写入到nacos配置中心对应的配置文件中的。
持久化的意思是,sentinel-dashboard每次启动的时候都会去nacos配置中心读取对应的配置。
所以,需要将对应的配置提前写到nacos配置中心的配置文件中。
最后注意一点,在代码中定义的规则和存储在nacos配置中心的规则好像不能同时使用,在代码中定义的规则的优先级貌似比存储在nacos配置中心中的规则要高。
有好的建议,请在下方输入你的评论。