写点什么

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

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

关注

评论

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

黑龙江地区等保测评中常用的安全产品

等保测评

误操作后快速恢复数据 binlog 解析为反向 SQL

GreatSQL

区块链 Web3 项目的开发方案

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

​​从数据到决策:低代码+AI如何简化并加速可视化工作流?

不在线第一只蜗牛

破局传统采购!采购文件编制审核系统为烟草行业数智化加速

中烟创新

阿里巴巴为什么禁止超过3张表join?

量贩潮汐·WholesaleTide

前端

Parrot和DJI系列无人机操作系统内核崩溃漏洞利用分析

qife122

漏洞利用 无人机安全

WebGL开发3D展览馆

北京木奇移动技术有限公司

软件外包公司 webgl开发 webgl外包

以故事+动画,让PID知识通俗易懂部分二

芯动大师

淘宝商品图片搜索API响应数据解析

tbapi

淘宝API接口 天猫API接口 淘宝图片搜索接口 淘宝拍立淘接口 天猫拍立淘接口

烟草行业专卖人员画像与队伍考评系统(信创版)上线运行

中烟创新

爆款预测模型:如何用淘宝店铺API数据识别潜力商品?

tbapi

淘宝API 天猫API 淘宝店铺所有商品API 天猫店铺所有商品API

电力行业新助力:RFID智能工具车助力电力设备盘点与维护

斯科信息

RFID解决方案 斯科信息 RFID技术

漏洞赏金猎手入门指南:从零开始赚取高额奖金的核心方法论

qife122

渗透测试 漏洞挖掘

除了企微钉钉,有什么企业 IM 性价比高一点的吗?

BeeWorks

即时通讯 IM 私有化部署

MIAOYUN | 每周AI新鲜事儿(07.11-07.18)

MIAOYUN

云计算 AI AI 大模型 AI Agent,

看板管理解析,给生产一点小小震撼!

积木链小链

数字化 智能制造 生产管理 生产看板

WebGL开发数字孪生项目

北京木奇移动技术有限公司

软件外包公司 webgl开发 webgl外包

如何打造 App 的差异化竞争优势?别再卷功能了!

Speedoooo

APP开发 小程序容器 小程序技术 app生态共建

类似腾讯会议的私有化音视频会议软件,BeeWorks Meet

BeeWorks

即时通讯 IM 私有化部署

等保测评对互联网企业的重要作用和影响

等保测评

StarRocks × MinIO:打造灵活高效的存算分离方案

StarRocks

Docker 存算分离 StarRocks minlo quickstart

[大厂实践] Netflix 键值数据抽象层实践

俞凡

架构 大厂实践

彩讯做客InfoQ直播间:AI原生思想驱动Agent平台开发

彩讯股份300634

AI口语App的开发方案

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI英语学习

半夜服务器告警不再错过!运维人员必备的语音通知方案

外滩运维专家

电话报警 电话推送 电话接口 监控电话 语音监控

大数据-47 Redis 内存控制、Key 过期与数据淘汰策略详解

武子康

Java redis 大数据 分布式 后端

客户为纲,万目皆张——中烟创新致烟草客户的一封信

中烟创新

暑热能耗管理成难题?这套智慧方案高效破局!

极客天地

【跨国数仓迁移最佳实践2】MaxCompute SQL执行引擎对复杂类型处理全面重构,保障客户从BigQuery平滑迁移

阿里云大数据AI技术

人工智能 大数据 数据处理 数据迁移

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