赞
踩
接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第十七篇,即使用 Sentinel 实现规则持久化。
从前面我们做的实验可知,一旦我们重启应用,sentinel 规则将消失,生产环境需要将配置规则进行持久化,以保证正常的运行。
可以将限流配置规则持久化进 Nacos 保存,只要刷新 8401 某个 res t地址,sentinel 控制台的流控规则就能看到,只要 Nacos 里面的配置不删除,针对 8401 上 sentinel 上的流控规则持续有效。
首先确保 cloudalibaba-consumer-nacos-order8401 模块的 pom.xml 中引入了 相关的依赖,如下:
- <!--SpringCloud ailibaba sentinel-datasource-nacos 后续做持久化用到-->
- <dependency>
- <groupId>com.alibaba.csp</groupId>
- <artifactId>sentinel-datasource-nacos</artifactId>
- </dependency>
接下来需要在 application.yml 中添加 Nacos 数据源的支持,如下:
- server:
- port: 8401
-
- spring:
- application:
- name: cloudalibaba-sentinel-service
- cloud:
- nacos:
- discovery:
- server-addr: localhost:8848 # Nacos服务注册中心地址
- sentinel:
- transport:
- dashboard: localhost:8080 # 配置Sentinel dashboard地址
- # 默认8719端口,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口
- port: 8719
- # 添加 Nacos 数据源的配置
- datasource:
- ds1:
- nacos:
- server-addr: localhost:8848
- dataId: cloudalibaba-sentinel-service
- groupId: DEFAULT_GROUP
- data-type: json
- rule-type: flow
- management:
- endpoints:
- web:
- exposure:
- include: '*'
-
打开 nacos 的管理界面,添加 nacos 的业务规则配置,如下图:
配置详解如下:
1、resource:资源名称
2、limitApp:来源应用
3、grade:闻值类型,0 表示线程数,1 表示 QPS
4、count:单机阈值
5、strategy:流控模式,0 表示直接,1 表示关联,2 表示链路
6、controlBehavior:流控效果,0 表示快速失败,1 表示 Warm Up,2 表示排队等待
7、clusterMode:是否集群
启动 8401 模块后, 调用 http://localhost:8401/rateLimit/byUrl,刷新 sentinel 发现流控规则有了,如下图:
快速访问测试接口,可以看到,限流是没有任何问题的,如下图:
此时停止 8401 模块,再看 sentinel 管理界面,如下图,可以看到,流控规则没有了
重新启动 8401 再看 sentinel,等待一会,并且多次调用 http://localhost:8401/rateLimit/byUrl,如下图,重新配置出现了,持久化验证通过。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。