[博客翻译]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 站点、边缘数据中心和主数据中心。
  • 由于内部跨数据中心流量远高于外部流量,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 请求。

未来方向

  1. AI

    • AI 工作负载将成为数据中心中最大的类别,预计到本十年末,数据中心的一半电力将用于 AI 工作负载。
    • Meta 的 AI 策略涉及从 PyTorch 到 AI 芯片的全栈协同设计。
  2. 领域特定硬件

    • 预计会有更多定制化的硬件出现,如用于 AI 训练、推理、虚拟化和视频编码的芯片。
  3. 边缘数据中心

    • 随着元宇宙和物联网应用的增长,边缘数据中心的数量和规模将会大幅增加。
  4. 开发者生产力

    • 预计未来的开发工具将更加智能化,AI 驱动的代码生成和调试将成为主流,同时垂直领域的无服务器编程范式将进一步提高开发效率。

结语

Meta 的超大规模基础设施不仅推动了技术的进步,也为其他公司提供了宝贵的参考经验。随着 AI 的快速发展,未来十年将是超大规模基础设施创新的关键时期。我们鼓励行业分享见解,共同推动技术进步。