10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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:002393
用户头像

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

关注

评论

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

华为云同步科技信息端,海量存储性能

爱尚科技

华为云

现代化SDLC与架构评审

I

安全架构设计 SSDLC

华为云加固企业网站安全堤坝,助您业务稳定流畅

科技之光

覆水也可收, 破镜可重圆! EasyRecovery帮你轻松找回丢失数据

淋雨

数据恢复 EasyRecovery

认识VueCLI和Vite🔥

渔戈

前端 Vue3 10月月更

使用Python的requests库爬取网页表情包

何极光

Python 10月月更 爬虫案例

启科量子 QuBranch 正式开源

启科量子开发者官方号

量子计算 编程工具 启科量子

启科量子可视化量子编程——QuComposer

启科量子开发者官方号

量子计算 可视化开发 启科量子

独家!【隐秘而伟大】这群神秘的程序员,干了票大的

博文视点Broadview

未来智安2周年 | 行则将至,未来可期

未来智安XDR SEC

个人和初创企业想要搭建网站,如何挑选一台便宜合适的云主机?

京东科技开发者

云主机 网站搭建 测评 性能评测

闻道Go语言,6月龄必知必会

有态度的马甲

从 Traefik 到 APISIX,汽车智能计算平台公司「地平线」在 Ingress Controller 的探索和实践

API7.ai 技术团队

开源 AI 网关 APISIX Ingress Controller

纵享丝滑,华为云CDN加速服务的极致体验

路过的憨憨

华为

Flowable 服务任务执行的三种方式

江南一点雨

Java spring springboot flowable JavaEE

深入浅出来谈谈webpack🔥

渔戈

前端 Vue3 10月月更

代码规范以及commit扫描代码

甜点cc

前端 代码规范 React Native 10月月更

一文带你走进C++【内存泄漏】

C++后台开发

c++ 后端开发 内存泄漏 Linux服务器开发 C++开发

华为云网站安全解决方案,站在企业安全的最前沿

科技之光

华为云焕新数字生活,打造情景化智能产业链条

爱尚科技

华为云

「云渲染」渲染农场的架构原理、特点

Finovy Cloud

架构 原理 云渲染 云渲染农场

校园大赛 | 数云融合 叩响未来——神州数码集团2022年校园大赛火热开启!

科技热闻

华为云ECS,如何赋能企业开展云上业务?

路过的憨憨

华为

完整议程 | 2022 XDR网络安全运营新理念峰会

未来智安XDR SEC

网络安全

训练大模型的九大深度学习库;谷歌转向文字→视频生成的两大利器|AI系统前沿动态

OneFlow

人工智能 深度学习

JavaScript刷LeetCode心得

js2030code

JavaScript LeetCode

LF AI & Data AICon 2022—AI工程化回顾

星策开源社区

机器学习 微软 AI工程化 人工智能’ AICon

Vue3组件开发之:父子组件之间的通信方式🔥

渔戈

前端 Vue3 10月月更

鏖战 48 小时,TiDB Hackathon 都诞生了哪些硬核创意?

PingCAP

TiDB

Go | 基本数据类型的相互转换

甜点cc

golang 学习笔记 10月月更

CDC ChangeLog Stream实时流入CLICKHOUSE最佳姿势

水滴

实时数仓 Clickhouse CDC Flink CDC Debezium

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