微服务面试题:熔断和降级有什么区别?

什么是服务熔断?什么是服务降级?区别是什么? 服务熔断是指,当服务A调⽤的某个服务B不可⽤时,上游服务A为了保证⾃⼰不受影响,从⽽不再调⽤服务B,直接返回⼀个结果,减轻服务A和服务B的压⼒,直到服务B恢复。服务降级是指,当发现系统压⼒过载时,可以通过关闭某个服务,或限流某个服务来减轻系统压⼒,这就是服务降级。像飞机氧气面罩:当舱压异常(主服务故障),自动掉落面罩(降级方案),保证乘客生存(核心功能)。像家庭电闸跳闸:当电路短路(服务故障)时,保险丝(熔断器)立即断开,避免火灾(系统崩溃)。:熔断常触发降级,但降级不一定需要熔断(如主动降级应对大促) 阅读详情
AI摘要

文章详细阐述了熔断和降级在系统自我保护中的作用,区分了两者的概念,如熔断的断开机制和降级的退而求其次选择。熔断器模型的三种状态(Closed,Open,Half-Open)以及转换关系被讨论,同时介绍了熔断策略,包括慢调用比例、错误比例和错误计数。文章还提到了降级的实现方式,如熔断降级、超时降级和限流降级,并指出Sentinel等框架中熔断和降级的相似性。

引言

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

  • 概念不同
  • 归属关系不同

1.概念不同

1.1 熔断概念

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

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

熔断很好理解,就是一个断开的过程;

熔断就像是家里的保险丝一样,当电流达到一定条件时,比如保险丝能承受的电流是5A,如果你的电流达到了6A,因为保险丝承受不了这么高的电流,保险丝就会融化,这时候电路就会断开,起到了保护电器的作用;

在微服务里面也是一样,当下游的服务因为某种原因突然变得不可用或响应过慢,上游服务为了保证自己整体服务的可用性,不再继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用;

如果没有熔断机制的话,会导致联机故障和服务雪崩等问题,如下图所示:
在这里插入图片描述

1.2 降级概念

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

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

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

在这里插入图片描述

2.熔断器模型

在这里插入图片描述
熔断器有三种状态:

Closed:也是初始状态,该状态下,熔断器会保持闭合,对资源的访问直接通过熔断器的检查
Open:断开状态,熔断器处于开启状态,对资源的访问会被切断
Half-Open:半开状态,该状态下除了探测流量,其余对资源的访问也会被切断。探测流量指熔断器处于半开状态时,会周期性的允许一定数目的探测请求通过,如果探测请求能够正常的返回,代表探测成功,此时熔断器会重置状态到 Closed 状态,结束熔断;如果探测失败,则回滚到 Open 状态。

3.种状态之间的转换关系

  1. 初始状态下,熔断器处于 Closed 状态。如果基于熔断器的统计数据表明当前资源触发了设定的阈值,那么熔断器会切换状态到 Open 状态;
  2. Open 状态即代表熔断状态,所有请求都会直接被拒绝。熔断器规则中会配置一个熔断超时重试的时间,经过熔断超时重试时长后熔断器会将状态置为 Half-Open 状态,从而进行探测机制;
  3. 处于 Half-Open 状态的熔断器会周期性去做探测。

4.熔断策略

  • 慢调用比例策略 (SlowRequestRatio): 在非静默期内,当响应慢的请求(需要设置RT响应临界值)达到一定的比例并且触发了阈值(需要设置)的条件,就会熔断
  • 错误比例策略 (ErrorRatio):在非静默期内,并且在统计周期内资源请求访问异常的比例大于设定的阈值,则接下来的熔断周期内对资源的访问会自动地被熔断。
  • 错误计数策略 (ErrorCount):在非静默期内,并且在统计周期内资源请求访问异常数大于设定的阈值,则接下来的熔断周期内对资源的访问会自动地被熔断。

5.熔断和降级的关系

说了那么多,其实也能想到了,降级和熔断其实就是服务安全中的2个不同的流程,在服务发生故障时,肯定是先断开(熔断)与服务的连接,然后在执行降级逻辑;
在这里插入图片描述
那既然不管怎样都会执行降级逻辑,这时候就可以理解为 降级是一种设计思想,在java层面就是一个接口,而熔断是降级的不同实现方式,他们的关系如下图:
在这里插入图片描述

6.降级方式

那么我们现在知道降级是一个接口了,接下来在看看他们的实现方式是怎样的吧

6.1、熔断降级(不可用)

熔断逻辑是这样的,A服务调用B服务,失败次数达到一定阈值后 ,A服务的断路器打开,就不在请求B服务,而是直接执行本地的fallback方法;这种叫做熔断降级,看到这里,也许你已经明白了,熔断只是降级的其中一种实现方式;

