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

据我所知,由于I / O成本,扫描目录的时间复杂度和所述目录中文件的数量是相关的。 将文件置于散列目录树中以通过CDN API上传/下载文件的pipe理成本是否值得增加效率?

例如,给定一个文件名foo.mp3 ,这个MD5哈希是10ebb1120767e9de166e0f5905077cb1 。 因此,在./10/eb/foo.mp3存储foo.mp3将允许每个目录的文件较less(假设MD5在Base36中生成模式,这允许每个36^2子目录具有36^2 36^2根目录,哈希碰撞)

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

从理论上讲,这样的技术将大大降低带宽成本,但也会增加CPU成本。 我build议你看看Rsync ,看看这个工具如何解决这个问题,而不使用哈希目录。 还给出了特定的数据模式,可能会有两个文件具有完全相同的MD5散列的散列冲突。 如果特定文件的新版本和旧版本具有相同的MD5散列,这只会成为一个问题。 这是罕见的,但它确实发生。