微服务守护神-Sentinel-降级规则
创始人
2024-03-28 16:13:52
0

引言

书接上篇 微服务守护神-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 极简入门

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...