【锁定直播】字节、华为云、阿里云等技术专家讨论如何将大模型接入 AIOps 解决实际问题,戳>>> 了解详情
写点什么

聊聊分布式系统的认知故障和弹力设计

  • 2018-03-14
  • 本文字数:1402 字

    阅读完需:约 5 分钟

更多左耳朵耗子的独家干货,请订阅极客时间出品的陈皓全年专栏《左耳听风》,一次订阅、永久阅读。即日起,戳此订阅立享以下两大福利:

福利一:原价 ¥199/ 年,极客时间新用户注册立减 ¥30

福利二:每邀请一位好友购买,你可获得 36 元现金返现,多邀多得,上不封顶,立即提现(提现流程:极客时间服务号 - 我的 - 现金奖励提现)

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

本文摘自陈皓(左耳朵耗子)在极客时间 App 上开始的全年付费专栏《左耳听风》,已获授权。欲阅读更多独家文章,请点击此处订阅专栏阅读(支持微信支付)。

我前面写的《分布式系统架构的本质》系列文章,从分布式系统的业务层、中间件层、数据库层等各个层面介绍了高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,也就是所谓的“纲”。通过这个“纲”,你能够按图索骥,掌握分布式系统中每个部件的用途与总体架构思路。

为了让你更深入地了解分布式系统,在接下来的几期中,我想谈谈分布式系统中一些比较关键的设计模式,其中包括容错、性能、管理等几个方面。

  • 容错设计又叫弹力设计,其中着眼于分布式系统的各种“容忍”能力,包括容错能力(服务隔离、异步调用、请求幂等性)、可伸缩性(有 / 无状态的服务)、一致性(补偿事务、重试)、应对大流量的能力(熔断、降级)。可以看到,在确保系统正确性的前提下,系统的可用性是弹力设计保障的重点。
  • 管理篇会讲述一些管理分布式系统架构的一些设计模式,比如网关方面的,边车模式,还有一些刚刚开始流行的,如 Service Mesh 相关的设计模式。
  • 性能设计篇会讲述一些缓存、CQRS、索引表、优先级队列、业务分片等相关的架构模式。

我相信,你在掌握了这些设计模式之后,无论是对于部署一个分布式系统,开发一个分布式的业务模块,还是研发一个新的分布式系统中间件,都会有所裨益。

今天分享的就是《分布式系统设计模式》系列文章中的第一篇《弹力设计篇之“认识故障和弹力设计”》。

系统可用性测量

对于分布式系统的容错设计,在英文中又叫 Resiliency(弹力)。意思是,系统在不健康、不顺,甚至出错的情况下有能力 hold 得住,挺得住,还有能在这种逆境下力挽狂澜的能力。

要做好一个设计,我们需要一个设计目标,或是一个基准线,通过这个基准线或目标来指导我们的设计,否则在没有明确的基准线的指导下,设计会变得非常不明确和不可预测或不可测量。可测试和可测量性是软件设计中非常重要的事情。

我们知道,容错主要是为了可用性,那么,我们是怎样计算一个系统的可用性的呢?下面是一个工业界里使用的一个公式:

其中,

  • MTTF 是 Mean Time To Failure,平均故障前的时间,即系统平均能够正常运行多长时间才发生一次故障。系统的可靠性越高,MTTF 越长。(注意:从字面上来说,看上去有 Failure 的字样,但其实是正常运行的时间。)
  • MTTR 是 Mean Time To Recovery,平均修复时间,即从故障出现到故障修复的这段时间,这段时间越短越好。

这个公式就是计算系统可用性的,也就是我们常说的,多少个 9,如下表所示。

根据上面的这个公式,为了提高可用性,我们要么提高系统的无故障时间,要么减少系统的故障恢复时间。

然而,我们要明白,我们运行的是一个分布式系统,对于一个分布式系统来说,要不出故障简直是太难了。

注:以上仅为文章的一部分,欲阅读全文,请点击此处订阅专栏(支持微信支付)。一次订阅,永久阅读。

2018-03-14 19:001980

评论

