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

ops/2025/2/21 4:15:56/

文章目录

    • 一、数据存储面临的问题
    • 二、RAID磁盘阵列的解决方案
      • 1. RAID概述
      • 2. RAID使用的技术
      • 3. RAID的代表性等级
    • 三、分布式存储的新思路

一、数据存储面临的问题

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

在这个过程中,磁盘阵列(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. 数据的存储者:相当于容器,将使用者产生的数据保存起来,数据可存于磁盘或内存。结构化数据、半结构化数据、非结构化数据分别对应分布式数据库、分布式键值系统、分布式文件系统。索引者将使用者和存储者连接起来,并作为数据存储的媒介。

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


http://www.ppmy.cn/ops/159658.html

相关文章

精准医疗的“柔性”助力:FPC在医疗机器人中的应用实例【新立电子】

医疗机器人作为现代医疗技术的重要发展方向,正在为精准医疗、微创手术等领域带来革命性的变化。而柔性线路板作为一种新型电子互连技术,为医疗机器人的创新发展提供强有力的技术支撑,展现出广阔的应用前景。 在医疗机器人领域,为…

前端如何播放二进制音频数据

音频数据 播放数据 const tryListen async (row) > {awakenPlay(row.sid).then((res) > { // 请求接口,拿到二进制音频数据const binaryData atob(res.data);// 将二进制数据转换为 Uint8Arrayconst byteArray new Uint8Array(binaryData.length);for …

线程的多种创建方式和使用

一、线程的多种创建方式 在 Java 中,创建线程有多种方式,每种方式都有其特定的应用场景。以下是 Java 中常用的几种创建线程的方式,以及它们的具体实现: 1、通过继承 Thread 类创建线程 Java 中的 Thread 类提供了一个可执行的…

JavaScript与AJAX:让网页动起来的魔法与秘密

前言:当网页开始学会"呼吸" 还记得20年前的互联网吗?每次点击链接都要经历漫长的白屏等待,网页像笨拙的机器人一样机械地刷新。直到有一天,JavaScript遇见AJAX,网页突然被注入了灵魂。就像给木偶系上了提线,原本死板的页面开始学会呼吸,能悄悄和服务器说悄悄…

OlympicArena 论文简介

近年来,大型语言模型(LLMs)和大型多模态模型(LMMs)的飞速发展,让AI逐渐展现出接近人类水平的认知推理能力。然而,如何科学评估AI在复杂问题解决中的真实水平,一直是学术界和产业界的…

【Java进阶篇】——第11篇:Java 8 新特性及使用

第11篇:Java 8 新特性及使用 Java 8 是一次里程碑式的更新,引入了多项革新特性,极大地提升了开发效率和代码表现力。本文将从 Lambda表达式、Stream API、时间日期API、Optional类 等核心特性出发,结合实战场景和最佳实践&#x…

多目标蜻蜓算法-MODA-可用于(云计算资源分配/交通信号控制/网络路由优化)

多目标蜻蜓算法(Multi-Objective Dragonfly Algorithm,MODA)是一种基于群体智能的优化算法,主要用于解决多目标优化问题。以下是对其的详细介绍: 具体完整算法请跳转:多目标蜻蜓算法-MODA-可用于&#xff0…

【系列教程】Python第四课:条件判断 | 让程序学会思考的秘密

🎯 本节目标 掌握if-elif-else逻辑结构理解比较运算符的用法学会用布尔值控制程序流程完成智能登录验证系统开发 1️⃣ if语句基础(程序决策树) 🚀 基础语法 # 简单判断示例 age int(input("请输入你的年龄:"))if …