Amazon web services 分布式文件系统的S3与EFS传播延迟?
我正在做一个利用多个docker容器的项目 它们都需要访问相同的文件以进行比较。重要的是,如果一个文件对一个容器可见,那么它对其他容器可见的时间间隔很短 以下是我试图避免的情况: 假设我们有两个文件A和B,以及两个容器1和2。文件A大致同时上载到文件系统并提交以进行比较。紧接着,文件B也会发生同样的情况。紧接着,文件A对容器1可见,文件B对容器2可见。由于文件在分布式文件系统上的传播方式,文件B对容器1不可见,文件A对容器2不可见。容器1现在被告知将文件A与所有其他文件进行比较,容器2被告知将B与所有其他文件进行比较。由于传播延迟,A和B从未相互比较过 我正试图在EFS和S3之间做出决定,将它们用作存储所有这些文件的地方。我想知道哪个更适合我的需要(或者是否有第三种选择我不知道) 文件/容器的特征包括: -所有文件都是平均大小为2kb的小文本文件(尽管它们很少可以是10kb) -目前总共有20mb的文件,但我预计到年底将有1gb -这些容器不是成群的 -每个比较的输出都已上载到S3 -尝试确保每个文件都与其他文件进行比较是非常重要的,因此传播延迟肯定是最重要的因素 (最后一点注意:如果我使用end-up-using S3,我可能会使用sync将所有放入存储桶的新文件拉下来) 编辑:为了回答Kannaiyan的问题,我试图实现的是将每个文件与其他文件进行至少一次比较。我不能确切地说我在比较什么,但是比较是通过执行一个封闭源代码的linux二进制文件来进行的,该二进制文件接收您想要比较的文件和您想要比较的文件(分布式文件系统保存了我想要比较的所有文件)。它们需要放在容器中,原因有二:Amazon web services 分布式文件系统的S3与EFS传播延迟?,amazon-web-services,docker,amazon-s3,amazon-efs,distributed-filesystem,Amazon Web Services,Docker,Amazon S3,Amazon Efs,Distributed Filesystem,我正在做一个利用多个docker容器的项目 它们都需要访问相同的文件以进行比较。重要的是,如果一个文件对一个容器可见,那么它对其他容器可见的时间间隔很短 以下是我试图避免的情况: 假设我们有两个文件A和B,以及两个容器1和2。文件A大致同时上载到文件系统并提交以进行比较。紧接着,文件B也会发生同样的情况。紧接着,文件A对容器1可见,文件B对容器2可见。由于文件在分布式文件系统上的传播方式,文件B对容器1不可见,文件A对容器2不可见。容器1现在被告知将文件A与所有其他文件进行比较,容器2被告知将B
最后,随着我们收到越来越多的提交,这些文件只会随着时间的推移而积累。每个文件只从系统中读取,在添加到系统中后从未修改过。最后,我决定我最初采用的方法太复杂了。相反,我最终使用S3存储所有文件,并使用DynamoDB作为最近存储的文件密钥的缓存。只有在成功上传到S3之后,才会将键添加到DynamoDB表中。每当运行比较操作时,容器都会同步所需的S3目录,然后检查DynamoDB以查看是否缺少任何文件。由于S3具有先读后写的一致性,如果缺少任何文件,可以从S3中提取它们,而无需等待传播到所有S3缓存。这使得一个几乎是即时传播的分布式文件系统成为可能 你能解释一下你想要达到的目标吗?你为什么要比较?为什么容器中需要它们?你打算如何处理这些文件?@kannayan我添加了一些编辑来解决你的问题!我觉得可能会有一个“正确”的答案,但这将与所讨论对象的大小和数量以及您阅读它们的频率有关。EFS有两个紧密耦合的组件,一个是存储大小,另一个是随着时间的推移的总吞吐量——随着数据的增加,它变得越来越快,所以存储的越少,速度就越慢(再说一遍,这是完全正确的)。我们讨论了多少数据,多久读取一次?