高并发系统设计 40 问
唐扬
美图公司技术专家
49013 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
高并发系统设计 40 问
15
15
1.0x
00:00/00:00
登录|注册

34 | 降级熔断:如何屏蔽非核心系统故障的影响?

演练的重要性
降级策略
开关降级
有损的系统容错方式
降级是一个更大的概念
Redis客户端中的熔断器实现
云计算领域的断路器模式
状态切换过程
服务调用方维护有限状态机
电路中保险丝的保护机制
服务雪崩情况
系统资源消耗
局部故障导致全局故障
降级机制要如何做
熔断机制是如何做的
雪崩是如何发生的
一课一思
降级熔断
降级熔断机制

该思维导图由 AI 生成,仅供参考

你好,我是唐扬。
到目前为止,你的电商系统已经搭建了完善的服务端和客户端监控系统,并且完成了全链路压测。现在呢,你们已经发现和解决了垂直电商系统中很多的性能问题和隐患。但是千算万算,还是出现了纰漏。
本来,你们对于应对“双十一”的考验信心满满,但因为欠缺了一些面对巨大流量的经验,在促销过程中出现了几次短暂的服务不可用,这给部分用户造成了不好的使用体验。事后,你们进行了细致的复盘,追查出现故障的根本原因,你发现,原因主要可以归结为两大类。
第一类原因是由于依赖的资源或者服务不可用,最终导致整体服务宕机。举例来说,在你的电商系统中就可能由于数据库访问缓慢,导致整体服务不可用。
另一类原因是你们乐观地预估了可能到来的流量,当有超过系统承载能力的流量到来时,系统不堪重负,从而出现拒绝服务的情况。
那么,你要如何避免再次出现这两类问题呢?我建议你采取降级、熔断以及限流的方案。限流是解决第二类问题的主要思路(下一节课,我会着重讲解)。今天这节课,我主要讲一下解决第一类问题的思路:降级和熔断。
不过在此之前,我先带你了解一下这个问题为何存在,因为你只有弄清楚出现故障的原理,才能更好地理解熔断降级带来的好处。

雪崩是如何发生的

确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了在电商系统中如何通过降级、熔断以及限流的方案来屏蔽非核心系统故障的影响。作者首先解释了“雪崩”现象的发生原理,即局部故障最终导致全局故障的情况。然后详细介绍了熔断机制的实现方式,包括状态切换过程和在调用Redis等资源时引入熔断机制的示例。通过实时监测故障节点并避免请求有问题的节点,熔断机制可以有效防止单个节点故障导致整体系统的雪崩。文章还介绍了开关降级的概念,通过预先埋设一些“开关”来控制服务调用的返回值,实现降级策略。最后,强调了经过演练的开关才是有用的开关,并提出了在项目中制定降级预案时需要考虑的重点。总的来说,本文深入浅出地介绍了熔断机制和降级策略的原理和实现方式,对于需要解决系统故障影响的技术人员具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《高并发系统设计 40 问》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(15)

  • 最新
  • 精选
  • 阿卡牛
    不怕你说不行,就怕你不吭声

    作者回复: 很形象,^_^

    2019-12-13
    3
    45
  • ︶ㄣ.ァ黃帥傑︶ㄣ
    老师,为啥核心业务不能降级哇

    作者回复: 核心业务降级不就是故障了。。

    2020-04-29
    16
  • 丁丁历险记
    好的开关需要经过演练。

    作者回复: 必须要演练

    2019-12-26
    3
    8
  • 蓝魔丶
    请教老师一个问题,熔断和开关降级都是有损的处理方式,文中提到是针对非核心业务,但是如果核心业务也遇到两类问题的困扰的时候,需要怎么处理?不能采用熔断和开关降级这种方式吗?如果采用后面讲到限流降级可以保证核心业务的可用性,但是还是感觉是有损的,毕竟可能会丢弃部分请求,或者返回错误,所以针对核心业务有什么更好的方式处理吗?尽量对核心业务的损耗更低

    作者回复: 可以使用限流,也可以设置合适的超时时间,还可以扩容

    2019-12-11
    2
    8
  • 木木
    hystrix源码去翻一遍,再结合这个看看。收获颇多。只可惜原来的项目中不够重视

    作者回复: 也可以看看阿里开源的哨兵~

    2020-04-22
    5
  • 电光火石
    请问,如果核心业务,比如说双十一的时候,支付场景下,银行跟不上这么大的流量,那这个时候熔断和降级其实都不合适,应该怎么做,谢谢了!

    作者回复: 应该是限流吧。 另外支付调用银行的接口可以是异步的,然后等待银行的回调,这样就可以把支付请求放入队列,用户的感知是支付成功有些延迟

    2019-12-17
    5
    3
  • nestle
    请问处于熔断状态,为啥直接返回空,而不是换一个节点重试呢?

    作者回复: 如果是对于http服务的熔断,你不要了能知道后面调用的是哪一个节点

    2020-02-07
  • 星空123
    dubbo的监控中心也有降级

    作者回复: 是框架提供的降级策略

    2019-12-14
  • 视具体情况而定,大促应急预案演练都会写明,也会抽时间抽人现场操练操练。 大体降级策略如下: 第一降日志 第二降非核心服务 第三降降核心服务 基本第一就OK,第二也有启用的时候,不过第三三年来未曾启用过。具体降什么?怎么降?何时恢复?这些都必须做好前期准备,另外前期的压测扩容,也是保障服务高可用的重要环节,前期准备越好后面问题越少,所以,降级的操作也就可以少做了,大促时主要是观察监控项,随时准备解决突发问题。
    2020-05-09
    6
  • tt
    嗯,新功能上线时通过开关来实现快速的回滚,即从高版本回滚到低版本也是一种降级。 这样有选择的降级就和蓝绿发布连接在一起了
    2019-12-11
    3
收起评论
显示
设置
留言
15
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部