我正在考虑使用“锁定”S3 对象,以防止对给定 S3 对象同时进行相同的操作。但我对这个技术方案的有效性抱有很大的怀疑。
更准确地说,在对对象进行操作开始时,将创建与对象名称和所执行操作类型相对应的锁定文件。
示例:在 myObject 上的 myOperation 开始时,将查找 lck/myObject/myOperation 对象,如果不存在则创建该对象。
无论操作成功与否,这个“锁定”对象都会在操作结束时被销毁。
我知道标准解决方案是使用数据库,但应用程序目前没有数据库。因此,如果我只能处理与 S3 的一致性,那就足够了。
我担心的是这个锁对象系统将在多线程/可能是多节点架构中运行。现在,我了解到 Amazon S3 支持“写后读一致性”。
这是否意味着,如果我的应用程序 1(节点 1)/线程 2 通过 Java Amazon S3 API 在给定存储桶上放置锁定对象,则该锁定对象将立即对使用相同 API 的其他线程和其他应用程序可见?