多图预警——从 RAID 到分布‎式系统‎中的副‎本分布

来源:m-dot.com   作者:   发表时间:2020-02-24 09:36:11

在这篇文章里,我将分别介绍单机系统下的 RAID 存储技术以及分布式系统下的存储分布技术,这两种技术在思想上有很相近的地方,希望读者慢慢体会。

我很喜欢「抽象」这个概念,因为它为我们屏蔽了更底层的细节,比如操作系统中的文件系统,虚拟内存等。在我看来,RAID 就是对多个独立磁盘的抽象。

RAID 0 是数据在从内存缓冲区写入磁盘时,根据磁盘的数量,将数据分成 N 份,然后把这些数据并发写入 N 块磁盘,每块磁盘上存储不同的数据,这样整体的数据写入速度是单个磁盘的 N 倍,读取当然也是并发执行的。

RAID 0 读写速度高,但没有数据冗余, RAID 1 做了数据备份,但读写速度受到制约,所以就需要想办法结合 RAID 0 和 RAID 1,扬长避短,RAID 10 就这么出现了。

我们不难看出来,RAID 10 的磁盘利用率较低,有一半的磁盘都拿来做备份了,着实有些奢侈。

校验机制正好满足我们的要求。

PS:本文着重于分布式系统的副本与数据分布的关系,因为这部分的思想与 RAID 有相似之处,关于一致性哈希等问题将单独写一篇文章介绍。

与单机情况不同,分布式系统面临的问题要多得多,因为服务器之间的数据是通过网络传输,延时较高,甚至可能会出现网络中断,导致某些机器无法访问。这对我们的存储方案有很大影响,比如,我们还能用类似 RAID 5 的校验方式来做冗余吗?

在该方式下,若干机器互为副本,副本机器之间的数据是完全一样的,就像 RAID 1 的方案一样。这种方式的优点就是简单,但缺点也很明显:

相较于以机器为副本单位,将数据拆分成以数据段为单位作为副本的灵活性更佳,下面我就用一个更直观例子来说明该方案的优点。

编辑:

未经授权许可,不得转载或镜像
© Copyright © 1997-2019 by m-dot.com all rights reserved