存储系统的关注点
关于存储系统,一般我们关注下面几个方面:
数据分布与负载均衡
数据存储的可靠性与一致性
数据访问性能
系统容错能力
系统扩展能力
在单机存储系统中有一种独立磁盘冗余阵列(RAID,redundant array of independent disks)技术,
是把相同的数据存储在多个硬盘不同地方的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。
这个技术基本解决了我们上面提到的前三点,数据可以通过磁盘阵列控制程序均匀分布在多个硬盘上,
以实现负载均衡,并通过冗余来保障可靠性。类似单机挂载多磁盘,数据在磁盘阵列上的冗余副本要保持一致也容易。
存储系统的访问性能基本受制于磁盘的性能,通过分散到多磁盘确实达到了提升性能的效果。
真正的问题难点在于后两点:
磁盘阵列解决了单一磁盘的脆弱性,但并不能提升存储子系统整体的可用性,或者说容错能力。
同理扩展能力同样受制于磁盘阵列的物理扩展槽的限制。
分布式存储的定义与分类
所以分布式存储应运而生,作为存储系统它同样需要面对上述问题。
先来看下它的定义:
分布式存储系统是大量普通PC服务器通过网络互联,对外作为一个整体提供存储服务。
从上面的定义看,更多时候我们把分布式存储作为一种服务面向各种不同的数据存储需求。
从数据存储模型上,我们可以进一步分类分布式存储服务为:
文件模型:对应分布式文件系统,如:GFS、HDFS
关系模型:对应分布式数据库系统,如:Google Spanner、Taobao OceanBase
键值模型:很多NoSQL系统采用,如:Redis
分布式存储的得与失
面对单机存储系统面对两个难点,分布式存储系统通过集群方式扩展到几百甚至几千台集群规模来解决系统扩展能力,
通过软件层面对单机服务器的硬件容错能力大大提升了整体集群的容错能力。
在获得这些好处时,自然也有所牺牲,所谓有得必有失。
说到存储不得不提单机数据库存储的事务特性:A(原子性)C(一致性)I(隔离性)D(持久性),
而扩展到分布式存储后,受限于分布式C(一致性)A(可用性)P(分区容忍性)理论,几乎不可能满足完整得事务特性。
各种分布式存储服务实现都对单机存储的事务特性作了权衡取舍,满足特定的服务场景需求。
另外分布式存储系统是基于网络互联的,所以除了基本得磁盘访问性能开销,还多了网络性能开销。
通常一般机械硬盘得平均寻道时间为10ms,而机房内网得网络访问开销一般小于0.5 ms,相对性能损失较小。
而原本由磁阵控制程序负责得数据在磁盘中的分布、负载均衡策略和一致性保障,
在分布式存储中都需要软件在整个机器集群层面去考虑,复杂度大大提高。
来源:CSDN
原文:https://blog.csdn.net/mindfloating/article/details/47811665
