注:文中大部分素材为网络取材,文字叙述大部分为个人学习和搭建经验所理解,如有误,请谅解辛苦指出。
一. FastDfs简介
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
以下简称为fds。
二.fds的工作原理
1. fds的组成角色
Tracker:跟踪协调器,负责服务调度,访问负载均衡的作用;
Storage:存储节点,存储数据、同步、提供存取接口等。
下图为Client、Storage、Tracker的关系情况:
2. fds文件上传原理
Client(用户端)发送文件上传请求给Tracker, Tracker询问可用的Storage,然后返回给Client(用户端)可用Storage的地址,Client(用户端)调用Storage文件上传接口,进行文件上传, Storage完成文件的存储后,返回文件存储信息,此时文件上传工作完成。
3. fds文件下载原理
Client(用户端)发送文件下载链接请求给Tracker, Tracker根据链接询问可用的Storage(并检查同步状态),然后返回给Client(用户端)可用Storage的地址,Client(用户端)调用Storage文件下载接口,传递文件信息, Storage根据文件信息进行查找,返回文件的访问。
4. fds文件同步原理
4.1 客户端将文件上传至Group内一个Storage即认为上传文件成功,Storage存储文件完成后,会由后台线程将文件同步至同Group内其他的Storage。
4.2 每个Storage写文件后,同时会写一份binlog,binlog里不包含文件数据,只包含文件名等元信息,这份binlog用于后台同步,Storage会记录向Group内其他Storage同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有Server的时钟保持同步。
4.3 Storage的同步进度会作为元数据的一部分汇报到Tracker上,Tracke在选择读Storage的时候会以同步进度作为参考。
文件同步工作流程简图:
流程图解释:
1. Group内的Storage定时读取BinLog,获取同步进度;
2. Group内的Storage有数据变化时,将元信息写入BinLog;
3. Group内的其他Storage读取BinLog后,根据同步进度提示与发生数据变化的Storage进行同步交互;
*4. 完成同步后,进度信息上传到Tracker,Tracker根据该进度进行与Storage的进度参考。
5. fds联合原理
结合原理简图1步骤,启动Storage服务后,会根据配置文件中的Tracker地址主动访问Tracker服务器,进行设备登记;
结合原理简图2步骤,Tracker服务收到登记后,生成列表,下发至所有同Group内的所有Strorage;
结合原理简图3步骤,同Group内的Storage根据Tracker下发列表,进行互相关联同步;
fds联合原理简图:
注意:
所有的Tracker都是相对独立的,不会互相联动;
只有相同Group内的Storage才会进行同步;
Group的存储空间大小,使用组内Storage最小的空间表示。
来源:https://www.cnblogs.com/airlinp/p/12395052.html