写点什么

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

  • 2016-02-17
  • 本文字数:954 字

    阅读完需:约 3 分钟

尽管 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

2016-02-17 18:002671
用户头像

发布了 25 篇内容, 共 75766 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

程序员的晚餐 | 5 月 18 日 瓠子,年少时的味道

清远

美食

设计模式前传——为什么要学设计模式

大头星

Java 面试 设计模式

Kafka系列第7篇:你必须要知道集群内部工作原理的一些事!

z小赵

大数据 kafka 实时计算

Spring Security 中的授权操作原来这么简单

江南一点雨

Java spring Spring Boot spring security

MacOS 下使用VSCode进行GoLang Test报错

北纬32°

macos vscode Unit Test debug Go 语言

Live2D for Unity入门篇 4.x

波波

编程 游戏开发 Live2D Unity

半小时手工解决的活,让我意外学会了 python 的 pdfkit 库

小匚

Python python教程

从零开始制作一台计算机-概述

小兵

计算机基础

Web3极客日报#127

谢锐 | Frozen

区块链 开源 技术社区 Rebase Web3 Daily

Redis缓存三大问题

Bruce Duan

redis 缓存穿透 缓存击穿 缓存雪崩

游戏夜读 | Two Sum问题的八个解

game1night

JAVA主流锁

颇风

Java 多线程

给苹果提醒APP配个助手

BabyKing

提醒助手 TODO 奇妙清单 Reminders Helper

东哥和刘亦菲的故事

张利东

R

换脸新潮流:BIGO风靡全球的人脸风格迁移技术

DT极客

Web3极客日报 #128

谢锐 | Frozen

区块链 开源 技术社区 Rebase Web3 Daily

npm下载electron缓慢的问题

玏佾

npm Electron

识别代码中的坏味道(三)

Page

敏捷开发 面向对象 重构 代码质量 代码坏味道

项目提升服务过程与总结稿

Geek_bc0aff

DDD 实践手册(番外篇: 事件风暴-概念)

Joshua

领域驱动设计 DDD 事件风暴 事件驱动 Event Storming

回“疫”录(20):世界从来不会欺负听话的人

小天同学

疫情 回忆录 现实纪录 纪实

谈谈控制感(7):底线思维与控制感

史方远

职场 心理 成长

Vue+SpringBoot+SpreadJS 实现的在线文档

葡萄城技术团队

Spring Boot Vue SpreadJS

Kotlin 协程实践(2)之 异步和Callback地狱

陈吉米

Java kotlin 协程

Deno 入门手册:附大量 TypeScript 代码实例

寇云

node.js typescript

如何更自信的写作

董一凡

写作

NIO看破也说破(四)—— Java的NIO

小眼睛聊技术

Java 学习 开源 架构 后端

产品周刊 | 第 15 期(20200517)

八味阁

产品 设计 产品经理 产品设计

ZooKeeper,到底如何选主?

奈学教育

单核小鸡上的Minikube实践(一)

摩登土狗

Docker Linux DevOps k8s minikube

重新强调完成的定义

Bob Jiang

Scrum 完成的定义 DoD definition of done

谷歌启动容错Git管理系统项目:Git Ketch_Java_Abraham Marín Pérez_InfoQ精选文章