美文网首页
分布式文件系统 从设计到实现 - Replication(一)

分布式文件系统 从设计到实现 - Replication(一)

作者: 何文鑫 | 来源:发表于2019-05-15 11:05 被阅读0次

    << Previous 分布式文件系统 从设计到实现 - 开篇
    Next >> 分布式文件系统 从设计到实现 - Replication(二)

    Partition与Replication是分布式系统设计中解决问题的主要方法。

    Replication系列文章会聚焦:

    • 系统为何复制,几种基本的复制方式
    • gfs、hdfs在复制上的设计及异同比较
    • hdfs复制流程的代码实现细节

    为何复制

    分布式系统使用复制(replicate)将数据传输到多个节点,以便:

    • 某个副本(replica)所在节点失效(failure)时,其他节点的副本可以继续提供服务
    • 分散服务访问、计算压力,提升带宽、性能

    复制方法的分类

    复制可以分为:

    • 同步复制(synchronous replication)
    • 异步复制(Asynchronous replication)

    同步复制

    同步复制中,Client向S1写入数据,S1负责将数据复制到S2、S3。只有当S1收到S2、S3的成功回复后,S1才会给Client回复成功消息。

    异步复制

    异步复制中, S1写入成功后立刻告知Client,然后才会将数据复制到S2、S3。

    同步复制 vs. 异步复制

    从数据可靠性(Reliability)一致性(Consistency)的角度看:

    同步复制,一旦Client写入成功,即可以确保系统存在多个数据副本,数据不易丢失[可靠性✔]。此时,无论Client访问S1还是S2、S3都可以读到相同的数据[一致性✔]。

    异步复制,当Client得到写入成功消息时并不能确保系统中存在多个数据副本。也就是,如果此时Client立即访问S2或者S3,会存在无法读到刚刚写入数据的可能性[一致性✘]。另外,如果S1在数据复制到其他节点前失效,可能导致数据丢失[可靠性✘]。

    从网络通信、写入延时角度看:

    同步复制一次写入需要完成3个节点的通信(假设数据副本数为3)才能返回,网络延时叠加,写入速度慢。

    而异步复制,因为Client没有等待复制的过程,写入速度快。

    总体来看,
    同步复制简单、直接,所有副本完成后,写入成功,同时带来写入速度较慢的副作用。
    异步复制很暴力,一个副本完成后,即算写入成功,不理会副本在后台是否复制。所以在Client看来写入迅速,不会受到节点间网络延时的影响。但之后节点间副本复制过程会比较复杂,且存在单点失效数据丢失的风险。

    介于两者之间

    从论文上看[1],某些系统并不追求强一致性(strong consistency),而更看重可用性、性能等因素。它们采用了介于同步复制与异步复制之间的复制方法,实现弱一致性(weak consistency),比如Amazon Dynamo。

    与上面两种复制方法一致,Dynamo的典型副本数N也为3。

    不同之处在于,用户可根据业务需要自行选择写入/读取的副本数:R=读取副本数,W=写入副本数,且R+W>N。

    即,用户可以选择N中的W个节点进行数据写入,W写入成功即返回。同时,读取时从N中指定R个节点读取副本,返回较新副本。

    写入节点越多,写入速度下降,但数据可靠性上升。读取节点越多,读到最新数据的概率越大。

    其中,要求R+W>N,保证读写节点中必有一个重叠节点。

    比如,
    R = 1 , W = N : 读快, 写慢(退化为同步复制)
    R = N , W = 1 : 写快, 读慢
    R = N/2 and W = N/2 + 1 : 读写均衡

    类Dynamo系统的默认N-R-W:
    Basho's Riak (N = 3, R = 2, W = 2 default)
    Linkedin's Voldemort (N = 2 or 3, R = 1, W = 1 default)
    Apache's Cassandra (N = 3, R = 1, W = 1 default)

    下集预告:

    本篇介绍了几种常见的复制方式,下篇开始结合具体的gfs、hdfs实例,看看真实系统中,复制如何进行。


    [1]Distributed Systems for Fun and Profit

    Next >> 分布式文件系统 从设计到实现 - Replication(二)
    << Previous 分布式文件系统 从设计到实现 - 开篇

    相关文章

      网友评论

          本文标题:分布式文件系统 从设计到实现 - Replication(一)

          本文链接:https://www.haomeiwen.com/subject/doujaqtx.html