0

書き込みと読み取りを地理的な場所のいくつかで行うことができるデータシステムがあります。これらの場所の間のネットワーク遅延は高くなります(いくつかの大陸を横断しますが、これほど遅くはありません)。特に編集を意味のある形でマージできないため、「最後の書き込みの勝利」の競合解決を維持できます。

理想的には、高速なローカル読み取りと書き込みを可能にし、バックグラウンドでの低速接続を介したレプリケーションと書き込みの伝播に対処する分散システムを使用したいと思います。VoldemortやCassandraなどのデータセンター対応機能はこれを実現しますか?

これか、おそらく rsyncのようなものを使用して書き込みを収集し、競合解決を自分で分類することに基づいて、独自にロールします。

4

2 に答える 2

0

Voldemortを使用して、探している動作を取得できるはずです。(私はカサンドラと話すことはできませんが、それを使用して同様に可能であると想像してください。)

構成の主な設定は次のとおりです。

  • Replication-factor —これはデータが保存された合計回数です。各putまたはdelete操作は、最終的にこの数のノードにヒットする必要があります。レプリケーション係数nは、データを失うことなく最大n-1ノードの障害に耐えることができることを意味します。

  • required-reads —例外をスローせずに成功できる読み取りの最小数。

  • required-writes —クライアントが例外を返さずに成功できる書き込みの最小数。

したがって、状況に応じて、レプリケーションは冗長性要件に適した数に設定され、required-readsrequired-writesの両方が1に設定されます。読み取りと書き込みはすぐに戻り、同時に失効または紛失のリスクがあります。データ、およびデータは後で他のノードにのみ複製されます。

于 2012-07-23T22:10:13.877 に答える
0

私はヴォルデモートの経験がないので、カサンドラについてしかコメントできません。

DC間レイテンシが数ミリ秒を超える複数のデータセンターにCassandraを導入できます(http://spyced.blogspot.com/2010/04/cassandra-fact-vs-fiction.htmlを参照)。

ローカル読み取りを高速化するために、各データセンターの特定の数のノードにデータを複製するようにクラスターを構成できます(「ネットワークトポロジ戦略」を参照)。たとえば、各データセンターに常に2つのレプリカが存在するように指定します。そのため、データセンターでノードを失った場合でも、ローカルでデータを読み取ることができます。

書き込みリクエストは、Cassandraクラスター内の任意のノードに送信できます。したがって、高速書き込みの場合、クライアントは常にローカルノードと通信します。リクエストを受信するノード(「コーディネーター」)は、バックグラウンドで他のノード(他のデータセンター内)にデータを複製します。ノードがダウンしている場合でも、書き込み要求は成功し、コーディネーターは後で障害が発生したノードにデータを複製します(「ヒント付きハンドオフ」)。

競合の解決は、クライアントが提供するタイムスタンプに基づいています。

結果整合性以上のものが必要な場合、Cassandraはいくつかの整合性オプション(データセンター対応オプションを含む)を提供します。

于 2012-07-29T12:53:40.053 に答える