Amazon dynamodb 集成测试使用不一致读取的DynamoDB客户端?

Amazon dynamodb 集成测试使用不一致读取的DynamoDB客户端?,amazon-dynamodb,eventual-consistency,Amazon Dynamodb,Eventual Consistency,情况: 一个web服务,带有从DynamoDB读取记录的API。它使用最终一致的读取(GetItemdefault模式) 集成测试包括两个步骤: 在DynamoDB中创建测试数据 调用服务以验证它是否返回预期结果 我担心,由于数据的最终一致性,这个测试注定是脆弱的 如果我尝试在写入数据后立即使用GetItem和consistenread=true验证数据,则只能保证数据已写入大多数数据库副本,而不是全部,因此测试中的服务仍有机会在下一步从未更新的副本读取 是否有办法确保数据在继续操作之前已写

情况:

  • 一个web服务,带有从DynamoDB读取记录的API。它使用最终一致的读取(
    GetItem
    default模式)
  • 集成测试包括两个步骤:
    • 在DynamoDB中创建测试数据
    • 调用服务以验证它是否返回预期结果
  • 我担心,由于数据的最终一致性,这个测试注定是脆弱的

    如果我尝试在写入数据后立即使用
    GetItem
    和consistenread=true
    验证数据,则只能保证数据已写入大多数数据库副本,而不是全部,因此测试中的服务仍有机会在下一步从未更新的副本读取


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

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

    我的建议是在调用web服务产生所需结果之前等待几秒钟(即,用Java术语来说,睡眠几秒钟)

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

    最终一致性读取(默认)-最终一致性 选项可最大化您的读取吞吐量。然而,最终 一致读取可能不会反映最近完成的测试的结果 写所有数据拷贝之间的一致性通常在 一秒钟。短时间后重复读取应返回 更新数据