4

私たちのウェブサイトで提供する予定の HTML5 アプリのアセットを保存するために、nosql およびドキュメント指向のデータベースを調査し始めています。これは、ファイルシステムにファイルを保存するだけの代わりになることを目的としています。それらは、html、js、css、xml などのテキスト ファイルや、画像、サウンド、フォントなどのバイナリ ファイルなど、Web 用に最適化された小さなファイルになります。

私は耐障害性に興味があるので、私が検討しているソリューション (riak、Cassandra) は結果整合性を使用しています。私は概念を抽象的なレベルで理解していますが、マネージャーや意思決定者と話しているとき、結果整合性が一貫性を保つのにどれくらいの時間がかかるかを実際の言葉で説明することはできません. ミリ秒?秒?分?私はこの分野での経験がないので、これが何を意味するかについて、現実世界での経験を探しています。

さまざまな変数によって構成にかかる正確な時間が決まることは理解していますが、要件をサポートするために構築する必要があるインフラストラクチャの種類を理解し始める必要があります。したがって、私が探しているのは、特定の要件をサポートするためにネットワーク遅延、ノード数などを最適化する必要があるかどうかです。

テストするプラットフォームを選択する段階に到達したいと考えており、特定のソリューションに時間を費やす前に、「いいえ、これはうまくいきません」と言えるようにしたいと考えています.

現在、厳密な整合性を使用するシステム (Web サーバーのファイルシステムや mysql データベースなど) があるため、管理は負荷やタイムアウトなどの概念や「ダウン」状態に慣れています。しかし、私は彼らに「はい、データは現在利用できませんが、ダウンしていません。いずれ利用可能になるでしょうと伝えることができません。彼らは「「最終的に」とはどのくらいの期間か」を知りたがっています。

最終的に一貫性のあるシステムが実際に Web サイトで機能するかどうかは、どうすればわかりますか?

4

1 に答える 1

3

私は Cassandra よりも Riak にかなり精通しているため、Riak に結果整合性がどのように適用されるかについての議論に限定します。

通常の操作中、Riak は調整可能な一貫性をサポートします。これにより、アプリケーションの要件に合わせて一貫性の動作を調整できます。ただし、既定の設定は非常に賢明であり、ほとんどのシナリオで機能します。読み取りまたは書き込みが成功したと見なされるには、大多数のレプリカが応答する必要があります。

すべてのレプリカがすべての時点でまったく同じ状態にあるとは限りませんが、これらの一貫性の設定により、書き込み内容を確実に読み取ることができます。不一致は伝統的にread-repairと呼ばれるプロセスを通じて読み取り時に修正されますが、アクティブなアンチエントロピー (Riak のバージョン 1.3 の新機能) が有効になっている場合は定期的に修正することもできます。

それ以外の場合、結果整合性は、主にさまざまな障害シナリオで考慮されます。たとえば、ノードがクラスターの残りの部分から分離された場合、(デフォルト設定で) 引き続き書き込みと読み取りを受け入れることができ、保持するデータ/レプリカに応じて最大限の能力を発揮します。この間、クラスタの残りの部分と通信できないため、不整合が発生する可能性があります。ただし、クラスターが通常の動作状態に戻ると、これらは解決されます。これにかかる正確な時間は、多くの外的要因によって異なり、一時的なネットワーク障害の場合は数分の 1 秒から、問題を修正するために手動の介入が必要な場合は数分または数時間に及ぶ可能性があります。

于 2013-03-23T13:27:20.647 に答える