服务降级和熔断机制

news2024/12/24 20:36:42

 

🏆今日学习目标:

🍀服务降级和熔断机制
创作者:林在闪闪发光
⏰预计时间:30分钟
🎉个人主页:林在闪闪发光的个人主页

 🍁林在闪闪发光的个人社区,欢迎你的加入: 林在闪闪发光的社区

目录

一.服务降级

 1.什么是降级?

2.服务降级的方式 

3.服务降级的分类 

4.大规模分布式系统如何降级 

二.熔断机制 

1.什么是熔断? 

2.降级和熔断的区别 

3.常见的熔断器组件


 

一.服务降级

 1.什么是降级?

降级是从系统功能优先级的角度考虑如何应对系统故障。

服务降级指的是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。

降级服务的特征如下:

  • 原因: 整体负荷超出整体负载承受能力。
  • 目的: 保证重要或基本服务正常运行,非重要服务延迟使用或暂停使用
  • 大小: 降低服务粒度,要考虑整体模块粒度的大小,将粒度控制在合适的范围内
  • 可控性: 在服务粒度大小的基础上增加服务的可控性,后台服务开关的功能是一项必要配置(单机可配置文件,其他可领用数据库和缓存),可分为手动控制和自动控制。
  • 次序: 一般从外围延伸服务开始降级,需要有一定的配置项,重要性低的优先降级比如可以分组设置等级1-10,当服务需要降级到某一个级别时,进行相关配置

2.服务降级的方式 

  1. 延迟服务: 比如发表了评论,重要服务,比如在文章中显示正常,但是延迟给用户增加积分,只是放到一个缓存中,等服务平稳之后再执行。
  2. 在粒度范围内关闭服务(片段降级或服务功能降级): 比如关闭相关文章的推荐,直接关闭推荐区
  3. 页面异步请求降级: 比如商品详情页上有推荐信息/配送至等异步加载的请求,如果这些信息响应慢或者后端服务有问题,可以进行降级;
  4. 页面跳转(页面降级): 比如可以有相关文章推荐,但是更多的页面则直接跳转到某一个地址。
  5. 写降级: 比如秒杀抢购,我们可以只进行Cache的更新,然后异步同步扣减库存到DB,保证最终一致性即可,此时可以将DB降级为Cache。
  6. 读降级: 比如多级缓存模式,如果后端服务有问题,可以降级为只读缓存,这种方式适用于对读一致性要求不高的场景。

3.服务降级的分类 

