用S3锁定

Jam*_*per 22 locking amazon-s3 amazon-web-services

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

我想做的例子:

  • 通过对象id获取锁定
  • 从S3读取对象
  • 修改数据
  • 将对象写入S3
  • 解锁

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

我想知道你是否可以使用SimpleDB来进行原子获取锁定操作.有人试过吗?

Jam*_*per 10

好的,我今天早上花了一些时间和boto一起玩,我想我有一个使用SimpleDB的解决方案.您需要最新的boto版本,以便支持条件放置和一致读取.

示例代码在这里:http://pastebin.com/3XzhPqfY

请发表意见/建议.我相信这段代码应该相当安全 - 我在main()中的测试尝试使用10个线程.

我没有解决的一件事是S3读取不一致(对吗?),所以理论上一个线程可能在S3值的旧副本上运行.看起来可能有一个解决方法,如下所述:

http://www.shlomoswidler.com/2009/12/read-after-write-consistency-in-amazon.html