Concurrency 原子读写访问

Concurrency 原子读写访问,concurrency,Concurrency,在我正在开发的一个web服务中,用户的数据需要在后台更新——例如,下拉并存储他们的推文。由于可能有多台服务器执行这些更新,我希望确保一次只能有一台服务器更新任何单个用户的数据。因此,我认为我需要一种方法来进行原子读取,用户是否已经被更新并写入了no?然后我将开始更新。我需要避免的是: 服务器1发送请求以查看是否正在更新用户。 服务器2发送请求以查看是否正在更新用户。 服务器1收到回复,表示用户未被更新。 服务器2收到回复,表示用户未被更新。 服务器1开始下载推文。 服务器2开始下载同一组twee

在我正在开发的一个web服务中,用户的数据需要在后台更新——例如,下拉并存储他们的推文。由于可能有多台服务器执行这些更新,我希望确保一次只能有一台服务器更新任何单个用户的数据。因此,我认为我需要一种方法来进行原子读取,用户是否已经被更新并写入了no?然后我将开始更新。我需要避免的是:

服务器1发送请求以查看是否正在更新用户。 服务器2发送请求以查看是否正在更新用户。 服务器1收到回复,表示用户未被更新。 服务器2收到回复,表示用户未被更新。 服务器1开始下载推文。 服务器2开始下载同一组tweet。 疯狂!!!
步骤1和3需要合并到一个原子读写操作中,以便步骤2必须等到步骤3完成后才能给出响应。有没有一种简单的机制可以有效地提供跨多台服务器访问某个内容的锁定,类似于Java中的synchronized关键字,但显然分布在所有服务器上?

看看Dekker的算法,它可能会给你一个主意


服务器1和服务器2向何处发送请求?到单个web服务,到数据库?您可以使用单个sql数据库吗?它可以执行所需的锁定。请求将位于AWS实例的本地网络中。你能给我指一个资源,解释如何用数据库做这样的事情吗?我目前正在使用MongoDB,我意识到它不是SQL,我似乎找不到一种方法来使用它。