2017-02-10 54 views
0

現狀:集成測試使用不一致讀取的DynamoDB客戶端嗎?

  1. 一個Web服務與API從DynamoDB讀取記錄。它採用最終一致性讀取(GetItem默認模式)
  2. 集成測試包括兩個步驟:
    • 在DynamoDB創建測試數據
    • 通話服務,以驗證它返回預期的結果

我擔心,由於數據的最終一致性,這個測試必然是脆弱的。

如果我試圖用GetItemwithConsistenRead=true它只是保證了數據已寫入廣大DB副本的寫入後立即驗證數據,但不是全部,所以在測試該服務仍然有機會閱讀從下一步的非更新副本。

有沒有辦法確保數據已被寫入全部 DynamoDB副本在繼續之前?

回答

1

數據通常在中到達所有地理分佈的副本。

我的建議是在調用Web服務之前等待幾秒鐘(即以Java語言來說睡眠幾秒鐘)應該產生所需的結果。

將數據插入DynamoDB表後,在調用Web服務之前等待幾秒鐘。

最終一致讀取(默認) - 最終一致性 選項可以最大化您的讀取吞吐量。但是,最終的一致性讀取可能不會反映最近完成的 寫入的結果。通常所有數據副本的一致性通常在每秒 之內。在短時間後重復讀取應返回更新的數據 。