LongCut logo

互联网史上历时最长的瘫痪是怎样造成的【让编程再次伟大#48】

By Peter Pang

Summary

## Key takeaways - **DynamoDB bug caused longest cloud outage**: A seemingly minor logic error in DynamoDB's modification commands led to a race condition, causing a cascading failure across hundreds of AWS services and resulting in the longest-ever cloud service outage, lasting over 14 hours. [00:14], [03:03] - **Lack of auto-recovery mechanism crippled AWS**: The critical AWS service, Drop Network Workflow Manager (DWFM), lacked an automated recovery mechanism. When it failed, engineers had no established procedure to rely on, forcing them to improvise and manually restore services, prolonging the outage. [01:00] - **Cascading failures in AWS microservices**: The outage demonstrated a critical flaw in AWS's microservice architecture, where the failure of one core service, DynamoDB, triggered a chain reaction. Dependent services like DWFM and Network Manager became overloaded with queued tasks, leading to further system-wide failures. [00:30], [00:45] - **Business decisions drive technical architecture**: AWS's architectural choices, like concentrating critical services in a single region (US East One) and the tight coupling of microservices, while technically suboptimal, were driven by business realities such as cost-effectiveness and historical development patterns, leading to the 'live together, die together' phenomenon. [08:45], [11:35] - **Cost vs. resilience: a business dilemma**: Implementing robust multi-region and multi-node redundancy, while technically feasible, significantly increases costs. Businesses face a dilemma: invest heavily in resilience to avoid rare but catastrophic outages, or accept the risk for lower operational expenses. [10:00]

Topics Covered

  • Simple code bugs cause catastrophic cloud outages.
  • Lack of basic recovery plans cripple critical systems.
  • Cloud architectures create hidden systemic risks.
  • Geographic concentration of services creates single points of failure.
  • Cloud providers prioritize business over technical perfection.

Full Transcript

20

25 年

10 月

19 日

晚上

11 点

48 分

正 准

备 睡

觉 的

A WS

员 工

迎 来

噩 耗

核 心

数 据

库 产

品 D

ynam

o DB

出 现

连 接

故 障

依 赖

它的 上

百 个

云 服

务 产

品 也

因 此

下 线

故 障

源 自

于 一个

很 低

级 的

代 码

逻 辑

错 误

导 致

两 个

修 改

数 据

的 命

令 前

后 冲

突 这是

教 科

书 士

的 R

ace

Cond

ition

虽 然

只 用

了 三

个 小

时 工

程 师

们 就

把 这个

bug

修 好了

但 灾

难 才

刚 刚

开始 作

为 A

WS 最

引 以

为 好的

产 品

之 一

D

ynam

o DB

几 乎

是 所有

内 部

系 统

默 认

使 用

的 数

据 库

所以 在

这 三

个 小

时 的

单 机

时间 里

那 些

系 统

也 累

积 了

无 数

需要 从

事 的

任 务

这里 就

包括 了

负 责

调 度

所有

EC 2

服 务

器 资

源 的

内 部

管 理

程 序

D

rop

Net

Work

flow

Mana

ger

D W

F M

20 号

凌 晨

2 点

25 分

在 D

ynam

o DB

恢 复

的 那

一 瞬

间 D

W F

M 就

被 堆

积 如

上 的

代 办

事 项

所 冲

垮 调

度 中

心 挂

掉 导

致 所有

EC 2

服 务

器 无

法 启

动 这

又 是

一次 经

典 的

从 事

机 制

的 设

计 出

问题

Go

ogle

表示

这个

我很 熟

如此

重要 的

程 序

没有 自

动 恢

复 机

制 这

也 罢

了 赶

来 修

复 的

工 程

师 甚

至 没有

一个

可以 参

考 的

手 动

恢 复

流 程

也 就是

说 整

个 Ad

W F

M 整

个 历

史 上

从 来

没有 人

考 虑

过 如果

D W

F M

挂 了

要 怎么

处 理

这个

问题

这样 看

来 在

现 场

一 边

