Anthropic推Scion系统重构代码流,服务器端执行提升CI效率
单体仓库架构瓶颈显现
Anthropic 近期深入解析了其代码基础设施的重大转型,详细阐述了如何从传统 Git 单体仓库迁移至名为 Scion 的新系统。随着 AI 智能体参与开发的比重增加,原有的架构面临严峻挑战。该公司指出,单日合并变更数已从 5 月的约 2500 个激增至 9 月的 3 万多个,这种爆发式增长使得浅克隆、稀疏检出等既有 Git 优化手段的运维复杂度急剧上升。与此同时,CI 系统每天执行约 2500 万次检出操作,而单体仓库主分支的历史记录接近 100GB,即便压缩后的工作副本也超过 25GB,传统本地独立模式的局限性已暴露无遗。
Scion 核心设计理念
Scion 是一套将代码仓库操作全面移至服务器端的源代码管理系统,其核心在于牺牲离线独立性以换取更少的本地数据负载和共享基础设施效率。在 Scion 架构中,提交、合并、变基、历史记录及代码追溯查询均在服务器端执行。客户端仅维护容量受限的对象缓存,通过虚拟化检出按需实体化文件,工具甚至可以直接通过 API 查询差异并执行部分写入,无需完整检出代码。这种设计特别适合支持智能体与 CI 工作负载,实现了更高效的数据共享机制。
数据模型与缓存机制
Scion 变更集记录了相对于第一个父变更集发生变化的文件,并使用内容寻址指针引用 Blob 存储中经过压缩的文件内容。创建变更集与更新引用彼此分离,接收变更集无需跨服务器协调,极大提升了并发性能。对于历史记录查询,系统构建名为“派生数据”的附加结构,这些基于父变更集递归计算的数据可提前或按需生成,且因位于服务端可独立演进。执行检时,客户端直接请求缺失的不可变树和 Blob,不再协商生成自定义 Packfile,节点本地守护进程在不同任务间共享缓存,区域缓存则从由 Spanner 和云存储支持的权威服务器获取数据。
性能提升与资源优化
根据 Anthropic 报告,Scion 各层缓存命中率均超过 99%,CPU 和内存基础设施占用仅为此前 Git 镜像的二百分之一。更显著的是,CI 与研究任务的检出速度提升了两个数量级。尽管这些结果基于内部工作负载而非通用基准测试,但清晰展示了新架构在大规模高并发场景下的优势。各层公开相同的检出协议 RPC,但 Anthropic 强制规定调用顺序以隔离故障,防止区域缓存失效时大量请求压垮权威服务器,确保了系统的稳定性。
与既有技术的对比及启示
InfoQ 此前报道过 Uber 的 GitFarm 方案,其将标准 Git 操作集中到服务端但不替换底层数据模型。相比之下,Scion 进一步改变了底层数据模型,并建立在 Mononoke 及其 Bonsai 数据模型的技术基础之上。Anthropic 强调,Scion 并非通用的 Git 替代品,它需要配套的高度定制代码审查、搜索和 CI 系统。对于架构师而言,核心启示在于当工作负载变化时,应重新审视计算工作应在何处执行。不可变对象的共享缓存和服务器端查询处理能有效减少重复工作,但需警惕对服务器可用性的高依赖及庞大的系统集成成本。建议现有 Git 平台可借鉴其完备的服务器端 API 理念。
来源:InfoQ