springcloud-alibaba (03)sentinel实现规则持久化-流控规则为例

Sentinel和Nacos的整合可以实现规则动态配置,即在Nacos中修改规则后,Sentinel能够实时地读取并应用新的规则。而规则持久化则是指将规则保存在Nacos中,以避免意外故障或重启时规则被丢失。

实现规则持久化,可以按照以下步骤进行操作(流控规则为例):

  1. 📥 导入依赖
<!-- sentinel数据源持久化进nacos -->
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
  1. bootstrap.yml🧰 配置文件
spring:
  application:
    name: user-server
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.157.129:8848
      config:
        server-addr: 192.168.157.129:8848
        file-extension: yaml
    sentinel:
      transport:
        dashboard: 192.168.157.129:8081
        port: 8791
      web-context-unify: false
      datasource:
        # 自定义命名
        flow-rule:
          # 支持多种持久化数据源:file、nacos、zk、apollo、redis、consul
          nacos:
            # nacos服务地址
            server-addr: 192.168.157.129:8848
            # 命名空间,根据环境配置
#            namespace: public
            # 这里我做了一下细分,不同规则设置不同groupId
            group-id: USER_SENTINEL_FLOW_GROUP
            # 仅支持JSON和XML类型
            data-id: ${spring.application.name}
            # 规则类型:flow、degrade、param-flow、system、authority
            rule-type: flow
            data-type: json
  1. 🛡️ 编写接口
@GetMapping("/get001")
@SentinelResource(value = "/resource/user/get001")
public Integer get001(@RequestParam("i") Integer i){
    return 111;
}
  1. 在Nacos中创建一个配置文件,用于保存Sentinel规则

📝 创建配置文件

Data ID和Group需要对应

在这里插入图片描述

流控规则持久化配置参数:

[
    {
        "resource": "/resource/user/get001",
        "limitApp": "default",
        "grade": 1,
        "count": 1,
        "strategy": 0,
        "controlBehavior": 0,
        "clusterMode":  false
    }
]

流控规则持久化配置参数说明:
🔧 配置规则

  • resource : 资源名称(@SentinelResource(value = "/resource/user/get001")
  • limitApp : 来源应用
  • grade : 0表示线程数,1表示QPS
  • count : 单机阈值
  • strategy : 流控模式,0直接,1关联,2链路
  • controllerBehavior : 流控效果,0快速失败,1Warm Up,2排队等待
  • clusterMode : 是否集群

在这里插入图片描述

  1. 重新启动服务,然后访问/resource/user/get001资源,刷新一下Sentinel控制台就可以看到我们在Nacos里配置的流控规则了
    🚀 重启服务
    在这里插入图片描述

👀 更新规则

如果在Nacos中更新了规则,Sentinel会自动读取并应用新的规则。同时,也可以从Sentinel Dashboard中查看规则信息。

请注意,Sentinel Nacos适配器要求Nacos版本为1.1.4及以上。在使用之前,请确保您安装的Nacos版本满足要求。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bilal-abdurehim

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

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

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

打赏作者

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

抵扣说明:

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

余额充值