修 复

一 边

摸 索

的 工

程 师

们 只

用 了

三 个

小 时

就 完成

修 复

已经 是

相 当

厉 害

了 时间

来 到

早 上

5 点

28 分

D W

F M

恢 复

EC 2

也 开始

正 常

启 动

事 故

终 于

告 一

段 落

了 妈

好 巧

不 巧

D W

F M

旁 边

还有

一个 负

责 掌

控 所有

EC 2

网 络

功 能

的 程

Net

work

Mana

ger

和 D

W F

M 相

比 它

可是 累

积 了

6 个

小 时

的 代

办 事

项 再

加 上

刚 刚

大 量

成 功

重 启

的 EC

2 发

出 的

海 量

新 颈

求 它的

处 理

速 度

还 不

够 代

办 的

新 增

速 度

所以 工

程 师

们 只

能 再

次 撸

起 袖

子 SS

H 进

去 手

动 疏

导 直

到 早

上 10

点 36

分 吸

压 的

代 办

事 项

才 处

理 完

EC 2

的 网

络 功

能 恢

复 正

常 而

在 云

的 另

一个 角

落 在

EC 2

重 启

的 同

一 时间

负 责

分 配

网 络

流 量

的 负

载 均

衡 N

L B

也 开始

为 这

些 浏

览 器

引 流

但 因为

Net

work

Mana

ger

卡 住

了 这

些 服

务 器

有 的

能 联

系 上

有 的

联 系

不 上

这 就

导 致

N L

B 的

健 康

检 查

在 红

灯 和

绿 灯

中 反

复 横

跳 同

时 连

锁 反

应 也

导 致

N L

B 被

D NS

反 复

下 架

和 上

架 直

到 9

点 36

分 任

务 可能

的 工

程 师

们 只

好 关

闭 了

N L

B 的

健 康

检 查

让 它

忽 略

那 些

没有 回

应 的

服 务

器 保

持 绿

灯 状

态 让

N L

B 可以

暂 时

地 正

常 工作

直 到

下 午

2 点

09 分

所有 积

压 的

EC 2

服 务

器 恢

复 正

常 N

L B

的 健

康 检

查 重

启 所有

网 络

功 能

才 恢

复 2

点 20

分 最

后 一

批 受

影 响

的 产

品 依

赖 最

多 最

杂 的

容 器

服 务

EC S

和 E

KS 恢

复 正

常 此

次 故

障 事

件 正

式 结

束 从

10 月

19 日

晚上

11 点

48 分

到 第二

天 下

午 的

2 点

20 分

总 共

14 小

时 32

分 钟

这 也是

有 记

录 以

来 云

服 务

行 业

历 史

最 长

的 一次

大 规

模 瘫

痪 在

我的 粉

丝 群

里 一

半 的人

因为 A

WS 单

机 参

与 高

强 度

的 修

复 工作

煎 熬

了 一

整 天

另 一

半 的人

则 因为

A WS

单 机

无 法

工作 爽

爽 地

摸 鱼

了 一

整 天

真 是

人 间

白 态

了 和

第 40

集 视

频 里

分享 的

Go

ogle

Cloud

的 谈

光 事

故 相

比 A

WS 这

次 的

炒 台

程 度

其实

没有

那么 严

重 除

了 最

开始 的

导 火

索 剩

下 的

问题

都是

因为 错

重 复

杂 的

架 构

导 致

的 连

锁 反

应 以及

体 量

过 大

导 致

的 极

端 高

负 荷

运 行

压 力

巧 合

的是 这

两 次

谈 光

事 故

的 导

火 索

都是 入

门 级

的 大

码 错

误 本

次 A

WS 事

故 的

源 头

是 D

ynam

o DB

系 统

里 负

责 处

理 D

NS 的

两 个

程 序

它 们

分 别

是 负

责 生

成 D

NS 记

录 的

Pl

anner

和 负

责 将

新 记

录 写

入 D

NS 系

统 的

In

actor

为 了

保 证

容 错

D

ynam

o DB

