视频链接:2020最新版SpringCloud框架开发教程-周阳
文章源码:https://github.com/geyiwei-suzhou/cloud2020/
启动cloudalibaba-sentinel-service8401模块,访问:http://localhost:8401/rateLimit/byUrl,然后在Sentinel中添加一条流控规则,再访问http://localhost:8401/rateLimit/byUrl 发现流控规则生效。重启cloudalibaba-sentinel-service8401模块,再访问Sentinel,发现流控规则丢失
默认情况下,重启应用,sentinel规则将消失,生产环境需要将配置规则进行持久化
持久化:将限流配置规则持久化到Nacos保存,只要刷新8041某个rest地址,sentinel控制台的流控规则就能看到,只要Nacos里面的配置不删除,针对8401上sentinel上的流控规则持久有效
cloudalibaba-sentinel-service8401模块
1. 改pom,添加依赖
前面已经提前加过
<!-- SpringCloud alibaba sentinel-datasource-nacos -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
2. 改yml,添加Nacos数据源配置
在sentinel节点下添加子节点
datasource:
ds1:
nacos:
server-addr: loaclhost:8848
dataId: cloudalibaba-sentinel-service
groupId: DEFAULT_GROUP
data-type: json
rule-type: flow
根节点添加
feign:
sentinel:
enabled: true # 激活Sentinel对Feign的支持
3. 添加Nacos配置
在配置列表中点击添加,添加如下配置
[
{
"resource": "/rateLimit/byUrl",
"limitApp": "default",
"grade": 1,
"count": 1,
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}
]
项目 | Value |
---|---|
resource | 资源名称 |
limitApp | 来源应用 |
grade | 阈值类型,0表示线程数,1表示QPS |
count | 单机阈值 |
strategy | 流控模式,0表示直接,1表示关联,2表示链路 |
controlBehavior | 流控效果,0表示快速失败,1表示Warm Up,2表示排队等待 |
clusterMode | 是否集群 |
启动:cloudalibaba-sentinel-service8401 模块,访问Sentinel,发现读取到了Nacos中的流控规则
停止cloudalibaba-sentinel-service8401 模块,发现Sentinel中配置消失,重新启动还是没有出现(懒加载),再访问http://localhost:8401/rateLimit/byUrl ,发现Sentinel中配置再次显示