Java教程

006_FastDFS文件上传

本文主要是介绍006_FastDFS文件上传,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. 文件上传流程图

2. 选择tracker server: 当集群中不止一个tracker server时, 由于tracker之间是完全对等的关系, 客户端在upload文件时可以任意选择一个trakcer。

3. 选择存储的group: 当tracker接收到upload file的请求时, 会为该文件分配一个可以存储该文件的group。支持如下选择group的规则:

3.1. Round robin, 所有的group间轮询。

3.2. Specified group, 指定某一个确定的group。

3.3. Load balance, 剩余存储空间多多group优先。

4. 选择storage server: 当选定group后, tracker会在group内选择一个storage server给客户端。支持如下选择storage的规则:

4.1. Round robin, 在group内的所有storage间轮询。

4.2. First server ordered by ip, 按ip排序。

4.3. First server ordered by priority, 按优先级排序(优先级在storage上配置)。

5. 选择storage path: 当分配好storage server后, 客户端将向storage发送写文件请求, storage将会为文件分配一个数据存储目录, 支持如下规则:

5.1. Round robin,多个存储目录间轮询。

5.2. 剩余存储空间最多的优先。

6. 生成Fileid: 选定存储目录之后, storage会为文件生一个Fileid。规则:

6.1. 由storage server ip、文件创建时间、文件大小、文件crc32和一个随机数拼接而成, 然后将这个二进制串进行base64编码, 转换为可打印的字符串。

7. 选择两级目录: 每个存储目录下有两级256*256的子目录,storage会按文件fileid进行两次hash(猜测), 路由到其中一个子目录, 然后将文件以fileid为文件名存储到该子目录下。

8. 客户端upload file成功后, 会拿到一个storage生成的文件名, 接下来客户端根据这个文件名即可访问到该文件。

这篇关于006_FastDFS文件上传的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!