GitHub如何把Git迁移到agent规模

GitHub因agent流量暴涨、自建数据中心供电到顶而迁移Azure,通过per-reference串行化和虚拟副本降低全局协调成本,瓶颈仍在quorum本身。

要点

  1. agent流量暴涨,GitHub自有数据中心供电与供应链到顶,迁移是被迫的;绝大多数仓库已在Azure有副本,多数仓库已有2个副本在Azure。
  2. 最忙的仓库卡在25ms跨地域往返:写入持有整个仓库范围的锁,最慢副本决定每次写入延迟与吞吐上限。
  3. 解法一把串行化范围从整个仓库缩小到单个reference,不同ref更新可并发,内测吞吐提升3到4倍。
  4. 解法二读写解耦:引入不提供读的虚拟副本作为quorum成员,写入持久化到Blob Storage后才ack,读副本从Blob预热缓存、不参与quorum。
  5. 未解决问题:读副本仍是后台对齐,写吞吐瓶颈在quorum本身;信号是GitHub把agent当一级负载。

来源