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

Posted Huazie

tags:

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

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

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

上一篇博文中介绍了 FastDSF文件同步机制 ,遗留了一个文件同步延迟的问题,本篇博文继续来解惑。

问题1:

FastDFS 文件同步采用异步复制的方式,如何解决文件同步的延迟问题呢?

解答1:

FastDFS 的解决方案非常巧妙,利用 时间戳 解决文件同步延迟导致新上传文件可能访问不到的问题。

storage 生成的文件名中,包含 源头storage ID/IP地址文件创建时间戳storage 定时向 tracker 报告文件同步情况,包括向同组其他 storage 同步到的文件时间戳tracker 收到 storage 的文件同步报告后,找出该组内每台 storage 被同步到的最小时间戳,作为 storage 属性保存到内存中。

问题2:

下载一个文件时,如何确保选中的 storage 上一定存在该文件呢?

解答2:

client 询问 tracker 有哪个(或哪些) storage 可以下载指定文件时,tracker 返回满足如下四个条件之一的 storage

1)该文件上传到的源头 storage(通过文件名反解出的 storage ID/IP 来判别);

2)(当前时间 -文件创建时间戳) > 文件同步延迟阀值(如一天);

3)文件创建时间戳 < storage 被同步到的时间戳;

4)文件创建时间戳 == storage被同步到的时间戳,且(当前时间 -文件创建时间戳) > 同步一个文件的最大时长(如5分钟)。

总结

上述文件 同步延迟阈值同步一个文件的最大时长 这两个参数,在 tracker.conf 中配置,配置项分别是 storage_sync_file_max_delaystorage_sync_file_max_time

FastDFS 巧妙利用 时间戳 来解决文件同步延迟带来的文件访问问题。集群内服务器的时间需要保持一致,要求时间误差不超过 1 秒,建议使用 NTP 这样的对时服务。

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

分布式文件系统FastDFS如何做到高可用

分布式文件系统FastDFS如何做到高可用

[精选] MySQL主从同步延迟问题,数据一致性问题,你如何去解决

如何解决主从数据库同步延迟问题

FastDFS是如何解决数据一致性问题的?

(转)MySQL出现同步延迟有哪些原因?如何解决?