副本放置策略Copysets论文解读及工程实践


概述

分布式存储追求在系统成本允许的范围内(一般存储集群都是三副本,还想方设法的使用条带化、压缩等方式降低成本),降低数据丢失的概率,降低故障恢复的时间。好的副本放置策略可以优化整个集群的可用性和一致性。

斯坦福大学曾经出过一篇论文,Copysets: Reducing the Frequency of Data Loss in Cloud Storage,讲解了随机放置副本的问题,提出了copyset副本放置策略。这对很多分布式系统都有借鉴意义。

CopySet论文解读

本文出现以前,工业界的分布(包括HDFS、GFS、Azure Storage)经常使用随机副本放置(rack不同),但这种方式丢数据的概率也较大。作者提出使用CopySet放置副本,在5000个节点的RAMCloud集群中,将1%节点故障情况下集群丢数据的概率从之前的99.99%降低到0.15%。

术语定义

  • R:数据的副本数量
  • N:存储节点的数量
  • S:Scatter width,如果急群中某个存储节点故障,S个其他存储节点能参与到集群的修复中。显然,这个值越大,故障恢复时间就越短。(Ceph集群中S==N
  • copyset:存储某个数据(GFS中的chunk)的所有存储节点
  • permutation:存储节点的某种排列方式,例如,N=7可以分解为形如{4, 1, 3, 6, 2, 7 ,5}的premutation

Random Replication

系统对于每一份数据(存储数据的最小单位,例如GFS中的chunk,WAS中的extent),随机选出R个不同的存储节点复制数据。当然,这其中选择也是有一定技巧的,这些副本不能在同一个故障域(failure domain,如,不同的机架rack、交换机)中。

这种副本架构的工程实践中,丢数据的概率还是挺大的,根据作者的计算,在上千存储节点的分布式系统中吗,当1%的存储节点同时发生故障,三副本的RamCloud有99.99%的概率丢数据,FaceBook HDFS有22.8%的概率丢数据。

Copyset Replication

Copyset Replication分为两个阶段,Premutation和Replication,相比之前的随机策略,这种方式可以在缩短故障恢复时间的基础上降低丢数据的概率(副本分布较均匀)。

Premutation

系统根据R、N,划分出不同的copyset。每轮划分出N/R个copyset。每次确保其中的copyset不与当前和之前所有轮次中已经产生的copyset相同,同时需要考虑failure domain的限制。由于每个存储节点都会分布在每轮的copyset中,因此每轮premutation都可以增大集群的Scatter Width

Premutation

Replication

集群根据Premutation选出的replica,寻找合适的copyset放置数据。某一个node可以选择多个relica

Replication

工程实践

根据上述的描述,一个简单的生成副本位置的算法如下:

  1. 根据系统的R、N,排列组合生成所有的copyset,共有 C N R C_N^R CNR个copyset
  2. 根据系统failure domain,排除不符合规则的copyset。
  3. 系统使用可用的copyset,构成存储系统的副本架构。

假设在实际工程中故障域只有rack限制,那么算法可以简化为:

假设有三个rack:A、B、C,每个rack有四个存储节点A:{1, 2, 3, 4}, B:{5, 6, 7, 8}, C:{9, 10, 11, 12},集群R=3

  1. 以每个rack的存储节点交错的形式,组成Premutation:{1, 5, 9, 2, 6, 10, 3, 7, 11, 4, 8, 12}
  2. 以R为滑动窗口,顺序遍历整个Premutation,生成copyset:{1, 5, 9}, {5, 9, 2}, {9, 2, 6}...
  3. 这种方式生成的copyset可以满足故障域要求,并且副本分布均匀。

参考链接

  1. Copysets: Reducing the Frequency of Data Loss in Cloud Storage论文
  2. Data Availability and Durability with the Hadoop Distributed File System
  3. 副本放置&Copyset Replication
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值