Amazon web services amazons3条件put对象
我有一个系统,在这个系统中我收到了很多信息。每条消息都有一个唯一的ID,但它也可以在其生命周期内接收更新。由于消息发送和处理之间的时间可能很长(几周),因此它们存储在S3中。对于每条消息,只需要最新版本。我的问题是,偶尔会有两条相同id的消息同时到达,但它们有两个版本(旧版本和新版本) S3有没有一种方法可以有一个条件PutObject请求,在这里我可以声明“放置这个对象,除非我在S3中有一个更新的版本” 我需要一个原子能手术 这不是S3的用例,它最终是一致的。一些想法:Amazon web services amazons3条件put对象,amazon-web-services,amazon-s3,conditional,Amazon Web Services,Amazon S3,Conditional,我有一个系统,在这个系统中我收到了很多信息。每条消息都有一个唯一的ID,但它也可以在其生命周期内接收更新。由于消息发送和处理之间的时间可能很长(几周),因此它们存储在S3中。对于每条消息,只需要最新版本。我的问题是,偶尔会有两条相同id的消息同时到达,但它们有两个版本(旧版本和新版本) S3有没有一种方法可以有一个条件PutObject请求,在这里我可以声明“放置这个对象,除非我在S3中有一个更新的版本” 我需要一个原子能手术 这不是S3的用例,它最终是一致的。一些想法: 您可以尝试对邮件进行
- 您可以尝试对邮件进行分区—所有以A-L开头的邮件都会转到一个方框,M-Z会转到另一个方框。然后,每个框本地检查是否没有重复项
- 你最好的选择可能是某种数据库。根据您的用例,您可以使用常规SQL数据库,或者可能使用简单的纯RAM数据库,如Redis。一次写入多个Redis数据库以避免SPOF
- 有一种方法可以为每个项目创建唯一的处理队列,但这可能意味着更多的HTTP请求,而不仅仅是签入S3
- David关于启用版本控制的想法很有趣。您可以有一个守护进程,定期删除旧版本。阅读时,您必须执行“阅读修复”,即搜索版本以查找最新对象