BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

谷歌启动容错Git管理系统项目:Git Ketch

| 作者 Abraham Marín Pérez 关注 9 他的粉丝 ,译者 艾利特 关注 0 他的粉丝 发布于 2016年2月18日. 估计阅读时间: 3 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

尽管Git Ketch项目开发才刚刚开始,谷歌公司已经对外宣布了他们的第一个Git项目——Git Ketch,一个多主机Git管理系统,能够通过访问多个Git服务器来复制信息,以确保复制信息的复原性和可扩展性。所做的这些改变都是基于原有用Java搭建的名为JGit的Git服务器基础之上的,虽然这里面的其它Git服务器可能是多主机群集的一部分。

最初设计Git的目的是将Git打造成一个分布式源代码管理库系统,但是大多数组织都采用了一个集中式的方式:采用一个带有“黄金副本”代码的主库,所有开发者会在这个主库上做修改,然后以最终版本作为更新基础;尽管所有改动能从开发者的私库里直接调取,但很少有这么做的。

只不过这种集中式方法也会导致单点故障。不过别担心,JGit提供了部分解决方案,那就是通过它的分布式文件系统(DFS)的存储选项。此选项仅能解决部分问题,因为JGit只定义了一组抽象类,而这组抽象类又定义了DFS存储协议,但支持数据复制和创建抽象类实现的整体架构则是由用户自己设计的。这就意味着组织已投入相当大的资源——为实现JGit DFS,项目组暂时还不能将JGit DFS大范围推广使用,谷歌是少有的几个掌握DFS实现的组织之一。

Ketch所遵循的策略有些与众不同,不仅仅可以定义一个能够复制DFS数据的Git服务器,Ketch还可以假定现存的多个普通Git服务器可以互相之间数据和状态同步,因此被称为“多主机”。在任何一个制定的节点上,这些服务器都可以当作“主机”来使用,其余的服务器当作“从机”来利用。任何时候向任何一台服务器发送请求,这个“请求”都会被转发给“主机”,该“主机”将会向所有其他服务器发送推送请求,一旦绝大多数“从机”服务器已经确认推送请求成功,“主机”会向初始呼叫对象确认操作已成功。这一机制是基于Raft算法,此算法能够确保至少大多数服务器能够接收已经做了变更的请求;任何服务器上的数据丢失,都可以通过其它服务器同步过来。目前,只有JGit服务器可以充当“主机”,虽然在多主机集群里任何Git服务器实现的原子推送都可以充当一个参与服务器。

这些已经提出来的改变均可以在JGit内部Gerrit里看到,关于未来在工具上的改进细节及进展都可以从JGit的电子邮件分发列表里获得。

查看英文原文:Google Kick-Starts Git Ketch: A Fault-Tolerant Git Management System

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT