内容分发网络的远程 I/O 成本

内容分发网络的远程 I/O 成本

据我所知,由于 I/O 成本,扫描目录的时间复杂度和该目录中的文件数量是相关的。将文件放在散列目录树中以便通过 CDN API 上传/下载文件所花费的管理成本是否值得提高效率?

例如,给定一个文件名foo.mp3MD5它的哈希值为10ebb1120767e9de166e0f5905077cb1。因此,存储foo.mp3在中./10/eb/foo.mp3可以减少每个目录中的文件数量(假设 MD5 生成 Base36 中的模式,这允许36^2根目录和36^2每个子目录都具有哈希冲突的可能性很小)

考虑到目录本身没有加载,直接上传/下载是否还会存在目录扫描的 I/O 成本?

答案1

理论上,这种技术可以大大降低带宽成本,但也会增加 CPU 成本。我建议你看看Rsync看看这个工具如何在不使用哈希目录的情况下解决这个问题。此外,在给定特定数据模式的情况下,可能会发生哈希冲突,即两个文件具有完全相同的 MD5 哈希。只有当特定文件的新版本和旧版本具有相同的 MD5 哈希时,这才会成为问题。这种情况很少见,但确实会发生。

相关内容