在这里插入图片描述

6.2、超时降级

熔断逻辑是这样的,A服务调用B服务,失败次数达到一定阈值后 ,A服务的断路器打开,就不在请求B服务,而是直接执行本地的fallback方法;这种叫做熔断降级,看到这里,也许你已经明白了,熔断只是降级的其中一种实现方式;

同样是A服务调用B服务,B服务响应超过了A服务设定的阈值后,就会执行降级逻辑;
在这里插入图片描述

6.3、限流降级

同样是A服务调用B服务,服务A的连接已超过自身能承载的最大连接数,比如说A能承载的连接数为5,但是目前的并发有6个请求同时进行,前5请求能正常请求,最后一个会直接拒绝,执行fallback降级逻辑;

在这里插入图片描述

7.题外话

当然,某些框架如 Sentinel,它早期在 Dashboard 控制台中可能叫“降级”,但在新版中新版本又叫“熔断”,如下图所示:

在这里插入图片描述
但在两个版本中都是通过同一个异常类型 DegradeException 来监听的,如下代码所示:
在这里插入图片描述所以,在 Sentinel 中,熔断和降级功能指的都是同一件事,也侧面证明了“熔断”和“降级”概念的相似性。但我们要知道它们本质上是不同的,就像两个双胞胎,不能因为他们长得像,就说他们是同一个人。

8.总结

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

28.SpringCloud微服务常见面试题有哪些? Spring Cloud基于Spring Boot,提供了一系列解决分布式系统常见问题的解决方案,如配置管理、服务发现、负载均衡、熔断机制、分布式追踪等。微服务架构是一种将应用程序划分为多个独立运行的小服务的架构,每个服务都聚焦于特定的业务功能,并通过轻量级的通信机制(通常是HTTP/REST)进行交互。1. 服务熔断(Circuit Breaker)定义:服务熔断是一种防止系统过载、保护整体服务的机制。 阅读详情

相关推荐

告别云端推理!用llama.cpp+树莓派5搭建本地AI问答机器人(完整配置流程)

本文详细介绍了如何在树莓派5上利用llama.cpp部署本地AI问答机器人,实现完全离线的智能对话。通过模型量化与格式转换技术,成功将MiniCPM-2B等大模型压缩并运行于资源受限的边缘设备,解决了隐私、延迟和成本问题,为物联网和硬件开发者提供了完整的配置流程与实践指南。

t1u2v的博客 507

服务降级与服务熔断区别

服务降级:系统有限的资源的合理协调 概念: 服务降级一般是指在服务器压力剧增的时候,根据实际业务使用情况以及流量,对一些服务和页面有策略的不处理或者用一种简单的方式进行处理,从而释放服务器资源的资源以保证核心业务的正常高效运行。 原因: 服务器的资源是有限的,而请求是无限的。在用户使用即并发高峰期,会影响整体服务的性能,严重的话会导致宕机,以至于某些重要服务不可用。故高峰期为了保证核心功能服务的可用性,就需要对某些服务降级处理。可以理解为舍小保大 应用场景: 多用于微服务架构中,一般当整个微服务架构整体的负

weixin_41882200的博客 7283

Nvidia Isaac Sim图形界面 入门教程 2024(3)

在使用Isaac Sim时,最先接触到的应该是它的图形界面,此处将简单介绍图形界面中常用的一些组件:Isaac Sim的界面的常用内容可以分为几个板块。

m0_56661101的博客 4547

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

作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)磊哥《Java 面试提高课(2023版)》(戳我加入)正式上线了,里面包含了 20 万字的最新 Java 面试题(问答形式),并配有 Spring Cloud、MQ、设计模式等内容,以及简历辅导、面试辅导、复习规划、一对一答疑等服务,期待你的加入~熔断和降级都是系统自我保护的一种机制,但...

磊哥聊Java 8288

从零到一:Ollama工具在RK3588上的深度优化实践

本文详细介绍了如何在RK3588开发板上深度优化Ollama工具,以高效运行DeepSeek模型。通过CPU与NPU负载平衡、模型量化、温度控制等策略,显著提升性能并降低功耗,适用于边缘计算场景。文章提供了具体的配置命令和优化方案,帮助开发者充分发挥RK3588的硬件潜力。

rgv23456789的博客 311

UE5音效系统全解析:从Sound Cue到MetaSounds的实战指南

