产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

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

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

关注

评论

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

Android的Io模型你了解多少,享学androidVIP课程百度云种子

android 程序员 移动开发

Android自学教程!android底层开发百度网盘

android 程序员 移动开发

Android模块化面向接口编程,快来收藏

android 程序员 移动开发

Android程序员必经的实践之路:享学课堂

android 程序员 移动开发

Android程序员最新职业规划,熬了整整30天

android 程序员 移动开发

android组件化实现,动脑Android

android 程序员 移动开发

android组件化开发框架,kotlin入门教程百度网盘

android 程序员 移动开发

Android知识总结,动脑学院官网

android 程序员 移动开发

Android最牛教材!享学课堂Android架构师二期

android 程序员 移动开发

CICD sonarqube卡点实现思路

消失的子弹

Kubernetes DevOps CI/CD drone

android组件化和插件化,android开发入门与实战网盘

android 程序员 移动开发

卷王如何刷力扣

bigsai

数据结构 算法 刷题

设计模式--策略模式与工厂模式

en

设计模式 工厂模式 策略模式

Android系列学习进阶视频,kotlin入门教程百度网盘

android 程序员 移动开发

Android系列学习进阶视频,扔物线课程怎么样

android 程序员 移动开发

Android热修复原理,跳槽字节跳动

android 程序员 移动开发

android热更新图片,动脑学院视频百度云

android 程序员 移动开发

Android的Io模型你了解多少?android开发教程百度网盘

android 程序员 移动开发

Android知识体系大纲!动脑学院官网

android 程序员 移动开发

Android程序员必经的实践之路:享学课堂androidVIP网盘资源

android 程序员 移动开发

android组件化通信,享学课堂

android 程序员 移动开发

Android框架,动脑学院android视频

android 程序员 移动开发

Android社招面试题,真香

android 程序员 移动开发

Android程序员架构之路该如何继续学习,华为架构师深入讲解Android开发

android 程序员 移动开发

Android组件化入门,想搞定大厂面试官

android 程序员 移动开发

Android热修复原理,金九银十旗开得胜

android 程序员 移动开发

Android经典面试:动脑学院

android 程序员 移动开发

2021 腾讯数字生态大会重磅来袭

CODING DevOps

云原生 腾讯数字生态大会 降本增效

Android程序员架构之路该如何继续学习,纯干货

android 程序员 移动开发

Android经典面试题详解:kotlin入门教程百度网盘

android 程序员 移动开发

android组件化实现,享学androidVIP课种子

android 程序员 移动开发

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