Sentinel系列之(十)规则持久化

规则持久化

1. 是什么

在Sentinel中配置的规则在资源所在的服务重启后就消失了

以cloudalibaba-sentinel-service8401为例进行说明

启动单机版Nacos

启动Sentinel

启动cloudalibaba-sentinel-service8401

为cloudalibaba-sentinel-service8401中的/rateLimit/byUrl这个接口配置Sentinel规则

多次访问http://localhost:8401/rateLimit/byUrl,触发降级

重启cloudalibaba-sentinel-service8401,规则没有了

2. 怎么玩

​ 将限流配置规则持久化进Nacos保存,只要刷新8401某个rest地址,sentinel控制台的流控规则就能看到,只要Nacos里面的配置不删除,针对8401上Sentinel上的流控规则持续有效

注:并不是一定要持久化到Nacos中,只不过官方推荐这种方式

3. 步骤

修改cloudalibaba-sentinel-service8401

  • 改POM,增加如下依赖

    <!--SpringCloud ailibaba sentinel-datasource-nacos 后续做持久化用到-->
    <dependency>
        <groupId>com.alibaba.csp</groupId>
        <artifactId>sentinel-datasource-nacos</artifactId>
    </dependency>
    
  • 改YML,添加Nacos数据源配置,增加如下配置项

    spring:
      cloud:
        sentinel:
          datasource:
            ds1:
              nacos:
                # Nacos位置
                server-addr: 192.168.59.128:8848
                # 实际上就是${spring.application.name}
                dataId: cloudalibaba-sentinel-service
                groupId: DEFAULT_GROUP
                # Nacos中配置文件的类型
                data-type: json
                rule-type: flow
    

    完整的YML文件如下

    server:
      port: 8401
    
    spring:
      application:
        name: cloudalibaba-sentinel-service
      cloud:
        nacos:
          discovery:
            server-addr: 192.168.59.128:8848
        sentinel:
          transport:
            dashboard: 192.168.59.128:8080
            port: 8719  #默认8719,假如被占用了会自动从8719开始依次+1扫描。直至找到未被占用的端口
          datasource:
            ds1:
              nacos:
                # Nacos位置
                server-addr: 192.168.59.128:8848
                # 实际上就是${spring.application.name}
                dataId: cloudalibaba-sentinel-service
                groupId: DEFAULT_GROUP
                # Nacos中配置文件的类型
                data-type: json
                rule-type: flow
    management:
      endpoints:
        web:
          exposure:
            include: '*'
    
  • Nacos中增加业务规则配置

    • resource:资源名称;
    • limitApp:来源应用;
    • grade:阈值类型,0表示线程数,1表示QPS;
    • count:单机阈值;
    • strategy:流控模式,0表示直接,1表示关联,2表示链路;
    • controlBehavior:流控效果,0表示快速失败,1表示Warm Up,2表示排队等待
    • clusterMode:是否集群。
  • 重启cloudalibaba-sentinel-service8401,目前的规则列表还是空的

  • 多次访问http://localhost:8401/rateLimit/byUrl,规则加载出来了。

至此,规则持久化配置完成。

posted @   刘二水  阅读(150)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示