1

私はこの問題に遭遇しましたが、これまでのところ、唯一の解決策はより強力な一貫性モデルのようです。サービスは、結果整合性を提供する Amazon S3 です。BLOB ストレージのバックエンドとして使用します。

問題は、アプリケーションにメッセージング パターンを導入したことです。そのメリットに疑いの余地はありません。ただし、より強い整合性が求められるようです。シナリオ:

  1. サブシステムはユーザーからデータを取得します
  2. データはS3に保存されます
  3. メッセージが送信されます
  4. メッセージは別のサブシステムによって受信されます
  5. データはS3から読み込まれます
  6. ...コオロギ。これは古いデータですか?時々そうです。

そう。S3からの一貫性のない読み取りを避けるために、メッセージでデータを送信することは明らかです。メッセージが不必要に大きくなり、レシーバーがビジー状態またはダウン状態になり、新しいデータが既に利用可能であるにもかかわらず遅れてメッセージを受信すると、メッセージは失敗します。

これに対する解決策はありますか? それとも、RDBMS や MongoDB のようなより一貫性のあるバックエンドのために S3 をダンプする必要があるのでしょうか?

4

1 に答える 1

0

シナリオで、(常に新しいオブジェクトを作成することにより) 新しいキーの下で S3 にデータを常に書き込むことができる場合は、Amazon の読み取り後の書き込みの一貫性を利用できます。

この一貫性モデルを説明する Amazon の説明は次のとおりです。

米国西部 (北カリフォルニア)、欧州 (アイルランド)、アジアパシフィック (シンガポール)、およびアジアパシフィック (東京) リージョンの Amazon S3 バケットは、新しいオブジェクトの PUTS の書き込み後の一貫性と、上書きの PUTS および DELETES の結果整合性を提供します。 . 米国標準リージョンの Amazon S3 バケットは、結果整合性を提供します。

于 2011-11-03T08:18:03.530 に答える