[博客翻译]Meta的超大规模基础设施:概述和见解


原文地址:https://cacm.acm.org/research/metas-hyperscale-infrastructure-overview-and-insights/


Meta 的超大规模基础设施:概览与洞察

作者简介

Chunqiang Tang 是 Meta(前身为 Facebook)的研究科学家和高级总监,主要研究领域包括人工智能加速器、机器学习、高性能计算和云计算。在加入 Facebook 之前,他曾是 IBM T.J. Watson 研究中心的研究人员和经理。


引言

超大规模基础设施供应商(如阿里巴巴、亚马逊、字节跳动、谷歌、Meta、微软和腾讯)已经开发出覆盖全球的基础设施,以向全球用户提供云服务、Web 服务或移动服务。尽管大多数从业者可能不会直接构建这种规模的基础设施,但我们认为了解其中的一些关键理念和技术是非常有益的。

历史表明,许多被广泛使用的技术最初都源于高级环境,例如 1960 年代的大型机和过去二十年的超大规模基础设施。本文提供了一个关于 Meta 超大规模基础设施的高层概述,重点探讨了其开发过程中获得的关键见解,特别是在系统软件方面。


关键洞察

  1. 文化优先:快速迭代、技术开放、生产研究和共享基础设施

    • Meta 的企业文化强调“快速行动”、“技术开放”、“生产中的研究”和“共享基础设施”。这些文化因素对 Meta 的技术创新起到了重要作用。
  2. 提升开发者生产力

    • Meta 大规模采用持续部署和无服务器函数(Serverless Functions),从而显著提高了开发者的效率。
    • 例如,Meta 的前端无服务器函数每三小时就会发布一次新版本,而配置管理工具每天处理超过 10 万次实时变更。
  3. 降低硬件成本

    • 通过硬件与软件协同设计,以及自主优化资源分配,Meta 在减少硬件成本方面取得了显著成果。
    • 全球数据中心作为一个整体计算机运行,动态调整工作负载分配,进一步降低了硬件浪费。
  4. 全栈 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。

用户请求端到端流程

请求路由

  1. 动态 DNS 映射

    • 当用户访问 facebook.com 时,Meta 的 DNS 服务器会返回一个指向最近的边缘数据中心(PoP)的 IP 地址。
    • 静态内容可以直接从 PoP 提供服务,而动态内容则会被转发到主数据中心区域。
  2. 静态内容缓存

    • 如果用户请求的是静态内容(如图片或视频),可以由 PoP 或 CDN 提供服务。
    • Meta 使用 URL 重写技术将用户请求重定向到附近的 CDN 站点。
  3. 动态内容请求路由

    • 动态内容请求(如新闻推送)会被转发到合适的数据中心区域,具体目标区域由流量工程工具根据容量和延迟等因素决定。

基础设施拓扑

  • Meta 的全球基础设施包括 CDN 站点、边缘数据中心和主数据中心。
  • 由于内部跨数据中心