【发布时间】:2016-01-25 16:18:13
【问题描述】:
我有一个 S3 存储桶,其中包含多个 EC2 实例可以从中提取的多个 S3 对象(水平扩展时)。每个 EC2 将一次拉出一个对象,对其进行处理,然后将其移动到另一个存储桶。
目前,为了确保同一个对象不会被多个 EC2 实例处理,我的 Java 应用程序通过添加到其 S3 对象键中的“锁定”扩展名来重命名它。问题是“重命名”实际上是在做“移动”。因此 S3 存储桶中的大文件最多可能需要几分钟才能完成其“重命名”,从而导致锁定过程无效。
有没有人有完成我想要做的事情的最佳实践?
我考虑过使用 SQS,但这种“解决方案”有其自身的一系列问题(订单无法保证,消息可能多次传递,以及多个 EC2 收到相同的消息)
我想知道设置“锁定”标题是否会是一个更快的“锁定”过程。
【问题讨论】:
-
我没有发布答案,因为我没有关于“锁定”S3 文件的问题的答案。但是,也许另一种选择是根本不使用并发,并让进程生成自己的文件,所有这些文件都在以后连接起来。我认为您在连接中损失的时间来自于避免并发瓶颈所节省的时间。如果这些进程将永远运行,那么可能需要一个类似于在达到文件大小后归档的系统。
标签: amazon-web-services amazon-s3 amazon-ec2