Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 分布式校验和生成_Ruby_Redis_Md5 - Fatal编程技术网

Ruby 分布式校验和生成

Ruby 分布式校验和生成,ruby,redis,md5,Ruby,Redis,Md5,我有一个通过HTTP运行的服务,它获取文件块(通常为10MB)并将它们作为块存储在远程文件系统上。这些块的组合将构成一个完整的文件 我想从块中生成一些关于文件的元数据。具体来说,我想生成文件的总大小和MD5校验和 结束文件可以相对较大(500+MB)。是否有一种以分布式方式迭代生成校验和的方法?例如,假设有两台web服务器在负载平衡器后面运行此服务,负载平衡器在两台服务器之间分发请求。是否可以使用诸如共享Redis服务器之类的工具动态生成完整文件的MD5校验和 我试图避免在磁盘上本地缓存数据块,

我有一个通过HTTP运行的服务,它获取文件块(通常为10MB)并将它们作为块存储在远程文件系统上。这些块的组合将构成一个完整的文件

我想从块中生成一些关于文件的元数据。具体来说,我想生成文件的总大小和MD5校验和

结束文件可以相对较大(500+MB)。是否有一种以分布式方式迭代生成校验和的方法?例如,假设有两台web服务器在负载平衡器后面运行此服务,负载平衡器在两台服务器之间分发请求。是否可以使用诸如共享Redis服务器之类的工具动态生成完整文件的MD5校验和

我试图避免在磁盘上本地缓存数据块,或者在完全上载数据块后,在远程数据存储中查询实际的文件内容。

您可以使用、

引用亚马逊的Dynamo第4.7节

为了更快地检测副本之间的不一致性并将传输的数据量降至最低,Dynamo使用Merkle树。Merkle树是散列树,其中叶子是单个键值的散列。树中较高的父节点是其各自子节点的哈希。Merkle树的主要优点是可以独立检查树的每个分支,而无需节点下载整个[…]数据集


找到了这颗小宝石。它允许您使用数据库累计计算MD5总和


这是一个很好的建议,但是从一组独立计算的叶子中生成顶级哈希会带来安全隐患。您可能还想将a的定义链接到您的答案中,以方便未来的访问者。您在这里真正想要实现什么,以及有什么安全保证?这不可能节省时间;在我的笔记本电脑上计算512 MiB文件的MD5平均只需要1.323秒的挂机时间;服务器类硬件应该更高性能。这不是时间问题,文件分块是我正在构建的服务的属性,而不是我专门为此做的事情。