专业的信息化与通信融合产品选型平台及垂直门户
注册 登陆 设为首页 加入收藏
首页 企业新闻 招标信息 行业应用 厂商专区 活动 商城 中标信息

资讯
中心

新闻中心 人物观点
厂商专区 市场分析
行业
应用
政府机构 能源产业 金融机构
教育科研 医疗卫生 交通运输
应用
分类
统一协作 呼叫客服 IP语音 视频会议 智能管理 数据库
数字监控 信息安全 IP储存 移动应用 云计算 物联网

TOP

GitHub使用Spokes进行跨数据中心复制
2017-10-24 15:05:18 来源:INFOQ 作者:【
关键词:GitHub Spokes 复制
 
来自GitHub的基础设施工程师Micheal Haggerty发表了一篇博文,解释他们是如何使用Spokes进行跨数据中心复制的。包括如何减少网络往返次数、引入三阶段提交、优化参考更新的性能以及其他各种调优。

  来自GitHub的基础设施工程师Micheal Haggerty发表了一篇博文,解释他们是如何使用Spokes进行跨数据中心复制的。包括如何减少网络往返次数、引入三阶段提交、优化参考更新的性能以及其他各种调优。

  Haggerty解释说,GitHub通过跨数据中心复制代码仓库来最大化弹性和降低延迟。一旦数据中心发生故障,需要由另一个区域的副本接替工作,为了得到最好的性能,需要为用户提供距离最近的副本。

  Spokes用于复制用户的代码仓库,确保代码仓库之间是同步的。它就像代理一样,在应用层面透明地执行复制任务。Haggerty说,以前只有距离很近的代码仓库之间才能进行复制作业,后来通过降低延迟和优化参考更新性能等方式解决了这个问题。

  之前在进行复制时延迟会不断增加,阻碍了Spokes进行参考更新的速度。虽然这对大多数用户来说并不是大问题,但有些Git工作流在这方面有很高的要求:

  大部分用户不会经常提交代码,但GitHub托管着将近7000万个代码仓库,有些用户的工作流你根本无法预测到。我们努力让GitHub能够应付所以场景,也非常关注一些极端情况。
  Haggerty也解释了GitHub内部是如何处理参考更新的。GitHub基于内部的测试来决定是否合并或rebase一个PR。如果某个分支有多个PR,每个PR都需要通过测试。

  减少网络往返次数可以有效降低延迟。GitHub使用三阶段提交协议来更新副本,同时使用分布式锁来保证更新次序。不过这样需要四个网络往返,成本有点高。他们也在努力确保在等待网络调用结束之前先完成其他的任务。

  GitHub的工程师也参与了Git项目,包括处理参考更新的事务机制,该机制基于副本是否有能力执行参考更新来决定是提交还是回滚事务。还有其他一些与参考更新操作相关的改进。

  Spokes使用自定义的校验和来比较副本,如果校验和相同,说明它们包含相同的内容。校验和是通过增量的方式算出来的,并不是每次都从头开始算。

  内务(book keep)操作被合并到少量的事务当中,因为有些单次提交操作会造成数百次内务更新,需要耗费三分之一秒的时间。

      

责任编辑:admin
免责声明:以上内容转载互联网平台或企业单位自行提供,对内容的真实性、准确性和合法性不负责,Voipchina网对此不承担任何法律责任。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部

上一篇Digital Realty和三菱公司合资成..
下一篇Vocus集团出售其数据中心业务偿还..

热门文章

图片主题

最新文章

相关文章

广告位

Copyright@2003-2009 网络通信中国(原VoIP中国) 版权所有
联系方式:503927495@qq.com
  京ICP备05067673号-1 京公网安1101111101259