FastDFS
- Tracker:调度器,负责维持集群的信息,例如个group和其内部的storage node,这些信息也是storage node报告生成,每个storage node会周期性的向tracker发心跳信息
- storage server:以group为单位进行组织,任何一个storage server都属于某个group,一个group应该包含多个storage server;在同一个group内部,个storage server的数据互相冗余
文件访问操作:upload,download , append , delete
FID:
group/M00/00/00/FILE_ID
Upload File:
- 由client发起上传连接请求
- 由tracker查找可用的storage server
- 找到可用的storage server后,将其(ip:port)返回给client
- 上传文件,包括文件的属性信息和文件内容
- 生成文件的fid,将client提交的内容写入选定的位置
- 返回fid
- 同步存储文件信息到同组的其他节点
tracker如何挑选组
- rr
- 指定组
- 基于可用空间进行均衡
如何在组中挑选storage server
- rr
- 以ip为次序,找第一个
- 以优先级为序,找第一个
如何选磁盘
- rr
- 剩余可用空间大者优先
生成FID
由源头storage server ip , 创建时候的时间戳 , 大小 , 文件的校验码和一个随机数进行hash计算后生成
文件同步
每个storage server在文件存储完成后,会将其信息存储在binlog
Download File
客户端上传文件完成后,会收到storage server返回的fid , 而后再次用到时, client会可根据此文件发出请求
- client向tracker发请求
- tracker根据文件名定位到group, 并返回次group内的某一个storage server的信息(ip:port)给client
- client向得到ip:port发请求
- storage server查找文件,并返回其内容给client