首页
学习
活动
专区
圈层
工具
发布

用S3锁定
EN

Stack Overflow用户
提问于 2010-08-07 17:44:24
回答 3查看 15.1K关注 0票数 22

与S3一起使用的实现简单锁定机制的推荐方法是什么?

我想要做的事情的例子:

  • 按对象id获取锁
  • 从S3读取对象
  • 修改数据
  • 将对象写入S3
  • 释放锁

理想情况下寻找一种基于云的锁定机制。我可以在本地使用memcached,但是我必须处理缩放。我看不到用任何AWS API实现轻量级锁定的明显方法,但这似乎是一个常见的问题。

我想知道您是否可以使用SimpleDB执行原子获取锁操作。有人试过吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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

票数 11
EN

Stack Overflow用户

发布于 2010-08-09 21:37:38

我不认为您可以只使用S3,使用simpleDB的一致性增强功能,正如james所说的那样,这是一个很好的工作方法。

您可以在这里查找一些示例:亚马逊SimpleDB一致性增强

另一种可能不错的方法是使用版本控制特性 of S3

因此,基本上,在simpleDB中存储一个对象id /版本id对,作为最“有效”的版本

并确保所有GET请求都将检索到该版本。

修改后的对象成功放置后,更新DB中的版本id。

通过这种方式,您还可以使用检索对象以前版本的功能,以便在需要时进行恢复。

票数 2
EN

Stack Overflow用户

发布于 2022-08-10 13:56:17

这也让我很难受,当时使用数据库是不可行的,所以我们提出了一个基于S3的解决方案https://github.com/jfstephe/aws-s3-lock

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3431418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档