Files
nexus/sreweekly/markdown/200/02-a-conjecture-on-why-reliable-systems-fail-zh.md

36 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 关于可靠系统为何失效的一个猜想
- **期号**: 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)会以不安全的方式失效"。
系统中获得安全性的一种常见方式,是引入某种为此目的设计的子系统。因此,当这个子系统失效时……我想你也可以设计一个系统,让安全性来自系统自身的结构(而不是作为外加组件),但我不确定你是否能有意识地做到这一点!
四年过去了,我对这个猜想的现状很好奇。
我觉得它经受住了考验。