引言

书接上篇 微服务守护神-Sentinel-流控规则,上面介绍了Sentinel流控规则,本篇继续来Sentinel的降级规则。

降级规则

那啥为降级呢?降级可以理解为下降等次,比如:你从广州到北京,有钱时,你可以坐头等舱去北京,没钱时,你可以坐动车去北京。目标一样,方式不同,体验不同。飞机比动车,动车就是降级。开发中也是一样,比如:服务A调用服务B,理想状态返回服务A想要的结果,如果哪天服务B宕机了调不通,此时走降级,快速返回调用异常提示结果。保证时间用在该用的地方。

Sentinel降级规则就是设置当满足什么条件的时候,对服务进行降级。Sentinel提供了三个衡量条件:

  • 慢调用比例: 选择以慢调用比例作为阈值,需要设置允许的慢调用 RT(即最大的响应时间),请求的响应时间大于该值则统计为慢调用。当单位统计时长内请求数目大于设置的最小请求数目,并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求响应时间小于设置的慢调用 RT 则结束熔断,若大于设置的慢调用 RT 则会再次被熔断。

  • 异常比例: 当单位统计时长内请求数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。

  • 异常数:当单位统计时长内的异常数目超过阈值之后会自动进行熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。

慢调用比例案例

步骤1:在shop-order-server项目中新增FallBackController.java类

package cn.wolfcode.controller;
@RestController
@Slf4j
public class FallBackController {@RequestMapping("/fallBack1")public String fallBack1(){try {log.info("fallBack1执行业务逻辑");//模拟业务耗时TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}return "fallBack1";}
}

步骤2:新增降级规则

上面配置表示,如果在1S之内,有【超过1个的请求】且这些请求中【响应时间>最大RT】的【请求数量比例>10%】,就会触发熔断,在接下来的10s之内都不会调用真实方法,直接走降级方法。

比如: 最大RT=900,比例阈值=0.1,熔断时长=10,最小请求数=10

  • 情况1: 1秒内的有20个请求,只有10个请求响应时间>900ms, 那慢调用比例=0.5,这种情况就会触发熔断

  • 情况2: 1秒内的有20个请求,只有1个请求响应时间>900ms, 那慢调用比例=0.05,这种情况不会触发熔断

  • 情况3: 1秒内的有8个请求,只有6个请求响应时间>900ms, 那慢调用比例=0.75,这种情况不会触发熔断,因为最小请求数这个条件没有满足.

注意: 我们做实验的时候把最小请求数设置为1,因为在1秒内,手动操作很难在1s内发两个请求过去,所以要做出效果,最好把最小请求数设置为1。

步骤3:测试访问: http://localhost:8091/fallBack1

异常比例案例

步骤1:在shop-order-server项目的FallBackController.java类新增fallBack2方法

int i=0;
@RequestMapping("/fallBack2")
public String fallBack2(){log.info("fallBack2执行业务逻辑");//模拟出现异常,异常比例为33%if(++i%3==0){throw new RuntimeException();}return "fallBack2";
}

步骤2:新增降级规则

上面配置表示,在1s之内,,有【超过3个的请求】,异常比例30%的情况下,触发熔断,熔断时长为10s.

步骤3:测试访问: http://localhost:8091/fallBack2

异常数案例

步骤1:在shop-order-server项目的FallBackController.java类新增fallBack3方法

@RequestMapping("/fallBack3")
public String fallBack3(String name){log.info("fallBack3执行业务逻辑");if("wolfcode".equals(name)){throw new RuntimeException();}return "fallBack3";
}

步骤2:新增降级规则

上面配置表示,在1s之内,,有【超过3个的请求】,请求中超过2个请求出现异常就会触发熔断,熔断时长为10s

步骤3:测试访问: http://localhost:8091/fallBack3

ok,到这,sentinel的降级规则就ok啦,后面还有啥规则呢?且听下回分解。

 看文字不过瘾可以切换视频版:SpringCloud Alibaba 极简入门

微服务守护神-Sentinel-降级规则相关推荐

  1. 微服务守护神-Sentinel-流控规则

    引言 书接上篇微服务守护神-Sentinel-概念,上面介绍了Sentinel相关概念,本篇就来看下Sentinel的流控规则. 流控规则 流量控制,其原理是监控应用流量的QPS(每秒查询率) 或并发 ...

  2. Spring Cloud Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(JMeter模拟测试)

