熔断与降级的那些事

news2024/10/6 16:24:38

在这里插入图片描述

什么熔断

熔断(Circuit Breaker)是一种用于限制系统请求的机制,其目的是防止系统在发生故障或异常情况下继续执行无效的调用,从而避免雪崩效应和进一步的系统损害。

熔断器通常用于分布式系统中的微服务架构中,它负责监控对某个服务的请求情况,并根据事先定义好的规则,在达到一定阈值时触发断路操作。当服务被熔断时,后续的请求将直接被熔断器拒绝,不再继续请求该服务,而是快速返回一个事先设定好的备选响应或错误信息。

当服务发生故障或过载等异常情况时,熔断器可以起到以下几个作用:

  1. 快速失败:通过熔断能够快速拒绝无效的请求,避免请求堆积和耗尽资源。
  2. 避免雪崩效应:及早熔断某个不可用的服务,避免由于服务故障导致的级联故障,从而保护整个系统的稳定性。
  3. 提供降级策略:在服务熔断后,可以提供备选方案或默认值,确保系统的基本功能可用,避免完全不可用。

熔断器通常会记录请求失败率、响应时间等指标,并根据这些指标动态地判断是否需要触发熔断。一旦触发熔断,熔断器会经过一段时间的休眠或半开状态,然后尝试恢复对服务的请求,以检测服务是否已恢复正常。

总之,熔断是一种保护系统稳定性和提高可用性的机制,通过监控和限制请求来防止故障蔓延以及维护系统的正常运行。

什么是降级

降级(Degradation)是一种在系统遇到异常情况或负载过高时,通过放弃某些功能或服务的方式保证系统的可用性和稳定性的策略。

当系统遭遇异常、压力过大或资源不足等情况时,降级可以帮助系统优先保障核心功能的正常运行,而放弃一些次要功能或服务。这样做可以减少对有限资源的消耗,避免系统崩溃或响应过慢,从而提高整个系统的鲁棒性和用户体验。

降级的具体方式和策略根据系统的实际需求和业务特点而定。下面是一些常见的降级策略:

  1. 降低服务质量:例如,在高负载期间可以放宽响应时间目标,允许较高的错误率或警告阈值等。这样可以降低系统处理压力,保证核心功能的正常调用。

  2. 关闭非核心功能:将非关键或次要的功能暂时关闭,以减少资源的使用和开销。例如,关闭某些可选的模块或插件,停止某些后台任务等。

  3. 提供默认值或备用方案:如果某些外部依赖服务不可用,可以提供默认值或备选方案,确保系统仍能提供基本的功能和服务。例如,返回缓存数据、使用本地计算代替耗时的远程调用等。

  4. 限流:当请求过多时,通过限制接收请求的数量或速率,防止系统超负荷运行。可以采用队列、令牌桶等算法来控制请求的并发性。

  5. 削峰平台:通过引入削峰平台,对突发流量进行平滑处理,避免瞬时高峰对系统的冲击。例如,CDN、负载均衡等

熔断和降级的联系与区别

熔断和降级是在分布式系统中用于提高系统健壮性和可用性的两种策略,它们既有联系也有区别。

联系:

  1. 均用于应对异常情况:熔断和降级都是为了应对服务故障、系统负载过重或其他异常情况而采取的策略。
  2. 都可以保护整个系统:通过熔断和降级机制,可以减少故障蔓延的风险,保护整个系统的稳定性。
  3. 旨在提高系统可用性:熔断和降级都是为了确保系统在异常情况下仍能继续提供基本功能,从而提高系统的可用性。

区别:

  1. 触发时机不同:熔断通常与特定服务相关,当该服务出现故障或超过一定阈值时,触发熔断;而降级是针对整个系统,在整个系统压力过大或资源不足时进行降低服务级别的操作。
  2. 目的不同:熔断的目的是为了迅速拒绝无效请求、防止雪崩效应,保护系统免受故障影响;而降级的目的是为了减轻系统压力、优化资源利用,保证核心功能的可用性。
  3. 操作层次不同:熔断通常在服务调用的一级进行操作,通过控制是否允许请求达到具体服务;而降级更多是针对整个系统的一级或多级服务进行动态调整。

综上所述,熔断和降级是两种具有相互补充作用的策略,在分布式系统中可以结合使用,以提高系统的稳定性和可用性。

业务场景

熔断 (Circuit Breaking) 的经典场景:

  1. 服务故障:当某个服务出现故障或响应时间过长时,通过熔断机制迅速拒绝该服务的请求,避免等待超时或资源浪费。
  2. 雪崩效应防护:当一个服务依赖于多个下游服务的同时调用,若其中一个下游服务发生故障,可通过熔断机制快速隔离故障,并返回预定义的默认值,以避免故障扩散导致整个系统崩溃。

