2017-11-15 5 views
0

私は、ドキュメントからhttp://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.htmlAmazon S3のデータの一貫性モデル

アマゾンS3は1で、すべての地域でごS3バケット内の新しい オブジェクトのPUTSのための書き込み後読み取り一貫性を提供するAmazon S3のデータの一貫性を読んでいます警告。オブジェクトを作成する前に、キー名にHEADまたはGETリクエストを( オブジェクトが存在するかどうかを調べるために)作成すると、Amazon S3はread-after-writeのために最終的な整合性を に提供します。

私は、Amazon S3が新しいオブジェクトをS3バケットに置いている間に読み込み後の書き込みの一貫性を提供することを理解しています。しかし、オブジェクトを作成する前にHEADとGETの要求について注意を払わなかったのはどういう意味ですか? S3の

+0

[最終的な一貫性に関するWerner Vogels](http://www.allthingsdistributed.com/2008/12/eventually_consistent.html) - 主にDynamoDBについてですが、最終的に整合性のあるシステムにも関係します。 –

答えて

1

実際の内部は、AWSが所有しているが、ここでは理論があります:あなたがオブジェクトを要求すると

、それはそれはありますかどうかを確認するためにキャッシュに行くのです。

1)キャッシュにない場合は、データを基になるストレージから取り出し、キャッシュに格納します。

これは、読み込み後の整合性です。すぐに新しいバージョンが手に入ります。

2)キャッシュに既に存在する場合は、データを返します。

これは、の更新の最終的な一貫性です。オブジェクトを更新すると、キャッシュされたバージョンは新しいバージョンを取得する前に期限切れになる必要があります。

3)キャッシュにないオブジェクトが存在しない場合は、「存在しない」結果がキャッシュされます。

これはあなたが求めている動作です。古いデータがキャッシュ内にあるように、S3は「古いデータ」として「キーは存在しません」をキャッシュしています。実際のデータが返される前に、キャッシュが期限切れになるのを待たなければなりません。

この場合も、これはいかなる権限でも述べられていません。私はS3の専門家が私が持っている可能性のあるエラーを訂正または紛争することを歓迎する。

+0

これはあなたがそれを記述したのとまったく同じ方法ではありません。本質的に、存在しないオブジェクトに対する 'GET'または' HEAD'要求は、オブジェクトのインデックスレプリカの内部表現を「不明です。マスターインデックスに尋ねる必要があります」から「マスターインデックスに尋ねました。結果、私はオブジェクトが存在しないことを知っているので、404。 'PUT'からのインデックスの挿入が一旦複製されると、オブジェクトはアクセス可能になります。事前に要求されていない場合、インデックスレプリカは検索を行い、最初の要求で新しいオブジェクトを見つけます。 –

+0

これはまた、最終的な上書きと削除の整合性についても説明します。インデックスの複製が巻き込まれるまで、古い回答は要求を満たすために使用されます。あなたが答えていると思われる唯一の矛盾は、インデックスだけがキャッシュされていると思われることです。 '200 OK'はオブジェクトが永続的に格納されていることを示しており、S3オブジェクトはリージョン内の複数の場所に格納されていることがわかっているため、実際のオブジェクトにはすぐにアクセスできますが、インデックスはそれを調べるために使用されます私はキャッシュと潜在的な複製遅延があると思われるエンティティです。 –

関連する問題