【发布时间】:2017-08-14 21:56:56
【问题描述】:
亚马逊文档 (http://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel) 指出:
“Amazon S3 为所有区域的 S3 存储桶中的新对象的 PUTS 提供了先读后写的一致性,但有一点需要注意。”
忽略警告,这意味着客户端在对新对象执行 PUT 之后发出 GET 可以保证获得正确的结果。我的问题是,如果 GET 是从不同的客户端而不是执行 PUT 的客户端发出的(当然假设 GET 按时间顺序跟随 PUT),该保证是否也适用?换句话说,写后读一致性只是读你写一致性还是适用于所有客户端?
我怀疑答案是它在全球范围内有效,但找不到明确的答案。
【问题讨论】:
-
这个问题实际上比看起来更难,涉及光速和狭义相对论,不是开玩笑。问题是要确定一个客户端发出 GET before 还是 after 另一个客户端。问题是只能确定一个特定的精度限制,这取决于客户端之间的距离。不可能以任意精度及时订购他们的请求,例如他们可以互相“追随”。这就是为什么通常从一个客户或某个“大师”的角度来讨论并发性。
-
嘿,你的问题已经有一段时间了,但在互联网上找不到太多。您是否能够确定这不是 read-after-your-write 事情?
-
是的,我确实确认过,它确实适用于全球所有客户。
-
那么这与最终一致性有何不同?
标签: amazon-web-services amazon-s3 eventual-consistency