降级规则(2)

简介: 平均响应时间 超出阈值 且 在时间窗口内通过的请求>=5,两个条件同时满足后触发降级 窗口期过后关闭断路器

官网



https://github.com/alibaba/Sentinel/wiki/%E7%86%94%E6%96%AD%E9%99%8D%E7%BA%A7


基本介绍



RT(平均响应时间,秒级)
   

平均响应时间   超出阈值  且   在时间窗口内通过的请求>=5,两个条件同时满足后触发降级
     

窗口期过后关闭断路器


RT最大4900(更大的需要通过-Dcsp.sentinel.statistic.max.rt=XXXX才能生效)

异常比列(秒级)

 

QPS >= 5 且异常比例(秒级统计)超过阈值时,触发降级;时间窗口结束后,关闭

降级


异常数(分钟级)
   

 异常数(分钟统计)超过阈值时,触发降级;时间窗口结束后,关闭降级


527cf3bb18ce4ef6b0038f973eacbede.png


Sentinel 熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。


当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出 DegradeException)。

Sentinel的断路器是没有半开状态的(1.7版本)


降级策略实战



RT

af54a286fcbb4ec4b861992960e3d4a9.png

72a25afc06fe43c288938b9b8be604c8.png

@GetMapping("/testD")
public String testD()
{
    //暂停几秒钟线程
    try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); }
    log.info("testD 测试RT");
    return "------testD";
}


测试1


 

94f0349be968463a97e54ce724378db1.png430561180dc448eebee961bf6d6e9613.png


按照上述配置,

永远一秒钟打进来10个线程(大于5个了)调用testD,我们希望200毫秒处理完本次任务,
如果超过200毫秒还没处理完,在未来1秒钟的时间
窗口内,断路器打开(保险丝跳闸)微服务不可用,保险丝跳闸断电了

后续我停止jmeter,没有这么大的访问量了,断路器关闭(保险丝恢复),微服务恢复OK


异常比例



是什么


9484c150064845969c9f6031526cfc9b.png206145013b7644298f96c507d82725fc.png

@GetMapping("/testD")
public String testD()
{
    log.info("testD 测试RT");
    int age = 10/0;
    return "------testD";
}


测试2



d46a59450a2647d692653c0582193ee1.pngb6b9a40bcdf04b288b95e84470ffbb1f.png


按照上述配置,
单独访问一次,必然来一次报错一次(int age  = 10/0),调一次错一次;

开启jmeter后,直接高并发发送请求,多次调用达到我们的配置条件了。
断路器开启(保险丝跳闸),微服务不可用了,不再报错error而是服务降级了。


异常数



31f3f33c646f426dba8294187f902594.png

时间窗口一定要大于等于60秒。

5次异常后,还没到一分钟但已经熔断了,如果时间窗口只有比如10s,熔断关闭后还是在当前异常计数分钟内,所以会再次熔断,只有超过60s,才会开始新的异常计数周期


b5b63210704c40faa97d76d6ef24814b.png

@GetMapping("/testE")
public String testE()
{
    log.info("testE 测试异常比例");
    int age = 10/0;
    return "------testE 测试异常比例";
}


测试3



7fe181f0241f44cd9d23220562552411.png



http://localhost:8401/testE,第一次访问绝对报错,因为除数不能为零,我们看到error窗口,但是达到5次报错后,进入熔断后降级。


4cf1f37da37a4e56a42df9d59f8dd977.png


相关文章
|
11月前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(一)
数据的存储--Redis缓存存储(一)
405 1
|
机器学习/深度学习 人工智能 自然语言处理
视觉 注意力机制——通道注意力、空间注意力、自注意力
本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。
11682 58
|
移动开发 负载均衡 安全
Web Security 之 HTTP request smuggling(上)
Web Security 之 HTTP request smuggling
453 0
|
数据采集 机器学习/深度学习 Python
【Python】已完美解决:ImportError: cannot import name ‘Imputer‘ from ‘sklearn.preprocessing
【Python】已完美解决:ImportError: cannot import name ‘Imputer‘ from ‘sklearn.preprocessing
930 3
|
10月前
|
算法 网络协议 安全
HTTP/2 协议的缺点是什么?
HTTP/2 协议的缺点是什么?
368 13
|
12月前
|
消息中间件 Kafka 数据库
微服务架构中,如何确保服务之间的数据一致性
微服务架构中,如何确保服务之间的数据一致性
|
SDN 网络虚拟化 虚拟化
云数据中心中的SDN/NFV应用
【6月更文挑战第9天】计算和存储虚拟化技术在云计算IDC中已基本满足需求,但网络成为新瓶颈,主要问题包括虚拟化环境下的网络配置复杂度增加、拓扑展现困难和无法动态调整资源。
|
SQL 存储 数据库连接
SqlAlchemy 2.0 中文文档(二十二)(1)
SqlAlchemy 2.0 中文文档(二十二)
181 2
|
搜索推荐 Java 自然语言处理
计算文本相似度的几种方法
计算文本相似度的几种方法
|
UED
【亮剑】无线AP在中小型和大型网络环境中的两种组网方式——分布式和集中式。
【4月更文挑战第30天】本文探讨了无线AP在中小型和大型网络环境中的两种组网方式——分布式和集中式。分布式组网适合中小型网络,成本低、部署简单,但管理复杂性和漫游体验有限。案例显示,分布式组网能满足小公司基本需求。而在大型网络中,集中式组网提供统一管理、无缝漫游和高稳定性,但初期投资大、维护复杂。大型购物中心采用集中式组网,实现了全面覆盖和客户体验提升。企业应根据需求和预算选择合适组网策略。
448 1