规则持久化
1. 是什么
在Sentinel中配置的规则在资源所在的服务重启后就消失了
以cloudalibaba-sentinel-service8401为例进行说明
启动单机版Nacos
启动Sentinel
启动cloudalibaba-sentinel-service8401
为cloudalibaba-sentinel-service8401中的/rateLimit/byUrl这个接口配置Sentinel规则
多次访问http://localhost:8401/rateLimit/byUrl,触发降级
重启cloudalibaba-sentinel-service8401,规则没有了
2. 怎么玩
将限流配置规则持久化进Nacos保存,只要刷新8401某个rest地址,sentinel控制台的流控规则就能看到,只要Nacos里面的配置不删除,针对8401上Sentinel上的流控规则持续有效
注:并不是一定要持久化到Nacos中,只不过官方推荐这种方式
3. 步骤
修改cloudalibaba-sentinel-service8401
-
改POM,增加如下依赖
<!--SpringCloud ailibaba sentinel-datasource-nacos 后续做持久化用到--> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> </dependency>
-
改YML,添加Nacos数据源配置,增加如下配置项
spring: cloud: sentinel: datasource: ds1: nacos: # Nacos位置 server-addr: 192.168.59.128:8848 # 实际上就是${spring.application.name} dataId: cloudalibaba-sentinel-service groupId: DEFAULT_GROUP # Nacos中配置文件的类型 data-type: json rule-type: flow
完整的YML文件如下
server: port: 8401 spring: application: name: cloudalibaba-sentinel-service cloud: nacos: discovery: server-addr: 192.168.59.128:8848 sentinel: transport: dashboard: 192.168.59.128:8080 port: 8719 #默认8719,假如被占用了会自动从8719开始依次+1扫描。直至找到未被占用的端口 datasource: ds1: nacos: # Nacos位置 server-addr: 192.168.59.128:8848 # 实际上就是${spring.application.name} dataId: cloudalibaba-sentinel-service groupId: DEFAULT_GROUP # Nacos中配置文件的类型 data-type: json rule-type: flow management: endpoints: web: exposure: include: '*'
-
Nacos中增加业务规则配置
- resource:资源名称;
- limitApp:来源应用;
- grade:阈值类型,0表示线程数,1表示QPS;
- count:单机阈值;
- strategy:流控模式,0表示直接,1表示关联,2表示链路;
- controlBehavior:流控效果,0表示快速失败,1表示Warm Up,2表示排队等待
- clusterMode:是否集群。
-
重启cloudalibaba-sentinel-service8401,目前的规则列表还是空的
-
多次访问http://localhost:8401/rateLimit/byUrl,规则加载出来了。
至此,规则持久化配置完成。
标签:系列,cloudalibaba,service8401,Nacos,sentinel,规则,Sentinel,持久 From: https://www.cnblogs.com/wzzzj/p/18039352