常见的分布式文件系统有: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)部保存到存储服务器磁盘上,完成文件管理的所有功能:文件存储、文件同步和提供文件访问等。