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_delay 和 storage_sync_file_max_time。
FastDFS 巧妙利用 时间戳 来解决文件同步延迟带来的文件访问问题。集群内服务器的时间需要保持一致,要求时间误差不超过 1 秒,建议使用 NTP 这样的对时服务。
以上是关于FastDFS如何解决文件同步延迟问题的主要内容,如果未能解决你的问题,请参考以下文章