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

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

\\

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

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

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

\\

adbd4494958b58f1a22cc8faff07189f.png

\\

对于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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用静态NAT实现外网PC访问内网服务器

在我们的生产环境中常常处于安全考虑将服务器置于内网环境中,但同时得向外网提供各种服务功能,此时就需要用到NAT技术。下面是我用思科的仿真软件搭建的一个实验环境,实现外网PC访问内网服务器。先说明一下实验环境:路由器R0左边为…

[转]分布式事务之TCC服务设计和实现注意事项

1、TCC简介 TCC是一种比较成熟的分布式事务解决方案,可用于解决跨库操作的数据一致性问题; TCC是服务化的两阶段编程模型,其Try、Confirm、Cancel 3个方法均由业务编码实现; 其中Try操作作为一阶段,负责资源的检查和…

量化投资策略的评估标准及其计算公式

收益率指标:分为策略的总收益率和策略的年化收益率 策略的总收益率: 策略的总收益率是评价一个策略盈利能力的最基本的指标,其计算方法为: 公式中Vt表示策略最终的股票和现金的总价值,V0表示策略最初的股票和现金的总…

.net post xml 数据

var request WebRequest.Create(url);//url 是post 接口的URL request.Method "post";// 请求方法 request.ContentType "text/xml"; //请求类型 request.Headers.Add("charset:utf-8"); //设置文档类型的编码格式 var encoding Encoding.Ge…

【ArcGIS微课1000例】0005:空间连接(Spatial Join)

问题描述 现在要根据范围,怎样批量统计各个范围内的湖泊的总面积、各个省份内的铁路或河流总长度、各个地区的人口综合等。 空间连接 根据空间关系将一个要素类的属性连接到另一个要素类的属性。目标要素和来自连接要素的被连接属性写入到输出要素类。 用法 空间连接是指根…

【微服务专题之】.Net6中集成消息队列-RabbitMQ中直接路由模式

微信公众号:趣编程ACE关注可了解更多的.NET日常实战开发技巧,如需源码 请公众号后台留言 源码;[如果觉得本公众号对您有帮助,欢迎关注]前文回顾【微服务专题之】.Net6下集成消息队列上-RabbitMQ【微服务专题之】.Net6下集成消息队列2-RabbitM…

C语言试题162之圆周率π

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:圆周率π…

第14、15教学周作业

要求一 还差一些没做完。 要求二 USTH_C程序设计&#xff08;基础&#xff09;14周第一次PTA作业 7-3 将数组中的数逆序存放 1.实验代码 #include<stdio.h>int main() {int i,n,t;scanf("%d",&n);int a[n];for(i0;i<n;i){scanf("%d",&t)…

篇三:访问JSON静态文件

背景&#xff1a;在定位的时候带出车牌号的前两位&#xff0c;这里就有一个地址和车牌号前两位的映射关系&#xff0c;这个映射关系起初是通过Ajax在页面加载的时候请求去数据库里面查出来赋给一个变量&#xff0c;然后去操作&#xff0c;但是这个过程通常需要4~7秒&#xff0c…

代理(Proxy)

2019独角兽企业重金招聘Python工程师标准>>> 一、代理的概念 动态代理技术是整个java技术中最重要的一个技术&#xff0c;它是学习java框架的基础&#xff0c;不会动态代理技术&#xff0c;那么在学习Spring这些框架时是学不明白的。 动态代理技术就是用来产生一个对…

【ArcGIS微课1000例】0006:创建随机点(Create Random Points)

问题描述 在一个给定的范围内,根据随机位置,生成指定数量的随机点。生成的随机点通常用来提取每个点对应的NDVI,高程,气温等值。 ArcGIS创建随机点 创建指定数量的随机点要素。可以在范围窗口中、面要素内、点要素上或线要素沿线生成随机点。 工具介绍:

C语言试题163之计算某一天是对应年的第几天,这一年一共多少天;计算两个日期之间相隔的天数。两个日期由键盘输入。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:计算某一…

[转]《吐血整理》系列-顶级程序员工具集

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式&#xff0c;欢迎Star和指教 前言 这期是被人才群交流里&#xff0c;还有很多之前网友评论强行顶出来的一期&#x…

跟我做⼀个高德地图的 iOS / Android MAUI 控件(前言)

Microsoft Build 2022 ⼤会上正式发布了 .NET MAUI , 对于 .NET 开发者可以⽤ C# 完成跨平台的前端应⽤开发。对⽐起 MAUI 的前身 Xamarin , MAUI 除了可以⽤传统的原⽣开发模式外&#xff0c;还⽀持了 Blazor 的混合式开发。这也让更多⽅向的开发⼈员能进⼊到跨平台的应⽤开发…

Valid Number

Valid Number 题解 题目描述 即判断某个字符串是否合法的数字表达式。如&#xff1a; 2e10&#xff0c;合法。 75.0.&#xff0c;非法。 0e&#xff0c;非法。 0.1 &#xff0c;合法。题解 基于规则与状态判断。可利用二维数组模拟状态转移图&#xff0c;又或是利用变量记录状…

java.util.ListIterator

列表迭代器并不持有当前元素的引用&#xff0c;其持有的游标是位于列表连个元素之间。可以通过调用next()或者previous()返回列表中的元素。一个拥有n个元素的列表拥有n1个游标位置&#xff0c;示意图如下&#xff1a; 注意&#xff1a;remove和 set(Object)方法并不是以迭代器…

保姆级C语言版高斯坐标正算反算倾情奉献!

文章目录 正反算原理速递C语言正反算实现坐标正算坐标反算扩展阅读: 【小程序】坐标正算神器V1.0(附C/C#/VB源程序) 测量人看过来:多种语言编写的测量坐标反算神器附源码(C#/VB) 正反算原理速递 已知边长和方位角,由已知点计算待定点的坐标,称为坐标正算。已知两点坐标…

C语言试题164之求定积分

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:利用梯形…

我的jekyll配置和修改

主要记录使用jekyll搭建博客时的一些配置和修改。 注意&#xff1a; >使用时请删除{和%以及{和{之间的空格。 预览文章 source ~/.bash_profile jekyll server添加about me 边栏 参考the5fire的技术博客在index.html页面加入如下代码&#xff1a; <section> <h4>…

[转]白话阿里巴巴Java开发手册高级篇

不久前&#xff0c;阿里巴巴发布了《阿里巴巴Java开发手册》&#xff0c;总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范&#xff0c;这些流程规范在一定程度上能够保证最终的项目交付质量&#xff0c;通过在时间中总结模式&#xff0c;并推广给广大开发…