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 记录的文件操作类型有大小写的两套呢(如 C 和 c、D 和 d 等)?
以上是关于FastDFS文件同步机制简介的主要内容,如果未能解决你的问题,请参考以下文章