返回顶部
首页 > 资讯 > 后端开发 > Python >Sentinel熔断规则原理示例详解分析
  • 954
分享到

Sentinel熔断规则原理示例详解分析

2024-04-02 19:04:59 954人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录概述熔断(降级)策略慢调用比例概念测试异常比例概念测试异常数概念测试概述 除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。 由于调用关系的复杂

概述

除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。

由于调用关系的复杂性,如果调用链路中的某个资源不稳定,最终会导致请求发生堆积。

Sentinel 熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时、异常比例升高、异常数堆积)

对这个资源的调用进行限制,让请求快速失败从而避免影响到其它的资源而导致级联错误。

当资源被降级后,在接下来的降级时间窗口之内会对该资源的调用自动熔断

(默认行为是抛出 DegradeException)。

综上可知:

  • 熔断是用来避免服务架构中的雪崩的发生
  • 监控到链路中的异常(响应时间超时、异常比例升高、异常数堆积)达到阈值自动触发熔断
  • 在降级时间窗口之内会对该资源的调用自动熔断

熔断(降级)策略

慢调用比例

概念

慢调用比例 (SLOW_REQUEST_RATIO):

选择以慢调用比例作为阈值,需要设置允许的慢调用 RT(即最大的响应时间),

请求的响应时间大于该值则统计为慢调用。

当单位统计时长(statIntervalMs)内请求数目大于设置的最小请求数目,

并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。

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

若接下来的一个请求响应时间小于设置的慢调用 RT 则结束熔断,若大于设置的慢调用 RT 则会再次被熔断。

在这里插入图片描述

注意Sentinel默认统计的RT上限是4900ms,超出此阈值的都会算作4900ms,

若需要变更此上限可以通过启动配置项-Dcsp.sentinel.statistic.max.rt=xxx来配置

测试

我们在Sentinel DashBoard界面点击熔断规则,然后按照下图配置新增慢调用比例的熔断规则。

如下所示

在这里插入图片描述

然后我们在浏览器访问Http://localhost:8990/test/hello,连续快速刷新该请求,可以看到服务被熔断。30s后自动恢复

在这里插入图片描述

我们本次使用的Sentinel版本是1.8.2,在1.8之前的版本慢调用比例就是RT,

慢调用相较于之前的RT加入了比例阈值,相当于多加了一个条件。

慢调用比例的熔断时机:在统计时长内,请求数大于5个,如若大于指定比例阈值的请求数的响应时间都大于最大RT,

那么会熔断该服务,熔断时间为设置的熔断时长

异常比例

概念

异常比例 (DEGRADE_GRADE_EXCEPTION_RATIO):当资源的每秒请求量 >= N(可配置),

并且每秒异常总数占通过量的比值超过阈值(DegradeRule 中的 count)之后,

资源进入降级状态,即在接下的时间窗口(DegradeRule 中的 timeWindow,以 s 为单位)之内,

对这个方法的调用都会自动地返回。

异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。

在这里插入图片描述

测试

相较于慢调用比例,异常比例就简单了,通过修改或者新增熔断规则我们可以发现当我们选择异常比例时,

只是比慢调用比例少了一个RT。

我们按照下图所示配置异常比例的熔断规则,如下所示:

在这里插入图片描述

为了演示异常我们修改下TestController.java中的/test/hello方法。

如下所示:


@RequestMapping("/hello")
public String sayHello(Integer id){
  log.info("Hello, Sentinel!");
  if(id < 0){
    throw new RuntimeException();
  }
  return "Hello, Sentinel!";
}

然后我们在浏览器访问http://localhost:8990/test/hello?id=-1,连续快速刷新该请求,

当请求数大于5个且异常比例阈值大于0.1时就会自动熔断

在这里插入图片描述

这是一个拼手速的实验,点击速度慢的小伙伴可以把统计时长调长一些(默认最大为4900ms)

异常数

概念

异常数 (DEGRADE_GRADE_EXCEPTION_COUNT):当资源近 1 分钟的异常数目超过阈值之后会进行熔断。

注意由于统计时间窗口是分钟级别的,若 timeWindow 小于 60s,

则结束熔断状态后仍可能再进入熔断状态。

在这里插入图片描述

测试

相比于前面两个异常数就更简单了,我们按下图所示修改熔断规则。

如图所示:

在这里插入图片描述

还是使用测试异常比例的demo进行演示这个效果,我们在浏览器狂刷请求http://localhost:8990/test/hello?id=-1,

放异常数达到5个后就会自动熔断该服务了。

如下图所示:

在这里插入图片描述

以上就是Sentinel熔断规则原理示例详解分析的详细内容,更多关于Sentinel熔断规则的资料请关注编程网其它相关文章!

--结束END--

本文标题: Sentinel熔断规则原理示例详解分析