在 三

个 口

用 区

部 署

了 三

个 独

立 的

In

actor

每 当

Pl

anner

生 成

一个 新

记 录

其 中

一个

In

actor

就 会

拿 走

写 进

D NS

里 在

写 入

之前

In

actor

会 做

一个 前

期 检

查 确

保 它

手 上

的 记

录 比

现在 D

NS 里

的 更

新 而

写 入

成 功

之 后

In

actor

还 会

做 一个

清 理

动 作

就是 把

D NS

里 比

自己 刚

写 入

的 记

录 更

早 的

那 些

都 抹

掉 于

是 在

10 月

19 日

晚上 出

现 了

这么

一个

情况

In

actor

张 三

首先 从

Pl

anner

那 里

拿 到了

新 记

录 A

在 他

写 入

D NS

的时候

不 巧

地 遇

到了 延

迟 停

在 中

间 了

此 时

Pl

anner

又 生

成 了

一个 新

记 录

B In

actor

里 四

拿 到

记 录

B 非常

顺 利

地 写

进 了

D NS

就 在

In

actor

里 四

准 备

执 行

收 尾

的 清

理 动

作 时

In

actor

张 三

的 延

迟 结

束 了

于 是

张 三

继 续

执 行

自己 的

任 务

把 手

上 的

记 录

A 写

进 D

NS 覆

盖 了

记 录

B 紧

接 着

李 四

开始 清

理 因为

他 在

D NS

里 发

现 了

比 自己

刚 才

写 入

的 记

录 B

时间 更

早 的

记 录

A 所以

按 照

代 码

逻 辑

李 四

把 记

录 A

抹 掉

等 张

三 和

李 四

都 完成

任 务

之 后

现在 D

NS 里

指 向

D

ynam

o DB

域 名

的 就

只 剩

一个 空

值 了

而 此

时 Pl

anner

生 成

了 新

记 录

C In

actor

王 五

拿 到

记 录

准 备

扮 演

救 世

主 然

而 很

可 惜

他 倒

在 了

前 期

检 查

上 因为

现在 D

NS 里

没有 记

录 所以

无 法

和 自己

手 上

的 记

录 C

做 对

比 做

不了 检

查 就

无 法

执 行

下一 步

的 写

入 整

个 逻

辑 进

入 死

胡 同

无 论

Pl

anner

之 后

再 生

成 多少

个 新

记 录

也 没有

一个

In

actor

能 把它

写 进

D NS

里 D

ynam

o DB

的 记

录 一直

停 留

在 空

值 上

也 就是

说 D

ynam

o DB

的 域

名 从

互 联

网 上

彻 底

消 失

了 找

不到 自

家 数

据 库

100

多 个

A WS

产 品

自 然

也 跟

着 瘫

痪 了

这个 错

误 也

就 比

Go

ogle

Cloud

那 次

忘 记

写 T

ric

at 导

Now

Point

Ex

cept

ion

好 一点

点 虽

然 也

不多

那么

问题

来了

如果

你是 负

责 修

复 这个

问题 的

程 序

员 你要

怎么 修

改 它

让 R

ace

Cond

ition

不 再

出 现

了 把

你的 解

决 方

案 发

到 评

论 区

我 给

你 打

打 分

在 我

看 来

D

ynam

o DB

的 这个

问题 要

背 锅

的是 设

计 这个

架 构

的人 这

种 多

个 进

程 修

改 同

一个 数

据 的

场 景

从 基本

的 软

件 设

计 角

度 来

说 你就

不 应

该 把

保 证

数 据

完 整

性 这

种 任

务 放

在 进

程 身

上 这

种 任

务 应

该 由

数 据

的 接

收 和

储 存

方 案

承 担

在 这里

就是 D

NS 系

统 R

ial

53

因为 数

据 在

这里 具

有 唯

一 性

也 就是

我们 常

说 的

S

ingle

Point

of

Truth

让 每

个 In

act

都 做

事 前

和 事

后 的

检 查

和 清

理 不管

你的 代

码 有

