Lobsters | 📄 原文链接 | 2026-10-16 收录

把 Git 放到 S3 上,现在所有人都做错了

来源:enroute.sh — 2026-10-13

📋 概述

Enroute 团队复盘了当前主流的「S3 + 预写日志」式 Git 托管:从 Cursor/SpaceX 八月公布的 Continuity 起,出现大量照抄同一思路的开源实现。它们确实把可扩展性与持久性交给了对象存储,但有两处不足——读扩展得不错却在写密集时吃力,而且仍然依赖会在磁盘上做内存映射的 Git CLI,因此每个仓库必须先完整落到磁盘才能开始服务。文章的根因分析是:Git 不只是内容寻址存储,还是一个图数据库,查询要从 ref 走到 commit、tree、blob,还要跟随 delta 链,如果按对象逐个取,每一步都是 30~40 毫秒的往返,所以关键在保持数据局部性。Enroute 的方案是计算与存储分离:每个仓库跑一条 MultiRaft 复制日志,负责 ref 更新与层级清单;推送的大部分工作在提交之前就并行完成,只有提交经比较交换按序应用;摄取时重写 packfile 以约束对象图的连通性。他们称在单仓库上跑出了超过 7,600 次并发推送/秒的持续峰值。

🔑 核心要点

💡 金句

如果 Git 是按现代数据库的思路设计的,而不是磁盘上的一个文件,它会是什么样子?
← 返回 Lobsters 首页