2010-07-08 115 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

回答