谷歌如何将数十亿行代码从 Perforce 迁移到 Piper

2011 年,谷歌 Perforce 管理团队的技术主管 Dan Bloch 发表了“仍然全部在一台服务器上:Perforce 的规模化”该论文描述了谷歌的源代码控制系统如何每天为“超过一万两千名用户”提供服务,却仍然依靠一台 Perforce 服务器运行,该服务器隐藏在主校区 43 号楼的楼梯下。 截至 2011 年,这台服务器已在 Google 历史上运行了 11 年。它为成立两年的初创企业 Google 提供服务,现在已扩展为支持上市公司 Google。事实上,大约在那个时候,一位幸运的 Google 工程师刚刚获得了 PR #20,000,000。该服务器仍在运行,现在每天执行“1100-1200 万条命令”。 在论文中,Bloch 描述了一些为扩展服务器而做出的成功努力。然而,幕后的景象却不那么乐观。 谷歌不再是曾经的初创企业,现在拥有资源,这些资源是它花在购买一些金钱可以买到的最好的硬件上的。即便如此,服务器还是捉襟见肘。由于谷歌的 CPU 已经超负荷,不时会出现 TCP 连接故障。在任何时候,热备用服务器都保持运行,由八名管理员组成的团队保持警惕,执行保持谷歌源代码控制服务器正常运行所需的常规任务。 多年来,谷歌内部都知道这是一个风险。工程师们一直在寻找替代方案。但以谷歌的规模——“地球上最繁忙的单个 Perforce 服务器,以及任何源代码控制系统中最大的存储库之一”——没有明显、明确的替代方案。 我们之前曾写过 Linus 在 2005 年创建 git 的原因,当时他无法找到任何能够高效扩展以适应庞大的 Linux 内核存储库的解决方案。在“仍然全部在一台服务器上:Perforce 的规模”论文发表几年后,Google 分享了一些有关其整体架构中变更量的统计数据。截至 2014 年,“每周大约有 250,000 个文件中的约 1500 万行代码被更改”。从这个角度来看,这个数量相当于每周从头开始重写 2014 […]