一、文件同步延迟问题

前面也讲过fastDFS同组内storage server数据是同步的, Storage server中由专门的线程根据binlog进行文件同步。为了最大程度地避免相互影响以及出于系统简洁性考虑,Storage server对组内除自己以外的每台服务器都会启动一个线程来进行文件同步。文件同步采用增量同步方式,系统记录已同步的位置(binlog文件偏移量)到标识文件中。标识文件名格式:{dest storage IP}_{port}.mark,例如:192.168.1.14_23000.mark。Storage server采用binlog文件记录文件上传、删除等更新操作。binlog中只记录文件名,不记录文件内容。文件同步只在同组内的Storage server之间进行,采用push方式,即源头服务器同步给目标服务器。只有源头数据才需要同步,备份数据并不需要再次同步,否则就构成环路了。有个例外,就是新增加一台Storage server时,由已有的一台Storage server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。客户端将一个文件上传到一台Storage server后,文件上传工作就结束了。由Storage server根据binlog中的上传记录将这个文件同步到同组的其他Storage server。这样的文件同步方式是异步方式,异步方式带来了文件同步延迟的问题。新上传文件后,在尚未被同步过去的Storage server上访问该文件,会出现找不到文件的现象

二、FastDFS对文件同步延迟问题的解决方案

需要说明的是,一个组包含的Storage server不是通过配置文件设定的,而是通过Tracker server获取到的。客户端和Storage server主动连接Tracker server。Storage server主动向Tracker server报告其状态信息,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。Storage server会连接集群中所有的Tracker server,向他们报告自己的状态。Storage server启动一个单独的线程来完成对一台Tracker server的连接和定时报告。另外,每台storage server都会定时向tracker server报告它向同组的其他storage server同步到的文件时间戳。当tracker server收到一台storage server的文件同步报告后,它会依次找出该组内各个storage server被同步到的文件时间戳最小值,作为storage的一个属性记录到内存中。根据上述情况fastDFS提供下面简单解决方案:

1、和文件更新一样,优先选择源Storage server下载文件即可。这可以在Tracker server的配置文件中设置,对应的参数名为download_server。

2、选择Storage server的方法是轮流选择(round-robin)。当Client询问Tracker server有哪些Storage server可以下载指定文件时,Tracker server返回满足如下四个条件之一的Storage server:

a、该文件上传到的源Storage server,文件直接上传到该服务器上的;

b、文件创建时间戳 < Storage server被同步到的文件时间戳,这意味着当前文件已经被同步过来了;

c、文件创建时间戳=Storage server被同步到的文件时间戳,且(当前时间—文件创建时间戳) > 一个文件同步完成需要的最大时间(如5分钟);

d、(当前时间—文件创建时间戳) > 文件同步延迟阈值,比如我们把阈值设置为1天,表示文件同步在一天内肯定可以完成。

三、停止fastDFS服务

直接kill即可让server进程正常退出,可以使用killall命令,例如:
killall fdfs_trackerd
killall fdfs_storaged
也可以使用FastDFS自带的stop.sh脚本,如:
/usr/local/bin/stop.sh  /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf
stop.sh只会停止命令行(包括参数)完全相同的进程。
但需要注意的是千万不要使用-9参数强杀,否则可能会导致binlog数据丢失的问题。

四、fastDFS数据清空重整
停止storage server和tracker server,删除base_path下的data子目录即可。

