跳转到主要内容

一亿美元的遥测错误:OpenAI 的故障教会我们系统设计的知识

阅读需 1 分钟Tian PanTian Pan

在 2024 年 12 月 11 日,OpenAI 发生了一次灾难性的故障,使 ChatGPT、他们的 API 和 Sora 中断了超过四个小时。虽然故障发生在每家公司身上,但这次故障特别引人注目,因为它揭示了现代系统设计的一个关键教训:有时我们添加的工具以防止故障,反而成为故障的根源。

十亿美元的讽刺

有趣的是:这次故障并不是由于黑客攻击、部署失败,甚至不是他们的 AI 模型中的错误引起的。相反,它是由于一个旨在提高可靠性的工具引起的。OpenAI 正在添加更好的监控以防止故障时,意外地造成了他们有史以来最大的故障之一。

这就像雇佣一个保安,结果他把所有人都锁在了楼外。

故障滚出的雪球

事件的经过如下:

  1. OpenAI 部署了一个新的遥测服务,以更好地监控他们的系统
  2. 该服务用 API 请求淹没了他们的 Kubernetes 控制面板
  3. 当控制面板失败时,DNS 解析也中断了
  4. 没有 DNS,服务无法相互找到
  5. 工程师无法修复问题,因为他们需要控制面板来移除有问题的服务

但最有趣的部分不是故障本身,而是多个保障系统同时失败:

  1. 测试没有捕捉到问题,因为它只在规模上出现
  2. DNS 缓存掩盖了问题,足够长的时间让它传播到各处
  3. 用来修复问题的系统恰恰是那些崩溃的系统

三个关键教训

1. 规模改变一切

遥测服务在测试中工作得很好。问题只在部署到数千个节点的集群时出现。这突显了现代系统设计中的一个基本挑战:一些问题只在规模上出现。

2. 保障系统可能成为风险因素

OpenAI 的 DNS 缓存,旨在提高可靠性,实际上通过掩盖问题使情况变得更糟,直到为时已晚。他们的 Kubernetes 控制面板,旨在管理集群健康,成为了单点故障。

3. 恢复计划需要恢复计划

最令人震惊的部分?工程师无法修复问题,因为他们需要正常工作的系统来修复损坏的系统。这就像需要一把梯子才能够到你需要的梯子。

系统设计的未来

OpenAI 的响应计划揭示了系统设计的未来走向:

  1. 解耦关键系统:他们将 Kubernetes 数据面板与控制面板分开,减少相互依赖
  2. 改进测试:他们正在添加故障注入测试,以模拟大规模故障
  3. 应急程序:他们正在建立即使在其他一切失败时也能工作的紧急访问系统

这对你的公司意味着什么

即使你不是在 OpenAI 的规模下运营,这些教训依然适用:

  1. 在规模上测试,而不仅仅是测试功能
  2. 提前建立紧急访问系统
  3. 质疑你的保障系统——它们可能隐藏着风险

可靠系统的未来并不是防止所有故障,而是确保我们能够快速而优雅地从故障中恢复。

记住:最危险的问题不是我们能预见到的,而是那些从我们构建的保障系统中突然冒出来的。

参考资料

保持联系,关注我获取更多内容

阅读需 7 分钟

如何设计区块链服务端的架构?

分布式的区块链记账和智能合约系统。要求节点之间不大信任,但是却激励他们互相合作:交易不可逆,不依赖可信的第三方,保护隐私,透露最少信息,一笔钱不能花两次。假设性能不是问题,暂不考虑如何优化性能。

system design
阅读需 3 分钟

今日头条推荐系统:P2 内容分析

内容分析和用户标签的数据挖掘是推荐系统的基石。内容分析从原始文章和用户行为中提取中间数据。通过内容分析,我们能够标记用户,推荐和准备内容。

system design
阅读需 4 分钟

今日头条推荐系统:P1 概述

今日头条推荐系统概述:如何通过对内容特征、用户画像和上下文信号建模来最大化用户满意度。

system design
阅读需 2 分钟

设计Facebook图片存储系统

Facebook做图片存储的原因有两个:PB级别的Blob数据量;传统的基于NFS的设计都存在元数据瓶颈,庞大的元数据严重限制了它的命中率。解决方案是把数以十万计的图像聚集到单个Haystack存储文件中,从而消除了元数据负荷。

system design
阅读需 5 分钟

设计一个短网址系统

设计一个系统,可以将用户给的网址变成短网址,用户使用这些短网址可以访问他们原来给的长网址。系统是怎么运作的,需包括但不限于下面的问题:如何分配短网址;如何存储短网址和长网址的映射关系;如何实现跳转服务;如何存储访问数据。

system design