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 站点、边缘数据中心和主数据中心。
- 由于内部跨数据中心