FastDFS 入门简介
1.美图
2.概述
FastDFS 是⼀一个开源的轻量量级分布式⽂文件系统,它解决了了⼤大数据量量存储和负载均衡等问题,特别适合以中⼩文件(建议范围: 4 KB < file_size < 500 MB
)为载体的在线服务,如相册⽹网站、视频⽹网站等。在 UC 基于FastDFS 开发向⽤用户提供了了⽹网盘、社区、⼴广告和应⽤用下载等业务的存储服务。
FastDFS 由 C 语⾔言开发,⽀支持 Linux、 FreeBSD 等 UNIX 系统类 Google FS,不不是通⽤用的⽂文件系统,只能通过专有 API 访问,⽬目前提供了了 C、 Java 和 PHP API,为互联⽹网应⽤用量量身定做,解决了了⼤大容量量⽂文件存储问题,追求⾼高性能和⾼高扩展性, FastDFS 可以看做是基于⽂文件的 Key Value Pair 存储系统,称作分布式⽂文件存储服务会更更合适。
3.FastDFS 特性
- 文件不不分块存储,上传的⽂件和 OS 文件系统中的⽂件⼀一对应
- ⽀支持相同内容的⽂文件只保存⼀一份,节约磁盘空间
- 下载⽂件⽀支持 HTTP 协议,可以使用内置 Web Server,也可以和其他Web Server 配合使用
- ⽀持在线扩容
- 支持主从⽂件
- 存储服务器上可以保存⽂件属性(meta-data) V2.0 ⽹网络通信采⽤libevent,⽀持大并发访问,整体性能更更好
4.FastDFS概念相关
FastDFS 服务端有三个⻆角⾊色:跟踪服务器器(Tracker Server)、存储服务器器(Storage Server)和客户端
(Client)。
- Tracker Server:跟踪服务器器,主要做调度⼯工作,起负载均衡的作⽤用。在内存记录集群中所有存储组和存储服务器器的状态信息,是客户端和数据服务器器交互的枢纽。相⽐比 GFS 中的 Master 更更为精简,不记录
⽂件索引信息,占⽤用的内存量很少。 - Storage Server:存储服务器(又称存储节点或数据服务器),文件和⽂件属性(Meta Data)都保存到存储服务器上。 Storage Server 直接利用 OS 的文件系统调⽤管理文件。
- Client:客户端,作为业务请求的发起方,通过专有接口,使⽤ TCP/IP 协议与跟踪服务器或存储节点进行数据交互。 FastDFS 向使⽤用者提供基本文件访问接⼝口,如 upload、 download、 append、 delete等,以客户端库的⽅式提供给⽤户使⽤。
5.运行机制
通过⼀一张图来看⼀一下 FastDFS 的运⾏行行机制:
Tracker 相当于 FastDFS 的大脑,不论是上传还是下载都是通过 Tracker 来分配资源;客户端⼀一般可以使⽤Ngnix 等静态服务器来调用或者做一部分的缓存;存储服务器内部分为卷(或者叫做组),卷与卷之间是平行的关系,可以根据资源的使⽤情况随时增加,卷内服务器文件相互同步备份,以达到容灾的⽬目的
6.上传机制
⾸先客户端请求 Tracker 服务获取到存储服务器的 IP 地址和端⼝,然后客户端根据返回的 IP 地址和端⼝号,请求上传文件,存储服务器接收到请求后生产文件,并且将⽂件内容写入磁盘并返回给客户端 file_id、路径信息、⽂文件名等信息,客户端保存相关信息上传完毕。
7.下载机制
客户端带上⽂件名信息请求 Tracker 服务获取到存储服务器的 IP 地址和端⼝口,然后客户端根据返回的 IP 地址和端⼝号请求下载⽂件,存储服务器器接收到请求后返回文件给客户端。