降级 (Degradation) 的经典场景:

  1. 高并发压力:在系统访问量激增、服务器负载过重或网络拥堵等情况下,通过降级策略暂时关闭某些非核心功能或限制部分用户的访问,以保证核心功能的稳定运行。
  2. 资源不足:当系统资源如数据库连接、缓存空间等不足时,可以通过降级策略暂停某些不是紧急需求的服务或功能,从而优化资源利用和保证核心功能的正常运行。

需要注意的是,熔断和降级是根据具体系统需求和实际情况来确定的,不同的系统可能有不同的适用场景和策略配置。在设计和实施时,需要综合考虑系统的可用性、性能、资源利用和用户体验等因素。

联系实际

对于双十一和618等大型促销活动,常涉及以下场景中的一些:

熔断 (Circuit Breaking) 的适用场景:

  1. 销售峰值:在促销活动期间,网站或应用程序可能面临巨大的用户访问量激增,这会给系统带来巨大的压力。如果某些关键服务无法处理如此高的并发请求,熔断机制可以被触发,拒绝一部分请求并返回友好的错误提示,以避免整个系统的崩溃。
  2. 渠道/支付故障:在线购物活动中,支付渠道的可用性至关重要。如果支付渠道出现故障或延迟,熔断机制可以快速停止使用该支付渠道,并切换到备用支付渠道,以确保顺利完成交易。

降级 (Degradation) 的适用场景:

  1. 非核心功能降级:为了保证核心功能的稳定性,一些非核心功能如特殊活动页面、个性化推荐等可能会被暂时关闭或降级。这样可以减轻系统负载,集中资源在核心功能上,提供更流畅的购物体验。
  2. 广告服务降级:促销活动期间,广告请求和展示量可能大幅增加。为避免广告服务对系统性能产生过大影响,可以降级某些广告服务或限制广告显示的频率,以保证核心业务的正常进行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/751249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

taro3 微信小程序 createIntersectionObserver 监听无效

项目: taro3 vue3 官方文档 版本:3.x Taro.createIntersectionObserver(component, options) 创建并返回一个 IntersectionObserver 对象实例。在自定义组件或包含自定义组件的页面中,应使用 this.createIntersectionObserver([options]) …

FSMC外设—扩展外部SRAM

目录 FSMC—扩展外部SRAM 前言 SRAM SRAM控制原理 SRAM芯片外观 SRAM芯片的内部功能框架 SRAM信号线 SRAM的存储矩阵 地址译码器、列I/O及I/O数据电路 控制电路 SRAM的读写流程 FSMC FSMC简介 FSMC框图剖析 通讯引脚 存储器控制器 时钟控制逻辑 FSMC的地址映…

【USRP X410】LabVIEW参考架构软件,用于使用Ettus USRP X410对无线系统进行原型验证

LabVIEW参考架构软件,用于使用Ettus USRP X410对无线系统进行原型验证 设备 1 MHz to 7.2 GHz,400 MHz带宽,GPS驯服OCXO,USRP软件无线电设备 - Ettus USRP X410集成硬件和软件,可帮助您制作高性能无线系统的原型&…

探索非洲专线物流的新时代_国际物流供应链管理平台_箱讯科技

随着全球化的发展,非洲作为一个充满机遇和挑战的大陆,吸引着越来越多的企业和投资者。然而,由于非洲的地理复杂性和基础设施不完善,物流问题一直是制约非洲发展的瓶颈之一。为了解决这一问题,非洲专线物流应运而生。本…

分布式数据库HBase,它到底是怎么组成的?

原文链接:http://www.ibearzmblog.com/#/technology/info?id3f432a2451f5f9cb9a14d6e756036b67 前言 大数据的核心问题无非就是存储和计算这两个。Hadoop中的HDFS解决了数据存储的问题,而HBase就是在HDFS上构建,因此Hbase既能解决大数据存…

【广州华锐互动】AR远程巡检系统在设备维修保养中的作用

随着科技的不断发展,AR(增强现实)远程巡检系统在设备检修中发挥着越来越重要的作用。这种系统可以将AR技术与远程通信技术相结合,实现对设备检修过程的实时监控和远程指导,提高设备检修的效率和质量。 首先,AR远程巡检系统可以帮助…

004.PADS VX2.4常用快捷键及无模命令

