springcloud3 Sentinel的服务熔断操作
Posted 健康平安的活着
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springcloud3 Sentinel的服务熔断操作相关的知识,希望对你有一定的参考价值。
一 服务熔断
1.1 服务熔断
Sentinel熔断降级会在调用链路中某个资源出现不稳定状态时(调用超时或者异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其他资源进而导致级联错误。
当资源被降级后,在接下来的降级时间窗口内,对该资源的调用都自动熔断。(默认抛出DegradeException)
Sentinel的断路器是没有半开状态的;半开状态的系统自动去监测是否请求有异常;如果有异常,则继续打开断路器不可用;没有异常则就关闭断路器恢复使用。
1.2 服务熔断常用配置策略
1)RT:平均响应时间,秒级;
平均响应时间超出阈值且在时间窗口内通过的请求>=5,这两个条件同时满足后触发降级:
窗口期过后关闭断路器,则重新能够访问。RT的最大值为4900
2)异常比例:秒级
QPS>=5且异常比例超过阈值时,触发降级;时间窗口结束后,关闭降级。
3)异常数
异常数(分钟统计) 超过阈值时,触发降级;时间窗口结束后,关闭降级。
二 服务熔断案例
2.1 策略1:RT设置
1.首先新增一个请求方法/testD,在方法里设置休眠1秒钟;
2.配置RT
3.不停的刷新/testD接口,当1秒请求的次数大于5(官方给出的默认值要求大于5)且RT设置为300ms给出响应,但是接口方法中设置了休眠1秒,响应时间肯定大于设置阈值300ms,则满足这两个条件,则触发熔断机制。2秒的熔断窗口期中,多次访问均处于熔断状态,2秒后熔断关闭
2秒后熔断关闭,访问正常
2.2 策略2:异常比例
2.2.1 架构图
2.2.2 操作
1.设置testD方法中,设置算术异常逻辑
2.配置
异常出现比例20%,且每秒请求数目大于5,则触发熔断机制,且在熔断的5s时间窗口期内,不能访问服务。
3.单独正常访问,报算术异常
4.进行频繁刷新,触发熔断条件,则走熔断机制,报如下提示:
5.窗口期5s过后,再次访问,恢复正常,熔断服务关闭,走接口的正常逻辑,报算术异常
2.3 策略3:异常数
异常数:当资源近1分钟的异常数超过阈值之后进行熔断。这里的统计窗口为分钟级别,如果timewindow小于60s,则结束熔断后,仍有可能再次进入熔断。
所以:时间窗口一定要大于等于60s。
1.说明,第一次访问:http://localhost:7005/testE 肯定报错,因为除数不能为0;
2.配置
在1分钟内异常数大于5,则触发熔断降级,在时间窗口70s内,都不能正常访问,超过70s后,再次访问后报算术异常
3.连续访问地址,触发大于5次
4.超过70s后,再次访问后报算术异常
以上是关于springcloud3 Sentinel的服务熔断操作的主要内容,如果未能解决你的问题,请参考以下文章
springcloud3 Sentinel的搭建以及案例操作
springcloud3 Sentinel的hot key(热点参数)规则
SpringCloud系列——流量控制组件Sentinel实战
sentinel实战:springcloud gateway整合 sentinel nacos
#私藏项目实操分享#Alibaba中间件技术系列「Sentinel技术专题」分布式系统的流量防卫兵的基本介绍(入门源码介绍)