返回顶部
首页 > 资讯 > 后端开发 > JAVA >面试官:熔断和降级有什么区别?
  • 928
分享到

面试官:熔断和降级有什么区别?

java面试开发语言职场和发展 2023-10-19 07:10:32 928人浏览 薄情痞子
摘要

作者 | 磊哥 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 磊哥《Java 面试提高课(2023版)》(戳我加入)正式上线了,里面包含了 20 万字的最新 Java

6863710629ab91c66a89ba13c405a6a9.jpeg

作者 | 磊哥

来源 | Java中文社群(ID:javacn666)

转载请联系授权(微信ID:GG_Stone)

磊哥《Java 面试提高课(2023版)》(戳我加入)正式上线了,里面包含了 20 万字的最新 Java 面试题(问答形式),并配有 Spring Cloud、MQ、设计模式等内容,以及简历辅导、面试辅导、复习规划、一对一答疑等服务,期待你的加入~

熔断和降级都是系统自我保护的一种机制,但二者又有所不同,它们的区别主要体现在以下几点:

  1. 概念不同

  2. 触发条件不同

  3. 归属关系不同

    1.概念不同

    1.1 熔断概念

    “熔断”一词早期来自股票市场。熔断(Circuit Breaker)也叫自动停盘机制,是指当股指波幅达到规定的熔断点时,交易所为控制风险采取的暂停交易措施。比如 2020 年 3 月 9 日,纽约股市开盘出现暴跌,随后跌幅达到 7% 上限,触发熔断机制,停止交易 15 分钟,恢复交易后跌幅有所减缓。

熔断在程序中,表示“断开”的意思。如发生了某事件,程序为了整体的稳定性,所以暂时(断开)停止服务一段时间,以保证程序可用时再被使用。

如果没有熔断机制的话,会导致联机故障和服务雪崩等问题,如下图所示:6049de23418f26730af7db661016be16.gif

1.2 降级概念

降级(Degradation)降低级别的意思,它是指程序在出现问题时,仍能保证有限功能可用的一种机制。

比如电商交易系统在双 11 时,使用的人比较多,此时如果开放所有功能,可能会导致系统不可用,所以此时可以开启降级功能,优先保证支付功能可用,而其他非核心功能,如评论、物流、商品介绍等功能可以暂时关闭。

所以,从上述信息可以看出:降级是一种退而求其次的选择,而熔断却是整体不可用

2.触发条件不同

不同框架的熔断和降级的触发条件是不同的,本文咱们以经典的 spring cloud 组件 Hystrix 为例,来说明触发条件的问题。

2.1 Hystrix 熔断触发条件

默认情况 hystrix 如果检测到 10 秒内请求的失败率超过 50%,就触发熔断机制。之后每隔 5 秒重新尝试请求微服务,如果微服务不能响应,继续走熔断机制。如果微服务可达,则关闭熔断机制,恢复正常请求。b077babbecf353f252aa6d29ff9db4fb.png

2.2 Hystrix 降级触发条件

默认情况下,hystrix 在以下 4 种条件下都会触发降级机制:

  1. 方法抛出 HystrixBadRequestException

  2. 方法调用超时

  3. 熔断器开启拦截调用

  4. 线程池或队列或信号量已满

虽然 hystrix 组件的触发机制,不能代表所有的熔断和降级机制,但足矣说明此问题。

3.归属关系不同

熔断时可能会调用降级机制,而降级时通常不会调用熔断机制。因为熔断是从全局出发,为了保证系统稳定性而停用服务,而降级是退而求其次,提供一种保底的解决方案,所以它们的归属关系是不同(熔断 > 降级)。

题外话

当然,某些框架如 Sentinel,它早期在 Dashboard 控制台中可能叫“降级”,但在新版中新版本又叫“熔断”,如下图所示:e81142ee01e64636221c4c979fc8c950.png但在两个版本中都是通过同一个异常类型 DegradeException 来监听的,如下代码所示:3b91b9935584dc29385f6bb9801538c0.png所以,在 Sentinel 中,熔断和降级功能指的都是同一件事,也侧面证明了“熔断”和“降级”概念的相似性。但我们要知道它们本质上是不同的,就像两个双胞胎,不能因为他们长得像,就说他们是同一个人。