本文链接: https://lsjlt.com/news/134234.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Sentinel熔断规则原理示例详解分析
    目录概述熔断(降级)策略慢调用比例概念测试异常比例概念测试异常数概念测试概述 除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。 由于调用关系的复杂...
    99+
    2024-04-02
  • Sentinel热点规则示例详解分析
    目录概念@SentinelResource小试牛刀TestController.javadefaultFallbackfallback流量控制熔断降级热点参数限流高级选项概念 ...
    99+
    2024-04-02
  • go熔断原理分析与源码解读
    目录正文熔断原理熔断器实现hystrixBreaker和googlebreaker对比源码解读结束语正文 熔断机制(Circuit Breaker)指的是在股票市场的交易时间中,当价...
    99+
    2024-04-02
  • css命名规则的示例分析
    这篇文章主要为大家展示了“css命名规则的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css命名规则的示例分析”这篇文章吧。头:header   内容...
    99+
    2024-04-02
  • 详解Python 关联规则分析
    目录1. 关联规则1.1 基本概念1.2 关联规则Apriori算法2. mlxtend实战关联规则2.1 安装2.2 简单的例子3. 总结1. 关联规则 大家可能听说过用于宣传数...
    99+
    2024-04-02
  • mocha中时序规则的示例分析
    这篇文章主要为大家展示了“mocha中时序规则的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mocha中时序规则的示例分析”这篇文章吧。describ...
    99+
    2024-04-02
  • CSS包含块规则的示例分析
    这篇文章给大家分享的是有关CSS包含块规则的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、确立包含块包含块是一个非常重要的概念,通常包含块是当前元素的最近祖先元素的内...
    99+
    2024-04-02
  • AndroidIntentFilter的匹配规则示例详解
    目录前言一、Activity的调用模式1、显式调用2、隐式调用二、IntentFilter匹配规则详解1、Action的匹配规则2、category的匹配规则3、data的匹配规则d...
    99+
    2022-12-09
    Android IntentFilter匹配规则 Android IntentFilter
  • CSS样式覆盖规则的示例分析
    这篇文章给大家分享的是有关CSS样式覆盖规则的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先需要明确的是,很多情况都会导致一个元素被运用上多种样式,样式覆盖的规则也需...
    99+
    2024-04-02
  • CSS代码命名规则的示例分析
    小编给大家分享一下CSS代码命名规则的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 1. 技俩属性轨范 单个名目划...
    99+
    2024-04-02
  • JavaScript中this绑定规则的示例分析
    这篇文章主要介绍JavaScript中this绑定规则的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、this 的绑定规则this 一共有 4 中绑定规则,接下来一一介绍...
    99+
    2024-04-02
  • html中Emmet语法规则的示例分析
    这篇文章给大家分享的是有关html中Emmet语法规则的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Emmet—写HTML/CSS快到飞起在前端开发的过程中,最费时间的工作就是写 HTML、CSS 代码...
    99+
    2023-06-14
  • Java混合运算规则的示例分析
    这篇文章主要介绍了Java混合运算规则的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。重要规则://byte short char 做混...
    99+
    2023-05-31
    java
  • Android中IntentFilter匹配规则的示例分析
    这篇文章将为大家详细讲解有关Android中IntentFilter匹配规则的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。IntentFilter的匹配规则IntentFilter的使用假如我们...
    99+
    2023-05-30
    android
  • js的一些潜在规则示例分析
    目录宏任务和微任务语句的执行过程 (Completion Record )文法词法语句是否需要加分号no LineTerminator here规则脚本和模块声明提升解析HTMLDO...
    99+
    2023-02-21
    js潜在规则 js 规则
  • centos 6.6默认iptable规则的示例分析
    这篇文章将为大家详细讲解有关centos 6.6默认iptable规则的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在自己电脑上新装了centos6.6虚拟机,然后装了nginx,没有进行任何其...
    99+
    2023-06-10
  • CSS设计原则的示例分析
    今天就跟大家聊聊有关CSS设计原则的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。相信大多数人都有过关于CSS的痛苦经历,从我加入公司到现在...
    99+
    2024-04-02
  • jsjiami.v6解密原理示例分析
    正文 JS加密是Web前端开发中常用的一种技术,可以用于保护敏感数据或者代码,避免被恶意攻击者窃取或篡改。其中,JS加密库JSJiami.v6是一款广受欢迎的JS加密库,下面我们...
    99+
    2023-05-16
    jsjiami.v6解密分析 jsjiami.v6 解密
  • Vue2 的 diff 算法规则原理详解
    目录前言算法规则diff 优化策略老数组的开始与新数组的开始老数组的结尾与新数组的结尾老数组的开始与新数组的结尾老数组的结尾与新数组的开始以上四种情况都没对比成功推荐在渲染列表时为节...
    99+
    2024-04-02
  • CSS规则书写不完全的示例分析
    CSS规则书写不完全的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。从 CSSLint 的规则中,我们可以窥探到很多有意思的的 CSS...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作