Spring Cloud Alibaba - Sentinel入门案例(三)(降级规则 | RT / 异常比例 / 异常数)
回溯
什么是Sentinel?
Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量
为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。
本文主要讲解 Sentinel 容错功能之一 降级规则 。
正文
环境准备
需要启动好 Sentinel 控制台,以及监控一个消费者。
若对这一步有疑虑,请参考SpringCloud Alibaba - Sentinel入门案例(一)。
编写一个消费者调用生产者的方法,并调用。
在Sentinel上可以看到自己编写调用方法的资源名。
降级规则介绍
降级规则就是设置当这次的服务访问满足什么条件的时候,对服务进行降级。
Sentinel对服务降级的条件配置有三种 RT / 异常比例 / 异常数 。
准备测试
在簇点链路中找到环境准备中编写的消费者调用生产者的方法。
RT
- 时间窗口:当资源的平均响应时间超过阈值(以 ms 为单位)之后,资源进入准降级状态。如果接下来 1s 内持续进入 5 个请求,它们的 RT都持续超过这个阈值,那么在接下的时间窗口(以 s 为单位)之内,就会对这个方法进行服务降级。
- RT:阈值(规则 / 判断条件)
首先对测试方法进行请求,并不设置降级规则,此操作用于查看一般访问的时间。
从监控可以看出,此时,若设置RT为一毫秒,是可以触发 RT 的降级规则 。
QPS 被拒绝,页面显示 Blocked by Sentinel ,证明降级成功。
经过十秒过后再测试,访问成功,证明时间窗口生效
注意事项
Sentinel 默认统计的 RT 上限是 4900 ms,超出此阈值的都会算作 4900 ms,若需要变更此上限可以通过启动配置项 -Dcsp.sentinel.statistic.max.rt=xxx 来配置。
异常比例
当资源的 每秒 异常总数占通过量的比值超过阈值之后,资源进入降级状态,即在接下的时间窗口(以 s 为单位)之内,对这个方法的调用都会自动地返回。异常比率的阈值范围是 [0.0,1.0]。
当前我们设置异常比例 0.1,并且新增一个请求方法,使得每三次抛出一次异常,这样此方法异常比例高达百分之30;
异常发生,请求被拒绝,证明降级规则生效。
异常数
当资源近 1 分钟的异常数目超过阈值之后会进行服务降级。注意:由于统计时间窗口是分钟级别的,若时间窗口小于 60s,则结束熔断状态后仍可能再进入熔断状态 。
当前我们设定异常数为 3 ,并且窗口时间为70秒,可以使用上面的例子进行测试。
请求被拒绝,证明降级规则生效。