zoukankan      html  css  js  c++  java
  • GFS(Google File System,谷歌文件系统)----(1)读写一致性

    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是不保证一致性的,需要应用程序来处理。

  • 相关阅读:
    腾讯之困,QQ与微信各有各的烦恼
    Attribute(一)——提前定义特性
    假设有来生
    codeforces248(div1) B Nanami's Digital Board
    驳斥苹果“诊断后门论”,声援扎德尔斯基
    python批量下载色影无忌和蜂鸟的图片 爬虫小应用
    建筑建模学习笔记2——3DMax房屋框架建模
    【大话QT之十六】使用ctkPluginFramework插件系统构建项目实战
    javaObject类
    java基本类型和String之间的转换
  • 原文地址:https://www.cnblogs.com/zhulovegou/p/11455384.html
Copyright © 2011-2022 走看看