目录
一、FastDFS简介
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
二、FastDFS体系架构
1.FastDFS架构介绍
FastDFS 由跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)构成。即客户端请求 Tracker server 进行文件上传、下载,通过Tracker server 调度最终由 Storage server 完成文件上传和下载。
- Tracker server :负责任务调度,负载均衡管理以及Storage的注册中心功能,通过 Tracker server 在文件上传时可以根据一些策略找到Storage server 提供文件上传服务。
- Storage server :负责文件上传和下载以及文件的删除等管理功能。客户端上传的文件最终存储在 Storage 服务器上,Storage server 没有实现自己的文件系统而是利用操作系统的文件系统来管理文件。
- Storage是一个集群,集群里面分为很多个Group,每个Group里面有不止一台Storage。同样的,Tracker也是集群。
a. 可以做到负载均衡,因为并不是只有一台Storage为客户端提供服务,而是由Tracker动态地分配相对空闲的Storage给客户端提供服务,使得不会有个别Storage压力过大。
b. 每个Group里面不止一个Storage,一个Group里面的所有Storage都是同步备份数据的,这是为了实现容灾,即使一台Storage宕机数据也不会丢失,除非全部宕机。
c. 实现线性扩容,如果Storage的空间不够用了,就可以直接添加一组Storage,然后注册到Tracker中。
2.文件上传流程
- Storage会定时向Tracker上报自己的状态信息;
- 当Client给Tracker发送请求的时候,Tracker会查询是否有可用的Storage;
- 有的话就将Storage的信息给Client,Client在得到Storage的信息后,就将文件上传到Storage;
- Storage先是生成一个file_id,再将文件写入磁盘中保存,最后将file_id返回给Client。
3.使用FastDFS的优缺点
优点:
- FastDFS相比其它的分布式文件系统它适用小文件存储,它不对文件进行分块存储,也不用对文件进行合并处理,所以性能比GFS、HDFS等通用文件系统的性能要高。
- 管理端(Tracker)有高可用、负载均衡功能,可以承载高并发。
- 存储端(Storage)冗余备份,高可用、无限扩容。
缺点:
- 不支持文件分片,FastDFS不适合大文件存储。
- 同步机制不支持文件正确性校验,降低了系统的可用性。