什么是分布式存储?
分布式存储是一种数据存储系统,它将数据存储在多个节点上,这些节点可以分布在不同的地理位置或网络中。
分布式存储系统通常采用复制、分片、分布式文件系统、或对象存储等技术,来实现数据的存储和管理。
分布式存储的特点
在分布式存储存储中,数据通常被分成多个部分,并且每个部分被存储在不同的节点上,这些节点之间可能通过网络连接。
分布式存储,主要有如下4大特点:
1.可靠性高
通过数据的冗余备份、和故障转移机制,分布式存储系统能够保证数据的高可靠性、和持续可用性。
2.扩展性强
分布式存储系统,可以通过增加节点、或存储设备的方式进行水平扩展,以满足不断增长的数据存储需求。
3.性能优良
通过分布式存储,有一个很大特点,就是数据的:读和写,性能都需要很高。
4.数据冗余
通过多份副本技术防止数据丢失,可以在节点故障时自动进行数据修复和重新分配。
分布式存储架构技术
常见的分布式存储实现技术,有:HDFS、Ceph、GFS、Switf等。
1.HDFS
HDFS,全称是Hadoop Distributed File System,即Hadoop分布式文件系统。
HDFS是Apache Hadoop生态系统中的一部分,它是一个分布式文件系统,旨在处理大规模数据的存储和处理。
HDFS将数据分成多个块,并在集群中的多个节点上复制存储,当某个节点发生故障时,系统会自动将块复制到其他节点上,保证数据的可靠性和可用性。
HDFS的架构,包括:两个主要组件:NameNode和DataNode。
如下图所示:
1.NameNode
NameNode是HDFS的主节点,负责:管理文件系统的命名空间、和数据块的映射关系。
以及,维护文件系统的元数据(如:文件名、文件大小、文件权限等),并处理客户端的文件操作请求。
2.DataNode
DataNode是HDFS的工作节点,负责存储数据块和执行数据的读写操作。
每个DataNode都存储一部分数据块,并定期向NameNode报告数据块的存储状态。
整个流程,如下:
- 客户端向NameNode发送文件写入请求。
- NameNode接收到请求后,确定数据块的存储位置,并将这些信息返回给客户端。
- 客户端根据返回的信息,将文件分割成数据块,并直接将数据块发送到对应的DataNode。
- 每个DataNode接收到数据块后,将其写入本地文件系统中,并向NameNode发送写入成功的确认信息。
- NameNode接收到足够数量的写入确认后,将文件的元数据(如:文件名、文件路径、数据块的存储位置等)持久化到磁盘中。
2.Ceph
Ceph是一个开源的分布式存储系统,采用了分布式对象存储、块存储和文件系统的方式,可以在大规模集群中存储和管理数据。
Ceph核心组件,如下图所示:
Ceph的核心组件包括:
- Ceph OSD(Object Storage Daemon): 负责存储数据的实际节点,每个OSD节点负责管理一部分数据,并处理数据的读写请求。
- Ceph Monitor: 监控整个集群的状态和健康状况,负责维护集群的元数据信息。
- Ceph Manager: 管理和监控Ceph集群的状态、性能指标等信息,并提供管理界面和RESTful API。
- RADOS(Reliable Autonomic Distributed Object Store): RADOS是Ceph的底层存储系统,提供了对象存储和块存储的功能。
- Ceph OSD Map: 记录了集群中每个OSD的状态和健康情况,以及数据的分布情况等信息。
Ceph采用分布式架构,数据存储在整个集群的多个节点上,提供高可靠性和可扩展性。
3.FastDFS
FastDFS是一个开源的轻量级分布式文件系统,用于存储大型文件和文件对象。
FastDFS架构,如下图所示:
包含,如下组件:
- Tracker服务器: Tracker服务器负责管理整个FastDFS集群的状态信息,包括存储节点的状态、文件的位置信息等。
- Storage服务器: Storage服务器负责实际的文件存储和读取操作,每个Storage服务器都包含了多个存储卷(Volume)。
- Client端: 客户端通过FastDFS提供的API向Tracker服务器发送文件上传、下载、删除等请求,客户端直接与存储节点通信进行文件操作。
4.GFS
GFS(Google File System)是谷歌开发的一种分布式文件系统,用于存储大规模数据。
GFS架构,如下图所示:
包含,如下组件:
- Master节点: GFS集群中有一个称为Master的中心节点,负责管理整个文件系统的元数据信息,包括:文件名、文件路径、数据块的存储位置等。
- Chunk服务器: GFS集群中的存储节点称为Chunk服务器,负责存储实际的数据块,每个数据块(Chunk)通常具有固定的大小,例如:64MB。
- Client端: 客户端通过GFS提供的API向Master发送文件读写请求,并与Chunk服务器直接通信进行数据读写操作。
分布式存储应用场景
分布式存储主要包含如下应用场景:
- 大数据存储与处理: 分布式存储系统,能够满足大数据存储和处理的需求,比如:日志存储、数据分析等。
- 云计算平台: 云服务提供商,利用分布式存储技术,提供云存储服务,满足用户对存储资源的需求。
- 分布式应用程序: 分布式存储系统,为分布式应用程序提供数据存储和共享服务,如:分布式文件共享等。
- 物联网应用: 物联网设备产生的海量数据需要进行存储和分析,分布式存储系统可以满足物联网应用的数据存储需求。
作者简介
陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!
后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》