gpt4 book ai didi

amazon-web-services - "Strong Consistency"与 "Read-after-write Consistency"

转载 作者:行者123 更新时间:2023-12-02 07:59:30 31 4
gpt4 key购买 nike

为什么 AWS 在 DynamoDB 中说“强一致性”而在 S3 中说“写后读一致性”?这两个意思是一样的吗?

最佳答案

这两个术语本质上是同一个东西,从某种意义上说,先读后写是一种强一致性。

值得注意的区别在于,DynamoDB 的强一致性包括先读后更新和先读后删除,以及先读后写。 S3 只提供先读后写……所以我们可以说先读后写是强一致性的一个子集。

在 S3 中,一切最终都与一个异常(exception)一致:如果您创建了一个对象并且您之前没有尝试过获取该对象(例如在创建之前检查该对象是否已经存在),那么在创建该对象之后获取该对象将始终返回您创建的对象。这就是 S3 中的先读后写一致性,它在所描述的情况下始终可用——您不必要求 S3 对新对象进行强一致性写后读,因为它始终提供。

S3 中的任何其他操作都没有这种一致性保证。例子:

  • 获取一个不存在的对象,得到一个 404,然后创建它,然后立即尝试再次获取它。您可能会收到,但您可能会在短时间内继续收到 404。
  • 在 S3 中创建一个对象,然后获取存储桶中的对象列表。新对象可能不会立即出现在列表中。
  • 下载一个对象,将其删除,然后再次尝试下载。你可能会在短时间内成功。你最终会得到一个 404。
  • 下载一个对象,然后覆盖它。重新下载。您可能会得到新对象,也可能会在短时间内得到旧对象。您不会得到损坏或不完整的对象,但您可能会得到旧的或新的。

  • 所有这些都是 S3 Consistency Model的方面这是性能优化的结果。

    DynamoDB 也针对性能进行了优化,因此,出于同样的原因,它默认为最终(非强)一致性……但如果需要,您可以在 DynamoDB 中指定强一致性读取。这些带有警告:

    • A strongly consistent read might not be available if there is a network delay or outage. In this case, DynamoDB may return a server error (HTTP 500).

    • Strongly consistent reads may have higher latency than eventually consistent reads.

    • Strongly consistent reads are not supported on global secondary indexes.

    • Strongly consistent reads use more throughput capacity than eventually consistent reads

    https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html

    关于amazon-web-services - "Strong Consistency"与 "Read-after-write Consistency",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59316960/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com