【问题标题】:Integration testing a DynamoDB client which uses inconsistent reads?集成测试使用不一致读取的 DynamoDB 客户端?
【发布时间】:2017-02-10 05:35:56
【问题描述】:

情况:

  1. Web 服务,带有用于从 DynamoDB 读取记录的 API。它使用最终一致的读取(GetItem 默认模式)
  2. 集成测试包含两个步骤:
    • 在 DynamoDB 中创建测试数据
    • 调用服务来验证它是否返回了预期的结果

我担心由于数据的最终一致性,这个测试肯定会很脆弱。

如果我尝试在使用GetItem withConsistenRead=true 写入后立即验证数据,它只能保证数据已写入大部分数据库副本,但不是全部,所以服务待测仍然有机会在下一步读取未更新的副本。

有没有办法在继续之前确保数据已写入所有 DynamoDB 副本?

【问题讨论】:

    标签: amazon-dynamodb eventual-consistency


    【解决方案1】:

    数据通常会在内到达所有地理分布的副本。

    我的建议是等待(即在 Java 术语中睡眠几秒钟)几秒钟,然后调用 Web 服务应该会产生所需的结果。

    将数据插入 DynamoDB 表后,等待几秒钟再调用 Web 服务。

    最终一致性读取(默认)——最终一致性 选项最大化您的读取吞吐量。然而,最终 一致读取可能无法反映最近完成的结果 写。所有数据副本的一致性通常在 一秒。在短时间内重复读取应该返回 更新数据。

    【讨论】:

      猜你喜欢
      • 2013-12-07
      • 1970-01-01
      • 2018-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      相关资源
      最近更新 更多