多 严

谨 都是

不 合

理 的

决 定

毕 竟

AC

ID 本

来 就是

很 难

达 成

的 要

不 然

My

SQL

这 种

大 热

门 的

数 据

库 也

就 不会

有 那么

多 和

Trans

action

相 关

的 问题

了 在

制 作

本 期

视 频

时 微

软 的

云 服

务 A

z oo

刚 好

也 遇

到了 全

球 范

围 的

当 机

这 已经

是 A

z oo

今 年的

第 五

次 世界

级 故

障 了

那 为

啥 他

上 新

闻 的

次 数

就 那么

少 呢

当然

你可以

说 是

因为

他的 大

客 户

大 多

都是 传

统 行

业 巨

头 普

通 民

众 对

于 故

障 的

感 知

不 深

如果你

认 真

翻 译

下 他的

故 障

报 告

就 会

发 现

他的

问题 要

么 是

CD N

运 维

出 错

了 要

么 是

被 D

D OT

S 了

要 么

是 CD

N 被

D D

OT S

了 来

来 去

去 就

只有 那

几 个

地方 出

错 很

少 会

出 现

严 重

的 连

锁 反

应 拖

垮 整

个 A

z oo

体 系

而 A

WS 的

画 风

就 完全

不 一

样 就

像 我在

很 久

以前 的

第 七

期 视

频 里

面 提

到 的

A WS

这 种

崇 尚

微 服

务 架

构 的

企 业

只 要

能 用

现 成

的 服

务 就

不会 考

虑 自己

造 轮

子 久

而 久

之 每

个 服

务 都

依 赖

每 个

服 务

牵 一

发 而

动 全

身 本

次 数

顾 出

现 的

D

ynam

o DB

拖 垮

D W

F M

拖 垮

所有

EC 2

拖 垮

所有 N

L B

的 连

锁 反

应 就

完 美

体 现

了 A

WS 内

部 系

统 同

声 共

词 的

状 态

而 回

顾 A

WS 历

史 上

的 几

次 大

规 模

摊 放

事 故

我们

可以

看到 导

入 所

基本

都是 D

ynam

o DB

S 3

L

amb

da 这

些 通

用 的

储 存

的 计

算 服

务 因为

大 部分

的 A

WS 产

品 都

需要 储

存 都

需要 计

算 所以

就 着

微 服

务 架

构 的

原 则

它 们

都 被

创 在

一 根

绳 上

敏 锐

的 观

众 可能

会 发

现 包括

这 次

事 故

在 内

A WS

每 次

出 大

事 好像

总 是

发 生

在 US

East

One

这个 分

区 这

就 让

人 产

生 了

一个 合

理 的

疑 问

云 服

务 不是

主 打

的 分

布 式

部 署

高 容

错 都

顶 能

力 强

为什么

一个 分

区 出

故 障

就 能

够 拖

垮 半

个 互

联 网

呢 虽

然 在

市 场

营 销

时 云

服 务

一直

都是 和

分 布

式 高

容 错

稳 定

性 等

关 键

词 挂

钩 但

这 不

代 表

你 上

了 云

就 能

自 动

拥 有

这 些

好 处

它 只是

给 你

提 供

了 这么

一个 环

境 让

你可以

更 轻

松 地

搭 建

高 容

错 的

系 统

架 构

但 你

做 不

做 完全

取 决

于 你

就 连

A WS

自己 都

没有 彻

底 遵

循 这个

原 则

比如 管

理 权

限 系

统 A

IM 就

只 在

US

East

One

分 区

有 写

入 节

点 其

余 分

区 部

署 的

都 只是

只 读

节 点

当然 A

WS 这

些 架

构 决

定 涉

及 到

不 少

历 史

遗 留

问题

可以 理

解 而

对 于

大 多

数 的

企 业

来 说

需要 考

虑 的

其实

只有

一个

问题

你要

不要 投

入 额

外 成

本 进

行 多

点 部

署 这

不是

一个 技

术 问题

而 是

一个 商

业 问题

