速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

GitHub 的 DGit 改进了平台的可靠性、性能以及可用性

  • 2016-04-10
  • 本文字数:1294 字

    阅读完需:约 4 分钟

GitHub 最近悄悄地发布了 DGit,全称为“分布式 Git”。这是一种基于 Git 创建的分布式存储系统,其目标是改进使用 GitHub 时的可靠性、可用性以及性能。

DGit 是一个应用层面的协议,它利用了 Git 分布式的特性,将每个仓库在三台不同的、独立选择的服务器上保留三个备份。按 GitHub 所说,这个简单的架构在可靠性、可用性和性能方面带来了许多直接的好处。

  • 考虑到托管某个仓库的三台服务器是互相独立的,那么他们同时变得不可用的可能性非常低。
  • 用户的请求可在这三台服务器之间进行负载均衡处理,由于这些请求大部分是读请求,因此可以立即响应,而无需在这三台服务器之间进行同步,这将带来直接的、接近于 3 倍的性能提升。
  • 多个仓库之间出现“命运共享”(fate sharing)的情况大大减少了。命运共享这种情况会造成一个或多个仓库的性能下降,其原由是这些仓库与另其他非常流行的或者过于庞大的仓库共享了相同的服务器。在 DGit 的实现中,由于这些仓库在独立的服务器中进行分发,因此这种情况同时发生在三台服务器上的可能性少之又少。这也使某个请求可以在负载相对较小的服务器中进行处理。
  • 分发服务器之间无需保持一个很近的距离,他们可以分布在不同的可用区域或是数据中心之间。这种方式显然能够改进可用性,并且对于在地理位置上更接近的用户也能够带来性能上的改进。

DGit 使 GitHub 能够废除之前所使用的基于备份的模式(由于 DGit 的发布过程还在进行中,因此目前仍在使用这一模式)。对于每个活动的服务器来说,这种模式要求设置一个专用的备用服务器,以交叉线连接,数据将通过 DRDB 进行同步。

对于 GitHub 的整体功能来说,废除这种模式能够带来一些额外的好处:

  • 当某一台服务器发生故障时,唯一必须要做的一件事就是将等待中的请求重新路由至一台新的服务器,并重启发生故障的服务器。
  • 此外,替换一台有故障的服务器变得不再那么紧迫了,因为至少还有两台服务器能够运行,他们可将数据迅速地分发至第三台服务器。
  • 由于新的方式不再需要使用一台专用的备用服务,这意味着 GitHub 能够更好地利用每个 CPU 以及所有的可用内存,以处理用户的请求。
  • DGit 极大地简化了 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

2016-04-10 19:001989
用户头像

发布了 428 篇内容, 共 178.6 次阅读, 收获喜欢 38 次。

关注

评论

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

区块链商品防伪溯源平台搭建,实现数据信息安全共享

13828808769

区块链 商品溯源 #区块链#

全球案例 | NTT:Atlassian 帮助我们重塑危机中的可能性

Atlassian

敏捷 团队协作 数字化转型 Atlassian Jira

真假敏捷教练

escray

面试 面经 4月日更

KubeVela 1.0 :开启可编程式应用平台的未来

阿里巴巴云原生

容器 云原生 k8s 消息中间件 Go 语言

CloudQuery v1.3.6发布,更加完善的数据操作支持

BinTools图尔兹

数据库 sql 数据安全 数据管理工具

Rust从0到1-枚举-定义

rust 枚举 Option

智慧公安情指勤系统搭建,指挥调度平台解决方

13828808769

智慧公安

微服务中台技术解析之项目环境隔离

小江

kafka 架构 DevOps 后端

无脑用 react 的 useCallback

sadhu

React Hooks 无脑 useCallback

多年后,我终于看清了比特币的本质

陈东泽 EuryChen

比特币 区块链

避免人工智能存在“歧视”,要从这8大方法入手

澳鹏Appen

人工智能 机器学习 大数据 人脸识别

Spring 类型转换

邱学喆

Converter spring类型转换 GenericConversionService GenericConverter ResolvableType

投资的狠人,往往是这样的

陈东泽 EuryChen

比特币 区块链 投资 李笑来 debank

华为云PB级数据库GaussDB(for Redis)揭秘第七期:高斯Redis与强一致

华为云开发者联盟

redis 华为云 GaussDB(for Redis) 强一致 PB级数据库

Java流(Stream)操作实例-筛选、映射、查找匹配

Java小咖秀

Java stream java8 日常开发

神秘又强大的@SpringBootApplication注解

vivo互联网技术

Java 后端 springboot 注解分析

区块链电子证照平台搭建,助推政务数字化发展

13828808769

电子存证 区块链+ #区块链#

透气胶浆、无手感透气胶浆

C13713145387

透气胶浆 仿拔印浆 无手感透气浆

对混沌工程的五个常见误解

混沌工程实践

混沌工程 故障注入 误区 生产事故 监管合规

SpringCloud(Netfix)-技术专题-服务注册与发现

洛神灬殇

SpringCloud

Linux grep 命令

一个大红包

4月日更

Python OpenCV 图像处理之图像直方图,取经之旅第 25 天

梦想橡皮擦

Python OpenCV 4月日更

SpringCloud(Netflix)-技术专题-自定义配置Ribbon

洛神灬殇

SpringCloud Ribbon

联邦学习,为何而生?

博文视点Broadview

【LeetCode】实现 Trie (前缀树)Java题解

Albert

算法 LeetCode 4月日更

Spark的动态资源分配

小舰

Spark调优 4月日更

爽面数码打底浆说明书

C13713145387

爽面数码打底浆 哑面数码打底浆 数码打底浆

防晒衣专用水性油墨说明书

C13713145387

防晒衣专用水性油墨 防水尼龙水性油墨

BOE(京东方)2020年报发布: 营收1355.53亿元 净利润大幅增长162.46%

基于深度神经网络的噪声标签学习

华为云开发者联盟

神经网络 损失函数 深度神经网络 噪声 噪音数据

什么是跨职能合作的关键?

王辉

团队管理 技术管理 沟通

GitHub的DGit改进了平台的可靠性、性能以及可用性_GitHub_Sergio De Simone_InfoQ精选文章