跳到正文
原文
InfoQ 中文· 作者:Leela Kumili·· 4 小时前AI 评分65

Cursor 使用基于 S3 的 WAL 将 Git 存储扩展到每秒 300 多次 Push

Cursor 使用基于 S3 的 WAL,将 Git 存储扩展到每秒 300 多次 Push

AI 摘要

Cursor 发布名为 Continuity 的 Git 存储架构,通过将 S3 上的预写日志(WAL)作为数据最终依据,不再依赖副本间的同步协调来保证一致性。在合成测试中,该架构在使用 S3 Express One Zone 时,读取能力随副本数量线性增长,Push 请求处理量超过每秒 300 次,同时支持 CI 负载繁重的大型代码仓库和 Coding Agent 创建的大量小型仓库。

该架构的核心变化在于本地 NVMe 仅作为温缓存而非权威副本,系统通过 Rendezvous Hashing 选择节点并利用 S3 原子比较并交换操作接受 Push 请求。WAL 更新通过 UDP Gossip 协议传播,平均读取耗时不到 10 毫秒,即使消息丢失也不影响数据正确性。此外,Git 压缩仅由主副本执行,其他副本直接从 S3 下载压缩后的 packfile,虽然减少了 CPU 开销但增加了带宽消耗。

这一设计引发了与数据库架构的比较,将 Git 存储当作数据库来设计,关注 Push 一致性、Force Push 事务及时间点恢复等问题。性能数据显示,使用 S3 Standard 时系统每秒最多处理 120 次 Push,而 S3 Express One Zone 可提升至 300 次以上,当吞吐量进一步提高时,Git 压缩成为新的性能瓶颈。事实层面确认了架构转变与测试数据,推断层面表明该方案可能降低大规模 Git 托管的协调成本,猜测层面需关注独立验证结果及长期带宽成本影响。

来源:InfoQ 中文 · infoq.cn