在游戏开发中,音频系统是构建沉浸式体验的关键技术之一。其核心原理在于通过数字信号处理(DSP)和空间音频渲染,模拟真实世界的听觉感知。传统音频管线通常基于静态资源播放与混合,而现代引擎则引入了程序化音频生成与动态调制技术,这极大地提升了音频的互动性与表现力,使其能够实时响应游戏状态变化。这一技术革新对于开发开放世界、VR及3A级游戏尤为重要,它能实现风吹草动皆有不同声响、音效随环境动态变化的细腻效果。本文聚焦虚幻引擎5(UE5)的音效系统,深入剖析其新旧两套核心架构:稳定高效的Sound Cue、Sound

weixin_31179927的博客 331

服务熔断和服务降级的区别

1.服务降级:不管在什么情况下,服务降级的流程都是先调用正常的方法,再调用fallback的方法。 2.服务熔断:假设服务宕机或者在单位时间内调用服务失败的次数过多,即服务降级的次数太多,那么则服务熔断。 并且熔断以后会跳过正常的方法,会直接调用fallback方法,即所谓“服务熔断后不可用”。 ...

weixin_45033628的博客 1万+

一体化伺服电机与施耐德PLC TM241CEC24T在Canopen协议下的应用

一.硬件组成 软件组成:施耐德SoMachineV4.3二.○1.打开SoMachineV4.3,点击“新建项目”○2.点击“空白项目”○3.项目命名○4.点击“创建项目” 三. 点击“Logic Builder” 四. ○1.右击项目”PMM_CANOPEN_ST”添加设备○2.点击”LogicController”选择PLC型号TM241CEC24T/U○3.点击“添加设备” 五. ○1.右击CAN_1,添加设备○2.选择“CANopen Perfomance”○3.点击“添加设备”

m0_46512607的博客 2520

服务降级和服务熔断的区别

服务降级,服务熔断和服务降级和服务熔断区别

giaogege666的博客 2704

ROS Navigation global_planner框架解析

ROS Navigation global_planner框架解析主要讲一下我看源码总结的框架,如果大家跟着这个框架看源码的话可能会看的比较快。主要讲解global_planner关键配置参数含义及关键函数Astar,Dijkstra,QuadraticCalculator::calculatePotential,PotentialCalculator::calculatePotential,GridPath::getPath,GradientPath::getPath.

Jeff_Lee_的博客 4694

CANbus收发器ADM3053BRWZ-REEL7应用原理图设计

ADM3053 在 CAN 协议控制器与物理层总线之间创建一个 完全隔离的接口。该器件具有限流和热关断特性,可防止输出短路。额定温 度范围为工业温度范围,提供 20 引脚、宽体 SOIC 封装。该器件采用 5 V 单电源供电, 提供完全隔离的 CAN 解决方案。ADM3053 是一款隔离式控制器区域网络 (CAN) 物理层收 发器,集成隔离 DC/DC 转换器,符合 ISO 11898 标准。该器件采用 ADI 公司的。Coupler® 技术,将双通道隔离器、 CAN 收发器和 ADI 公司的。

zhusl6688的博客 1239

熔断和降级的区别,具体使用场景有哪些?

hello啊,各位观众姥爷们!!!本baby今天又来报道了!哈哈哈哈哈嗝🐶。

牛马baby的博客 2424

ResNet改进(51):基于轴向注意力机制的改进ResNet模型

本文介绍了一种结合轴向注意力机制的改进ResNet模型。 通过在传统CNN中引入轴向注意力,我们能够在保持计算效率的同时,增强模型对图像全局上下文的理解能力。这种混合架构结合了CNN的局部特征提取优势和注意力机制的全局建模能力,在图像识别任务中表现出色。 轴向注意力机制的应用不仅限于ResNet,也可以灵活地集成到其他CNN架构中。 未来可以探索更多注意力变体,或将其应用于特定领域任务,如医学图像分析、自动驾驶等需要精确空间理解的场景。 希望本文能帮助你理解如何将注意力机制与传统CNN结合,为你的计

2401_82355416的博客 359

JAVA面试题分享一百九十:熔断和降级怎么理解?有什么区别?

服务熔断与服务降级比较 熔断和降级都是系统自我保护的一种机制,但二者又有所不同,它们的区别主要体现在以下几点: 概念不同 触发条件不同 归属关系不同

之乎者也·的博客 2794

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java面试题--熔断和降级的区别

熔断和降级都是在面对高并发或系统故障等异常情况下,为了保护系统稳定性而采取的容错措施。虽然它们的目的都是为了保护系统,但是它们的实现方式和作用是不同的,下面是它们的区别:触发条件不同:熔断是根据故障的发生率来触发,一般是在服务出现错误的情况下触发,当错误的比例超过一定阈值时,会自动切换到熔断状态,从而避免对服务的继续请求;而降级是根据系统的负载情况来触发,当系统达到某个负载水平时,会自动触发降级,以减轻系统压力。

