一、分布式存储
分布式对于很多开发者来说可能觉得是一种新生的技术,其实不然,它的出现是相当早的。之所以让不少的开发者有这种认知,主要原因就是它真正广泛的投入到应用中,没有多少年。分布式有它的优点,也有明显的缺点。可以这样说,分布式技术的出现是因为计算机技术向深度挖掘遇到了瓶颈,所以不得不向广度发展,也就是分布式技术开始广泛应用。
在分布式技术的应用中,分布式存储是一个重要的方向。所谓分布式存储不过是将可利用网络范围内的所有机器的磁盘空间抽象为统一磁盘进行管理,通过一系列的算法和业务逻辑来将数据分散的存储在各个物理存储设备中。
分布式存储的的优点非常明显:
- 安全性
数据分散的存储在各个不同的存储设备中,甚至可能不在一个机房、一个城市,这样出现数据完全不可恢复的可能性极低 - 高可用性
分布式存储可以保证数据的完整性和一致,进而保证数据管理系统的高可用性 - 高扩展
分布式的特点就是允许存储设备可以动态的增减,从而保证数据存储的弹性冗余 - 透明性
对应用者来说,和操作普通的存储设备没有区别,即对物理存储设备的地域、读写操作和访问都是透明的 - 高性能
通过多个节点的负载均衡和并行化执行,提高了性能
二、分布式文件系统
在常见的分布式存储中,分布式的文件系统是一种非常常见的应用。比如最近几年比较火的一些文件型数据库,大多都支持分布式部署。特别是随着互联网电商的高速发展,对分布式文件系统需求越来越高。其中,出现了不少的优秀的应用。
分布式文件系统的出现,以谷歌的三论文为标志(《The Google File System》《MapReduce: Simplified Data Processing on Large Clusters》《Bigtable: A Distributed Storage System for Structured Data》)。从此为满足海量数据存储的一种新技术被广泛应用,其中不得不提的就是HDFS(Hadoop的子项目)。因为谷歌没有对其实现三论文的相关技术开源,HDFS作为以其论文为基础的实现,通过开源得到了广泛的应用(当然,现在可能已经有垂垂老矣的感觉)。
分布式文件系统主要构成如下:
- 元数据服务器
开发者应该对元数据已经很了解,为了能够更好的进行分布式管理,元数据服务是必不可少的。包括各种接口、服务等的映射;文件目录及相关文件名等的管理。它是透明性的最基础的保证 - 数据服务器节点和存储节点
文件最终还是要落到实体的存储设备中,对一些中小型的分布式文件系统,数据服务和存储可以放在同一台服务器上;而对于海量的数据处理服务器,则可以实现数据存储和服务的分离来保证安全性和可用性 - 客户端
其实就是对用户的接口。总不能让用户直接去调用核心的接口吧,不说别的,安全性的保证就否定了。如果提供一个客户端,让用户直接访问客户端,隔离了不安全的访问并且降低了用户应用的复杂度,是一个一举多得的方法。
三、应用场景
其实可以这样理解,正是大数据特别是云技术的发展,才让分布式文件系统得到了长足的发展和应用,其应用的主要场景包括:
- 大数据的存储与分析
大数据分析其实就是海量数据处理,而这正是分布式文件系统的特点 - 云存储服务
本身分布式文件系统就和云服务密不可分,云技术对海量数据的吞吐是没有满足的。所以分布式文件系统恰好可以作为其基础的支撑系统 - 高性能计算
利用分布式文件系统的高吞量支持高性能的计算 - 容器和虚拟化的应用
在容器中使用分布式文件系统提供了灵活的可扩展性和可迁移的持久化存储等 - 网站内容服务
一些电商都有各自的特点,比如有大量的零散的小文件、小图像以及小视频等,需要通过分布式文件系统进行管理
四、常见的分布式文件系统
常见的分布式文件系统很多,这里就举几个:
- GFS
谷歌推出的GFS是不能不提的。不过可惜的是,它是闭源的。所以,大家只能应用,无法直接借鉴。 - HDFS
大象Hadoop中的HDFS是根据谷歌三论文写出的一个开源的分布式文件系统,估计搞大数据的开发者都门儿清。它是邮Java语言开发的,所以应用非常方便,安装简单,可用于存储极大的文件;支持批量读写,吞吐高。不过它的缺点也比较明显,不能满足毫秒级延迟的数据操作,无法支持多用户并发写相同文件,对小文件不友好;不支持跨集群同步。需要有专门的元数据服务器。 - Ceph
这个应用也比较广泛,它是一个统一的分布式存储系统,同时满足提供文件、块和对象存储接口,十分的强大和灵活。它提供了单集群的大中小文件的支持,C++实现,性能较好。缺点就一个,不太稳定。它同样不支持跨集群同步,也需要有元数据服务器。 - GlusterFS
开源的横向扩展的分布式文件系统,功能非常强大,且放弃了集中元数据服务器的思想,非常适合数据密集型的数据存储,目前被 红帽收购。它由C语言实现,主要面向大文件的存储,对小文件不太友好。它没有元数据服务器,但其实可以理解为是把其功能转移到到了其它的形式上。对文件遍历往往有些低效。它支持跨集群同步 - TFS
淘宝自己开发的支持海量的非结构化数据存储的分布式文件系统。特别针对电商存储中存在着大量的小文件的存储需求,进行了优化和扩展。应用简单方便,有着良好的读写性能。它由C++实现,有元数据服务器并且支持跨集群同步。对并发和恢复支持的非常不错;同时对集群的各种部署提供了强大的支持。缺点是对大文件存储不友好,有可能有单点性能的瓶颈。
其它其实也有少,比如Lustre、GridFS、MooseFS、FastDFS等。甚至不少的大型电商互联网公司都有自己类似的软件应用框架。这里就不再一一列出,有兴趣的可以自行在网上查找相关的资料和源码。
一般来看,如果在电商或内容平台,推荐使用Ceph、TFS等对小文件友好的系统;而如果作为通用文件存储的可以选用Ceph,Lustre,GlusterFS;如果存储大文件则可以考虑HDFS,Ceph,GlusterFS等;高性能计算推荐使用Lustre。
五、总结
本文算是对分布式文件系统的一个入门的介绍,让没有这方面经验的开发者能够对分布式文件系统有一个整体上的感触。真正具体到应用哪个分布式的文件系统,可以根据实际场景和相关分布式文件系统的特点进行综合分析,从而确定具体的选择。至于这些常见的分布式文件系统,相关书籍和网上广泛的二次开发以及应用的资料多如牛毛。开发者有针对性的学习即可。


1230

被折叠的 条评论
为什么被折叠?



