Zil*_*nas 27 optimization synchronization rsync
在我工作的一家公司,我们有一种叫做“播放列表”的东西,它是每个约 100-300 字节的小文件。他们大约有一百万。其中每小时大约有 100,000 次更换。这些播放列表需要每小时上传到不同大陆的 10 个其他远程服务器,理想情况下需要在 2 分钟内快速上传。在 master 上删除的文件也会在所有副本上删除,这一点非常重要。我们目前使用 Linux 作为我们的基础设施。
我正在考虑尝试使用 -W 选项进行 rsync 复制整个文件而不比较内容。我还没有尝试过,但也许对 rsync 有更多经验的人可以告诉我这是否是一个可行的选择?
还有哪些值得考虑的选择?
更新:我选择了 lsyncd 选项作为答案,但这只是因为它是最受欢迎的。其他建议的替代方案也以它们自己的方式有效。
fak*_*ker 39
由于即时更新也是可以接受的,您可以使用lsyncd。
它监视目录(inotify)并将rsync更改为奴隶。
在启动时它会做一个 full rsync,所以这需要一些时间,但之后只传输更改。
目录的递归监视是可能的,如果从属服务器关闭,将重试同步直到它回来。
如果这一切都在单个目录(或静态目录列表)中,您还可以使用incron。
缺点是它不允许递归查看文件夹,您需要自己实现同步功能。
我怀疑rsync是否会以正常方式解决此问题,因为扫描一百万个文件并将其与远程系统进行 10 次比较需要很长时间。我会尝试实现一个类似的系统,该系统inotify保留修改后的文件列表并将它们推送到远程服务器(如果这些更改无论如何都没有以其他方式记录)。然后,您可以使用此列表快速识别需要传输的文件 - 甚至可以使用 rsync(或更好的 10 个并行实例)。
编辑:通过一些工作,您甚至可以使用这种 inotify/log watch 方法在修改发生后立即复制文件。
| 归档时间: |
|
| 查看次数: |
11066 次 |
| 最近记录: |