与S3一起使用的实现简单锁定机制的推荐方法是什么?
我想要做的事情的例子:
理想情况下寻找一种基于云的锁定机制。我可以在本地使用memcached,但是我必须处理缩放。我看不到用任何AWS API实现轻量级锁定的明显方法,但这似乎是一个常见的问题。
我想知道您是否可以使用SimpleDB执行原子获取锁操作。有人试过吗?
发布于 2010-08-08 15:53:44
好的,我今天早上花了一些时间玩boto,我想我有一个使用SimpleDB的解决方案。您需要最新的boto发行版,以便支持有条件的puts和一致的读取。
这里的示例代码:http://pastebin.com/3XzhPqfY
请张贴意见/建议。我认为这段代码应该是相当安全的--我在main()中的测试用10个线程进行了测试。
我没有提到的一点是,S3读取是不一致的(对吗?),因此理论上,线程可能在S3值的旧副本上操作。看来可能会有一个解决办法,如下所述:
http://www.shlomoswidler.com/2009/12/read-after-write-consistency-in-amazon.html
发布于 2010-08-09 21:37:38
我不认为您可以只使用S3,使用simpleDB的一致性增强功能,正如james所说的那样,这是一个很好的工作方法。
您可以在这里查找一些示例:亚马逊SimpleDB一致性增强
另一种可能不错的方法是使用版本控制特性 of S3
因此,基本上,在simpleDB中存储一个对象id /版本id对,作为最“有效”的版本
并确保所有GET请求都将检索到该版本。
修改后的对象成功放置后,更新DB中的版本id。
通过这种方式,您还可以使用检索对象以前版本的功能,以便在需要时进行恢复。
发布于 2022-08-10 13:56:17
这也让我很难受,当时使用数据库是不可行的,所以我们提出了一个基于S3的解决方案https://github.com/jfstephe/aws-s3-lock。
https://stackoverflow.com/questions/3431418
复制相似问题