Erasure Coding(纠删码)
term
基础知识
冗余机制
目的:改善磁盘的访问延迟,增强磁盘的可用性和容错能力。通过RAID技术实现数据在多块磁盘上的并发读写和数据备份。
-假设N块磁盘
RAID0 数据分成N份同时写入 RAID1 同时在两份磁盘顺序写入同一数据
RAID10 数据分成N/2份 一份数据写入两块磁盘
-一块磁盘毁坏
RAID3 数据分成N-1份,第N份写校验数据,第N份容易损坏->RAID 5螺旋写入校验
-两块坏了怎么办
RAID6 数据分成N-2份,螺旋写入两份校验码
- 副本
为啥是三副本?
- CAP
CAP 理论是由UC Berkerly的Eric Brewer在2000年提出的
C-consistency 一致性 要么得到完整数据,要么失败,拒绝半成品
A-avialability 可用性 在容忍的响应时间内,总能得到返回。
P-Partition Tolerance 分区容忍性 能够保证系统是分区的。除非整个分布式系统所在的网络都挂掉,只要还有分区就能给出正确响应。
CAP的主要思想是“C,A, P三者不可得兼,舍一而取二者也”
- NWR
Amazon写了个论文,描述了一下如果取舍的具体策略,具体到副本数怎么设定,这就是NWR
N = 副本数
W = 一次成功的写操作必须完成的写副本数
R = 一次成功的读操作需要读的副本数(是的,随便读一个副本是不行的,你必须读到一定数量的副本,再相互比较取最新的数据)
策略:
W > N/2(实际上变成了一个写的锁,意味着只有写了过半数副本的才算写成功,拿不到的就返回失败,解决了竞争的问题。同时意味着不需要把所有的副本都写完,未完成的留给系统自己后台慢慢同步。那这个时候问题就来了,一个新的会话过来读数据的时候,分配到的副本有可能是没来得及更新的。这时候R1读回去的就是过时的数据B,而非最新的数据C)
W + R > N(第2个公式变形下就是R> N-W,R=2就避免正好倒霉读到没更新的那一个。这样读回去C和B两个数据,再比较后取最新的C。所以W+R> N 能够保证每个读的请求至少读到一份最新的数据)
纠删码
http://blog.csdn.net/qq_14821541/article/details/51690479