SpringCloudAlibaba Sentinel熔断降级+fallBack+block处理

SpringCloudAlibaba Sentinel(二)降级和熔断

接着上篇文章的内容,在Sentinel中如何进行降级和熔断呢?

熔断降级规则

降级规则

在Sentinel中降级主要有三个策略:RT(最大的响应时间)、异常比例、异常数,也是针对某个资源的设置。而在1.8.0+版本后RT改为了慢调用比例

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

> RT:表示该资源1s内处理请求的平均响应时间。

注意:RT值的上限是4900ms,即使超过也是4900ms,如需自定义,可以在启动sentinel时增加参数

-Dcsp.sentinel.statistic.max.rt=x

> 慢调用比例

依旧是在簇点链路的列表视图选择/sentinelTest一行,进入熔断,设置参数如图:

在这里插入图片描述

RT设置为800ms,熔断时长设置为20s,为了测试效果,把接口睡眠1s。

@RequestMapping("/sentinelTest")
public String sentinelTest() throws InterruptedException {
   
    Thread.sleep(1000);
    return "sentinel-consumer9001 sentinelTest" + RandomUtils.nextInt(0, 1000);
}

解读:响应时间超过RT(即最大的响应时间)值的请求被称为慢调用。

在单位时间(上图的统计时长1s)内,请求的数量大于最小请求数(5),且慢调用的比例>=阈值,

此资源进入熔断状态(20s内不可用)。

Jmeter请求/sentinelTest,使用10个线程执行100次结果。

在这里插入图片描述

前面几个请求是正常返回数据,后面全部降级处理,直接返回提示信息(此时该资源已经进入了熔断状态,可以理解为家里的电闸给关了,必须重新打开电闸,才能恢复使用电力)。后面这个资源无论怎样被调用,都无法进入接口,直接返回提示。

异常比例

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

表示请求该资源的异常总数占比。先模拟一个异常

@RequestMapping("/sentinelTest")
public String sentinelTest() {
   
    int i = 1 / 0; // 除数为0
    return "sentinel-consumer9001 sentinelTest" + RandomUtils.nextInt(0, 1000);
}

设置规则

在这里插入图片描述

解读:当1s内,请求数量>5,且异常的比例大于80%,熔断20s

调用资源

在这里插入图片描述

前几个请求正常请求返回异常提示,而后面的所有请求直接被拒绝访问。

> 异常数

该资源近1分钟内的异常数量。

在这里插入图片描述

解读:当1s内,请求数量>5,且异常的数量>=10,熔断20s

经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来

的一个请求成功完成(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值