Anthropic 如何重新设计源代码管理

BestBlog编程类文章 · 软件开发

📌 One-Sentence Summary Anthropic 通过 Scion 重新设计了源代码管理系统:采用客户端-服务器架构,将仓库操作交由集中式服务处理,并利用内容寻址缓存,高效应对每天 30,000 次提交和 25 million 次检出。 📝 Summary Anthropic 的单体仓库面临严重的扩展性问题,每天要处理超过 30,000 次提交和 25 million 次 CI 检出;若采用简单方案,每天会产生 600 PB 流量。传统 Git 的本地独立模式无法满足其自动化、始终在线的工作负载需求。于是他们开发了 Scion,这是一种客户端-服务器源代码管理系统:服务器负责处理仓库操作,包括历史查询、差异比较、提交和合并;客户端则维护有限的缓存。Scion 采用基于内容寻址的存储,使用不可变对象,并通过分层缓存高效分发数据:计算节点上的 scion-daemon、区域级 scion-cache,以及权威服务器。严格的缓存边界也有助于避免故障扩散。该系统将编码任务耗时缩短了 83%,成本降低了 48%;与此同时,一个 7 人团队还开发了 Scion 和代码审查工具 Antique。 💡 Main Points Scion 的客户端-服务器架构将仓库操作集中处理 与 Git 的本地独立模式不同,Scion 将历史查询、差异比较、提交和合并交由共享服务器服务处理。客户端 scn 维护有限的缓存,并在磁盘上准备文件,使自动化任务和智能体无需维护完整的本地仓库,也能高效运行。 基于内容寻址的存储与不可变对象支持高效缓存 Scion 根据对象内容的哈希值识别对象,使对象不可变。因此,不同任务之间可以共享缓存,无需检查数据是否为最新,因为相同内容始终会生成相同的 ID。系统采用三层缓存架构:计算节点上的 scion-daemon、区域级 scion-cache,以及权威服务器。 分层缓存减少数据传输并提升扩展性 客户端通过明确的查询,仅请求缺失的对象。任务通过 scion-daemon 共享缓存对象,通过 scion-cache 使用区域级缓存,必要时再向权威服务器请求数据。严格的缓存边界可防止区域级故障导致中央服务器负载过重,使系统能够高效应对每天 25 million 次检出。 Scion 相比传统 Git 实现了显著的性能提升 新架构让 Anthropic 以降低 48% 成本的方式,将相同编码任务的完成速度提升了 83%。一个 7 人团队开发了 Scion 和 Antique,展现了在 AI 辅助下快速开发、同时保持高代码质量和卓越运营水平的可能性。 💬 Key Quotes Scion 让服务器负责仓库操作。它假设客户端在需要数据时能够连接到源代码管理服务。 这种取舍意味着系统会高度依赖服务的可用性和网络连接。 Scion 通过结合共享的源代码管理 API 与分层缓存来实现扩展。 如果每次 CI 检出都传输一份压缩后的工作副本,简单方案每天产生的流量可能超过 600 PB。 开发 Scion 和 Antique 的团队只有 7 个人。 📊 Article Meta AI Screening: 88 Source: ByteByteGo Newsletter Author: ByteByteGo Category: 软件编程 Language: 英文 Read Time: 10 min Word Count: 2360 Tags: 编程与工程 , 系统设计 , 分布式系统 , 云原生 / DevOps , 历史 Read Full Article

查看原文