GitHub's new Git storage architecture
242 points • 6 days ago • Article Link

GitHub 推出了全新的 Git 存储架构,专门为承载由 AI 驱动开发带来的海量流量而设计。随着越来越多的开发者借助自动化代理来编写代码,单个仓库的写入操作正在以指数级增长。该新系统代号 Project Rubicon(项目"卢比康"),在维持低延迟读取性能的同时,实现了每秒数千次的并发写入,从而让平台能够随着代理式工作流需求的不断上升而持续扩展。

这套架构的核心理念是将存储与计算解耦,并尽量减少协调开销。团队发现:Git 对象是不可变的,因此可以在不需要一致性协商的情况下进行存储;但引用(reference)的更新则必须严格协调。通过将持久数据迁移到 Azure Blob Storage,并创建用于处理引用更新的专用服务 Ref-CAS(引用对比并交换),GitHub 让各组件可以独立扩展。这样系统不仅能支持多个写入节点,还能提升容错能力与整体吞吐量。

新系统中的流量管理由"虚拟副本"完成,它们充当可随时丢弃的计算集群。这些副本同时承担读写任务,本地磁盘则作为可重建的缓存使用。由于虚拟副本不保存权威的持久状态,它们可以在仓库流量波动时动态地添加或移除。该设计在实现租户管理横向扩展的同时,也有效应对了高活跃仓库带来的纵向扩展压力。

为在高写入量下仍保持性能,架构引入了一种新的压缩(compaction)方式。过去如果要在每个副本上做资源密集型维护,会影响系统开销;现在压缩节点会在后台独立运行,并直接与 Blob Storage 交互。借助租约机制(lease),这些节点能够并行处理数据分片,把 pack 合并起来,以确保读取性能保持稳定,同时不影响主请求链路。后台流程会持续保障:随着 push 次数增加,整个仓库依然保持高效与轻量。

展望未来,这一基础还将为更多优化铺路,例如全局副本(global replicas)、部分克隆(partial clones)以及更细粒度的数据访问。 GitHub 计划继续推进基础设施与 Git 项目的演进,让代理式操作变得更加高效。借助这套新架构,目标是为仓库提供无缝体验,使其在不需要特殊处理的情况下也能承载高强度、全天候的活动,从而让开发者及其代理能够在规模化的环境中高效运行。

74 comments • Comments Link

- 为高吞吐量的 AI agent 工作负载扩展 Git 基础设施,是一种必须发生的演进。尽管如此,这更多仍属于前瞻性规划,而不是用来立刻止血现有服务中断的应急方案。

- Git 架构正日益被视为自主 agent 的瓶颈,这让一些人认为,去中心化的版本控制方式,可能从根本上不适配现代 AI 工作流所偏好的那种高频、节奏感强的"vibe-coded"推送模式。

- 在某些场景下,当前推送规模已能达到每秒数千次;这被普遍看作是 agent 设计低效的信号,而不是软件开发中合理的架构诉求。

- 扩展难题既来自以人为中心的 monorepos,也来自自动化系统,这共同造成一种传统 Git 工作流很难应对的环境:难以管理细粒度、快速的代码贡献。

- 缓解系统压力的建议包括实施速率限制,推动在提交前使用本地 agent 集群,或改用像 Perforce 这类更擅长大规模协作并支持独占锁的替代 VCS 范式。

- 大型企业对 Git 的高度依赖,意味着 GitHub 实际上被迫升级自身基础设施以实现大规模的纵向与横向扩展,从而避免大型客户转向内部方案或其他替代工具。

- AI 驱动的生产力承诺,与技术"slop"的现实之间存在紧张关系:AI 生成的 commit 数量可能会损害代码库的完整性和可维护性。

- 支持这些变化的基础设施与 Azure 紧密绑定,也因此引发争论:该云提供商的可靠性水平是否足以支撑下一代关键任务开发者工具。

- 向更大规模的自动化迁移,正在挑战源代码控制的基本原则,逼近这样一种现实:人类审查已无法应对海量合并变更。

- 对于让 agent 长期持续推送每一个微小迭代,人们普遍持高度怀疑态度,因为这会把 Git 从"记录已完成工作的版本管理工具"推向一个可能过载、不稳定的实时通信通道。

这场讨论反映了行业对传统版本控制与 AI 驱动开发之间那种混乱、追求速度的特性碰撞所带来的深层担忧。尽管从技术角度普遍承认需要改进基础设施以承受海量写入吞吐,但不少参与者认为,真正的问题不在工具本身,而在于部署 agent 的方式缺乏纪律。整体共识更倾向于认为:我们已走到临界点,现有 Git 模式与自动化"vibe-coding"从根本上并不兼容,这迫使人们重新审视软件开发到底应当优先追求数量还是质量。最终,虽然 GitHub 为提升规模所做的努力被视为留住企业客户的必要防线,但社区仍存在分歧:这一举措究竟是修补了现代开发者工作流中的系统性缺陷,还是只是为低效实践提供了更多空间。