一生烟雨的博客 1893

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

浅谈微服务Spring Cloud(面试必备):服务雪崩、降级与熔断

浅谈微服务Spring Cloud(面试必备):服务雪崩、降级与熔断 前言 今天博主将为大家分享浅谈微服务Spring Cloud(面试必备):服务雪崩、降级与熔断,不喜勿喷,如有异议欢迎讨论! 我要先说明一下,我有很长一段时间将服务降级和服务熔断混在一起,认为是一回事! 为什么我会有这样的误解呢? 当Service A调用Service B,失败多次达到一定阀值,Service A不会再去...

Mr_chen的博客 5069

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SpringCloud 与 SpringBoot 微服务 架构 | 面试题及答案详解

目录 1.什么是微服务? 2.微服务之间如何独立通讯的? 3.SpringCloud 和 Dubbo 有哪些区别? 4.SpringBoot 和 SpringCloud 之间关系? 5.什么是熔断?什么是服务降级? 6.微服务的优缺点是什么?说下你在项目中碰到的坑。 7.eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别? 8.你所知道微服务的技术栈有...

qq_41497111的博客 1万+

【微服务】面试 2、服务雪崩

主要内容:以服务 d 为例,其包含修改和保存两个接口,若保存接口出现问题(如抛异常),服务 a 调用该接口时可加入降级逻辑。降级逻辑可提示用户“网络有问题,请稍后再试”,此时保存功能暂时不可用。核心概念:在接口出现问题时,通过自定义逻辑使部分服务功能暂时不可用,以保障服务稳定性。关键知识点:服务降级的触发条件(接口异常)、降级逻辑的设置方式(如提示信息)以及对服务功能的影响(部分功能不可用)。主要内容:由hystrix组件提供,有关闭、打开、半开三个状态,默认关闭,可在引导类上加注解开启。

言之。 1万+

【Java超高频面试题&springCloud微服务】微服务相关高频面试题汇总

本期文章将汇总springCloud、springCloudAlibaba微服务相关的高频面试题,给最近需要找工作的朋友们总结一波,帮助大家全面掌握微服务的核心知识点,提升竞争力,为你的面试之旅保驾护航!

longshehui的博客 1189

SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控

微服务SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控

qq_44700578的博客 1675

微服务常见面试题

微服务是一种软件架构风格,它将一个大型的应用程序拆分成一组小型的、独立的服务,每个服务都运行在自己的进程中,并通过轻量级的通信机制进行交互。分布式是由一组通过网络通信协作的计算机节点组成的系统,强调任务分解到多个节点处理。微服务是将应用拆分成小型独立服务,每个服务运行在自己进程中并通过轻量级通信机制交互。服务注册与发现是微服务架构中的重要机制。服务注册是微服务启动时将自身信息上报给服务注册中心;服务发现是其他微服务或调用者向注册中心查询目标服务地址信息。

qq_30885871的博客 2852

SpringCloud 与 SpringBoot 微服务 架构 | 面试题

1.什么是微服务? 2.微服务之间如何独立通讯的? 3.SpringCloud 和 Dubbo 有哪些区别? 4.SpringBoot 和 SpringCloud 之间关系? 5.什么是熔断?什么是服务降级? 6.微服务的优缺点是什么?说下你在项目中碰到的坑。 7.eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别? 8.你所知道微服务的技术栈有哪些?列举一二。 9....

weixin_44117767的博客 3111

什么是服务熔断和服务降级?

实际在工作中特别是做服务端测试,肯定会遇到服务熔断与降级相关优化,针对这部分优化,我们测试同学首先得了解这2个术语究竟是什么意思,为了解决什么问题,然后结合实际的业务场景该如何进行测试,今天我们先了解一下具体含义!

伤心的辣条 1407

Go全栈面试题(3) -微服务面试题

title: Go全栈面试题(2) -微服务面试题 tags: go author: Clown95 微服务面试题 Http get跟head get:获取由Request-URI标识的任何信息(以实体的形式),如果Request-URI引用某个数据处理过程,则应该以它产生的数据作为在响应中的实体,而不是该过程的源代码文本,除非该过程碰巧输出该文本。 head: 除了服务器不能在响应中返回消息体...

Clown95 5414
上一篇: XXL-JOB分布式任务调度框架(二)-策略详解
下一篇: XXL-JOB分布式任务调度框架(三)-集群部署
熊猫IT技术
熊猫IT技术 优质创作者: Java技术领域 优质创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 6021粉丝 1306原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊猫IT技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值