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生成的文件名, 接下来客户端根据这个文件名即可访问到该文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值