文章目录
一、数据存储面临的问题
在单机系统时代,当数据量不断增加、硬盘空间不够时,最简单的解决办法就是扩大磁盘容量。然而,随着数据量的增长,磁盘读写操作的速度成为了限制系统性能的瓶颈。因此,提升存储性能、提高数据的可靠性和可扩展性,成为了系统设计的重要目标。
在这个过程中,磁盘阵列(RAID)技术、分布式存储以及扩展技术逐渐成为了应对挑战的解决方案。
二、RAID磁盘阵列的解决方案
1. RAID概述
RAID(独立磁盘冗余阵列)是解决上述问题的早期探索。它由多个独立高性能磁盘驱动器构成磁盘子系统,为主机环境提供成本适中、数据可靠性高的高性能存储,能改善磁盘的存储容量、读写速度,增强磁盘的可用性。
2. RAID使用的技术
- 镜像:将数据复制到多个磁盘。这一方面提高了系统可靠性,另一方面让数据读操作可并发进行,从而提高读写性能。但写性能稍低,因为要确保数据正确写入多个磁盘较耗时。
- 数据条带:把一整块数据分片,存于多个不同磁盘空间。面对并发读写请求时,可同时操作不同磁盘上的数据,提升I/O性能。
- 数据校验:因镜像存储使同一份数据存于多个磁盘,这种冗余存储有助于数据的错误检测和修复。冗余数据通常用海明码、异或操作等算法生成,提高了RAID的可靠性和容错能力。
3. RAID的代表性等级
- RAID0:是一种无数据校验的数据条带化技术,不提供冗余策略。它将整块数据分成多份存到不同磁盘,访问时可并发执行IO操作,充分利用总线带宽。
- RAID1:完全实现镜像技术,把数据集复制一份,原数据集和副本分别存于两个磁盘,磁盘空间利用率为50%。读取数据可从任一磁盘获取,写入时响应时间受影响,但大大提高了数据可靠性。
- RAID01和RAID10:RAID01由RAID0和RAID1组合,先进行条带化再镜像,提高了读写效率和数据可靠性,但磁盘利用率低。RAID10则是先镜像再条带,从读写性能上和RAID01一样,但出现磁盘故障时,读性能优于RAID01,安全性更强。
虽然RAID通过增加磁盘数量提高了单机服务器的数据读写效率和可靠性,但单机磁盘扩容有上限,不足以应对数据爆发式增长带来的挑战。
三、分布式存储的新思路
1. 分布式存储背景与特点
分布式存储属于集群水平扩展,随着业务发展,系统数据量和访问量剧增,单机难以满足需求,分布式集群存储便应运而生。它将数据分布在多台服务器节点上,为大规模应用提供大容量、高性能、高可用、高扩展的存储服务。借鉴RAID的数据分片和副本技术,分布式存储将数据按规律存储在不同服务器节点,读写时也遵循相应规律。
2. 分布式存储的组成要素
- 数据的使用者:也就是使用数据的用户,可从分布式存储系统写入和读取数据。数据分为结构化数据(如关系型数据库)、半结构化数据(如HTML、JSON、XML等)和非结构化数据(如文档、图片、视频等)。
- 数据的索引者:在分布式系统中,它负责找到数据读写的正确路径。由于数据集分布在不同服务器上,需通过Hash算法、一致性Hash算法等找到数据。
- 数据的存储者:相当于容器,将使用者产生的数据保存起来,数据可存于磁盘或内存。结构化数据、半结构化数据、非结构化数据分别对应分布式数据库、分布式键值系统、分布式文件系统。索引者将使用者和存储者连接起来,并作为数据存储的媒介。
参考:《分布式架构原理与实践-崔皓》