因为 从

技 术

上 来

说 答

案 很

明 显

各 种

级 别

的 容

错 方

案 都

已经 很

成 熟

了 比如

M

ult

i

Note

和 M

ult

i V

ision

大 多

数 云

服 务

商 的

服 务

都 达

到了 开

箱 既

用 的

程 度

就 算

是 相

对 更

复 杂

一点 的

M

ult

i

Cloud

只 要

在 架

构 设

计 和

技 术

选 行

时 多

加 注意

避 免

和 云

服 务

商 进

行 板

定 做

起 来

也 不

难 对

于 有

经 验

的 架

构 师

和 De

v

Ops

团 队

只 要

企 业

愿 意

掏 钱

搭 建

高 容

错 的

系 统

就是 手

到 心

来 的

事情 但

问题 就

处 在

这个 钳

子 两

个 N

ode

就是 两

倍 的

成 本

两 个

Reg

ion

就是 四

倍 两

Cloud

就是 八

倍 假

设 你

现在 是

CE O

你的 面

前 有

一个 按

钮 按

下去 能

让 你

避 免

几 年

一次 的

持 续

几 个

小 时

的 产

品 权

限 瘫

痪 但

坏 处

是 你的

成 本

会 翻

八 倍

你 会

按 下去

吗 这

本 质

上 其实

是 一个

博 弈

论 问题

对 于

一个 企

业 来

说 最

怕 的

不是 自

家 产

品 出

问题 而

是 只有

自 家

产 品

出 问题

如果

大家

一起 出

问题 新

闻 里

只 会

怪 罪

云 服

务 商

你 只是

受 害

者 毕

竟 这

种 几

年 才

会 出

现 一次

的 事

故 从

大 众

的 角

度 来

说 已经

属 于

黑 天

鹅 事

件 了

而 即

使 你

投 入

了 八

倍 成

本 做

好了 容

错 准

备 逃

过 一

劫 也

没有 人

会 表

扬 你

比如 这

次 事

件 中

毫 发

无 损

Net

flix

作 为

Ad

ib

us 最

大的 客

户 是

绝 对

的 模

范 生

但 N

ob

ody

cares

所以 当

你 从

CE O

的 角

度 来

考 虑

你 更

关 心

的是 用

户 是

股 民

的 反

应 那么

你的 最

优 解

就是 和

其 他

企 业

的 做

法 绑

定 作

为 Ad

ib

us 成

立 最

早 功

能 上

新 最

快 资

源 最

丰 富

的 分

区 早

期 的

企 业

基本 上

只 在

US

East

1 上

进 行

部 署

后 来

者 这样

也 会

将 它

作 为

首 选

甚 至

是 唯

一 选

择 结

果 就是

所有 人

都 在

US

East

1 上

抱 团

同 生

共 死

完 美

的 纳

斯 均

衡 看到

这里 的

观 众

可能 会

觉得

我是 在

狠 狠

地 批

判 这

些 云

服 务

商 用

户 毕

竟 作

为 一个

程 序

员 看到

这 些

糟 蹋

技 术

的 操

作 怎么

能 不

生 气

但 我

其实 并

没有

觉得

他们 的

决 定

有 什么

问题

当然 导

火 索

的 代

码 逻

辑 和

后 面

各 种

粗 糙

的 从

事 机

制 这

一 类

低 级

技 术

错 误

还是 要

批 判

一下 的

但 从

宏 观

上 来

看 不管

是 Ad

ib

us 内

部 各

种 产

品 的

互 相

捆 绑

还是 用

户 扎

堆 在

单 一

分 区

做 部

署 这

些 可能

不是 最

科 学

的 决

定 但

绝 对

是 最

现 实

的 决

定 我们

技 术

人 可能

想 要

追 求

技 术

上 的

完 美

但 世界

不是 围

绕 着

技 术

状 的

反 过

来 技

术 只是

服 务

于 世界

的 一个

工 具

归 根

到底

我们 都

只是 工

具 人

罢 了

Loading...

Loading video analysis...