FastDFS文件同步机制简介

Posted Huazie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FastDFS文件同步机制简介相关的知识,希望对你有一定的参考价值。

FastDFS文件同步机制简介

本篇文章转载于FastDFS作者 余庆 大佬的 FastDFS分享与交流 公众号。

FastDFS 文件同步采用 binlog 异步复制方式。

storage server 使用 binlog 文件记录文件上传、删除等操作,根据 binlog 进行文件同步。binlog 中只记录 文件ID操作,不记录文件内容。下面给出几行 binlog 文件内容示例:

1572660675 C M00/00/00/oYYBAF285cOIHiVCAACI-7zX1qUAAAAVgAACC8AAIkT490.txt

1572660827 c M00/00/00/oYYBAF285luIK8jCAAAJeheau6AAAAAVgABI-cAAAmS021.xml

1572660911 D M00/00/00/oYYBAF285cOIHiVCAACI-7zX1qUAAAAVgAACC8AAIkT490.txt

1572660967 d M00/00/00/oYYBAF285luIK8jCAAAJeheau6AAAAAVgABI-cAAAmS021.xml

从上面可以看到,binlog 文件有三列,依次为时间戳操作类型文件ID(不带 group 名称)。

文件操作类型采用单个字母编码,其中 源头操作大写字母 表示,被同步的操作 为对应的 小写字母

文件操作字母含义如下:

文件操作类型描述
C上传文件(upload)
D删除文件(delete)
A追加文件(append)
M部分文件更新(modify)
U整个文件更新(set metadata)
T截断文件(truncate)
L创建符号链接(文件去重功能,相同内容只保存一份)

同组内的 storage server 之间是对等的,文件上传、删除等操作可以在任意一台storage server 上进行。文件同步只在同组内的 storage server 之间进行,采用push 方式,即源头服务器同步给本组的其他存储服务器。对于同组的其他 storage server,一台 storage server 分别启动一个线程进行文件同步。

文件同步采用增量方式,记录已同步的位置到 mark 文件中。mark 文件存放路径为 $base_path/data/sync/

mark 文件内容示例:

binlog_index=3

binlog_offset=382

need_sync_old=1

sync_old_done=1

until_timestamp=1571976211

scan_row_count=2033425

sync_row_count=2033417

采用 binlog 的异步复制方式,必然存在同步延迟的问题,比如 mysql 的主从数据同步。下一篇文章将介绍 FastDFS 是如何解决文件异步复制带来的延迟问题,敬请期待。

最后留给大家一个问题,为什么 binlog 记录的文件操作类型有大小写的两套呢(如 CcDd 等)?

以上是关于FastDFS文件同步机制简介的主要内容,如果未能解决你的问题,请参考以下文章

FastDfs简单理解

FastDFS集群-安装说明

FastDFS 简介

FastCFS同步复制机制简介

FastDFS与Nginx的配置说明

FastDFS如何解决文件同步延迟问题