FastDFS
一、初识
- DFS (Distributed Files System) 分布式文件管理系统;
- FastDFS是tb架构师用C语言编写,开源的轻量级,支持Linux,Unix
- 主要是为解决海量数据存储问题,特别适合中小文件(4KB < file_size <500MB)为载体的在线服
二、组成
由三个部分:★客户端 Client ★ 跟踪服务器 Tracker ★存储服务器 Storage
上传下载数据的服务器,即开发项目所部署的服务器
- 客户端 Client
- 存储服务器 Storager
提供容量和备份服务;以 组(group或称卷volume) 为单位,每个 group 内可以有多台 storager,组内数据互为备份(如上图可理解为纵向备份),故此处提醒:存储空间以组内最小的容量为准,所以最好在配置时同一个组内的storager容量要相同,以免浪费存储的空间。
以组group为单位组织存储能方便进行应用隔离、负载均衡、副本数定制(即组内的纵向storager数量增删)
- 跟踪服务器 Tracker
主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳,所有的Tracker都接收storage的心跳信息,生成元数据信息来提读写服务
三、使用
FastDFS 提供基本文件访问接口,upload、dowload、append、delete等,
- 文件上传
- 文件下载
- 文件的同步
当文件上传成功后,后台线程会将文件同步至同组group内的其他storager(即纵向的存储器中),并且每个storage写文件后,会同时写一份binlog,binlog里不包含文件数据,只包含文件名等元信息,这份binlog用于后台同步,storage会记录向group内其他storage同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有server的时钟保持同步。
storage的同步进度会作为元数据的一部分汇报到tracker上,tracke在选择读storage的时候会以同步进度作为参考