我正在设计一个系统,其中一组EC2实例进行一些计算,然后不断更新大文件。理想的是,如果我可以在S3中拥有该文件,并让所有实例轮流一次写入一个,在等待时执行计算。 因为如果2个实例同时PUT到S3,1将简单地覆盖另一个。
如何解决此并发问题?
答案 0 :(得分:2)
AWS有一个名为EFS(http://aws.amazon.com/documentation/efs/)的预览服务,它是一个可以在EC2实例之间共享的NFS4。但是这样的服务本身并不能解决您的问题,因为您可能仍然存在并发问题。考虑一些更复杂的东西,比如利用"令人尴尬的并行处理"例如,有N个进程创建N个文件块,最后只有一个文件在所有内容完成时将所有部分连接在一起。
答案 1 :(得分:0)
正如亚马逊所说,如果您收到成功代码,那么您的S3对象将被提交。亚马逊还补充说,不会有任何脏写或重叠不一致 - 你会读到完全提交的写入。
如果您需要更多控制权,您可以像执行关键部分那样执行应用程序。
对存储桶进行版本控制以便您可以维护所有写入以及稍后可以指定哪个版本是最新版本,这当然是有意义的。
您还可以利用生命周期规则删除(继续删除)上一个n
版本以节省费用。