FastDFS如何做到无文件索引

Posted Huazie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FastDFS如何做到无文件索引相关的知识,希望对你有一定的参考价值。

FastDFS如何做到无文件索引

本篇文章转载于FastDFS作者 余庆 大佬的 FastDFS分享与交流 公众号。

1. 文件ID

FastDFS 不需要保存文件索引信息,是因为其精巧的 文件ID 设计。

上传文件时,文件IDstorage server 生成并返回给调用方(client),返回的 文件ID 中包含了 组名文件名,调用方将 文件ID 保存到数据库中作为访问该文件的凭据。

文件上传流程示意图如下:
在这里插入图片描述
client 拿着 文件ID 访问文件时,会先询问 tracker servertracker server 根据组名返回该组可用的 storage server,然后 client 带着 文件ID 直接向该 storage server 发送请求,storage server 可以根据该 文件ID 直接定位到文件。

文件下载流程示意图如下:
在这里插入图片描述
FastDFS 生成的一个 文件ID 示例:
在这里插入图片描述
磁盘部分 M后面的两位数字,表示基于0的磁盘序号

文件名(不含后缀名)采用 Base64 编码,包含如下 5 个字段(每个字段均为 4 字节整数):

  • 源storage server IDIP地址

  • 文件创建时间戳

  • 文件大小

  • 文件内容 CRC32 校验码

  • 随机数

引入随机数的目的是防止生成重名文件。

如果采用了合并存储,生成的 文件ID 将变长,文件名后面多了 16 个字节。

这部分同样采用 Base64 编码,包含如下 3 个字段(每个字段均为 4 字节整数):

  • 存放到的 trunk file ID

  • 文件偏移量(offset

  • 占用的空间大小

根据前两个字段,可以知道文件存放的 trunk file 及偏移位置。

FastDFS 不需要文件索引,省掉了传统的 name server 角色,使得 FastDFS 更加简洁高效。

以上是关于FastDFS如何做到无文件索引的主要内容,如果未能解决你的问题,请参考以下文章

分布式文件系统FastDFS如何做到高可用

FastDFS是如何解决数据一致性问题的?

fastdfs对特大文件支持得如何?

Fastdfs

Fastdfs 一个基于http协议的分布式文件系统

FastDFS tracker leader机制介绍