内容提要
SpaceX以600亿美元收购Cursor后,Cursor发布技术博客介绍自研Git存储引擎Continuity,该引擎将写前日志存入S3对象存储作为唯一真相源,本地磁盘仅作缓存,用CAS取代共识协议,解决GitHub Spokes架构扩展性受限和运维成本高的问题。Shopify CEO Tobi Lütke用周末用Rust复刻出开源版walgit,支持任意S3/GCS存储,实现bundle-uri快速克隆。这标志Git托管架构可能迎来范式转移。
延伸解读
架构范式转变:从共识到CAS
Continuity的核心创新在于用对象存储的CAS操作取代了传统分布式系统中的共识协议(如3PC)。这种设计使得系统无需维护复杂的路由表和强一致副本,任何节点都可以通过CAS安全地接受推送,从而简化了运维并提高了扩展性。这一思路与近年来数据库领域兴起的“存储计算分离”趋势不谋而合,可能成为未来基础设施设计的重要参考。
AI Agent时代的新负载模型
文章指出,AI Agent的大量使用改变了Git托管的负载特征:海量小仓库的创建和废弃、高频的读写操作,使得传统架构(如Spokes)的“三副本”策略显得笨重且成本高昂。Continuity通过将对象存储作为真相源,允许副本数灵活伸缩,甚至回收闲置副本,从而更好地适应这种动态、高并发的场景。这提示开发者,为AI时代设计基础设施时,需要重新审视原有的假设。
开源复刻的速度与影响
Shopify CEO Tobi Lütke仅用一个周末就用Rust复刻了Continuity架构并开源为walgit,这展示了当架构理念被清晰阐述后,技术实现可以多么迅速。walgit不仅实现了核心功能,还加入了bundle-uri等优化,使得大型仓库的克隆速度大幅提升。这一事件表明,开源社区对巨头架构的复现能力正在增强,可能削弱单一厂商的技术壁垒,为市场带来更多选择。
Q&A
SpaceX 收购 Cursor 后,Cursor 发布了什么新技术?
Cursor 发布了一篇技术博客《Git at any scale》,介绍了自研的 Git 存储引擎 Continuity,并计划将其包装成产品 Origin,旨在成为 GitHub 的替代品,特别是在超大规模仓库和 AI Agent 高频读写场景下。
Git 托管为什么难以扩展?
Git 的存储格式 packfile 是为体积最小化设计的,对象随机排列且多为增量存储,导致读取单个对象需要随机寻址。Git 的提交历史是有向无环图(DAG),遍历时无法预知下一个指针,这使得在分布式文件系统上性能极差。
GitHub 早期尝试过哪些方案来扩展 Git 仓库存储?
GitHub 早期尝试过 NFS(网络文件系统)、GFS(块级复制)和 DRBD(块级复制),但都失败了。NFS 因 Git 对本地文件系统的假设失效而失败,GFS 短命,DRBD 难以运维且性能不足。最终 GitHub 转向了 RPC 系统和专用文件服务器。
Spokes 架构的优缺点是什么?
Spokes 架构的优点是:不重新发明 Git,基于 packfile 层操作,数据以正常 Git 仓库形式存储在本地 NVMe 磁盘,多副本之间保持强一致。缺点是:3PC 共识协议导致水平扩展性受限,副本越多推送吞吐越差;运维成本高,需要维护路由表,每个副本都是真相源,必须精确管理。
Continuity 是如何解决 Spokes 的扩展性问题的?
Continuity 将写前日志(WAL)存储在 S3 对象存储中作为唯一真相源,本地磁盘仅作为热缓存。它使用 CAS(比较并交换)取代共识协议,副本之间通过 gossip 广播和条件 GET 同步,无需强同步。这样副本数量可以自由伸缩,巨型仓库可铺开成百上千个副本,小仓库可只保留一个副本,甚至可垃圾回收。
Continuity 的性能表现如何?
在多达 100 个副本的测试中,读吞吐随副本数线性增长,推送吞吐无退化。使用 S3 Standard 可稳定支撑每秒 120 次推送,使用 S3 Express One Zone 可突破每秒 300 次推送,此时瓶颈变为 Git 本地压缩速度。
walgit 是什么?它有什么特点?
walgit 是 Shopify CEO Tobi Lütke 用 Rust 实现的开源项目,是对 Cursor 的 Continuity 架构的复刻。它是一个单文件二进制,支持任意 S3/GCS 对象存储,无需数据库和主节点。特点包括:bundle-uri 快速克隆、支持远程读取器处理超大仓库、内置 Git LFS、Web UI、JSON API、Webhook 和多种鉴权模式。
为什么说 Git 托管可能迎来范式转移?
因为 AI Agent 改变了 Git 基础设施的负载模型,需要处理海量小仓库和高频读写,而 Spokes 架构难以适应。Continuity 和 walgit 展示了“无状态 + 对象存储做真相源”的新范式,可能打破 GitHub 的垄断,带来新的洗牌。