    文章目录 一. Sentinel概念 1. 什么是Sentinel? 2. Sentinel功能特性 3. Sentinel VS Hystrix 二. Docker部署Sentinel Dashbo ...

  3. 哨兵 双向 java_SpringCloud微服务:Sentinel哨兵组件,管理服务限流和降级

    一.基本简介 1.概念描述 Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性.包括核心的独立类库,监控台,丰富的使用场景验证.(这似乎是阿里开源组件的一贯 ...

  4. Alibaba微服务组件Sentinel

    Alibaba微服务组件Sentinel 1.分布式系统遇到的问题 服务的可用性问题 ​ 提供系统可用性的关键是在相关组件失效情况下,系统能多快恢复并继续正确提供服务.当服务器挂掉的时候首先想到什么原 ...

  5. (二)微服务保护——限流规则

    微服务保护--限流规则 一.快速入门: 1.簇点链路: 二.流控模式: (一)三种模式: (二)关联模式: 1.例子: 2. 使用场景: 3.案例: (三)链路模式: 1.例子: 2.案例 三.流控效 ...

  6. java服务限流_SpringCloud微服务:Sentinel哨兵组件,管理服务限流和降级

    一.基本简介 1.概念描述 sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性.包括核心的独立类库,监控台,丰富的使用场景验证.(这似乎是阿里开源组件的一贯 ...

  7. SpringCloud微服务:Sentinel哨兵组件,管理服务限流和降级

    源码地址:GitHub·点这里||GitEE·点这里 一.基本简介 1.概念描述 Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性.包括核心的独立类库,监 ...

  8. Sentinel微服务流量控制熔断降级及稳定性监控IO框架

    目录 Sentinel 介绍 Sentinel 的历史 Sentinel 基本概念 资源 规则 Sentinel 功能和设计理念 流量控制 熔断降级 系统负载保护 Sentinel 是如何工作的 快速 ...

  9. SpringCloud_Alibaba微服务学习---sentinel—流量卫兵

    sentinel-流量卫兵 一. Sentinel介绍 二. Sentinel使用 ①. sentinel dashboard的安装 1.下载 2.启动 3.访问web界面 4.登录 ②. senti ...

  10. 微服务之Hystrix降级熔断

    前言 分布式系统面临的问题-----服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的"扇出".如果扇出的链 ...

最新文章

  1. 实验记录:vsftp整合mysql-pam管理虚拟账号
  2. 集成运放组成的电压比较器
  3. 第三次学JAVA再学不好就吃翔(part110)--使用指定的码表读写字符
  4. 基于spring-redis发布订阅模式的实现
  5. ETL调度工具 taskctl-> Designer 设计IDE环境
  6. 运行 DAEMON TOOL 时 提示 Virtual SCSI driver not detected
  7. 美国专利申请策略整理
  8. 计算机老提示安全证书到期,安全证书过期,教您怎么解决网站安全证书过期
  9. 最优投资组合的确定matlab,最优投资组合问题的数学模型
  10. jeecms mysql_jeecms学习笔记
  11. c语言杖举,形近字组词。直()植()杖()仗()提()题()漫()慢()
  12. “2018 Unreal Open Day 虚幻引擎技术开放日”活动开启预售
  13. Latex大括号及多行公式
  14. Python短链接生成、长链接还原,就是这么简单!
  15. IOS免费抓包神器——Stream
  16. MATLAB可以使用但是使用help函数报错问题的解决
  17. android RemoteViews用法
  18. Windows间歇性高ping(高延迟)解决办法
  19. se.arch.php,arch暴涨,数据库差点挂。请教
  20. java jdk v1.6_jdk1.6 64位

热门文章

  1. Unity3D游戏开发从零单排(五) - 导入CS模型到Unity3D
  2. java超链接颜色_Java技巧(一):会变色的超链接
  3. 那些你该知道的CSS颜色代码大全都在这里了,点击查阅
  4. 圣剑传说 玛娜传奇(Legend of Mana)(LOM)全武器取得方法
  5. 我在南大的七年(刘未鹏先生)
  6. Composer加载的symfony/var-dumper类库 字体大小样式设置
  7. 邮件服务器SASL TLS 反垃圾邮件系统
  8. 实时音频编解码之四 LPC和LSF
  9. css盒模型(标准模式和怪异模式)
  10. Duplicate entry '0' for key 'PRIMARY' 分析及其解决办法