SpringCloud 规则持久化
文章目录
- SpringCloud 规则持久化
- 1 规则持久化
- 2 规则持久化方案
- 2.1 阿里云 Ahas[最方便/付费]
- 2.2 在 Nacos Server 配置规则, 完成持久化 -官方推荐
- 2.3 将规则持久化到本地文件, 定时同步
- 3 Nacos Server 配置中心-规则持久化实例
1 规则持久化
**规则没有持久化问题:**如果 sentinel 流控规则没有持久化,当重启调用 API/接口 所在微服务后,规则就会丢失,需要重新加入。
2 规则持久化方案
2.1 阿里云 Ahas[最方便/付费]
官 方 文 档 : https://help.aliyun.com/product/87450.html?spm=5176.cnahas.0.0.78034bb7ef0y86
2.2 在 Nacos Server 配置规则, 完成持久化 -官方推荐
2.3 将规则持久化到本地文件, 定时同步
3 Nacos Server 配置中心-规则持久化实例
需 求 : 为 member-service-nacos-consumer 微服务的 /member/openfeign/consumer/get/1 API 接口添加流控规则 QPS=1/快速失败
第一步、在Nacos Server 配置中心增加 Sentinel 客户端/微服务模块 的流控规则
DataId:填写要持久化的sentinel客户端/微服务名(名字在对应微服务的application.yml配置了)
[
{
"resource": "/member/openfeign/consumer/get/1",
"limitApp": "default",
"grade": 1,
"count": 1,
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}
]
第二步、在 Nacos Server 配置中心增加 Sentinel 客户端/微服务模块 的流控规则参数说明
- resource∶资源名称;
- limlitApp∶ 来源应用;
- grade∶阈值类型,0表示线程数,1表示QPS;
- count∶单机阈值
- strategy∶流控模式,0表示直接,1表示关联,2表示链路;
- controlBehavior∶流控效果,0表示快速失败,1表示Warm Up,2表示排队等
- clusterMode∶是否集群
第三步、修改对应微服务的 pom.xml, 加入 sentinel 和 nacos 持久化整合依赖
<!-- 加入 sentinel 和 nacos 持久化整合依赖 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
第四步、修改对应微服务的 application.yml, 配置该微服务从 Nacos Server 获取流控规则
server:
port: 80
spring:
application:
name: member-service-nacos-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848 # Nacos Server的地址
sentinel:
transport:
dashboard: localhost:8080 #这个是 sentinel控制台(sentinel dashboard)的地址
port: 8719 # 默认8719,假如被占用,会自动从 8719开始依次 +1扫描,直至找到未被占用的端口
#配置该微服务从 Nacos Server 获取流控规则
datasource:
ds1:
#流控规则配置是从nacos server 配置中心获取
nacos: #redis,mysql,zk等都可以配置
server-addr: localhost:8848 #指定 nacos server 配置中心的地址
dataId: xjz-id #nacos server配置中心的 dataId
groupId: DEFAULT_GROUP #指定组[nacos server配置中心]
data-type: json #指定配置流控规则的数据类型
rule-type: flow #规则类型:flow,degrade,param-flow,system等..
#暴露所有监控点
management:
endpoints:
web:
exposure:
include: '*'
# openfeign 和 sentinel 整合,必须配置
feign:
sentinel:
enabled: true
第五步、测试
- 启动 Nacos Server 8848
- 启动 Sentinel8080 控制台/Sentinel dashboard
- 启动 member-service-nacos-provider-10004/10006
- 启动 member-service-nacos-consumer-80
- 浏览器: http://localhost/member/openfeign/consumer/get/1
查看 Sentinel 控制台,发现已经同步了流控规则