来自grok

你问的其实是整个互联网基础设施最核心、最尴尬的一个矛盾:
Cloudflare 本身就是“全球分散 + 自动切换”做得最极致的玩家之一,但它仍然每次都能“全球一起炸”

这不是它没做异地多活,而是它把“异地多活”做到了极致以后,反而形成了一个新的、更致命的单点故障层。

简单一句话总结原因:
Cloudflare 的“控制平面”(Control Plane)是全球集中式的,而“数据平面”(Data Plane)才是分散的。
每次真正把全球炸瘫的,不是边缘的 PoP(节点),而是这个集中式的控制平面一挂,全世界 300+ 个城市同时失去大脑,边缘节点瞬间变“无脑僵尸”。

具体是哪几层导致“全球一起炸”

层级Cloudflare 的实际做法一挂就全球炸的原因
1. DNS 解析 (Anycast)全球 300+ 城市同 IP,理论上最分散没问题,基本不会全挂,但这次不是 DNS 问题
2. 数据平面(缓存/转发)每个城市独立跑 traffic,互不影响单个城市挂了只会影响本地用户(平时你感觉不到)
3. 控制平面(Control Plane)全球只有一套:位于美国+少数几个大区包括:配置下发、Zone 设置、Workers 脚本、SSL 证书、Dashboard、API、Rate-limit 规则、防火墙规则、Load-balancing 决策等
4. 元数据数据库(Metadata DB)全球集中式(分布式但强一致性)控制平面依赖它来判断“你是谁”“你有啥规则”“你的 origin 在哪”
5. 加密密钥服务(Key Service)集中式(少量地区)边缘节点要解密你的 HTTPS,必须问总部拿密钥

这次(2025-11-18)就是第 3 和第 4 层一起崩了:

  • 控制平面 API 返回 500
  • 元数据库宕机或延迟暴涨
    → 全球所有边缘节点瞬间不知道该怎么处理新连接:
      → 不知道你的域名配置变没变
      → 不知道 Workers 脚本该不该更新
      → 不知道你今天改没改 origin IP
      → 甚至不知道你是不是付费用户(防火墙规则下不去)

结果:300 个城市同时报 5xx,哪怕每个节点硬件都健健康康,也只能集体“发呆”。

为什么 Cloudflare 不把控制平面也彻底分散?

他们不是不想,而是真的很难彻底分散:

难点具体解释后果
强一致性需求你在 Dashboard 点一下“开防火墙”,全球 3 秒内必须同时生效,否则有人就被攻击穿了只能用类似 Spanner / TiDB 的全球强一致性数据库,天然就几个大区
加密密钥不能随便复制你的私钥只能放在少数几个地方(合规+安全),边缘节点必须实时问总部拿密钥密钥服务一挂,全世界 HTTPS 协商失败
Workers 脚本更新几行代码改动要同时推到全球 300 个隔离区,延迟必须 <5 秒必须集中式调度系统
计费与配额系统防止你免费用户爆流量,必须实时查配额也必须集中式
历史包袱2010 年创业时没人想到做到 20% 全球流量,架构已经固化,重构要停机好几年改不动,相当于给波音 737 换引擎

他们其实已经在偷偷分散了(但还不够救命)

  • 2023 年开始把控制平面从单一大区切成“美国西 + 美国东 + 欧洲”三活
  • 2024 年把部分 Workers 运行时改为“区域性隔离”(Regional Services)
  • 2025 年刚上线“Secondary Origin + Automatic Failover”(这次事件后紧急对免费用户也开放)

但今天这波还是把“三活”之外的元数据层打穿了,所以依旧全球一起跪。

对比真正“永远不全球炸”的玩家

公司控制平面策略结果
Google Cloud控制平面也是全球多活 + 弱一致性降级单地区挂了只影响该地区配置下发
Fastly控制平面彻底区域隔离一个大区炸了其他区完全不受影响
Akamai几十年来就是“配置慢点就慢点”哲学从来没有全球一起炸的记录
Cloudflare追求“3 秒全球一致”的极致体验换来了平时最好用,但一炸就全炸

一句话总结:
Cloudflare 不是没分散,而是它把“全球瞬间一致”这个用户体验做到极致以后,付出的代价就是——一旦控制平面抽风,就只能全球一起抽风。

这就是为什么你每次看到“CF 炸了”都是全球一起炸,而不是“只炸了亚洲”或者“只炸了欧洲”。
它不是没技术,而是技术选型和产品哲学导致的必然结果。

所以我们普通人能做的,只能是:
别再 100% 押宝 Cloudflare 了,起码留一条后路。
这次事件之后,估计再有公司敢说“我们全站只用 CF,省钱”,投资人当场就能把PPT砸他脸上了。