同時s3書き込みに問題があると思います。2つ(またはそれ以上)のプロセスが、ほぼ同じコンテンツを同じs3の場所に同時に書き込んでいます。この状況がどのように実行されるかを管理する並行性ルールを決定したいと思います。
設計上、s3への書き込み中に1つを除くすべてのプロセスが強制終了されます。(1つを除くすべてのプロセスが強制終了されるため、「ほぼ」同じコンテンツを書き込んでいると言っていました。すべてのプロセスの存続が許可された場合、まったく同じコンテンツを書き込むことになります。)
私の理論では、プロセスが強制終了されると、s3に不完全なファイルが残り、他のファイル(おそらく完全に書き込まれた)がs3に存在するファイルとして選択されていません。この理論を証明または反証したいと思います。(問題の原因がs3への書き込み中の同時実行の問題なのか、それとも他の時間なのかを調べようとしています)。
http://aws.amazon.com/s3/faqs/のFAQから:
Q:Amazon S3はどのようなデータ整合性モデルを採用していますか?
米国西部(オレゴン)、米国西部(北カリフォルニア)、EU(アイルランド)、アジア太平洋(シンガポール)、アジア太平洋(東京)、アジア太平洋(シドニー)、南アメリカ(サンパウロ)の各地域のAmazon S3バケットは、読み取りを提供します-新しいオブジェクトのPUTSの書き込み後の一貫性、およびPUTSとDELETEの上書きの結果整合性。米国標準リージョンのAmazonS3バケットは、結果整合性を提供します。
米国標準地域を使用しています。
- この回答は、同時書き込みについて何と言っていますか?「書き込み後の読み取りの整合性」と「結果整合性」の違いは理解できたと思いますが、書き込みが完了した直後にオブジェクトを読み取ったときに表示されるコンテキストでのみです。
- 強制終了されたプロセスが「勝ち」、その結果、s3でファイルが不完全になる可能性はありますか?または、s3は、PUT操作全体が完了した場合にのみファイルがs3に配置されることを何らかの方法で保証しますか?
- s3はどのファイルが「勝つ」かをどのように決定しますか?これがここでの本当の質問です。