分布式存储技术是大型架构的核心,下面我就重点来详解分布式存储技术@mikechen
分布式存储
随着数据量的爆炸式增长,传统存储容量有限,难以应对PB甚至、EB级别的数据。
并且,传统集中式存储一旦发生故障,整个系统都可能瘫痪。
而采用分布式存储后,分布式存储通过横向扩展(增加节点)的方式,显著提高IOPS(每秒输入/输出操作)和吞吐量。

可以近乎无限地扩展存储容量和处理能力,轻松应对大数据、人工智能等场景的需求。
而且,数据分散存储在多个节点上,即使部分节点发生故障。
系统也能通过数据冗余、和故障转移机制保证服务的持续可用性。
分布式存储技术
常见的分布式存储实现技术,有HDFS、Ceph、GFS。。。等等。
HDFS
HDFS 是 Hadoop 生态中的核心组件,用于支持大数据场景下的海量文件存储。
整体架构,如下图所示:

NameNode (主节点)
负责管理文件系统的命名空间(目录、文件、块的元数据)。维护文件和块的映射关系、权限等信息。整个 HDFS 集群只有一个活跃的 NameNode (在 HDFS 2.0 引入了 HA 机制)。
DataNode (从节点)
负责存储实际的数据块。每个 DataNode 存储一部分数据,并定期向 NameNode 汇报其存储的块信息。
Client
代表用户应用程序,与 NameNode 和 DataNode 交互以访问数据。
使用场景
比如:大数据存储和分析,以及日志存储、批处理任务…等等场景。
Ceph
Ceph 是一个统一存储平台,提供对象存储、块存储、文件系统存储。
整体架构,如下图所示:

OSD(Object Storage Daemon):存储数据对象、复制、恢复等。
Monitor(MON):维护集群状态、认证等。
MDS(元数据服务):支持 POSIX 文件系统时启用。
提供对象存储、块存储和文件系统三种存储接口,能够扩展到数千个节点、和 EB 级别的数据。
GFS
由 Google 提出,用于支撑其内部的搜索、MapReduce 等系统的海量数据存储。
整体架构,如下图所示:

GFS Master (主服务器)
存储文件系统的元数据,包括命名空间、文件到块的映射、块的位置等。
Master 负责管理 ChunkServer 、和处理客户端的元数据请求。
通常部署多个 Master (一个主 Master 和多个备 Master) 实现高可用。
GFS ChunkServer (块服务器)
存储实际的数据块 (Chuncks),比如:每个 ChunkServer 存储多个数据块,并响应 Master 和客户端的读写请求。
分布式存储应用场景

大数据存储
比如:日志分析、用户行为分析、数据挖掘、机器学习模型训练数据存储等。
云计算存储
分布式存储是云计算基础设施的核心,支撑如阿里云OSS、AWS S3、腾讯云COS 等对象存储服务。
视频直播等
短视频、直播平台…等,需要存储和高效传输海量媒体资源,分布式存储系统用于支撑高并发、快速分发。