2010-07-08 108 views
0

在我正在处理的Web服务中,用户的数据需要在后台进行更新 - 例如下拉并存储他们的推文。由于可能有多个服务器执行这些更新,我想确保只有一个服务器可以同时更新任何单个用户的数据。因此,(我相信)我需要一种做原子读取的方法(用户已经更新)并写入(否?然后我将开始更新)。我需要避免的是:原子读取和写入访问

  1. 服务器1发送请求以查看用户是否正在更新。
  2. 服务器2发送请求以查看用户是否正在更新。
  3. 服务器1收到回应说用户没有被更新。
  4. 服务器2收到回应说用户没有被更新。
  5. 服务器1开始下载推文。
  6. 服务器2开始下载同一组推文。
  7. 疯狂!

步骤1和步骤3需要组合成原子读取+写入操作,以便步骤2必须等到步骤3完成后再给出响应。是否有一种简单的机制可以有效地提供对多个服务器上的某些东西的“锁定”,类似于Java中的synchronized关键字(但显然分布在所有服务器中)?

+0

到其中服务器1和服务器2发送请求?到单个Web服务,到数据库?您可以使用单个SQL数据库 - 它可以执行您需要的锁定 – nos 2010-07-08 20:02:35

+0

请求将位于AWS实例的本地网络中。你能指点我一个资源解释如何用数据库做这样的事情吗?我目前正在使用MongoDB(我意识到不是SQL),我似乎无法找到一种方法来做到这一点。 – smurthas 2010-07-08 23:36:21

回答