Spring-cloud学习笔记---基于Nacos持久化Sentinel流控及降级规则数据

Spring-cloud学习笔记—基于Nacos持久化Sentinel流控和降级

1. 改造成持久化项目的过程

  1. Sentinel Dashboard中添加的规则数据存储在内存,微服务停掉规则数据就消失,在⽣产环境下不合适。我们可以将Sentinel规则数据持久化到Nacos配置中⼼,让微服务从Nacos获取规则数据。
  2. 引入jar包
    <!-- Sentinel支持采用 Nacos 作为规则配置数据源,引入该适配依赖 -->
            <dependency>
                <groupId>com.alibaba.csp</groupId>
                <artifactId>sentinel-datasource-nacos</artifactId>
            </dependency>
    
  3. 修改配置文件:其中配置的data-id要添加到nacos
    # Sentinel Nacos数据源配置,Nacos中的规则会自动同步到sentinel流控规则中
        sentinel: 
          datasource: 
            # 自定义的流控规则数据源名称
            flow: 
              nacos: 
                server-addr: ${spring.cloud.nacos.discovery.server-addr}
                data-id: ${spring.application.name}-flow-rules
                groupId: DEFAULT_GROUP
                data-type: json
                rule-type: flow  # 类型来自RuleType类
            # 自定义的降级规则数据源名称
            degrade: 
              nacos: 
                server-addr: ${spring.cloud.nacos.discovery.server-addr}
                data-id: ${spring.application.name}-degrade-rules
                groupId: DEFAULT_GROUP
                data-type: json
                rule-type: degrade  # 类型来自RuleType类
    

2. 添加自定义的流控规则

  1. 向naccos中添加自定义的流控规则:Nacos Server中添加对应规则配置集(public命名空间—>DEFAULT_GROUP中添加),流控规则配置集 ${spring.application.name}-flow-rules,nacos中的配置持久化配置如下:
    [
    	{
    		"resource":"findResumeOpenState",
    		"limitApp":"default",
    		"grade":1,
    		"count":1,
    		"strategy":0,
    		"controlBehavior":0,
    		"clusterMode":false
    	 }
    ]
    
  2. 流控规则所有属性来⾃源码FlowRule类
    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:true/false 是否集群

3.添加自定义的降级规则配置集

  1. 降级规则配置集 ${spring.application.name}-degrade-rules
    [
    	 {
    		"resource":"findResumeOpenState",
    		"grade":2,
    		"count":1,
    		"timeWindow":5
    	 }
    ]
    
  2. 降级规则配置集的所有属性来⾃源码DegradeRule类
    1. resource:资源名称
    2. grade:降级策略 0 RT 1 异常⽐例 2 异常数
    3. count:阈值
    4. timeWindow:时间窗

4.Sentinel中的Rule 源码体系结构

在这里插入图片描述

5.注意

  1. ⼀个资源可以同时有多个限流规则和降级规则,所以配置集中是⼀个json 数组
  2. Sentinel控制台中修改规则,仅是内存中⽣效,不会修改Nacos中的配置值,重启后恢复原来的值;
  3. Nacos控制台中修改规则,不仅内存中⽣效,Nacos中持久化规则也⽣效,重启后规则依然保持
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值