1

私はストレージにデータを書き込むシステムを持っています。データを同期してレプリケートするクラスタにノードを追加することはできますか?

クラスタセットアップでは、データが同期的にレプリケートされた場合、つまり、すべてのノードで更新されたデータを変更する要求があった場合、応答が返されます。

このシナリオではノードを動的に追加できますか?

つまり、2つのノードがあり、いくつかのトランザクションがそのクラスタで実行されているとします。クラスタをまだ実行している状態で3番目のノードを追加することはできますか?

このように新しいノードを追加すると、クラスタの強力な整合性が損なわれませんか?

答えて

0

整合性のあるハッシュ(Wikipedia)を使用すると、データが複数のノード間で適切に複製され、ノードの追加または削除が関連するオーバーヘッドが少なくなり、私はあなたが、リンクThe simple magic of consistent hashing

0

単純化し、概略的な例(多くの可能なバリエーションのひとつ)を通過勧め:

  1. ノードが記録モードに追加されます。クラスタは新しいノードが存在しないかのように動作しますが、このノードに存在する必要があるオブジェクトへの更新も複製します。
  2. 既存のオブジェクトのどれが新しいノードに存在する必要があるかが決定されます。スナップショットは、既存の各ノードで作成され、新しいノードに送信されます。新しいノードはそれらを処理します(ストレージに挿入します)。おそらくバッチモードです。
  3. 記録フェーズ中に蓄積された更新は、新しい更新がまだ記録されている間に新しいノードで再生されます。一部の更新がすでにスナップショットの一部として考慮されている場合は、スキップするか、変更しないでください。
  4. すべての更新が再生され、プロセスにエラーがなければ、クラスタは新しい構成に切り替わります(新しいノードが完全に開始された状態)。新しいノードに常駐すべきオブジェクトの更新は、古い宛先に送信されなくなります。古い宛先からデータが消去されます。
  5. 処理中にエラーが発生した場合、エラーは中止され、場合によっては新たに繰り返される可能性があります。

可能な微調整:古いものといくつかの時間のための新しいノードの新しい設定に切り替える前にして比較結果の両方が返さ

  • クエリ。相違があった場合は中止して調査してください。
  • 新しい設定に切り替える前に、完全な比較(おそらくチェックサム)を行います。
関連する問題