Meta 的超大规模基础设施:概览与洞察
作者简介
Chunqiang Tang 是 Meta(前身为 Facebook)的研究科学家和高级总监,主要研究领域包括人工智能加速器、机器学习、高性能计算和云计算。在加入 Facebook 之前,他曾是 IBM T.J. Watson 研究中心的研究人员和经理。
引言
超大规模基础设施供应商(如阿里巴巴、亚马逊、字节跳动、谷歌、Meta、微软和腾讯)已经开发出覆盖全球的基础设施,以向全球用户提供云服务、Web 服务或移动服务。尽管大多数从业者可能不会直接构建这种规模的基础设施,但我们认为了解其中的一些关键理念和技术是非常有益的。
历史表明,许多被广泛使用的技术最初都源于高级环境,例如 1960 年代的大型机和过去二十年的超大规模基础设施。本文提供了一个关于 Meta 超大规模基础设施的高层概述,重点探讨了其开发过程中获得的关键见解,特别是在系统软件方面。
关键洞察
-
文化优先:快速迭代、技术开放、生产研究和共享基础设施
- Meta 的企业文化强调“快速行动”、“技术开放”、“生产中的研究”和“共享基础设施”。这些文化因素对 Meta 的技术创新起到了重要作用。
-
提升开发者生产力
- Meta 大规模采用持续部署和无服务器函数(Serverless Functions),从而显著提高了开发者的效率。
- 例如,Meta 的前端无服务器函数每三小时就会发布一次新版本,而配置管理工具每天处理超过 10 万次实时变更。
-
降低硬件成本
- 通过硬件与软件协同设计,以及自主优化资源分配,Meta 在减少硬件成本方面取得了显著成果。
- 全球数据中心作为一个整体计算机运行,动态调整工作负载分配,进一步降低了硬件浪费。
-
全栈 AI 协同设计
- 从 PyTorch 到 AI 加速器、网络和 ML 模型(如 Llama),Meta 对整个 AI 栈进行了协同设计。
工程文化
1. 快速行动
Meta 自成立以来一直坚持“快速行动”的文化,这体现在强大的持续部署能力和产品工程师编写的无状态、无服务器代码上。团队能够在短时间内快速调整优先级,适应市场变化。
2. 技术开放
- 内部采用单一代码仓库(Monorepo)存储所有项目代码,促进代码发现和复用。
- 外部开源了许多项目,包括 PyTorch、Llama、Presto、RocksDB 和 Cassandra,并通过研究论文分享了大量基础设施技术。
3. 生产中的研究
- Meta 的系统研究论文均由开发生产系统的团队撰写。这些团队通过解决实际问题并提炼解决方案,为系统研究提供了宝贵的实践经验。
4. 共享基础设施
- Meta 优先考虑标准化和全局优化,所有服务器共享一个池,避免了不同团队选择多种服务器类型的情况。
- 在软件层面,Meta 的多个常用功能(如软件部署、配置管理、服务网格等)都被统一为通用工具。
文化案例:Threads 应用
- Threads 应用的快速开发展示了 Meta 的文化优势。开发团队仅用五个月就完成了应用的技术实现,并在两天内完成了生产部署准备。最终,该应用在五天内达到了 1 亿用户,成为历史上增长最快的 App。
用户请求端到端流程
请求路由
-
动态 DNS 映射
- 当用户访问 facebook.com 时,Meta 的 DNS 服务器会返回一个指向最近的边缘数据中心(PoP)的 IP 地址。
- 静态内容可以直接从 PoP 提供服务,而动态内容则会被转发到主数据中心区域。
-
静态内容缓存
- 如果用户请求的是静态内容(如图片或视频),可以由 PoP 或 CDN 提供服务。
- Meta 使用 URL 重写技术将用户请求重定向到附近的 CDN 站点。
-
动态内容请求路由
- 动态内容请求(如新闻推送)会被转发到合适的数据中心区域,具体目标区域由流量工程工具根据容量和延迟等因素决定。
基础设施拓扑
- Meta 的全球基础设施包括 CDN 站点、边缘数据中心和主数据中心。
- 由于内部跨数据中心流量远高于外部流量,Meta 构建了自己的专用广域网(WAN),用于连接全球的数据中心和 PoP。
提升开发者生产力
持续部署
- Meta 的配置管理和部署工具支持每日数万次实时更改,确保新功能和修复能迅速上线。
- 开发者只需编写代码,基础设施会自动处理代码部署和自动扩展。
无服务器函数(Serverless Functions)
- FaaS(Function as a Service)已成为 Meta 的主要编程范式,超过 10,000 名工程师专注于编写无服务器函数。
- Meta 的两个主要 FaaS 平台是 FrontFaaS(前端无服务器函数)和 XFaaS(事件驱动无服务器函数)。两者均依赖外部缓存系统来优化性能。
降低硬件成本
全球数据中心作为一台计算机
- Meta 正在从“数据中心即计算机”演进到“全球数据中心即计算机”。
- 通过全局资源管理工具,Meta 可以自动确定最佳的服务副本数量和位置,同时优化流量路由。
硬件与软件协同设计
- 使用低成本硬件并通过软件解决方案克服其局限性。
- 例如,通过软件实现更高的容错能力,而不是依赖昂贵的硬件冗余。
自主硬件设计
- Meta 设计了自己的数据中心、服务器、网络交换机和 AI 芯片,从而实现了更好的成本和功耗效率。
设计可扩展系统
虽然去中心化的系统(如 BGP、BitTorrent 和分布式哈希表)通常被认为是高度可扩展的,但在数据中心环境中,Meta 更倾向于使用集中控制器,因为它们可以更简单地做出高质量决策。
可扩展的服务网格
- Meta 的服务网格(ServiceRouter)采用了集中控制平面和去中心化数据平面的混合架构,成功支持了每秒数十亿次的 RPC 请求。
未来方向
-
AI
- AI 工作负载将成为数据中心中最大的类别,预计到本十年末,数据中心的一半电力将用于 AI 工作负载。
- Meta 的 AI 策略涉及从 PyTorch 到 AI 芯片的全栈协同设计。
-
领域特定硬件
- 预计会有更多定制化的硬件出现,如用于 AI 训练、推理、虚拟化和视频编码的芯片。
-
边缘数据中心
- 随着元宇宙和物联网应用的增长,边缘数据中心的数量和规模将会大幅增加。
-
开发者生产力
- 预计未来的开发工具将更加智能化,AI 驱动的代码生成和调试将成为主流,同时垂直领域的无服务器编程范式将进一步提高开发效率。
结语
Meta 的超大规模基础设施不仅推动了技术的进步,也为其他公司提供了宝贵的参考经验。随着 AI 的快速发展,未来十年将是超大规模基础设施创新的关键时期。我们鼓励行业分享见解,共同推动技术进步。
