Meta 公司 超大规模基础设施 的经验分享

超大规模基础设施已成为全球科技巨头竞争的核心领域之一。Meta 作为其中的重要参与者,其超大规模基础设施的建设和优化经验为我们提供了诸多宝贵的启示。 
Meta 的工程文化强调快速行动、技术开放性、生产研究和共享基础设施。这种文化使得 Meta 能够在激烈的市场竞争中保持敏捷性和快速迭代的能力。例如,Meta 的产品工程师主要使用 PHP、Python 和 Erlang 的无状态、无服务器函数编写代码,以获得简单性、生产力和迭代速度方面的优势。团队能够快速调整其执行优先级,而无需经历漫长的重新规划过程,从而在迭代执行过程中留下模棱两可的问题需要解决。这使团队能够快速适应和推出新产品,以应对不断变化的市场条件。
此外,Meta 在内部和外部都倡导技术开放。在内部,采用 monorepo 方法,将所有项目的代码存储在单个存储库中,以促进代码发现和重用,以及跨团队贡献。在外部,Meta 对技术开放性的承诺通过 Open Compute Project 的开源硬件设计得到了证明,以及 PyTorch、Llama、Presto、RocksDB 和 Cassandra 等开源软件项目。这种开放性鼓励跨团队贡献和代码重用,同时阻止了类似技术的重新发明。 
Meta 的产品由共享服务基础设施提供支持。为了提供此基础架构的整体视图,我们解释了如何端到端处理用户请求,并详细介绍了所涉及的所有组件。从请求路由到动态 DNS 映射,再到静态内容缓存和动态内容请求路由,Meta 的全球基础设施由 CDN 站点、边缘数据中心和主数据中心组成。由于内部跨数据中心流量很大,Meta 构建了一个私有 WAN 来连接数据中心,而不是依赖公共 Internet。
在数据中心内部,服务器通过数据中心结构互连,网络交换机形成一个三级 Clos 拓扑,可以通过在顶层添加更多交换机来逐步扩展。通过足够数量的顶级交换机,结构可以提供非阻塞和非超订用网络,从而支持任意两台服务器之间以完整的 NIC 带宽进行通信。Meta 正在努力消除数据中心内的网络超额订阅。 
共享基础设施的主要目的是提高开发人员的工作效率。Meta 将代码和配置的持续部署以极快的速度和规模进行。它使开发人员能够快速发布新功能和错误修复,接收即时反馈并快速迭代。对于配置更改,Meta 的配置管理工具每天在生产环境中部署超过 100,000 个实时更改,涵盖数万个服务和数百万台服务器。对于代码更改,Meta 的部署工具管理 30,000 多个管道以部署软件升级。在 Meta,97% 的服务采用完全自动化的软件部署,无需任何人工干预。
无服务器函数的广泛使用是提高开发人员工作效率的另一个关键驱动因素。与传统后端服务不同,无服务器函数是无状态的,并实现了一个简单的函数接口。开发人员编写无服务器函数代码,并将其留给基础设施,通过自动化处理其他所有事情,包括代码部署和响应负载变化的自动扩展。这种简单性使 Meta 的 10,000 多名产品开发人员能够专注于产品逻辑,而无需考虑基础设施管理。 
除了提高开发人员的工作效率外,共享基础设施的另一个主要目的是降低硬件成本。Meta 通过软件解决方案来克服低成本硬件的限制。例如,Meta 的资源分配工具确保服务的容器和数据分片充分分布在不同的子数据中心容错域中,以实现更好的容错能力。此外,Meta 设计自己的数据中心和硬件,以实现更低的成本和能效。在数据中心中,电力是最受限制的资源,因此自动化工具协调整个 Power-Delivery 层次结构的 Power-Capping 作。 
在超大规模基础设施中,可扩展系统的设计是一个反复出现的主题。Meta 更喜欢集中式控制器而不是分散式控制器,因为它们简单且能够做出更高质量的决策。在许多情况下,混合方法(集中式控制平面与分散式数据平面相结合)提供了两全其美的效果。例如,Meta 的服务网格 ServiceRouter 每秒在数百万个 7 层(L7,即应用层)路由器之间路由数十亿个 RPC。通过无状态控制器、控制器分片以及从中央控制器中删除非必要功能等技术,Meta 实现了集中式控制器的良好可扩展性。 
展望未来,Meta 的超大规模基础设施将继续发展和演变。AI 工作负载已成为数据中心中最大的工作负载类别,预计在本十年结束之前,数据中心一半以上的电力将专门用于 AI 工作负载。此外,用于各种用途的定制和专用硬件将激增,例如 AI 训练和推理、虚拟化、视频编码、加密、压缩、分层内存以及网络和存储处理。同时,元宇宙和物联网应用程序将大幅增加,推动边缘数据中心的数量和规模的大幅增长。
Meta 的超大规模基础设施不仅展示了其在技术领域的深厚积累和创新能力,也为整个行业提供了宝贵的经验和借鉴。 

分类: 投资理财 标签: 超大规模基础设施 Meta 技术开放性 共享服务基础设施 无服务器函数 发布于: 2025-02-11 16:30:36, 点击数: