36 lines
2.2 KiB
Markdown
36 lines
2.2 KiB
Markdown
# 关于可靠系统为何失效的一个猜想
|
||
|
||
- **期号**: SRE Weekly Issue #200(2019-12-29)
|
||
- **作者**: Lorin Hochstein
|
||
- **链接**: https://lorinhochstein.wordpress.com/2017/06/24/a-conjecture-on-why-reliable-systems-fail/
|
||
|
||
## 简介
|
||
|
||
> 一旦系统达到某种可靠性水平,大多数重大事件都会涉及:为缓解一个小事件而进行的人工干预,或某个主要目的本是提升可靠性的子系统出现意外行为。
|
||
|
||
## 正文
|
||
|
||
*(我的一些同事称之为[洛林定律(Lorin's Law)](https://twitter.com/theckman/status/1185233751028060161))*
|
||
|
||
即使是高度可靠的系统偶尔也会宕机。在仔细阅读了多起事件的细节后,我开始注意到一种模式,由此得出了以下猜想:
|
||
|
||
一旦系统达到某种可靠性水平,大多数重大事件都会涉及:
|
||
|
||
- 为缓解一个小事件而进行的人工干预,*或*
|
||
- 某个*主要目的本是提升可靠性*的子系统的意外行为
|
||
|
||
以下是来自亚马逊对几次重大 AWS 故障的事后复盘(post-mortem)中的三个例子:
|
||
|
||
2017 年 2 月 28 日的 [S3 宕机](https://aws.amazon.com/message/41926/)涉及一次*人工干预*——当时是为了排查导致 S3 计费系统进度慢于预期的问题。
|
||
|
||
2015 年 9 月 20 日的 [DynamoDB 宕机](https://aws.amazon.com/message/5467D2/)(也影响了 SQS、自动扩缩和 CloudWatch)涉及健康的存储服务器因为执行一个(大概)*为容错而设计*的分布式协议而自行退出服务。
|
||
|
||
2012 年 10 月 22 日的 [EBS 宕机](https://aws.amazon.com/message/680342/)(也影响了 EC2、RDS 和 ELB)涉及一个*负责监控 EBS 服务器健康状况*的代理中的内存泄漏 bug。
|
||
|
||
在《The Systems Bible》(我推荐)这本有趣的书中,有这样的观察(还有其他怪论):"失效安全系统(fail-safe systems)会以不安全的方式失效"。
|
||
|
||
系统中获得安全性的一种常见方式,是引入某种为此目的设计的子系统。因此,当这个子系统失效时……我想你也可以设计一个系统,让安全性来自系统自身的结构(而不是作为外加组件),但我不确定你是否能有意识地做到这一点!
|
||
|
||
四年过去了,我对这个猜想的现状很好奇。
|
||
|
||
我觉得它经受住了考验。 |