FastDFS同步相关文件:

a)10.100.66.82_23000.mark

内容如下:

binlog_index=0

binlog_offset=1334

need_sync_old=1

sync_old_done=1

until_timestamp=1457542256

scan_row_count=23

sync_row_count=11

解释:

binlog_index:对应于哪个binlog

binlog_offset:binlog.xxx的偏移量,可以直接这个偏移量获取下一行记录

need_sync_old:本storage是否是对侧storage(10.100.66.82)的源结点,同时是否需要从起点同步所有的记录

sync_old_done:是否同步完成过

until_timestamp:上次同步时间结点

scan_row_count:总记录数

sync_row_count:已同步记录数

b)binlog.000

内容如下

1457547668 C M00/00/00/CmRCUVbgaZSAGzKjAACkimfedYQ366.jpg

解释:

1457547668:同步时间戳

C:标记文件类型:C 源创建;A 源追加; D 源删除; T 源Truncate。

对应的小写字母则为副本,如c 副本创建。

M00/00/00/CmRCUVbgaZSAGzKjAACkimfedYQ366.jpg:文件名

c)binlog.index

内容如下

0

解释:

现有binlog数。

新增结点同步流程图

注意事项:

对于非源storage,只上传指定时间结点后的源文件给新增结点,副本文件不处理。

对于源结点,需要把时间结点前所有文件(源和副)传给新结点。

同步完成后,B主动发消息给tracker,修改tracker中A的状态记录。

A心跳获取到tracker发过来的消息,修改自身状态。

Storage的状态的主要意义,给tracker用来判定哪些active的结点可以服务。

启动同步过程中,源结点状态不改变,可以正常存储文件。

正常文件同步流程图

注意事项:

正常文件上传完成后,就记录近binlog缓存中,系统定时刷入binlog文件。

系统有线程定时读取binlog文件,当有新增行时,判断该记录是源文件记录还是副本文件记录。

系统只主动发送源文件,副本文件不做处理(非启动时流程)。

图中A的binlog中记录的是源创建(C),B中记录的是副本创建(c)。

Storage的状态

a)状态值:

#define FDFS_STORAGE_STATUS_INIT      0                     //初始状态
#define FDFS_STORAGE_STATUS_WAIT_SYNC 1 //等待同步
#define FDFS_STORAGE_STATUS_SYNCING 2 //同步中
#define FDFS_STORAGE_STATUS_IP_CHANGED 3
#define FDFS_STORAGE_STATUS_DELETED 4 //删除结点
#define FDFS_STORAGE_STATUS_OFFLINE 5 //离线
#define FDFS_STORAGE_STATUS_ONLINE 6 //在线,但不可存服务
#define FDFS_STORAGE_STATUS_ACTIVE 7 //在线,可提供存储服务
#define FDFS_STORAGE_STATUS_RECOVERY 9
#define FDFS_STORAGE_STATUS_NONE 99 //未知状态

b)启动时状态改变:

i.storage server A连接tracker server,tracker server将storage server A的状态设置为FDFS_STORAGE_STATUS_INIT。storage server A询问追加同步的源服务器和追加同步截至时间点,如果该组内只有storage server A或该组内已成功上传的文件数为0,则没有数据需要同步,storage server A就可以提供在线服务,此时tracker将其状态设置为FDFS_STORAGE_STATUS_OFFLINE,否则tracker server将其状态设置为FDFS_STORAGE_STATUS_WAIT_SYNC,进入第二步的处理;

ii.假设tracker server 分配向storage server A同步已有数据的源storage server为B。同组的storage server和tracker server通讯得知新增了storage server A,将启动同步线程,并向tracker server询问向storage server A追加同步的源服务器和截至时间点。storage server B将把截至时间点之前的所有数据同步给storage server A;而其余的storage server从截至时间点之后进行正常同步,只把源头数据同步给storage server A。到了截至时间点之后,storage server B对storage server A的同步将由追加同步切换为正常同步,只同步源头数据;

iii.storage server B向storage server A同步完所有数据,暂时没有数据要同步时,storage server B请求tracker server将storage server A的状态设置为FDFS_STORAGE_STATUS_OFFLINE;

iv.当storage server A向tracker server发起heart beat时,tracker server将其状态更改为FDFS_STORAGE_STATUS_ACTIVE。

Tracker选择客户端下载文件的storage的原则

a)在同group下,获取最小的一个同步时间点(各个storage在同一时间,同步完成的时间点不一样)

b)在最小同步时间点之前的文件,按照用户的规则随意选择一个storage。

c)在最小同步时间点之后的文件,选择源storage提供给客户端。

