什么是分布式存储?
分布式存储技术是一种新型的数据处理技术,主要是将数据分布存储,同时在分布存储的数据之间构建联系,从而构建出一个虚拟的存储设备。
随着互联网技术的发展,分布式存储技术的应用越来越广泛,分布式存储技术充分的利用了网络的优势,把网络上相对比较零散的存储空间虚拟为一个整体。
分布式存储的特点
分布式存储主要有如下5大特点:
1.可靠性高
通过冗余副本和数据分布保证数据的完整性和可用性。
2.扩展性强
可以根据存储需求动态添加或删除节点。
3.性能优良
通过分布式计算和数据分布,可以提高读写性能。
4.数据冗余
通过多份副本技术防止数据丢失。
5.成本效益
比单一存储系统更具成本效益,因为可以使用较低成本的服务器组成分布式存储系统集群。
分布式存储架构技术
常见的分布式存储实现技术,有HDFS、Ceph、GFS、Switf等。
1.中间控制节点架构(HDFS)
HDFS主要用于大数据的存储场景,是 Hadoop 大数据架构中的存储组件。
HDFS 是 Hadoop 中存储数据的基石,存储着所有的数据,能够部署在大规模廉价的集群上,极大地降低了部署成本。
在该系统的整个架构中将服务器分为两种类型,一种名为namenode,这种类型的节点负责管理管理数据(元数据),另外一种名为datanode,这种类型的服务器负责实际数据的管理。
如下图所示:
1)客户端向NameNode发起请求,获取元数据信息,这些元数据信息包括命名空间、及 DataNode 的位置信息等;
2)NameNode 将元数据信息返回给客户端;
3)客户端获取到元数据信息后,到相应的 DataNode 上读/写数据;
4)相关联的 DataNode 之间会相互复制数据,以达到 DataNode 副本数的要求;
5)DataNode 会定期向 NameNode 发送心跳信息,将自身节点的状态信息报告给 NameNode;
2.完全无中心架构—计算模式(Ceph)
Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点。
在该架构中与HDFS不同的地方在于该架构中没有中心节点,客户端是通过一个设备映射关系计算出来其写入数据的位置。
Ceph核心组件
OSD:OSD是负责物理存储的进程,一块磁盘启动一个OSD进程,主要功能是存储数据、复制数据、平衡数据、恢复数据等。
PG:是Ceph中引入了PG(placement group)的概念,PG是一个虚拟的概念而已。
Pool:Pool是存储对象的逻辑分区,它规定了数据冗余的类型和对应的副本分布策略,支持两种类型:副本(replicated)和 纠删码( Erasure Code)。
三者之间的关系:
- 一个Pool里有很多PG;
- 一个PG里包含一堆对象,一个对象只能属于一个PG;
- PG有主从之分,一个PG分布在不同的OSD上(针对三副本类型);
Ceph包含以下几种存储类型:
- 块存储(rbd);
- 对象存储(RADOS Gateway);
- 文件系统(cephfs);
FastDFS是一个开源的轻量级分布式文件系统,用于存储大型文件和文件对象。
FastDFS架构,如下图所示:
包含,如下组件:
- Tracker服务器: Tracker服务器负责管理整个FastDFS集群的状态信息,包括存储节点的状态、文件的位置信息等。
- Storage服务器: Storage服务器负责实际的文件存储和读取操作,每个Storage服务器都包含了多个存储卷(Volume)。
- Client端: 客户端通过FastDFS提供的API向Tracker服务器发送文件上传、下载、删除等请求,客户端直接与存储节点通信进行文件操作。
4.GFS
GFS(Google File System)是谷歌开发的一种分布式文件系统,用于存储大规模数据。
GFS采用分布式架构,将数据存储在多个存储节点上,以提供高可靠性和可扩展性。
GFS设计用于存储大型文件,例如:谷歌的Web索引等大规模数据集。
5.完全无中心架构—一致性哈希(Swift)
Swift是OpenStack开源云计算项目的子项目之一,被称为对象存储,支持大量数据存储。
与Ceph的通过计算方式获得数据位置的方式不同,Swift是通过一致性哈希的方式获得数据位置。
分布式存储应用场景
分布式存储主要包含如下应用场景:
1.大数据处理
分布式存储可以方便地存储和处理大量数据。
2.云存储
分布式存储用于构建公有云存储服务,例如 Amazon S3 和 Microsoft Azure Blob 存储。
3.数据库
分布式数据库系统,如 Cassandra 和 MongoDB,可以用于存储高性能和高可用性的数据。
4.分布式文件系统
分布式文件系统,如 Hadoop HDFS,用于存储大量文件和数据。
5.网络存储
分布式存储用于实现网络存储,多用于提供文件和对象存储。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》