NodeSync:連続的なバックグラウンド・リペア

NodeSyncは、オーバーヘッドが少なく、一貫したパフォーマンスを提供し、DataStaxクラスターでリペア操作を実行するための手動作業を事実上無くした、連続的なバックグラウンド・リペアを容易に使用できます。

NodeSyncは、オーバーヘッドが少なく、一貫したパフォーマンスを提供する、連続的なバックグラウンド・リペアを容易に使用できます。

  • すべてのレプリカでデータが同期していることを継続的に検証
  • 常に実行しているが、クラスターのパフォーマンスへの影響は少ない
  • 完全自動で、手動介入は不要
  • アンチエントロピー・リペアを完全に置き換える

NodeSyncサービス

デフォルトでは、各ノードはNodeSyncサービスを実行します。何かを検証するまで、サービスはアイドル状態です。NodeSyncは、各テーブルで個別に有効化/無効化されます。このサービスは、NodeSyncが有効にされているテーブルのローカル・データ範囲を継続的に検証し、不整合が見つかった場合はリペアします。このローカル・データ範囲は小さなセグメントに分割され、検証保存ポイントとして機能します。セグメントは、テーブルごとのデッドラインの目標を満たすために優先順位付けされます。

セグメント

セグメントは、テーブルの小さなローカル・トークン範囲です。これは、ローカル範囲を一定回数(深さ)の半分に再帰的に分割することによってNodeSyncによって作成されます。合計テーブル・サイズを使用して計算された深さにより、データの均等な分布を想定して、200 MB以下のセグメントが作成されます。トークン範囲は単一パーティションよりも小さくできないため、パーティションが非常に大きくなると、構成されたサイズよりも大きなセグメントが発生する可能性があります。

検証プロセスとステータス

検証用にセグメントが選択された後、NodeSyncは、すべてのレプリカから、対象のデータ全体を読み取り(ページングを使用して)、不整合をチェックし、必要に応じてリペアします。ノードがセグメントを検証するときに、他のノードによる作業の重複を避けるために、そのセグメントをシステム・テーブルに「ロック」します。これは競合のないロックではありません。重複した作業の可能性があり、真の分散ロックの複雑さとコストを節約します。セグメント検証は完了時にsystem_distributed.nodesync_statusテーブルに保存され、これは、障害、優先順位付け、セグメント・ロック、およびツールによる再開用に内部で使用されます。直接読み取ることを意図していません。