这种日子该到头了{这种日子该到头了}这种日子该到头了

代码来自:https://blog.csdn.net/Kevinnsm/article/details/117520719?spm=1001.2014.3001.5501

文章目录

  • 1、为什么要进行服务降级?{1、为什么要进行服务降级?}1、为什么要进行服务降级?
  • 2、熔断策略之慢调用比例{2、熔断策略之慢调用比例}2、熔断策略之慢调用比例
  • 3、熔断策略之异常比例{3、熔断策略之异常比例}3、熔断策略之异常比例
  • 4、熔断策略之异常数{4、熔断策略之异常数}4、熔断策略之异常数

1、为什么要进行服务降级?{1、为什么要进行服务降级?}1、为什么要进行服务降级?

现在的微服务架构是分布式的,由许多服务组成。服务之间的调用是错综复杂的,比如A调B,B调C,C调D等等;一旦某个模块出现了问题,可能就会出现级联效应,最终导致整个链路的不可用是。通过服务降级,将不稳定的服务进行熔断降级,避免整个链路的雪崩。这个降级是配置在客户端!

官网文档地址:https://sentinelguard.io/zh-cn/docs/circuit-breaking.html

2、熔断策略之慢调用比例{2、熔断策略之慢调用比例}2、熔断策略之慢调用比例

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

以上是官网提供的,经过我的分析需要满足两个条件就会进行服务熔断降级!