1.常用快捷键: F2 布线(Layout) F3 布线(Router) F4 切换layer F6 选中一个导线按f6选中整个网络 TAB 旋转 CtrlA select All 全选 CtrlB sheet 切换到整线sheet可以的视图状态 CtrlC copy 复制选定对象(可以是多选或选一范围): 也可以在按住Ctrl同时拖动选定对象…

微信小程序音频播放失败:TypeError: Cannot read property ‘duration‘ of undefined

报错截图 最下面这个this.setData()报错可不用理会,是this取值的问题 解决 需要播放和暂停功能时,需要把audio以及他的src放在Page外面。不能缺少 audioCtx.onPlay() 和 audioCtx.onError()两个方法,且需要放在play()方法之前如果在wx.crea…

解决/usr/bin/ld: cannot find -l****解决

运行程序时出现了以下错误 在这里说明一下出现/usr/bin/ld: cannot find -l****其实都是出现了类似的问题,只是各自的文件不同 其中****即表示函式库文件名称,如上例的:libstdc.so、libluuid.so 其命名规则是:lib库名(即xxx).so …

pytorch深度学习 之一 神经网络梯度下降和线性回归

张量和随机运行,exp函数 import torch a torch.tensor([[1,2],[3,4]]) print(a) a torch.randn(size(10,3)) print(a) b a-a[0] print(torch.exp(b)[0].numpy())输出: tensor([[1, 2],[3, 4]]) tensor([[-1.0165, 0.3531, -0.0852],[-0.1065, -0.5…

【HCIA】06.静态路由

路由器的作用:通过路由器让不同广播域实现互联互通;路由可以指的是路由器,也可以是传递的一个动词,或者是一个路由条目信息。 在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之…

学会写作读后感

读书不是任务 有句俗话说:“清醒时做事,迷茫时读书,独处时思考,烦躁时运动”。 读书 不仅让我们 跨越时间,空间 去感受 作者 思想的力量,也连接了另一个世界——认知,想象,情感,美…

PDF转CAD后尺寸如何保持一致?这几种方法可以尝试一下

CAD文件是可编辑的,可以进行修改、添加和删除,这使得在CAD软件中进行编辑更加容易和灵活。这意味着,如果需要对图纸进行修改或者添加新的元素,可以直接在CAD软件中进行操作,而不需要重新制作整个图纸。那么将PDF文件转…

BFS广度优先搜索

目录 一、BFS的概念BFS的定义BFS的搜索方式BFS的特点 二、BFS的实战应用1.走迷宫代码实现扩展 2.升级版走迷宫(边的权值不同)思路代码实现扩展 3.八数码代码实现 一、BFS的概念 BFS的定义 BFS(Breadth-First Search)广度优先搜索…

Python 和 RabbitMQ 进行消息传递和处理

一、RabbitMQ 简介 RabbitMQ 是一个开源的消息代理软件,它实现了高级消息队列协议(AMQP)标准。它的官方客户端提供了多种编程语言的接口,包括 Python、Java 和 Ruby 等。它支持消息的持久化、多种交换机类型、消息通知机制、灵活…

面试题更新之-什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的IE?css实现响应式设计的方案

文章目录 什么是响应式设计?响应式设计的基本原理是什么如何兼容低版本的IE?css实现响应式设计的方案媒体查询(Media Queries):弹性单位(Flexible Units):Flexbox布局:Gr…

应用程序的执行 第 4 章 Spark 任务调度机制

应用程序的执行 && 第 4 章 Spark 任务调度机制 应用程序的执行(1) RDD 依赖shuffledRDDShuffleDependencyMapPartitionRDDOneToOneDependency (2) 阶段的划分shuffledRDDRDDShuffleMapStageResultStage (3) 任务的切分(4) 任务的调度TaskTaskPool (5) 任务的执行Task…

【Unity面试篇】Unity 面试题总结甄选 |热更新与Lua语言 | ❤️持续更新❤️

前言 关于Unity面试题相关的所有知识点:🐱‍🏍2023年Unity面试题大全,共十万字面试题总结【收藏一篇足够面试,持续更新】为了方便大家可以重点复习某个模块,所以将各方面的知识点进行了拆分并更新整理了新…

解决 Qt 下载安装太慢的办法

Qt 现在新的版本都是采用在线安装,那速度实在是.... 找了一些方法,原理就是用 Fiddler 来代理,然后替换掉 url 成清华的镜像地址,这样就相当于直接从清华安装了,嘎嘎快 打开 Fiddler, 打开 Qt 安装程序,在…

【Visual Studio】在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK

知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 之前在 Windows 上完成了使用 Visual Studio 构建 VTK,这一篇结合实现 Qt 在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK。之前的文章链接为…