SpringCloud 规则持久化

SpringCloud 规则持久化

1 规则持久化

**规则没有持久化问题:**如果 sentinel 流控规则没有持久化,当重启调用 API/接口 所在微服务后,规则就会丢失,需要重新加入。

2 规则持久化方案

2.1 阿里云 Ahas[最方便/付费]

官 方 文 档 : https://help.aliyun.com/product/87450.html?spm=5176.cnahas.0.0.78034bb7ef0y86

image-20230605201755351

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配置了)

image-20230605202059281

[
    {
        "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

第五步、测试

  1. 启动 Nacos Server 8848
  2. 启动 Sentinel8080 控制台/Sentinel dashboard
  3. 启动 member-service-nacos-provider-10004/10006
  4. 启动 member-service-nacos-consumer-80
  5. 浏览器: http://localhost/member/openfeign/consumer/get/1

查看 Sentinel 控制台,发现已经同步了流控规则

image-20230605202644274

image-20230605202653225

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xjz_2002

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值