在讲解fastdfs的上传、下载和删除流程之前,我们先介绍fastdfs中的工程流程:首先客户端client 调用fastdfs的api,获取可用的tracker server ,
再调用tracker server 获取可用的组,tracker server 通过负载均衡返回一个最优的storage server,这样客户端与client就建立了连接,client就可
以调用storage server对文件进行上传、删除和追加的操作。
下面我们将结合时序图的方式给大家详细讲解fastdfs的上传、下载和删除各个角色的交互流程:
文件上传交互流程
从上图中我们可以看出整个交互过程分为3步:
- client询问tracker上传到的storage,不需要附加参数;
- tracker返回一台可用的storage;
- client直接和storage通讯完成文件上传。
上传成功后,storage将会返回一个字符串数组,其中results[0]:卷名即组,results[1]:文件名(包含在文件系统的目录结构)。
在FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。
组group如group1,文件名由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)
拼接而成。如:/group2/M00/00/01/goQeAFUjqu2AdlUPABHKPTiTXBY295.jpg
具体的访问地址需自己在代码中拼上域名和端口号如:http://xxx.xxx.com:8002/group2/M00/00/01/goQeAFUjqu2AdlUPA
BHKPTiTXBY295.jpg
需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。
文件上传类型有3种:
- upload:上传普通文件,包括主文件 ;
- upload_appender:上传appender文件,后续可以对其进行append操作【又用作断点续传】 ;
- upload_slave:上传从文件;
下载文件交互过程
下载文件交互过程
从上图中我们可以看出整个交互过程分为3步:
- client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
- tracker返回一台可用的storage;
- client直接和storage通讯完成文件下载;
文件删除交互过程
文件删除交互过程
从上图中我们可以看出整个交互过程分为3步:
- client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
- tracker返回一台可用的storage;
- client直接和storage通讯完成文件删除;
删除成功后,返回int类型的结果值0:文件删除成功,2:文件不存在 ,其它:文件删除出错;
注:本文部分图和文字参考网络相关资料