降级按照是否自动化可分为:

  • 自动开关降级(超时、失败次数、故障、限流·
  • 人工开关降级(秒杀、电商大促等)

 自动降级分类又分为:

  1. 超时降级:主要配置好超时时间和超时重试次数和机制,并使用异步机制探测回复情况
  2. 失败次数降级:主要是一些不稳定的api,当失败调用次数达到一定阀值自动降级,同样要使用异步机制探测回复情况
  3. 故障降级:比如要调用的远程服务挂掉了(网络故障、DNS故障、http服务返回错误的状态码、rpc服务抛出异常),则可以直接降级。降级后的处理方案有:默认值(比如库存服务挂了,返回默认现货)、兜底数据(比如广告挂了,返回提前准备好的一些静态页面)、缓存(之前暂存的一些缓存数据)
  4. 限流降级:当我们去秒杀或者抢购一些限购商品时,此时可能会因为访问量太大而导致系统崩溃,此时开发者会使用限流来进行限制访问量,当达到限流阀值,后续请求会被降级:降级后的处理方案可以是:排队页面(将用户导流到排队页面等一会重试)无货(直接告知用户没货了)、错误页(如活动太火爆了,稍后重试)

4.大规模分布式系统如何降级 

在大规模分布式系统中,经常会有成百上千的服务。在大促前往往会根据业务的重要程度和业务间的关系批量降级。这就需要技术和产品提前对业务和系统进行梳理,根据梳理结果确定哪些服务可以降级,哪些服务不可以降级,降级策略是什么,降级顺序怎么样,大型互联网公司基本都会有自己的降级平台,大部分降级都在平台上握作,比如手动降级开关,批量降级顺序管理,熔断阈值动态设置,限流阈值动态设置等等。

二.熔断机制 

1.什么是熔断? 

熔断是应对微服务雪崩效应的一种链路保护机制,类似股市、保险丝

微服务之间的数据交互是通过远程调用来完成的。服务A调用服务,服务B调用服务c,某一时间链路上对服务 C的调用响应时间过长或者服务C不可用,随着时间的增长,对服务C的调用也越来越多,然后服务C崩溃了,但是链路调用还在,对服务B的调用也在持续增多,然后服务B崩溃,随之A也崩溃,导致雪崩效应

服务熔断是应对雪崩效应的一种微服务链路保护机制。例如在高压电路中,如果某个地方的电压过高,熔断器就会熔断,对电路进行保护。同样,在微服务架构中,熔断机制也是起着类似的作用。当调用链路的某个微服务不可用或者响应时间太长时,会进行服务熔断,不再有该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。

服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。

2.降级和熔断的区别 

熔断和降级是两个比较容易混淆的概念,两者的含义并不相同。

降级的目的在于应对系统自身的故障,而熔断的目的在于应对当前系统依赖的外部系统或者第三方系统的故障。

3.常见的熔断器组件

SpringCloud官方目前推荐的熔断器组件如下:

  • ·Hystrix
  • ·Resilience4J·Sentinel
  • ·SpringRetry

我们单独拎出Sentinel和Hystrix来说一下(没记错的话,Hystrix目前已经没有维护了。)。

Hystrix是Netflix开源的熔断降级组件,Sentinel是阿里中间件团队开源的一款不光具有熔断降级功能,同时还支持系统负载保护的组件。

简单来说,两者都是主要做熔断降级的,两者的差异如下:

 

 

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

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

相关文章

状态机设计中的关键技术

⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。 🔥文章和代码已归档至【Github仓库&#xf…

IT行业寒冬,干测试从月薪18k降到了15k,“我”的路在何方

今天已经是2.10了,马上就是金3银4了,2023年才开始,是的,正值春天,想到了一首诗词自古逢秋悲寂寥,我言秋日胜春朝。晴空一鹤排云上,便引诗情到碧霄。秋天,意味着收获,也意…

【C语言】“指针类型”与“野指针”

文章目录一、指针是什么❔二、指针和指针类型1.指针-整数2.指针解引用三.野指针1.引起野指针的原因2.如果避免野指针完结一、指针是什么❔ 指针也就是 内存地址 ,在计算机上我们访问数据需要通过内存地址来访问,在C语言中,指针变量是用来存放…

如何编写Python程序调用ChatGPT,只需3步

如何编写Python程序调用ChatGPT,只需3步 在ChatGPT官网进行注册,注册成功后就可以对ChatGPT进行提问,ChatGPT的注册流程参考这篇文章——手把手教你注册ChatGPT,亲测可用。 来看看ChatGPT,如何回答”ChatGPT是什么“…

Deepwalk深度游走算法

主要思想 Deepwalk是一种将随机游走和word2vec两种算法相结合的图结构数据的挖掘算法。该算法可以学习网络的隐藏信息,能够将图中的节点表示为一个包含潜在信息的向量, Deepwalk算法 该算法主要分为随机游走和生成表示向量两个部分,首先…

c++11 标准模板(STL)(std::multimap)(三)

定义于头文件 <map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class multimap;(1)namespace pmr { template <class Key, class T…

SCI论文阅读-使用基于图像的机器学习模型对FTIR光谱进行功能组识别

期刊&#xff1a; Analytical Chemistry中科院最新分区&#xff08;2022年12月最新版&#xff09;&#xff1a;1区(TOP)影响因子&#xff08;2021-2022&#xff09;&#xff1a;8.008第一作者&#xff1a;Abigail A. Enders通讯作者&#xff1a;Heather C. Allen 原文链接&…

自己家用的电脑可以架设游戏吗

自己家用的电脑可以架设游戏吗家用电脑怎么用来做服务器呢&#xff1f;我是艾西&#xff0c;今天我跟大家详细的说家用电脑可以当服务器使用吗&#xff1f;咱们先把家用电脑不足的点列出来就清楚了一、外网端口映射以前的宽带大多数是adsl拨号&#xff0c;再搭配一个TP路由器&a…

SQL语句训练

好文推荐&#xff1a; 21个MySQL表设计的经验准则 后端程序员必备&#xff1a;书写高质量SQL的30条建议 我们为什么要分库分表&#xff1f; 从0.742秒到0.006秒&#xff0c;MySQL百万数据深分页优化实战 2020年MySQL数据库50面试题目含答案 MyBatis 表连接查询写法|三种对…

深度学习实战(11):使用多层感知器分类器对手写数字进行分类

使用多层感知器分类器对手写数字进行分类 1.简介 1.1 什么是多层感知器&#xff08;MLP&#xff09;&#xff1f; MLP 是一种监督机器学习 (ML) 算法&#xff0c;属于前馈人工神经网络 [1] 类。该算法本质上是在数据上进行训练以学习函数。给定一组特征和一个目标变量&#x…

2021年新公开工业控制系统严重漏洞汇总

声明 本文是学习ITOT一体化工业信息安全态势报告&#xff08;2019&#xff09;. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 工业互联网安全威胁 2021年新公开工业控制系统严重漏洞 缓冲区溢出漏洞 缓冲区溢出&#xff08;buffer overflow&…

什么是自动化测试?自动化测试现状怎么样?

什么是自动化测试&#xff1a;其实自动化测试&#xff0c;就是让我们写一段程序去测试另一段程序是否正常的过程&#xff0c;自动化测试可以更加省力的替代一部分的手动操作。 现在自动化测试的现状&#xff0c;也是所有学习者关心的&#xff0c;但现在国内公司主要是以功能测…

算法设计 - 前缀和 差分数列

一维数组前缀和的概念 前缀和的概念很简单&#xff0c;我们用一维数组的前缀和来举例&#xff0c;有如下一维数组&#xff1a; arr [1, 2, 3, 4, 5] 该数组的前缀和数组如下 preSum [1, 3, 6, 10, 15] 关系如下&#xff1a; preSum[0] arr[0]preSum[1] arr[0] arr[1]pre…

Codeforces Round #851 (Div. 2) A — C

Codeforces Round #851 A. One and Two 题目描述 给定一个序列a中的每个元素都是1或2。找出整数k是否存在&#xff0c;以满足以题目所给条件。 题目分析 1对乘积没有贡献&#xff0c;只需要注意2的个数即可&#xff0c;偶数个2即可满足条件&#xff0c;记录第cnt/2个2的位…

集成nanocaptcha库生成登录验证码

背景 需要实现一个验证码登录的功能需求。这个需求挺简单的&#xff0c;主要实现验证码图片生成给前端&#xff0c;然后&#xff0c;在登录接口比对验证码即可。刚拿到这个需求&#xff0c;好久没有搞过登录这一块了&#xff0c;所以&#xff0c;查了一下相关验证码的知识。下…

cv2--特征点特征提取(Sift,Orb,Surf)

cv2–特征点特征提取&#xff08;Sift&#xff0c;Orb&#xff0c;Surf&#xff09; 文章目录cv2--特征点特征提取&#xff08;Sift&#xff0c;Orb&#xff0c;Surf&#xff09;1. 关键点和关键点描述子2. Sift2.1 检测的步骤2.2 同时计算关键点kp和描述子des3. Surf4. Orb5. …

61 UseSerialGc的新生代回收调试

前言 呵呵 很久之前看到这样的两篇文章 [讨论] HotSpot VM Serial GC的一个问题 新生代回收调试的一些心得 在第一篇帖子中 R大 详细的讲述了 cheney 算法, 以及自己编写的 cheney 算法, 以及 DefNewGeneration 的具体的一些细节, 以及 和现有的例子的对比 另外还有一些…

leaflet 加载topojson数据,显示图形(代码示例047)

第047个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载topojson文件,将图形显示在地图上。TopoJSON文件格式是geoJSON的一种扩展,它可以对地理空间拓扑进行编码。TopoJSON文件包含数据属性和地理空间的属性。 直接复制下面的 vue+openlayers源代码,操作…

C语言入门(什么是C语言,C语言的编程机制以及一些基础计算机概念)

目录 一.什么是C语言 1.面向对象&#xff1a; 2.面向过程&#xff1a; 二.C语言特点 三.C语言开发时间 四.环境搭建 1.代码编辑器 2.C编译器 五.C语言标准 六.计算机补充知识 1.计算机构成 2.CPU工作 3.编译器 七.编写程序步骤 八.源文件&#xff0c;目标文件&a…

SpringBoot 三大开发工具,你都用过么?

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/…