左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家,骨灰级程序员
立即订阅
40357 人已学习
课程目录
已完结 108 讲
0/6登录后,你可以任选6讲全文学习。
开篇词 | 洞悉技术的本质,享受科技的乐趣
免费
01 | 程序员如何用技术变现(上)
02 | 程序员如何用技术变现(下)
03 | Equifax信息泄露始末
04 | 从Equifax信息泄露看数据安全
05 | 何为技术领导力?
06 | 如何才能拥有技术领导力?
07 | 推荐阅读:每个程序员都该知道的知识
08 | Go语言,Docker和新技术
09 | 答疑解惑:渴望、热情和选择
10 | 如何成为一个大家愿意追随的Leader?
11 | 程序中的错误处理:错误返回码和异常捕捉
12 | 程序中的错误处理:异步编程以及我的最佳实践
13 | 魔数 0x5f3759df
14 | 推荐阅读:机器学习101
15 | 时间管理:同扭曲时间的事儿抗争
16 | 时间管理:如何利用好自己的时间?
17 | 故障处理最佳实践:应对故障
18 | 故障处理最佳实践:故障改进
19 | 答疑解惑:我们应该能够识别的表象和本质
20 | Git协同工作流,你该怎么选?
21 | 分布式系统架构的冰与火
22 | 从亚马逊的实践,谈分布式系统的难点
23 | 分布式系统的技术栈
24 | 分布式系统关键技术:全栈监控
25 | 分布式系统关键技术:服务调度
26 | 分布式系统关键技术:流量与数据调度
27 | 洞悉PaaS平台的本质
28 | 推荐阅读:分布式系统架构经典资料
29 | 推荐阅读:分布式数据调度相关论文
30 | 编程范式游记(1)- 起源
31 | 编程范式游记(2)- 泛型编程
32 | 编程范式游记(3) - 类型系统和泛型的本质
33 | 编程范式游记(4)- 函数式编程
34 | 编程范式游记(5)- 修饰器模式
35 | 编程范式游记(6)- 面向对象编程
36 | 编程范式游记(7)- 基于原型的编程范式
37 | 编程范式游记(8)- Go 语言的委托模式
38 | 编程范式游记(9)- 编程的本质
39 | 编程范式游记(10)- 逻辑编程范式
40 | 编程范式游记(11)- 程序世界里的编程范式
41 | 弹力设计篇之“认识故障和弹力设计”
42 | 弹力设计篇之“隔离设计”
43 | 弹力设计篇之“异步通讯设计”
44 | 弹力设计篇之“幂等性设计”
45 | 弹力设计篇之“服务的状态”
46 | 弹力设计篇之“补偿事务”
47 | 弹力设计篇之“重试设计”
48 | 弹力设计篇之“熔断设计”
49 | 弹力设计篇之“限流设计”
50 | 弹力设计篇之“降级设计”
51 | 弹力设计篇之“弹力设计总结”
52 | 管理设计篇之“分布式锁”
53 | 管理设计篇之“配置中心”
54 | 管理设计篇之“边车模式”
55 | 管理设计篇之“服务网格”
56 | 管理设计篇之“网关模式”
57 | 管理设计篇之“部署升级策略”
58 | 性能设计篇之“缓存”
59 | 性能设计篇之“异步处理”
60 | 性能设计篇之“数据库扩展”
61 | 性能设计篇之“秒杀”
62 | 性能设计篇之“边缘计算”
63 | 区块链技术的本质
64 | 区块链技术细节:哈希算法
65 | 区块链技术细节:加密和挖矿
66 | 区块链技术细节:去中心化的共识机制
67 | 区块链技术细节:智能合约
68 | 区块链技术 - 传统金融和虚拟货币
69 | 程序员练级攻略:开篇词
70 | 程序员练级攻略:零基础启蒙
71 | 程序员练级攻略:正式入门
72 | 程序员练级攻略:程序员修养
73 | 程序员练级攻略:编程语言
74 | 程序员练级攻略:理论学科
75 | 程序员练级攻略:系统知识
76 | 程序员练级攻略:软件设计
77 | 程序员练级攻略:Linux系统、内存和网络
78 | 程序员练级攻略:异步I/O模型和Lock-Free编程
79 | 程序员练级攻略:Java底层知识
80 | 程序员练级攻略:数据库
81 | 程序员练级攻略:分布式架构入门
82 | 程序员练级攻略:分布式架构经典图书和论文
83 | 程序员练级攻略:分布式架构工程设计
84 | 程序员练级攻略:微服务
85 | 程序员练级攻略:容器化和自动化运维
86 | 程序员练级攻略:机器学习和人工智能
87 | 程序员练级攻略:前端基础和底层原理
88 | 程序员练级攻略:前端性能优化和框架
89 | 程序员练级攻略:UI/UX设计
90 | 程序员练级攻略:技术资源集散地
91 | 程序员面试攻略:面试前的准备
92 | 程序员面试攻略:面试中的技巧
93 | 程序员面试攻略:面试风格
94 | 程序员面试攻略:实力才是王中王
95 | 高效学习:端正学习态度
96 | 高效学习:源头、原理和知识地图
97 | 高效学习:深度,归纳和坚持实践
98 | 高效学习:如何学习和阅读代码
99 | 高效学习:面对枯燥和量大的知识
左耳听风
登录|注册

41 | 弹力设计篇之“认识故障和弹力设计”

