【分布式理论13】分布式存储:数据存储难题与解决之道

文章目录

一、数据存储面临的问题

在单机系统时代,当数据量不断增加、硬盘空间不够时,最简单的解决办法就是扩大磁盘容量。然而,随着数据量的增长,磁盘读写操作的速度成为了限制系统性能的瓶颈。因此,提升存储性能、提高数据的可靠性和可扩展性,成为了系统设计的重要目标。

在这个过程中,磁盘阵列(RAID)技术、分布式存储以及扩展技术逐渐成为了应对挑战的解决方案。

二、RAID磁盘阵列的解决方案

1. RAID概述

RAID(独立磁盘冗余阵列)是解决上述问题的早期探索。它由多个独立高性能磁盘驱动器构成磁盘子系统,为主机环境提供成本适中、数据可靠性高的高性能存储,能改善磁盘的存储容量、读写速度,增强磁盘的可用性。

2. RAID使用的技术

  1. 镜像:将数据复制到多个磁盘。这一方面提高了系统可靠性,另一方面让数据读操作可并发进行,从而提高读写性能。但写性能稍低,因为要确保数据正确写入多个磁盘较耗时。
  2. 数据条带:把一整块数据分片,存于多个不同磁盘空间。面对并发读写请求时,可同时操作不同磁盘上的数据,提升I/O性能。
  3. 数据校验:因镜像存储使同一份数据存于多个磁盘,这种冗余存储有助于数据的错误检测和修复。冗余数据通常用海明码、异或操作等算法生成,提高了RAID的可靠性和容错能力。

3. RAID的代表性等级

  1. RAID0:是一种无数据校验的数据条带化技术,不提供冗余策略。它将整块数据分成多份存到不同磁盘,访问时可并发执行IO操作,充分利用总线带宽。
  2. RAID1:完全实现镜像技术,把数据集复制一份,原数据集和副本分别存于两个磁盘,磁盘空间利用率为50%。读取数据可从任一磁盘获取,写入时响应时间受影响,但大大提高了数据可靠性。
  3. RAID01和RAID10 :RAID01由RAID0和RAID1组合,先进行条带化再镜像,提高了读写效率和数据可靠性,但磁盘利用率低。RAID10则是先镜像再条带,从读写性能上和RAID01一样,但出现磁盘故障时,读性能优于RAID01,安全性更强。

虽然RAID通过增加磁盘数量提高了单机服务器的数据读写效率和可靠性,但单机磁盘扩容有上限,不足以应对数据爆发式增长带来的挑战。

三、分布式存储的新思路

1. 分布式存储背景与特点

分布式存储属于集群水平扩展,随着业务发展,系统数据量和访问量剧增,单机难以满足需求,分布式集群存储便应运而生。它将数据分布在多台服务器节点上,为大规模应用提供大容量、高性能、高可用、高扩展的存储服务。借鉴RAID的数据分片和副本技术,分布式存储将数据按规律存储在不同服务器节点,读写时也遵循相应规律。

2. 分布式存储的组成要素

  1. 数据的使用者:也就是使用数据的用户,可从分布式存储系统写入和读取数据。数据分为结构化数据(如关系型数据库)、半结构化数据(如HTML、JSON、XML等)和非结构化数据(如文档、图片、视频等)。
  2. 数据的索引者:在分布式系统中,它负责找到数据读写的正确路径。由于数据集分布在不同服务器上,需通过Hash算法、一致性Hash算法等找到数据。
  3. 数据的存储者:相当于容器,将使用者产生的数据保存起来,数据可存于磁盘或内存。结构化数据、半结构化数据、非结构化数据分别对应分布式数据库、分布式键值系统、分布式文件系统。索引者将使用者和存储者连接起来,并作为数据存储的媒介。

参考:《分布式架构原理与实践-崔皓》

相关推荐
_waylau13 小时前
鸿蒙架构师修炼之道-面向对象的分布式架构
分布式·华为·架构·架构师·harmonyos·鸿蒙
Francek Chen14 小时前
【大数据存储与管理】NoSQL数据库:03 NoSQL与关系数据库的比较
大数据·数据库·分布式·nosql
FeBaby17 小时前
Java 高并发场景下 Redis 分布式锁(UUID+Lua)最佳实践
java·redis·分布式
richard_yuu19 小时前
工控场景落地|分布式协调与动态重配置管理,如何实现产线不停机升级?
分布式
MoFe120 小时前
【.net core】【RabbitMq】rabbitmq在.net core中的简单使用
分布式·rabbitmq·.netcore
何中应20 小时前
在windows本地部署RabbitMQ
分布式·消息队列·rabbitmq
Wild API20 小时前
按任务轻重做模型分流的实战思路
分布式·微服务·架构
低客的黑调21 小时前
RabbitMQ-从入门到生产落地
分布式·rabbitmq
宸津-代码粉碎机21 小时前
Spring Boot 4.0虚拟线程实战续更预告:高阶技巧、监控排查与分布式场景落地指南
java·大数据·spring boot·分布式·后端·python
霖霖总总1 天前
[Redis小技巧32]Redis分布式锁的至暗时刻:从原理演进到时钟跳跃的终极博弈
数据库·redis·分布式