Amazon S3数据一致性模型

时间:2017-11-15 16:23:19

标签: amazon-web-services amazon-s3 amazon

我正在从文档http://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html

中读取Amazon S3数据一致性
  

Amazon S3为新的PUTS提供了读写后一致性   所有区域中的S3存储桶中的对象都有一个警告。警告   如果您对密钥名称发出HEAD或GET请求(以查找是否为   在创建对象之前,对象存在,Amazon S3提供   写后读的最终一致性。

据我所知,Amazon S3在将新对象放入S3存储桶时提供了一致写入一致性。但是在创建对象之前我没有完全理解HEAD和GET请求,这意味着什么?

1 个答案:

答案 0 :(得分:6)

S3的实际内部结构是AWS专有的,但这是一个理论:

当你请求一个对象时,它会进入它的缓存以查看它是否存在。

1)如果它不在缓存中,它会从底层存储中提取数据并将其放入缓存中。

这是写后读写的一致性。您将立即获得新版本。

2)如果它已经在缓存中,则返回数据。

这是更新的写入后写入的最终一致性。您更新对象,然后缓存版本必须在获得新版本之前到期。

3)如果它不在缓存中,并且该对象不存在,则缓存"不存在"结果

这是您要问的行为。就像缓存中的旧数据一样,S3已缓存"密钥不存在"作为"旧数据"。因此,您必须等待缓存过期,然后才能返回实际数据。

同样,任何权威都没有说明这一点。我欢迎任何S3专家纠正或质疑我可能遇到的任何错误。