GFS副本控制协议--中心化副本控制协议

对于副本集的更新操作有一个中心节点来协调管理,将分布式的并发操作转化为单点的并发操作,从而保证副本集内各节点的一致性。在GFS中,中心节点称之为Primary,非中心节点成为Secondary。中心节点是GFS Master通过lease(租约?)选举的。

数据冗余的颗粒度

GFS中,数据的冗余是以Chunk为基本单位的,而不是文件或者机器。

上图中,o p q即为数据段,相比以机器为粒度的副本,以数据段为独立的副本机制,虽然维护的元数据更多一些,但系统伸缩性更好,故障恢复更迅速,资源利用率更均匀。

数据写入过程:

step1 Client向master请求Chunk的副本信息,以及哪个副本(Replica)是Primary

step2 maste回复client,client缓存这些信息在本地

step2 client将数据(Data)链式推送到所有副本

step4 Client通知Primary提交

step5 primary在自己成功提交后,通知所有Secondary提交

step6 Secondary向Primary回复提交结果

step7 primary回复client提交结果

优势:最大化利用每个机器的网络带宽,避免网络瓶颈和高延迟连接,最小化推送延迟GFS使用TCP流式传输数据,以最小化延迟。一旦chunkserver收到数据,即立刻开始推送,即一个replica不用收到完整的数据再发往下一个replica。

副本的一致性保证:

  这里有两个术语:consistent, defined

  consistent:对于文件区域A,如果所有客户端从任何副本上读到的数据都是相同的,那A就是一致的。

  defined:如果A是一致的,并且客户端可以看到变异(mutation)写入的完整数据,那A就是defined,即结果是可预期的。

将异常抛给程序处理。GFS提供的一致性保证称之为“relaxed consistency”,relaxed是指,系统在某些情况下是不保证一致性,比如读取到尚未完全写完的数据(数据库中的Dirty Read);比如上面提到的padding(可以使用checksum机制解决);比如上面提到的重复的append数据(读取数据的应用自行保证幂等性)。在这些异常情况下,GFS是不保证一致性的,需要应用程序来处理。

GFS(Google File System,谷歌文件系统)----(1)读写一致性的更多相关文章

  1. GFS Google File System(中文翻译)

    Google文件系统 GFS是一个可扩展的分布式文件系统,用于大型的.分布式的.对大量数据进行访问的应用.它运行于廉价的普通硬件上,但可以提供容错功能.它可以给大量的用户提供总体性能较高的服务. 1. ...

  2. 谷歌三大核心技术(一)The Google File System中文版

    谷歌三大核心技术(一)The Google File System中文版  The Google File System中文版 译者:alex 摘要 我们设计并实现了Google GFS文件系统,一个 ...

  3. 《The Google File System》论文阅读笔记——GFS设计原理

    一.设计预期 设计预期往往针对系统的应用场景,是系统在不同选择间做balance的重要依据,对于理解GFS在系统设计时为何做出现有的决策至关重要.所以我们应重点关注: 失效是常态 主要针对大文件 读操 ...

  4. 【转】谷歌三大核心技术(一)The Google File System中文版

      The Google File System中文版 译者:alex 摘要 我们设计并实现了Google GFS文件系统,一个面向大规模数据密集型应用的.可伸缩的分布式文件系统.GFS虽然运行在廉价 ...

  5. Colossus: Successor to the Google File System (GFS)

    Colossus is the successor to the Google File System (GFS) as mentioned in the recent paper on Spanne ...

  6. The Google File System论文拜读

    The Google File System Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung Google∗ 摘要 我们设计并实现了谷歌文件系统 ...

  7. Google File System 见解 (作业)

    Google File System ——见解 近年来,大街小巷都传遍的大数据,引起了社会的一阵学习大数据狂热,造成任何公司在招聘人员的时候都会注上一条,会大数据的优先考虑:但是,从另一方面来说,这狂 ...

  8. 经典论文翻译导读之《Google File System》(转)

    [译者预读] GFS这三个字母无需过多修饰,<Google File System>的论文也早有译版.但是这不妨碍我们加点批注.重温经典,并结合上篇Haystack的文章,将GFS.TFS ...

  9. The Google File System 中文版

    摘要 我们设计并实现了Google文件系统,一个面向分布式数据密集型应用的.可伸缩的分布式文件系统.虽然运行在廉价的日用硬件设备上,但是它依然了提供容错功能,为大量客户机提供了很高的总体性能. 虽然与 ...

  10. Google File System中文版

    英文原文地址: Google File system 译文原文地址: The Google File System中文版 Google File System中文版 摘要 我们设计并实现了Google ...

随机推荐

  1. 数据库学习之三--Select查询及运算符

    一.SELECT语句:用于从表中选取数据:语法如下: 1. 列查询: SELECT 列名称1,  列名称2 FROM 表名称: 2. 查询所有数据: SELECT * FROM 表名称: 3. 使用A ...

  2. 在Android中使用OpenGL ES进行开发第(三)节:绘制图形

    一.前期基础知识储备笔者计划写三篇文章来详细分析OpenGL ES基础的同时也是入门关键的三个点: ①OpenGL ES是什么?与OpenGL的关系是什么?——概念部分 ②使用OpenGLES绘制2D ...

  3. c 判断数字是否有限

    /* isfinite example */ #include <stdio.h> /* printf */ #include <math.h> /* isfinite, sq ...

  4. white-space 标签 使用

    white-space MSD定义为: 是用来设置如何处理元素中的空白 其使用场景有很多,比如:横向滑动,超出显示省略号,输出空格显示空格等 1.横向滑动 在写手机页面的过程中,我想大部分人都遇到横向 ...

  5. 【原创】FltGetFileNameInformation蓝屏分析

    FAULTING_IP: nt!SeCreateAccessStateEx+5b80564184 848788000000 test byte ptr [edi+88h],al TRAP_FRAME: ...

  6. Linux设备驱动程序 之 内存池

    内核中有些地方的内存分配是不允许失败的,为了确保这种情况下的成功分配,内核开发者建立了一种称为内存池的抽象:内存池其实就是某种形式的后备高速缓存,它试图始终保存空闲的内存,以便在紧急状态下使用: me ...

  7. 【转】netty4.1.32 pipeline的添加顺序和执行顺序

    原文:https://www.cnblogs.com/ruber/p/10186571.html 本文只想讨论一下pipeline的执行顺序问题,因为这个搞不明白就不知道先添加编码还是解码,是不是可以 ...

  8. js和微信小程序本地获取东八北京时间

    changeCount(){ // 目标时区,东8区 const targetTimezone = -8; // 当前时区与中时区时差,以min为维度 const dif = new Date().g ...

  9. multiprocessing.Pool报pickling error

    multiprocessing.Pool报pickling error 现象 multiprocessing.Pool传递一个普通方法(不在class中定义的)时, 能正常工作. from multi ...

  10. 第一个smarty例子--分页显示数据

    模板页index.tpl:   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...