总结

熔断和降级都是程序在我保护的一种机制,但二者在概念、触发条件、归属关系上都是不同的。熔断更偏向于全局视角的自我保护(机制),而降级则偏向于具体模块“退而请其次”的解决方案。

参考 & 鸣谢

https://blog.csdn.net/BiandanLoveyou/article/details/118067224

Https://cloud.tencent.com/developer/article/1600700


作者介绍

磊哥,14 年编程和框架从业经验,前 360 技术专家、CSDN 签约作者、阿里云专家博主、拉勾网签约作者、掘金优秀作者、慕课网讲师等。期待与你相遇,一起探讨和分享技术的乐趣。

磊哥最近新出了一个 20 万字的《Java面试提高课(2023版)》,非常不错,并配有 6 大服务:简历辅导、面试辅导、一对一答疑、专属复习规划、项目评审、职业规划等,推荐给你哦~

fda56a9106a3e93f606af41ba5586fd3.png

来源地址:https://blog.csdn.net/sufu1065/article/details/129095841

--结束END--

本文标题: 面试官:熔断和降级有什么区别?

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

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

猜你喜欢
  • 面试官:熔断和降级有什么区别?
    作者 | 磊哥 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 磊哥《Java 面试提高课(2023版)》(戳我加入)正式上线了,里面包含了 20 万字的最新 Java ...
    99+
    2023-10-19
    java 面试 开发语言 职场和发展
  • 分布式系统中的降级熔断设计问题面试
    目录引言1、面试官:你对你负责的系统做了哪些提高可用性的设计?总结引言 稳定性设计第一篇:在分布式系统下,线上的某一个功能按钮背后会有很多个服务共同完成,这些服务之间有依赖关系,且有...
    99+
    2024-04-02
  • java面试突击之sleep和wait有什么区别详析
    目录前言区别一:语法使用不同区别二:所属类不同区别三:唤醒方式不同区别四:释放锁资源不同sleep 不释放锁wait 释放锁区别五:线程进入状态不同总结前言 sleep 方法和 wa...
    99+
    2024-04-02
  • 京东自营和官方旗舰店有什么区别
    京东自营和官方旗舰店区别是:1、京东自营是京东公司自己经营的店面,而京东官方旗舰店是各大品牌商家借助京东平台销售自家产品;2、京东自营发货快;而京东官方旗舰发货慢;3、京东自营储存在京东中心,而京东官方旗舰店储备于商家自己的仓库里面;4、京...
    99+
    2023-07-19
  • 游戏测试和软件测试有什么区别?
    针对手游而言,游戏测试的本质是APP,所以不少手游的测试方式与APP测试异曲同工,然而也有所不同。APP更多的是具有一种工具,一款APP好不好用不重要,关键点在于实用。而游戏则具有一种玩具属性,它并不见得实用,但他要符合玩家的好恶,要能让玩...
    99+
    2023-06-05
  • 面试官问你:MySQL事务和隔离级别,你该如何回答
    一、事务 事务是由一组SQL语句组成的逻辑处理单元,是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。事务具有以下4个属性,通常简称为事务的ACID属性: 原子性(Atomic...
    99+
    2014-10-20
    面试官问你:MySQL事务和隔离级别,你该如何回答 数据库入门 数据库基础教程 数据库 mysql
  • mybatis一级缓存和二级缓存有什么区别
    MyBatis的一级缓存和二级缓存是两种不同级别的缓存机制。一级缓存是在同一个SqlSession内部的缓存,它默认是开启的。在执行...
    99+
    2023-08-20
    mybatis
  • Golang 函数调试和单元测试有什么区别?
    函数调试和单元测试在 golang 中是不同的概念,分别用于查找运行时错误(函数调试)和验证代码正确性(单元测试)。 Golang 函数调试和单元测试的区别 简介 Golang 中,函...
    99+
    2024-04-17
    调试 golang 单元测试
  • Golang 函数调试和集成测试有什么区别?
    go 语言提供了函数调试和集成测试两种测试方法。函数调试用于测试单个函数,放在与函数相同的目录中,手动模拟输入。集成测试用于测试代码库协作,放在单独的目录中,使用框架模拟输入,包括多个组...
    99+
    2024-04-17
    golang 集成测试 函数调试
  • /” 和 “\” 有什么区别
    键盘上的“/” 和 “\”这个两个“斜杠”有什么区别。 通常,“/”被叫作“正斜杠”,英语是forward slash,经常简称为slash。Windows命令用\,中文排版用/。而“\” 被叫作“反斜杠”,英语是backward sla...
    99+
    2023-09-25
    前端 java 服务器 Powered by 金山文档
  • ssl证书中的DV和OV级别有什么区别?
    SSL证书中的DV和OV级别有什么区别?SSL证书是一种用于保护互联网通信安全的数字证书,可以识别和验证网站的身份。在SSL证书中,经常会遇到两个不同级别的验证方法,即DV和OV。这两种级别的验证方法有着不同的标准和效果。 1.DV级别的...
    99+
    2024-01-24
    ov ssl ssl证书 ssl证书中的DV和OV级别有什么区别? SSL知识
  • 小程序页面和APP页面有什么区别
    小程序页面和APP页面的区别是开发语言不同,例如:APP开发方式可分为原生APP和Web APP,APP主流开发操作系统有安卓和IOS,原生APP的开发语言为JAVA,IOS版原生APP的开发语言为Objective-C,安卓版本Web A...
    99+
    2024-04-02
  • c语言++在前面和后面有什么区别
    c 语言中,“++”操作符可用于变量的前缀或后缀,但含义不同。前缀递增(放在变量前)先递增变量值,再返回结果,使变量在表达式中使用时为递增后的值。后缀递增(放在变量后)先返回变量当前值,...
    99+
    2024-04-02
  • h5页面和小程序有什么区别
    H5页面和小程序的区别:开发成本不同小程序需要在特定的环境开发,组件、UI都是确定好的,不需要考虑兼容问题,成本会低一些;H5在开发需要对开发工具、框架、UI的选择和浏览器是否兼容等问题,需要面临多次修改,会增加成本。加载速度不同小程序依然...
    99+
    2024-04-02
  • MyBatis中二级缓存和一级缓存有什么区别
    MyBatis中的一级缓存是SqlSession级别的缓存,即在同一个SqlSession中执行相同的查询,第一次查询结果会被缓存下...
    99+
    2024-03-07
    MyBatis
  • oracle的表级约束和列级约束有什么区别
    表级约束和列级约束都是用来保证数据的完整性和一致性的约束条件,但它们之间有一些区别: 表级约束是针对整个表的约束条件,而列级约束是...
    99+
    2024-04-20
    oracle
  • js页面刷新location.reload和location.replace有什么区别
    location.reload(): 使用 location.reload() 方法会重新加载当前页面,即重新发送请求获取页面...
    99+
    2024-03-06
    js
  • HashMap和HashTable的区别以及常见面试题是什么
    本篇文章为大家展示了HashMap和HashTable的区别以及常见面试题是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。HashMapHashMap也是我们使用非常多的Collection,它...
    99+
    2023-06-02
  • 行内元素和块级元素的区别有什么
    行内元素和块级元素的区别有:1、行内元素不会独占一行,而块级元素会独占一行;2、行内元素的宽度由其内容决定,而块级元素的宽度默认是其父元素的100%;3、行内元素的盒模型主要包括水平方向的内边距、外边距和边框,而每个方向都有。本教程操作系统...
    99+
    2023-08-18
  • 降噪模式和通透模式的区别是什么
    降噪模式和通透模式的区别是:1、降噪模式旨在减少周围环境的噪音干扰,而通透模式允许外界声音传入耳机;2、降噪模式适用于需要在嘈杂环境中获得更好听音质或专注的场景,而通透模式对周围环境感知、与他人交流或需要注意安全的场景非常有用。本教程操作系...
    99+
    2023-08-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作