陈皓 2018-02-20
我前面写的《分布式系统架构的本质》系列文章,从分布式系统的业务层、中间件层、数据库层等各个层面介绍了高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,也就是所谓的“纲”。通过这个“纲”,你能够按图索骥,掌握分布式系统中每个部件的用途与总体架构思路。
为了让你更深入地了解分布式系统,在接下来的几期中,我想谈谈分布式系统中一些比较关键的设计模式,其中包括容错、性能、管理等几个方面。
容错设计又叫弹力设计,其中着眼于分布式系统的各种“容忍”能力,包括容错能力(服务隔离、异步调用、请求幂等性)、可伸缩性(有 / 无状态的服务)、一致性(补偿事务、重试)、应对大流量的能力(熔断、降级)。可以看到,在确保系统正确性的前提下,系统的可用性是弹力设计保障的重点。
管理篇会讲述一些管理分布式系统架构的一些设计模式,比如网关方面的,边车模式,还有一些刚刚开始流行的,如 Service Mesh 相关的设计模式。
性能设计篇会讲述一些缓存、CQRS、索引表、优先级队列、业务分片等相关的架构模式。
我相信,你在掌握了这些设计模式之后,无论是对于部署一个分布式系统,开发一个分布式的业务模块,还是研发一个新的分布式系统中间件,都会有所裨益。
今天分享的就是《分布式系统设计模式》系列文章中的第一篇《弹力设计篇之“认识故障和弹力设计”》。

系统可用性测量

对于分布式系统的容错设计,在英文中又叫 Resiliency(弹力)。意思是,系统在不健康、不顺,甚至出错的情况下有能力 hold 得住,挺得住,还有能在这种逆境下力挽狂澜的能力。
要做好一个设计,我们需要一个设计目标,或是一个基准线,通过这个基准线或目标来指导我们的设计,否则在没有明确基准线的指导下,设计会变得非常不明确,并且也不可预测,不可测量。可测试和可测量性是软件设计中非常重要的事情。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《左耳听风》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(21)

  • 华烬
    看到挖掘机的时候我笑了,印象中真的经历过光纤被挖断的故障
    2018-02-26
    9
  • songyy
    我觉得自己缺少解决 大规模 高可用 分布式 问题的经验,一直希望在这方面进行深挖但无奈工作范围限制,没有相关的问题可以遇到。期待能在这个系列之中看到更多的例子 😁
    2018-02-21
    6
  • 一飞
    异步调用为啥是容错设计? 应该是提高性能的一种策略。
    2019-03-28
    1
    3
  • 蓝海
    耗子哥可否在后面出一篇有关gcc优化带来的相关问题(各种崩溃,优化选项对程序做了哪些假设,哪些"非标准"的代码会导致优化错误),如何判断崩溃是由于优化,二进制不兼容,链接错误导致,而非一般的代码错误。gcc的优化选项看了官网说明很多遍,但说明过于简洁(编译原理只停留在前端印象,优化技术生疏),想了解的感性一些。这些bug问题解决都很费力,想归纳出一条方法经验论,怎样的代码要求才能对各种优化级别不出错(gcc本身bug除外)。以上的问题以及问题本身是否成立,想请耗子哥指导
    2018-02-22
    1
  • 卢俊杰 _JAY
    以前或多或少写过一些数据库, MQ自动重连的代码,不过还没有一个整体的认识,多谢作者把这个事情系统化,条理清晰多了
    2018-02-20
    1
  • 疾风紫狼
    能进能退乃真正法器可还行。
    2019-08-08
  • Dimple
    看完分布式,以为一块难点看完了;这下好了,还有分布式系统设计模式,又得扒一层皮,慢慢消化。耗子叔的输出,真的帮助太大
    2019-07-26
  • 雨巷
    偶然再回顾了一下,容错设计又叫弹力设计,弹力设计这个名字我google了一下,并没有官方的定义,放在这里任意误导读者
    2019-07-21
  • edisonhuang
    分布式系统出故障是不可避免的,弹力设计的关键是要提高系统的可用性,提高MTTF,提高MTTF,一是拉长系统稳定运行时间,一是减少故障恢复时间。
    由于分布式系统故障呢普遍性,因此在分布式系统设计的和开发的过程中,就要把故障当作不可或缺的一环来处理,尽可能让故障恢复过程自动化,从而真正提高系统可用
    2019-07-01
  • godtrue
    高度上来了,分布式系统也在弄,不过整体系统认知不足,正好学习下。
    分布式系统太过分散和复杂,网络环境有不稳定,所以,问题不可避免,痛点感觉都在网络通信这一块了。
    2019-01-23
  • 十八哥
    首先所有接口设计足够协议化,这是弹力前提。
    2019-01-07
  • 痴痴笑笑(Bruce)
    目前正在做这方面的工作,刚好学以致用
    2019-01-04
  • loser
    很多公司应该支撑不到挖掘机这个阶段就倒闭了。
    2018-12-02
  • LeO
    提纲挈领,非常的系统地介绍了系统的高可用的设计理念
    2018-09-13
  • LeO
    提纲挈领,非常的系统地介绍了系统的高可用的设计理念
    2018-09-13
  • 蜗Amazon牛
    老师你说的分布式系统架构本质的文章指的那几篇呢?分布式关键技术那几篇吗?其余的我也没看到啊
    2018-08-22
  • data
    老师可以提供代码案例来讲解吗这样感觉可以学的更多哈哈

    作者回复: 这些东西的代码量太大,你可以参看开源软件

    2018-04-04
  • 厉害了我的国
    能进能退乃真正法器
    2018-03-06
  • 郎哲
    有一段时间总是喜欢把iot和im 划等号,iot最大特点就是您文章提到流量不受控制还一直在线。
    2018-02-26
  • 楊_宵夜
    耗子叔每篇文章真是干货十足。
    2018-02-22
收起评论
21
返回
顶部