首页 > 其他分享 >Sentinel系列之(五)降级规则

Sentinel系列之(五)降级规则

时间:2024-02-28 11:15:09浏览次数:14  
标签:降级 系列 1s testD Sentinel 窗口 异常

降级规则

官网:https://sentinelguard.io/zh-cn/docs/circuit-breaking.html

1. 基本介绍

​ Sentinel熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。
​ 当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出 DegradeException)。

注:Sentinel的断路器是没有半开状态的

降级策略

  • 平均响应时间(DEGRADE GRADE_RT ):当1s内持续进入5个请求,对应时刻的平均响应时间(秒级)均超过阈值(count,以ms为单位),那么在接下的时间窗口( DegradeRule 中的timewindow,以s为单位)之内,对这个方法的调用都会自动地熔断(抛出DegradeException )。注意、 Sentinel默认统计的RT上限是4900 ms,超出此阈值的都会算作4900ms,若需要变更此上限可以通过启动配置项-Dcsp.sentinel.statistic.max.rt=xxx来配置。

    秒级:平均响应时间(这个响应时间指的是接口的执行时间)超出阈值(指上图中设置的RT的值)且在1s内通过的请求 >=5,两个条件同时满足触发降级,时间窗口过后关闭断路器,RT最大值为4900(更大的通过)启动配置项-Dcsp.sentinel.statistic.max.rt=xxx来配置。

  • 异常比例( DEGRADE GRADE_EXCEPTION_RATTO ):当资源的每秒请求量>=5,并且每秒异常总数占通过量的比值超过阈值 ( DegradeRule 中的 count )之后,资源进入降级状态,即在接下的时间窗口( DegradeRule中的timewindow,以s为单位)之内,对这个方法的调用都会自动地返回。异常比率的阈值范围是[0.0,1.e],代表0%- 100%。

    秒级:QPS >= 5且异常比例(秒级统计)超过阈值(上图中设置的异常比例的值)时,触发降级;时间窗口结束后,关闭降级

  • 异常数(DEGRADE GRADE EXCEPTION cOUNT ):当资源近1分钟的异常数目超过阈值之后会进行熔断。注意由于统计时间窗口是分钟级别的,若 timewindow小于60s,则结束熔断状态后仍可能再进入熔断状态。

    分钟级:异常数(分钟统计)超过阈值(上图中设置的异常数的值)时,触发降级;时间窗口结束后,关闭降级

    注:异常数的时间窗口一定要大于等于60s

2. 降级策略
2.1 RT

基于cloudalibaba-sentinel-service8401项目继续进行配置

  • 修改FlowLimitController,增加如下代码

    @GetMapping("/testD")
    public String testD()
    {
        // 接口调用时间1s
        try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); }
        log.info("testD 测试RT");
    
        return "------testD";
    }
    
  • Sentinel中增加配置

    ​ 上述配置的含义是:1s内如果持续进入了5个请求,同时/testD接口的执行时间超过了200毫秒(RT的值),在未来的1s(时间窗口)内,断路器开启,改接口不可用,时间窗口后,接口恢复调用。

  • 配置JMeter

2.2 异常比例

基于cloudalibaba-sentinel-service8401项目继续进行配置

  • 修改FlowLimitController

    @GetMapping("/testD")
    public String testD()
    {
        log.info("testD 测试 异常比例");
        int count = 10 / 0;
        return "------testD";
    }
    
  • Sentinel中增加配置

    ​ 上述配置的含义是:1s内如果持续进入了5个请求,同时访问/testD接口每秒的异常比例超过了20%(异常比例的值),在未来的1s(时间窗口)内,断路器开启,改接口不可用,时间窗口后,接口恢复调用。

  • 配置JMeter

2.3 异常数

基于cloudalibaba-sentinel-service8401项目继续进行配置

  • 修改FlowLimitController,增加如下代码

    @GetMapping("/testE")
    public String testE()
    {
        log.info("testE 测试异常数");
        int age = 10/0;
        return "------testE 测试异常数";
    }
    
  • Sentinel中增加配置

    ​ 上述配置的含义是:1s内如果访问/testD接口的异常数目超过了5(异常数的值),在未来的70s(时间窗口)内,断路器开启,改接口不可用,时间窗口后,接口恢复调用。

  • 测试

    1秒内访问5次http://localhost:8401/testE,触发降级。

标签:降级,系列,1s,testD,Sentinel,窗口,异常
From: https://www.cnblogs.com/wzzzj/p/18039347

相关文章

  • Sentinel系列之(四)流控规则
    流控规则流量控制官网:https://github.com/alibaba/Sentinel/wiki/流量控制1.基本介绍资源名:唯一名称,默认请求路径针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不区分来源)阈值类型/单机阈值:QPS(每秒钟的请求数量):当调用该api的QPS达到阈值的时......
  • Sentinel系列之(三)初始化演示工程
    初始化演示工程1.构建cloudalibaba-sentinel-service8401建Module【cloudalibaba-sentinel-service8401】改POM<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="ht......
  • Sentinel系列之(二)安装Sentinel控制台
    安装Sentinel控制台Sentinel分为两个部分:核心库(ava客户端)不依赖任何框架/库,能够运行于所有Java运行时环境,同时对Dubbo/SpringCloud等框架也有较好的支持。【后台的监控程序】控制台(Dashboard)基于SpringBoot开发,打包后可以直接运行,不需要额外的Tomcat等应用容器。【前......
  • Sentinel系列之(一)简介
    简介SpringCloudAlibabaSentinel实现熔断与限流1.官网https://github.com/alibaba/Sentinelhttps://github.com/alibaba/Sentinel/wiki/介绍https://sentinelguard.io/zh-cn/docs/introduction.html2.是什么面向云原生微服务的流量控制、熔断降级组件。阿里版的Hystri......
  • Nacos系列之(一)简介
    简介SpringCloudAlibabaNacos服务注册和配置中心1.为什么叫NacosNamingConfigurationService2.是什么官网:一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心Nacos=Eureka+Config+Bus疑问:Bus是服务总线,为什么也包含在Nacos里3.能干嘛替代Eureka做服......
  • Nacos系列之(五)Nacos集群和持久化配置
    Nacos集群和持久化配置......
  • Nacos系列之(四)Nacos作为服务配置中心
    Nacos作为服务配置中心以前我们使用配置中心:我们把配置放到Github上,Config作配置中心,Bus实现配置动态刷新现在使用配置中心:配置放到Nacos中,Nacos作配置中心,Nacos实现配置动态刷新1.Nacos作为配置中心-基础配置建Module【cloudalibaba-config-nacos-client3377】改POM......
  • Nacos系列之(三)Nacos作为服务注册中心
    Nacos作为服务注册中心1.官网文档https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_nacos_discovery2.基于Nacos的服务提供者父POM加入如下依赖<!--springcloudalibaba2.1.0.RELEASE--><depende......
  • Nacos系列之(二)安装并运行Nacos
    安装并运行Nacos环境要求:Java8+Maven1.选用版本及下载选用版本:1.1.4下载地址:https://github.com/alibaba/nacos/releases/tag/1.1.42.运行2.1Linux下载后得到nacos-server-1.1.4.tar.gz解压后启动startup.sh-mstandalone注:不要直接执行startup.sh,因为默认会以集群......
  • SpringCloud系列之(十三)FAQ
    关于一些可能出现的报错1.DruidDataSource:testWhileIdleistrue,validationQuerynotset工程启动时可能会报如下错误,这是DruidDataSource保持链接的测试,不影响我们的应用。2.idea未监测到yml文件出现这种情况会造成文件内写配置的时候没有提示正常应该是这样的......