1、请求的响应时间大于RT(设置的最大响应时间
2、单位统计时长内请求数目大于最小请求数目

实例分析

设置最大RT为200ms,意味着一旦请求响应超过这个时间就会被统计为慢调用,如果在统计时长1000ms内慢调用的数量大于了最小请求数5,则会进行服务的熔断降级(熔断时长为2s,过了两秒后会进行进入探测状态,若接下来的一个请求的响应时间小于RT,则结束熔断;否则继续进入熔断状态)

@GetMapping("/good")public String good() throws InterruptedException {Thread.sleep(1000);log.info("---------->"+Thread.currentThread().getName());return "good";}

设置线程暂停1s,那么由于我上面设置的RT为0.2s,所以每次都会超时。100%会进行熔断降级

使用JMeter进行测试

零基础带你入门JMeter-模拟高并发接口测试,小白教程!:https://blog.csdn.net/Kevinnsm/article/details/117302197?spm=1001.2014.3001.5501



开始测试

由于我设置的是一直循环访问,所以可以得出只要不关闭JMeter,那么/good接口将一直处于熔断状态,怎么得出来呢?同时通过浏览器访问

当结束JMeter,然后通过浏览器访问


3、熔断策略之异常比例{3、熔断策略之异常比例}3、熔断策略之异常比例

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

也就是满足两个条件就会发生熔断降级

1、请求数大于设置得最小请求数目
2、异常得比例大于设置得阈值

如下图分析

当在1000ms统计时长内,如果异常比例大于0.8,且请求数大于5,则进行熔断降级

代码模拟

    @GetMapping("/good")public String good() {int a = 1 / 0;log.info("---------->"+Thread.currentThread().getName());return "good";}

我故意将其1/0报异常!{我故意将其1/0报异常!}我故意将其1/0报异常!

使用JMeter测试

每次10个请求数,一直循环访问{每次10个请求数,一直循环访问}每次10个请求数,一直循环访问

运行

从响应数据可以看出已经进入了熔断状态!
循环访问过程中从浏览器进行访问

当结束JMeter循环访问,然后浏览器访问,发现已经结束了熔断状态!

4、熔断策略之异常数{4、熔断策略之异常数}4、熔断策略之异常数

异常数 (ERROR_COUNT):当单位统计时长内的异常数目超过阈值之后会自动进行熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。

1、单位统计时长内异常数超过设置的异常数阈值
2、请求数大于设置得最小请求数


如上图所示,在1000ms内,如果异常数大于3,且请求数大于5;则发生熔断降级!

JMeter进行测试,一直循环访问



可以看出已经熔断降级,当我停掉JMeter之后,浏览器访问该API报出异常!

手把手带你领略双十一背后的核心技术Sentinel之服务的熔断降级相关推荐

  1. 手把手带你领略双十一背后的核心技术Sentinel之热点参数限流

    文章目录 1.何为热点 2.基本使用1 3.基本使用2 1.何为热点 热点就是经常访问的数据,我们通常希望对某个访问次数最高的热点数据进行限制. 比如说商品中的某个访问量很高的商品.比如说商品中的某个 ...

  2. 手把手带你领略双十一背后的核心组件Sentinel之流控规则

    文章目录 1.Sentinel相关概念的介绍 1.1.什么是流控规则?{1.1.什么是流控规则?}1.1.什么是流控规则? 1.2.什么是QPS?{1.2.什么是QPS?}1.2.什么是QPS? 1. ...

  3. 手把手带你领略graphql的魅力

    背景介绍 当谈论到客户端与服务端之间的网络请求时,REST 绝对是连接两者的方案中最流行的选择.在 REST 中,所有概念都是可以通过 URL 可访问的资源演化而来的.你可以通过一个 HTTP GET ...

  4. 手把手带你领略自动执行任务的快感

    文章目录 前言 一:程序,进程,线程之间的关系 1.1:进程概述 1.2:应用程序,进程和线程的关系 1.2.1:程序和进程的关系 1.2.2:进程和线程的关系 二:查看进程 2.1:静态查看 ps命 ...

  5. 深度解析双十一背后的阿里云 Redis 服务

    在一片欢呼之中,2018年的双十一完美收官,各项数据不出意外的刷出了新的记录,亮眼的数据背后是阿里过硬的技术支撑.其中阿里云Redis不仅保障了阿里集团内部业务双十一的流量洪峰平稳度过,也让使用阿里云 ...

  6. 北京活动 | 新书首发手把手带你的产品从0开始验证一个新的业务

    产品之力正在爆发的互联网革命 深入浅出讲解互联网领域如何从0开始验证一个新的业务并最终取得成功的广大案例 结合经济学.社会学.心理学.人机交互学.设计学等知识总结出的完整方法论 适合在工作中遇到瓶颈的 ...

  7. linux 中国-新手村,从新手村开始,手把手带你入门梳理内核代码

    原标题:从新手村开始,手把手带你入门梳理内核代码 在上一期内容中,Java离Linux内核有多远? 我们介绍了从 JVM 到内核的编译原理,告诉大家应用和系统工程师如何接触到内核. 本文将 从一个简单 ...

  8. Google全新AI实战课发布:从原理到代码,手把手带你入门机器学习

    安妮 岳排槐 发自 凹非寺 量子位 出品 | 公众号 QbitAI 如果你的心里只有一件事. 请问:是不是学习? Google希望你是,而且还准备扶上马,再送一程. 所以今天一早,大礼包又来了. ...

  9. 手把手带你学会Odoo OWL组件开发(5):浅析OWL原理

    [本系列内容直达:] 手把手带你学习Odoo OWL组件开发(1):认识 OWL 手把手带你学会Odoo OWL组件开发(2):OWL的使用 手把手带你学会Odoo OWL组件开发(3):核心内容指南 ...

最新文章

  1. 总结:Apache架构师30条架构原则
  2. 【AI呀,我去】科技圈顶流——元宇宙上线,快来揭开它的神秘面纱
  3. python读取只读word只读_人生苦短我学Python——Word处理之快速Word转PDF
  4. 数据库-优化-索引-索引的优化
  5. 1×pbs缓冲液配方_PBS缓冲液的配制
  6. C++ class、struct区别
  7. 正则表达式 Mather类的使用
  8. java禁止修改map_Java中实现不可变Map
  9. Linux常用命令——chattr、lsattr
  10. 【kafka】kafka 发送数据 发送失败 回调函数 怎么能记录异常的消息内容
  11. 8-2 主从复制高可用
  12. arts-week12
  13. c语言自建一个窗口,C语言 手把手教你写个自定义printf
  14. 求贤令|诚邀3D视觉领域技术大咖加入工坊!
  15. Win10系统中英文切换
  16. HD、BD、MKV和RMVB、DVD、AVI
  17. SQL Server 数据查询
  18. 鸿蒙系统主页面斜纹,《中国美术欣赏》[精选].doc
  19. bamtools拆分bam文件
  20. 行情真的残酷,3年工龄老员工被毕业生“薪资倒挂”

热门文章

  1. JVM插码之三:javaagent介绍及javassist介绍
  2. python url配置单独放在某个应用目录中
  3. jsp的九大内置对象和四大作用域
  4. 产品所有者也应该是Scrum教练吗?
  5. php操作mysql的封装类_PHP封装的mysqli数据库操作类示例
  6. fasttext 安装_fasttext的简单介绍
  7. 语言怎么绘画人物肖像_坦培拉绘画技法——油画简史
  8. 智能J IDEA键盘快捷键
  9. 远程连接云服务器的MySQL数据库
  10. php 正则去除script,javascript正则实现php中的加入和去除反斜杠函数效果