发布
暂无评论
  • 牛掰!阿里人用 7 部分讲明白百亿级高并发系统(全彩版小册开源)

    提到“高并发”相信你们应该都不会感到陌生!此时你脑中应该会浮现好多有关高并发的:业务急剧增长、电商购物、电商秒杀、12306抢票、淘宝天猫各种活动等;都是需要用到高并发的,那么如何去设计一个高并发系统抵挡这些冲击呢?

    2021-08-31

  • 架构实战营模块二作业

    微信朋友圈高性能设计

    2021-11-01

  • 冲云破雾——10 分钟带你了解六大云上服务架构

    讲师介绍: 吕蕴偲,SRE 工程师,就职于国内某云服务商,负责 DevOps 及云上解决方案架构设计,多年云行业相关领域经验。熟悉 AWS 亚马逊云、阿里云等公有云,同时拥有 AWS 解决方案架构师认证及阿里云解决方案架构师认证,对多云云上架构设计部署有相关经验。 问题背景: 随着云上服务的开通,我们的需求从地端转换到了云端,以前 IDC 的那套模式已经不完全适用了。线上的架构搭建与线下的搭建有着本质的区别,线下的部署没有所谓的服务模型区分,可以笼统地归结到“基础设施”服务上来。而云上,有着较为明显的界限划分,即分为 IaaS 基础设施即服务、PaaS 平台即服务和 SaaS 软件即服务,近两年又出现了新兴 FaaS 函数即服务的服务模式。 面对这些复杂且多样的云服务,我们该如何根据不同需求搭建架构设计?本节课,我们将从简单到复杂、从单体到分布式说一说常见的几种架构设计和选择。 内容看点: 几种常见的架构设计模式 云端服务架构选择

    2021-12-24

  • 10 分钟带你彻底搞懂迭代器设计模式

    2022-07-08

  • 结课测试|这些面试问题,你都掌握了么?

    为了帮助你检验自己的学习效果,我特别为你准备了一套结课测试题。测试题共有20道题目,满分100分。

    2021-05-15

  • 【愚公系列】2022 年 05 月 二十三种设计模式 (六)- 适配器模式 (Adapter Pattern)

    <font color=#999AAA >设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式

    2022-05-06

  • 【愚公系列】2022 年 05 月 二十三种设计模式 (十七)- 中介者模式 (Mediator Pattern)

    设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化

    2022-05-29

  • DDIA 读书笔记(7)分布式系统的问题

    根据墨菲定律,我们需要用最悲观的态度来看待分布式系统中可能出现的问题,本文将对这些问题进行总结。

    2020-12-21

  • 10 分钟带你彻底搞懂组合设计模式

    2022-06-10

  • 听过闰年闰月,听过闰秒吗?

    闰年闰月大家都知道,可是你听说过闰秒这回事情吗?

    2021-01-16

  • 队列同步器 AQS

    同步器的设计是基于模板方法模式的,

    2022-05-12

  • 架构 11 周

    11周主要是高可用性系统相关知识

    2021-02-09

  • 10 分钟带你彻底搞懂 DDD 开发框架 Axon

    讲师介绍: 萧亦然,资深技术专家、TGO 鲲鹏会会员、阿里云 MVP、腾讯云 TVP。 问题背景: 当下,随着微服务架构的不断发展,领域驱动设计(DDD)也得到了越来越多的应用。但业界并没有针对如何实现 DDD 中聚合、领域事件等复杂概念提供统一的开发规范。在这个背景下,开发人员迫切希望能够引入即插即用的开源框架,来简化 DDD 应用程序的开发过程,Axon就是这样一款开发框架。 内容看点: Axon 的技术组件 Axon 的应用方式

    2022-03-15

  • 终于有人!把双十一电商秒杀系统高并发架构全部讲清楚了

    提到“高并发”相信你们应该都不会感到陌生!此时你脑中应该会浮现好多有关高并发的:业务急剧增长、电商购物、电商秒杀、12306抢票、618、双11各种活动等;都是需要用到高并发的,那么如何去设计一个高并发系统抵挡这些冲击呢?

    2021-08-12

  • 万字长文说透分布式锁

    “分布式锁”这个问题快被说烂了,奈何笔者实在没有找到一个满意的答案,故记录自己寻找答案、总结的过程。分布式锁的设计涉及了许多分布式系统相关的问题,许多地方值得推敲,非常有意思。

    2021-09-05

  • 【愚公系列】2022 年 06 月 二十三种设计模式 (十九)- 观察者模式 (Observer Pattern)

    设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化

    2022-06-01

  • 王者荣耀商城异地多活架构设计

    为王者荣耀商城设计异地多活架构

    2022-03-26

  • Java 基础笔试题,rabbitmq 教程 go,netty 框架工作原理

    在分布式系统要满足CAP原则,一个提供数据服务的存储系统无法同时满足:数据一致性、数据可用性、分区耐受性。

    2021-10-25

  • 期末测试|来赴一场满分之约!

    来赴一场满分之约!

    2023-04-12

发现更多内容

2 期架构师训练营 - 第十一周作业与总结

云飞扬

架构师训练营第2期

2 期架构师训练营 - 第十二周作业与总结

云飞扬

架构师训练营第2期

「架构师训练营 4 期」 第六周 - 001&2

凯迪

架构师训练营 4 期

第十一周课后练习

Binary

第11周学习总结

Binary

大作业(二)-知识点

hunk

架构师训练营第2期

第四章学习总结

Kalman

产品经理 产品经理训练

iOS中MVC、MVP、MVVM、VIPER等技术框架的选型与实践

行者

架构设计 Architecture

第十周作业总结

jizhi7

架构师训练营 4 期 第6周

引花眠

架构师训练营 4 期

第四章作业

Kalman

产品经理 产品经理训练营

MyBatis专栏 - 二级缓存

小马哥

Java mybatis 七日更 2月春节不断更

怀乡恋土的人们

熊斌

学习 2月春节不断更

week11 作业

zbest

白话Mysql的锁和事务隔离级别!死锁、间隙锁你都知道吗?

Java鱼仔

MySQL 高可用

协会组织如何实现数字化落地应用?

boshi

数字化转型 七日更

大作业二

jizhi7

与前端训练营的日子 -- Week15

SamGo

学习

大作业一:

未来已来

记录一次BAT一线互联网公司前端JavaScript面试

我是哪吒

JavaScript 学习 面试 大前端 2月春节不断更

2 期架构师训练营 - 第十周作业与总结

云飞扬

架构师训练营第2期

快递架构设计

梧桐

大作业一

jizhi7

2 期架构师训练营 - 第十三周作业与总结

云飞扬

架构师训练营第2期

第十三周-总结

jizhi7

数组与链表学习总结

Nick

数组 链表 数据结构与算法

架构内容

梧桐

第十一周 - 总结

jizhi7

第十二周总结

jizhi7

产品 0 期 - 第四/五周作业

Jxin

第十一周 安全稳定知识课后作业

简简单单

聊聊分布式系统的认知故障和弹力设计_语言 & 开发_陈皓_InfoQ精选文章