FastDFS文件同步的更多相关文章

  1. (转)FastDFS文件存储

    一.FastDFS介绍 FastDFS开源地址:https://github.com/happyfish100 参考:分布式文件系统FastDFS设计原理 参考:FastDFS分布式文件系统 个人封装 ...

  2. FastDFS文件管理系统

    一.FastDFS介绍 FastDFS 是一个开源的高性能分布式文件系统(DFS). 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡.主要解决了海量数据存储问题,特别适合以中小文 ...

  3. FastDFS文件的上传和下载

    一.FastDFS概述: FastDFS是一个开源的轻量级分布式文件系统,他对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.下载)等,解决了大容量存储和负载均衡的问题,高度追求高性能 ...

  4. BAT实现服务器文件同步

    服务器文件同步有很多工具,例如 GoodSync.rsync.BitTorrent Sync等……其实WINDOWS下自带了一个文件同步利器:ROBOCOPY.它是一个命令行的目录复制命令,自从Win ...

  5. 使用syncthing进行双机文件同步

    使用syncthing进行双机文件同步 syncthing是一款开源的文件同步软件,可以 syncthing安装 tar -zxvf syncthing-linux-amd64-v0.12.15.ta ...

  6. sharepoint多个NLB的web前段如何进行文件同步?

    大家都知道,sharepoint2010服务器场可能有2个或2个以上的web服务器做NLB,有个时候牵涉到上传文件到文件夹(说到这里,有人会说全部以二进制文件保存到文档库啊,但是有些情况不允许的,比如 ...

  7. BitTorrent Sync - 神奇的文件同步软件,无需服务器让多台电脑互相同步!

    176,487 微博 腾讯 空间 微信 141 49 如今人们对文件备份和同步的需求已经越来越强烈了.像 Dropbox 一样的云存储网盘有很多,但它们都有一个局限性,就是所有的文件都得经过它们的服务 ...

  8. 烂泥:linux文件同步之rsync学习(一)

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 这几天刚好有空就打算开始学习linux下的文件同步软件rsync,在学习rsync时,我们可以分以下几个步骤进行: 1. rsync是什么 2. rsy ...

  9. CentOS系统rsync文件同步 安装配置

    rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync 它的特性如下: 可以镜像保存整个目录树和文件系统. 可以很容易做到保持原来文件的权限.时间.软硬 ...

随机推荐

  1. 【LeetCode】788. Rotated Digits 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  2. 【LeetCode】54. Spiral Matrix 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 维护四个边界和运动方向 保存已经走过的位置 日期 题 ...

  3. lightoj 1102 - Problem Makes Problem

    1102 - Problem Makes Problem As I am fond of making easier problems, I discovered a problem. Actuall ...

  4. CHARINDEX 用法

    CHARINDEX 返回字符串中指定表达式的起始位置. 语法 CHARINDEX ( expression1 , expression2 [ , start_location ] ) 参数 expre ...

  5. 『动善时』JMeter基础 — 58、JMeter分布式测试

    目录 1.JMeter分布式测试概念 2.JMeter分布式测试前提条件 3.JMeter实现分布式测试 (1)在执行机中的配置 (2)在控制机中的配置 (3)启动执行机中的JMeter服务 (4)在 ...

  6. Bean拷贝工具

    Apache BeanUtils Spring BeanUtils cglib BeanCopier Hutool BeanUtil Mapstruct Dozer 1.Apache  BeanUti ...

  7. Spring Boot 2 中如何使用 Log4j2 记录日志

    上一篇我们介绍了Spring Boot 2.x中默认日志框架Logback的使用.今天继续说说日志,接下来我们要讲是前段时间爆出核弹漏洞的Log4j2.虽然出了漏洞,让很多小伙伴痛苦了1-2周(加班) ...

  8. [数学]高数部分-Part IV 一元函数积分学

    Part IV 一元函数积分学 回到总目录 Part IV 一元函数积分学 不定积分定义 定积分定义 不定积分与定积分的几何意义 牛顿-莱布尼兹公式 / N-L 公式 基本积分公式 点火公式(华里士公 ...

  9. 编写Java程序,随机给定一个数字猜大小

    返回本章节 返回作业目录 需求说明: 由系统随机生成一个1~100之间的整数. 通过控制台一直输入一个整数,比较该数与系统随机生成的那个数,如果大就输出"猜大了.",继续输入:如果 ...

  10. 你还不了解SpringSecurity吗?快来看看SpringSecurity实战总结~

    SpringSecurity简介:   权限管理中的相关概念 主体 principal: 使用系统的用户或设备或从其他系统远程登录的用户等等,简单说就是谁使用系统谁就是主体. 认证 authentic ...