默认情况下一旦重启微服务,那么Sentinel配置的规则直接会丢失,重启后需要重新配置规则,假如在生产环境一个应用有很多个服务,假如应用重启那么所有服务都得重新配置,那么就非常麻烦
Sentinel提供了持久化配置,它可以使用Mysql,Redis,文件,Nacos做未持久化数据的源,一般使用Nacos作为Sentinel的持久化源
操作:将限流配置规则持久化进Nacos保存,只要刷新8401某个rest地址,sentinel控制台的流控规则就能看到,只要nacos里面的配置不删除,针对8401上的sentinel流控规则就持续有
一,Sentinel微服务端的配置
① maven
<!--实现服务的注册与发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--sentinel服务限流降级框架-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!--sentinel持久化依赖包-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
② application配置
server:
port: 9106
spring:
application:
name: cloudalibaba-sentinelmain-service
cloud:
nacos:
discovery:
server-addr: 192.168.68.134:8084 #nacos服务端地址,Nginx做了代理
sentinel:
transport:
dashboard: localhost:8080
port: 8719
datasource:
ds1:
nacos:
server-addr: 192.168.68.134:8084 #nacos的服务地址
data-id: cloudalibaba-sentinelmain-service #远程nacos配置文件的名称(唯一)
group-id: DEFAULT_GROUP #分组
data-type: json #数据类型为json
rule-type: flow
二,Nacos保存Sentinel规则
配置格式:选择 json 选项
配置内容:
- resource: 资源名称
- limitApp: 来源应用
- grade: 阈值类型,0表示线程,1表示QPS
- count: 单机阈值
- strategy: 流控模式,0表示直接,1表示关联,2表示链路
- controlBehavior: 流控效果,0表示快速失败,1表示Warm Up,2表示排队等待
- clusterMode: 是否集群
① 添加sentinel的规则配置到nacos
例:添加下列配置
[
{
"resource":"/testA",
"limitApp":"default",
"grade":1,
"count":1,
"strategy":0,
"controlBehavior":0,
"clusterMode":false
}
]







Comments | NOTHING