理解社交媒体宕机:Facebook 的基础设施是如何运作的
当数字城市陷入黑暗:理解社交媒体宕机与 Facebook 的基础设施运作
还记得2021年10月那段诡异的寂静吗?近六小时内,Facebook、Instagram、WhatsApp和Messenger全部消失。没有滑动,没有戳一戳,没有群聊。全世界都眨了眨眼问:等等,刚才发生了什么?
那不仅仅是某个网站宕机了。它相当于整个数字城市——一个容纳了近35亿人的家园——突然断电。而罪魁祸首并非黑客或大规模网络攻击,而是 Facebook 基础设施与互联网通信方式中一个看似微小的错误。
要理解这一切为何会发生——以及社交媒体宕机虽罕见却为何让人感觉如此灾难性——我们需要一窥 Facebook 运行背后那台惊人机器的幕布。
核心:Facebook 的数字神经系统
想象一个由服务器构成的城市,其规模相当于东京、伦敦和纽约的总和。这就是 Facebook 的基础设施。它横跨全球数十个巨型数据中心,每个数据中心都像足球场那么大的建筑,内部塞满了成千上万台全天候运行的计算机。
但问题在于:单个数据中心无法容纳整个 Facebook。该公司的基础设施是一个全球分布式系统。你今天早上发的自拍可能存储在俄勒冈州的服务器上,你朋友对那张自拍的评论可能在爱尔兰处理,而你刚刚点击的“点赞”按钮,那个信号可能途经瑞典。
所有这些部分需要无缝协作。它们需要相互找到、相互通信,并在不到一秒内将帖子传送到你的屏幕上。为了实现这一点,Facebook 依赖于几个关键的基础设施层:
第一层:物理硬件
最底层是服务器、存储系统和网络线缆。Facebook 设计自己的服务器(称为“开放计算项目”硬件),以实现极高的能效和模块化。如果一台服务器发生故障,另一台可以立即接管。这被称为冗余——可以想象成后备箱里放了个备胎,只不过每个轮胎都有10个备胎。
在物理硬件中,‘冗余’指的是什么?
第二层:软件栈
在硬件之上运行着一个复杂的软件网络。最著名的是 TAO——Facebook 的自定义图数据库。这里的“图”并非图表,而是指连接关系。TAO 的任务是弄清楚谁和谁是朋友,谁喜欢了什么,以及哪些帖子会出现在你的信息流中。它是将原始数据转化为社交网络的引擎。
但 TAO 只是其中一环。还有数据缓存系统(类似 memcached,但规模大到令人难以置信)、决定由哪台服务器处理请求的负载均衡器,以及处理实时聊天、视频流等的系统。所有这些都需要顺畅地相互通信。
TAO在Facebook的软件栈中扮演什么角色?
第三层:互联网的地址簿(DNS 和 BGP)
这就是2021年10月宕机发生的地方——也是大多数人未曾想过的部分。
每次你在浏览器中输入“facebook.com”,你的计算机需要找到 Facebook 所在的确切服务器。这是通过**域名系统(DNS)**完成的——互联网的电话簿。DNS 将“facebook.com”转换为数字 IP 地址,例如 31.13.65.36。
但这还不够。一旦你的计算机知道 IP 地址,它还需要通过构成互联网的海底电缆、光纤线路和路由器形成的复杂网络找到到达那里最佳路线。这种路由由 **BGP(边界网关协议)**处理——互联网的 GPS 系统。路由器之间的 BGP 消息会说这样的话:“我知道通往 Facebook 服务器的路由。请从这里发送流量。”
实际上,Facebook 使用 BGP 来公布自己的路由。当你尝试连接时,全世界的路由器都会监听这些 BGP 公告并更新它们的地图。没有这些公告,互联网就不知道 Facebook 在哪里。
域名系统(DNS)的主要功能是什么?
2021年出了什么问题
在那个十月的一天,一次例行维护任务出了岔子。一名网络工程师正在更新路由器,进行配置更改。该更改无意中撤销了 Facebook 的所有 BGP 公告。一瞬间,互联网上的每个路由器都被告知:“通往 Facebook 的路由不再存在。”
噗。消失了。
现在,噩梦来了:由于 BGP 撤销影响了 Facebook 所有路由,Facebook 内部的每个系统也失去了自己的地图。需要修复问题的工程师甚至无法进入 Facebook 自己的大楼——因为徽章读取器和网络接入点需要互联网连接来验证身份。他们被锁在了自己的数字城市之外。
更糟糕的是,Facebook 的 DNS 服务器——电话簿——也变得不可见。所以即使你的计算机从头开始查找“facebook.com”,也无法找到可询问的电话簿。
结果?完全断电。没有应用,没有内部工具,无法远程推送软件修复。工程师花了近六小时物理前往数据中心,通过直接控制台连接插入,并手动恢复 BGP 路由。
当网络工程师无意中撤回了公司所有的BGP公告时,会发生什么?
为何重要:连接系统的脆弱性
Facebook 2021年的宕机是一声响亮的警钟。它表明,即使是在万亿美元公司的规模下,单个的人为错误也可能导致全球性故障。但它也突显了现代互联网更深层次的问题。
我们倾向于认为互联网是一个有弹性的、去中心化的网状结构——如果一条路径断了,流量可以走另一条。通常确实如此。但在边缘——像 Facebook、Google 和 Amazon 这样的公司连接到互联网其他部分的地方——仍然存在关键的瓶颈点。一次 BGP 配置错误可能造成的不仅仅是 Facebook 的宕机。在宕机期间,许多智能家居设备、使用 Facebook 登录的商业应用,甚至一些银行系统都停止工作。数字城市的崩溃导致整个社区出现交通堵塞。
理解这一点很重要,因为它提醒我们,“云”实际上并不在天上。它存在于非常真实的建筑中,由非常真实的人运营,使用非常真实(有时也很脆弱)的协议。无限可靠性的错觉仅仅是一种错觉。
关于BGP配置错误的影响,Facebook 2021年宕机的一个关键教训是什么?
社交媒体公司如何预防(或未能预防)宕机
2021年后,Facebook(现为 Meta)做出了多项改变。他们改进了变更管理流程——现在任何配置更改都要经过多次审查和回滚测试。他们还增加了带外访问系统——不依赖主要互联网路由的直接物理连接——以便工程师始终能够进入自己的系统。
但没有系统是完美的。以下是公司努力保持在线的一些方法:
- 地理冗余: 在不同地区设立多个数据中心,这样某个地点的停电或地震不会导致一切瘫痪。
- 流量转移: 如果一组服务器过载,流量会自动重新路由到另一个位置——相当于数字版的高速公路新车道。
- 金丝雀部署: 首先向一小部分用户推出更新,监控问题,然后再推送给所有人。
- 混沌工程: 以受控方式故意破坏事物(如 Netflix 的 Chaos Monkey),以测试系统如何处理故障。
然而,如同2021年的宕机所示,最复杂的预防系统也可能因一条输错的命令而崩溃。
关键要点
-
你的社交媒体生活在物理建筑中。“云”是真实的数据中心,有真实的电缆和真实的人。宕机不是魔法——而是硬件和软件故障或配置错误。
-
**BGP 是互联网的 GPS,没有备份。**当一家公司意外撤销其 BGP 路由时,整个互联网都会忘记在哪里找到它们。这就是导致大规模 Facebook 宕机的原因。
-
**冗余并非万无一失。**即使有备份的备份,在正确层级(如路由)的一个错误也可能同时导致所有系统瘫痪——包括修复它所需的工具。
-
**宕机影响的不只是刷屏。**许多应用、网站和服务依赖社交媒体登录或 API。一次重大宕机可能波及银行、新闻甚至智能家居设备。
-
**互联网有弹性,但并非无懈可击。**2021年的宕机是罕见事件,但它提醒我们,全球规模的基础设施仍然是人造的。理解它的运作方式有助于我们欣赏每条帖子、每个点赞和每次分享背后令人难以置信的工程——以及罕见但真实的脆弱性。
下次你点击那个蓝色的 Facebook 图标并瞬间加载时,请暂停片刻。在那瞬间的成功背后,是一场令人难以想象的协调运动——服务器、路由表和在恒温房间中盯着仪表盘的工程师们。如果它没有加载呢?好吧,现在你知道原因了。