fastDFS同步问题讨论相关推荐

  1. Windows 文件同步方案讨论

    在日常运维工作中,经常会遇到这样的情况:我们需要在无人值守的情况下完成文件.文件夹的同步过程,已实现周期性的备份,避免单点故障.本研究实现了本地Windows主机与远程Windows主机,本地Wind ...

  2. 帧同步_帧同步和状态同步该怎么选(上)

    这是一篇拖延了2年多的文章-2017年10月份开始写的,直到这次过年才写完... 前言 随着王者荣耀的崛起,使用帧同步(Lockstep)的游戏也越来越多,关于帧同步和状态同步的讨论争论也有不少,那么 ...

  3. Linux FastDFS 分布式文件系统安装

    Linux FastDFS 分布式文件系统安装 2013 年 3 月 11 日 – 09:21 | 930 views | 收藏  (No Ratings Yet) FastDFS是一款类Google ...

  4. fastdfs添加storage节点

    前景提要: 工作需要在已有fastdfs的情况下,给fastdfs增加一个storage 在新的机器上安装fastdfs 下面为简单安装,详细安装参考 注意,安装版本要和老的版本一至,不然会报错,错误 ...

  5. 分布式文件系统FastDFS 架构剖析及配置优化

    FastDFS概述 FastDFS是一款开源的轻量级分布式文件系统 – 纯C实现,支持Linux.FreeBSD等UNIX系统 – 类google FS,不是通用的文件系统,只能通过专有API访问,目 ...

  6. 公司各个阶段 CTO 需要做什么?(下篇)

    假设一个公司发展有以下几个阶段: 0 :创始阶段: 0.5 :有产品但无管理阶段: 1 :经过 1年的发展初步稳定的阶段: 1+ :稳步发展阶段. 上一篇文章中,我们聊了公司在初创阶段,CTO 需要做 ...

  7. Node - 异步IO和事件循环

    前言 学习Node就绕不开异步IO, 异步IO又与事件循环息息相关, 而关于这一块一直没有仔细去了解整理过, 刚好最近在做项目的时候, 有了一些思考就记录了下来, 希望能尽量将这一块的知识整理清楚, ...

  8. Java多线程协作(wait、notify、 notifyAll)

    http://sunjun041640.blog.163.com/blog/static/25626832201041411210560/ Java监视器支持两种线程:互斥和 协作. 前面我们介绍了采 ...

  9. 不同系统之间数据的交互

    最近公司的项目要实现几个子系统的数据同步,讨论了几种方式,现记录如下.背景介绍: 子系统                      职责 MarketResearch       实时更新基金产品价格 ...

最新文章

  1. 【DP】错排问题(ybtoj DP-1-1)
  2. C++类中成员变量的初始化总结
  3. 商务专业考计算机二级,计算机二级ms考什么
  4. TComboBox动态创建
  5. 基于MSBuild的xnb资源预生成机制
  6. x=min(x, y)
  7. noip2009 普及组
  8. User Experience Questionnaire UEQ
  9. 安装step7 v5.6报错的解决方法
  10. linux系统测网速工具
  11. Python之ascii转中文
  12. 学测绘和计算机,测绘工程就业方向与前景 女生学测绘好找工作吗
  13. 独享还是共享,你选择哪一种锁?(独享锁/共享锁)
  14. Cygwin、Msys、MinGW、Msys2的区别与联系
  15. 语音识别数据集及性能评测指标WER
  16. RTOS内功修炼记(十) | 深度解析RTOS内核上下文切换机制
  17. 鸟哥的Linux私房菜基础篇笔记--8
  18. 孤岛惊魂5 for Android,孤岛惊魂5手机版
  19. Pytorch 之修改Tensor部分值
  20. 服务器pe安装win7系统安装教程,U盘PE安装Win7安装版|U盘安装win7原版教程

热门文章

  1. configparser模块
  2. DDD China Conference 2017
  3. python无师自通配套资源_Python Tkinter Pack布局管理器(超级详细,看了无师自通)...
  4. unity android模糊ios清晰,Unity NGUI UI 在iOS端的锯齿、模糊、颗粒感问题
  5. java排队叫号_java多线程(4)模拟排队叫号程序,不能出现交替执行的结果
  6. python方法调用名字不一样_python中调用父类同名方法
  7. alt+数字 符号大全_【BIM工具箱】Revit中特殊符号大全和输入技巧
  8. mysql分组函数按月份差,学习猿地-mysql如何按月份分组查询
  9. apk可以解压再复制到手机吗_不行了,这个打通手机和电脑的神器,必须得安利给你们...
  10. python判断素数的函数_Python素数prime函数练习_Python源码实操