前言
环境:Centos7.9
什么是FastDFS
FastDFS 是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和提交均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等 。FastDFS 为互联网专业定制,充分考虑了统计数据、负载均衡、扩大容容等,指标并适当高准、合适等。使用FastDFS很容易建立起自己的文件服务器,提供文件、下载等服务。
FastDFS的3个角色
1 )客户端
2 ) tracker追踪服务器
3 )存储存储服务器

原理步骤:客户端请求----追踪服务器----给客户端分配一个组----最终客户端将数据写入组中。
客户端:Client,客户端,主要是上传下载文件数据,包括我们部署的应用服务器或浏览器等。
跟踪服务器:tracker server,跟踪服务器主要负责调度工作,起到了负载均衡的效果,负责管理所有的storage server 和group,每个storage在启动后都会链接Tracker,storage server会定期的向tracker server发送自己的状态信息,如告知自己所属的group等信息,并保持周期性心跳,Tracker是连接客户端与组和存储枢纽,Tracker server也可以时多台的、集群的。
存储服务器:storage server,存储服务器负责存储数据和备份,存储服务器以group为单位,每个组又可以又多个storage server,组内的storage server数据互为备份。
以上,tracker server就起到了负载均衡的作用,storage server由于同一个组内的server互为备份,所以storage server就起到了数据冗余备份的作用。
FastDFS上传机制

如上图,当tracker收到客户端的上传文件的请求时,tracker会去storage查询可用的group,并返回给客户端storage的IP和端口,即group等信息,客户端向storage发送写文件请求,storage将会分配一个数据目录,然后为文件生成一个file_id,存储路径,文件名并存储文件,storage返回file_id、路径和文件给客户端。
FastDFS下载机制

FastDFS文件同步机制
写文件时,客户端将文件写至group内的一个storage server即认为写入成功,storage server写完后将由后台线程将文件同步到group内的其他storage server,实现原理是:每个storage 写文件后会同时写一份binlog,binlog不包含数据,只包含文件名等元数据,这份binlog用于后台同步,storage 会记录group内其他的storage 同步进度,一遍重启后能衔接上次的同步进度继续同步,进度以时间戳的方式记录,所以最好保证集群内的server时间一致。