返回首页

GitHub 将 Git 写入仲裁缩至单个引用:为 Agent 规模流量迁移 Azure

  • 背景与瓶颈:GitHub 称 Git 流量过去一年指数增长,99.99999% 的仓库已同时存放在自有数据中心与 Azure;剩余 0.00001% 的最繁忙仓库受约 25ms 跨区域网络往返限制。现有 Spokes quorum 在每次写入时持有仓库级锁,并等待所有健康副本响应,最慢副本会决定每次写入的延迟与吞吐上限。
  • 机制变化:GitHub 将 quorum 的序列化范围从整个仓库缩小到单个引用。不同引用的写入不再互相等待,只有写入同一引用的请求需要串行化;每次写入仍承担跨区域延迟,但多个引用的写入可同时在途。内部测试中,不同引用的写入在更低延迟下获得 3–4 倍吞吐提升。
  • 存储与读扩展:GitHub 引入虚拟写入副本,将对象存储作为 quorum 成员,写入在对象存储中持久化后才确认;同时用虚拟读副本从 Azure Blob Storage 预热缓存并承接读流量,不加入 quorum,读与写计算开始解耦。
  • 行业意义:Agent 驱动的高频自动写入把版本控制从“人类提交节奏”推向“机器提交节奏”,瓶颈落在锁粒度、跨区域协调与读写资源竞争上。GitHub 的过渡方案先迁移数据,再缩小协调范围并拆分读写路径;其下一步限制仍在写入吞吐与提交协议本身。

🔗 The GitHub Blog