FASTDFS 文件同步
来源:互联网 发布:淘宝手机店铺名片 编辑:程序博客网 时间:2024/05/22 15:01
文件同步延迟问题的提出
客户端将一个文件上传到一台Storage server后,文件上传工作就结束了。由该Storage server根据binlog中的上传记录将这个文件同步到同组的其他Storage server。这样的文件同步方式是异步方式,异步方式带来了文件同步延迟的问题。新上传文件后,在尚未被同步过去的Storage server上访问该文件,会出现找不到文件的现象。FastDFS是如何解决文件同步延迟这个问题的呢?
文件的访问分为两种情况:文件更新和文件下载。文件更新包括设置文件附加属性和删除文件。文件的附加属性包括文件大小、图片宽度、图片高度等。FastDFS中,文件更新操作都会优先选择源Storage server,也就是该文件被上传到的那台Storage server。这样的做法不仅避免了文件同步延迟的问题,而且有效地避免了在多台Storage server上更新同一文件可能引起的时序错乱的问题。
那么文件下载是如何解决文件同步延迟这个问题的呢?
要回答这个问题,需要先了解文件名中包含了什么样的信息。Storage server生成的文件名中,包含了源Storage server的IP地址和文件创建时间等字段。文件创建时间为UNIX时间戳,后面称为文件时间戳。从文件名或文件ID中,可以反解出这两个字段。
然后我们再来看一下,Tracker server是如何准确地知道一个文件已被同步到一台Storage server上的。前面已经讲过,文件同步采用主动推送的方式。另外,每台storage server都会定时向tracker server报告它向同组的其他storage server同步到的文件时间戳。当tracker server收到一台storage server的文件同步报告后,它会依次找出该组内各个storage server(后称作为S)被同步到的文件时间戳最小值,作为S的一个属性记录到内存中。
FastDFS对文件同步延迟问题的解决方案
下面我们来看一下FastDFS采取的解决方法。
一个最简单的解决办法,和文件更新一样,优先选择源Storage server下载文件即可。这可以在Tracker server的配置文件中设置,对应的参数名为download_server。
另外一种选择Storage server的方法是轮流选择(round-robin)。当Client询问Tracker server有哪些Storage server可以下载指定文件时,Tracker server返回满足如下四个条件之一的Storage server:
1、该文件上传到的源Storage server,文件直接上传到该服务器上的;
2、文件创建时间戳 < Storage server被同步到的文件时间戳,这意味着当前文件已经被同步过来了;
3、文件创建时间戳=Storage server被同步到的文件时间戳,且(当前时间—文件创建时间戳) > 一个文件同步完成需要的最大时间(如5分钟);
4、(当前时间—文件创建时间戳) > 文件同步延迟阈值,比如我们把阈值设置为1天,表示文件同步在一天内肯定可以完成。
- FastDFS文件同步机制
- FASTDFS 文件同步
- Fastdfs分布式文件系统之文件同步机制
- Fastdfs分布式文件系统之文件同步机制
- Fastdfs分布式文件系统之文件同步机制
- FastDFS关键配置说明,包括文件同步和安全设置。
- fastDFS同步问题讨论
- FastDFS之Binlog同步
- FastDFS之Binlog同步
- FastDFS同步机制(2)
- FastDFS HOWTO - 同步机制
- FastDFS HOWTO - 同步机制
- FastDFS HOWTO - 同步机制
- FastDFS之添加机器同步
- FastDFS之添加机器同步
- FastDFS之添加机器同步
- FastDFS之Binlog同步(增量同步)
- FASTDFS 分布式文件存储
- 7种形式的Android Dialog使用举例
- 深入理解ArrayList
- C++ const
- Javascript高级程序设计学习笔记(一):函数
- S5PV210系列(裸机一) S5PV210的启动过程详解
- FASTDFS 文件同步
- JAVA获取当前路径的几种方法
- 组件Navigator的使用
- 微信小程序滚动到某个位置改变效果
- LeetCode 11. Container With Most Water
- DSP实验四(DSP的定时器)
- 简单粗暴地理解 JS 原型链
- ARMv8-AArch64简述
- 数论——bzoj3560: DZY Loves Math V