常见的分布式文件系统有:FastDFS、GFS、HDFS、Lustre、Ceph、GridFS、TF等。
传统方案方式弊端:
- 如果用户数量多,IO操作比较多,对磁盘访问压力很大;
- 如果磁盘发生故障,会造成数据丢失;
- 存储容量有限;
分布式文件存储优点:
- 解决的传统方式的单点故障问题,如果某一个节点出现故障还有其他的节点可以用来读取和写入文件,可以提供数据的备份避免因避免损坏导致的文件丢失,还可以提供库容的机制,无限增加文件存放的空间上限。
一、FastDFS简介
- FastDFS是一个开源的轻量级分布式文件系统,为互联网应用量身定做,简单、灵活、高效,采用C语言开发,由阿里巴巴开发并开源。
- FastDFS对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载、文件删除)等,解决了大容量文件存储的问题,特别适合以文件为载体的在线服务,如相册网站、文档网站、图片网站、视屏网站等。
- FastDFS充分考虑了冗余备份、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
二、FastDFS整体架构
FastDFS文件系统由两大部分构成,一个是客户端,一个是服务端。
客户端通常指我们的程序,比如我们的Java程序去连接FastDFS、操作FastDFS,那我们C++、JAVA程序就是一个客户端,FastDFS提供专有API访问,目前提供了C、Java和PHP有几种编程语言的API,用来访问FastDFS文件系统。
- 服务端由两个部分构成:一个跟踪器(tracker),一个是存储节点(storage).
- 跟踪器(tracker)主要做调度工作,在内存中记录集群中存储节点storage的状态信息,是前端Client和后端存储节点storage的枢纽。因为相关信息全部在内存中,Tracker server的性能非常高,一个较大的集群(比如上百个group)中有3台就足够了。
- 存储节点(storage)用于存储文件,包括文件和文件属性(meta data)部保存到存储服务器磁盘上,完成文件管理的所有功能:文件存储、文件同步和提供文件访问等。
跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。
- 为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有文件的容量累加就是整个存储系统的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中多台存储服务器起到了冗余备份和负载均衡的作用。
1.架构图:
2.上传流程
- client询问tracker上传到的storage,不需要附加参数;
- tracker返回一台可用的storage;
- client直接和storage通讯完成文件的上传;
3.下载流程
- client询问tracker下载文件的storage,参数为文件标识(组名和文件名);
- tracker返回一台可用的storage;
- client直接和storage通讯完成文件的下载;