FastDfs简单理解

风格不统一 提交于 2020-03-03 12:07:23

注:文中大部分素材为网络取材,文字叙述大部分为个人学习和搭建经验所理解,如有误,请谅解辛苦指出。

一. 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最小的空间表示。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!