参考地址:http://githubengineering.com/introducing-dgit/
DGit是“Distributed Git”的简写,即分布式Git。
众所周知,Git本身就是分布式的,任何的Git仓库备份都是包含该项目所有历史版本的所有的文件,分支,以及提交记录。DGit利用Git的这个特性为每个仓库在三个服务器中保存着三份备份。DGit的的设计初衷是为了实现Git存储没有单点故障的可用性要求。甚至其中的两个备份都不可用,仓库仍能保持可读状态。
假设一个文件服务器需要下线,DGit可以自动地判断哪些仓库的备份少于3份,并且自动创建一个新的备份到其他可用的服务器上。这个”自愈“的程序使用集群中剩下所有服务器作为操作源和目的。这个自愈程序的吞吐量是多对多并行的,所以性能上会很快,而且这个过程不会引起服务中断。
现在,我们使用DGit,每一个仓库分别独立地存储在我们的文件服务器集群中的三个服务器上。DGit自动地为每个仓库选择宿主服务器,同步备份到各个宿主服务器,并选择一个最佳到服务器来响应每个读请求。写操作时同步地写入到三个备份中,保证至少两个备份写入成果才确认提交这个写操作。