【发布时间】:2017-07-20 18:40:50
【问题描述】:
我正在考虑使用“锁定”S3 对象来防止对给定 S3 对象同时进行相同的操作。但是我对这个技术方案的有效性有很大的怀疑。
更准确地说,在对对象的操作开始时,将创建一个与对象名称和正在执行的操作类型相对应的锁定文件。
示例:在 myObject 上的 myOperation 开始时,如果 lck/myObject/myOperation 对象不存在,则会查找并创建它。
无论成功与否,这个“锁”对象都会在操作结束时被销毁。
我知道标准解决方案是使用数据库,但应用程序目前没有数据库。因此,如果我只能处理与 S3 的一致性,那就足够了。
我担心这个锁对象系统将运行在多线程/可能的多节点架构中。 现在,我了解到 Amazon S3 支持“写后读一致性”。
这是否意味着如果我的应用程序 1(节点 1)/线程 2 通过 Java Amazon S3 API 将锁定对象放在给定存储桶上,则此锁定对象将立即对其他线程和其他应用程序可见相同的 API?
【问题讨论】:
-
来自@stdunbar 的好答案。要锁定 S3 对象键的 name(或任何名称,实际上......基本上是命名信号量),请考虑将 consistent conditional writes 用于为目的而创建的 DynamoDB 表的可能性锁管理。
标签: java amazon-web-services amazon-s3 amazon consistency