目录
一、简介
Sentinel Dashboard中添加的规则是存储在内存中的,只要服务重启流控规则就丢失了,一旦我们重启应用,sentinel规则将消失,生产环境需要将配置规则进行持久化。下面我们就来看看如何持久化sentinel流控规则。
二、sentinel持久化案例
我们先来看看没有配置持久化规则的情况:
启动【springcloudalibaba-sentinel-service8401】服务,浏览器访问:http://localhost:8401/sentinel
在sentinel控制台配置/sentinel资源对应的流控规则:
然后我们停掉【springcloudalibaba-sentinel-service8401】服务然后再重新启动,回到sentinel控制台观察流控规则是否还存在:
我们发现,当我们重启服务后,sentinel控制台配置的流控规则消失了,可见sentinel控制台配置的流控规则时临时的。
下面我们来看下如何将sentinel流控规则进行持久化。我们需要稍微改造一下模块【springcloudalibaba-sentinel-service8401】
【a】pom.xml加入如下依赖
<!--SpringCloud ailibaba sentinel-datasource-nacos 持久化-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
【b】application.yml:添加sentinel持久化配置
server:
port: 8401
spring:
application:
name: springcloudalibaba-sentinel-service
cloud:
nacos:
discovery:
server-addr: localhost:8848 #指定nacos服务器地址
sentinel:
transport:
dashboard: localhost:8080 #指定sentinel控制台的地址t
port: 8719 #sentinel api端口, 默认8719端口,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口
datasource:
ds1:
nacos:
server-addr: localhost:8848 #指定nacos服务器地址
dataId: ${spring.application.name}
groupId: DEFAULT_GROUP
data-type: json
rule-type: flow
management:
endpoints:
web:
exposure:
include: '*' #配置对外暴露端口
【c】添加nacos业务规则配置
[
{
"resource": "/sentinel",
"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": 是否集群;
【d】重启8401服务
启动完成后浏览器访问:http://localhost:8401/sentinel
然后我们去sentinel控制台看下是否存在刚刚的流控规则:
我们发现,sentinel控制台的流控规则已经有了。
【e】快速访问业务接口http://localhost:8401/sentinel
可以看到,流控规则已经成功生效。
【f】停止8401服务
我们停止8401服务,发现sentinel控制台里面的流控规则又没有了。
然后我们重启8401服务, 重新请求几次对应资源接口http://localhost:8401/sentinel,再看sentinel控制台:
我们发现sentinel流控规则又出现了,这样就成功实现了sentinel规则的持久化。
三、总结
本篇文章主要介绍了如何将sentinel配置的流控规则持久化进nacos,这样保证每次重启服务后资源对应的流控规则都不会消失,在生产环境中,肯定是要将sentinel规则进行持久化的。以上相关项目的代码我已经放在Gitee上,有需要的小伙伴可以去拉取进行学习:https://gitee.com/weixiaohuai/springcloud_Hoxton,由于笔者水平有限,如有不对之处,还请小伙伴们指正,相互学习,一起进步。
下面是笔者总结的关于Spring Cloud Alibaba教程系列文章目录,有需要的小伙伴可以前往学习:
2. Spring Cloud Alibaba Nacos之服务注册中心
3. Spring Cloud Alibaba Nacos之服务配置中心
4. Spring Cloud Alibaba Nacos集群和持久化配置
5. Spring Cloud Alibaba Sentinel之入门篇
6. Spring Cloud Alibaba Sentinel之流控规则篇
7. Spring Cloud Alibaba Sentinel之服务降级篇
8. Spring Cloud Alibaba Sentinel之热点参数限流篇
9. Spring Cloud Alibaba @SentinelResource配置详解
10. Spring Cloud Alibaba Sentinel之服务熔断篇
11. Spring Cloud Alibaba Sentinel之持久化篇