GitHub最近悄悄地发布了DGit,全称为“分布式Git”。这是一种基于Git创建的分布式存储系统,其目标是改进使用GitHub时的可靠性、可用性以及性能。
DGit是一个应用层面的协议,它利用了Git分布式的特性,将每个仓库在三台不同的、独立选择的服务器上保留三个备份。 按GitHub所说 ,这个简单的架构在可靠性、可用性和性能方面带来了许多直接的好处。
DGit使GitHub能够废除之前所使用的基于备份的模式(由于DGit的发布过程还在进行中,因此目前仍在使用这一模式)。对于每个活动的服务器来说,这种模式要求设置一个专用的备用服务器,以交叉线连接,数据将通过 DRDB 进行同步。
对于GitHub的整体功能来说,废除这种模式能够带来一些额外的好处:
正如之前所说,DGit是基于Git本身所打造的,它并没有利用RAID、DRBD或其他分发技术。GitHub选择实现自己的算法,以处理序列化、加锁、故障检测以及重新分发等操作。在与InfoQ的一次对话中,GitHub表示他们使用了 三阶段提交(3PC)协议 以处理分布式事务。“DGit基本已经消除了在Git层由于单一托管或整个机架不可用所造成的服务故障”。
如上文所说,GitHub近几个月来正在逐步部署DGit,首先从他们自己的仓库开始部署。当他们对于新的系统具备了充分的信心之后,就会开始迁移受欢迎的公共仓库。在今年二月,GitHub开始批量地迁移仓库。目前大约有60%的仓库、98%的Gist,总计约67%的GitHub数据已经运行在DGit上了。GitHub向InfoQ表示:“我们正在日夜不停地通过导入作业将数据从之前的存储架构中迁移至DGit”。
查看英文原文: GitHub’s DGit Improves Reliability, Performance, and Availability