2.13. クラスターのバックアップおよび障害復旧
全体的な CPU とメモリー割り当てに関しては通常、クロスサイトレプリケーションを実行する Data Grid クラスターは "非対称" です。サイジングに、クロスサイトレプリケーションを考慮する場合に、主な考慮事項は、クラスター間の状態遷移の操作による影響です。
たとえば、NYC の Data Grid クラスターはオフラインになり、クライアントは LON の Data Grid クラスターに切り替えるとします。NYC のクラスターがオンラインに戻ると、LON から NYC への状態遷移が発生します。この操作はクライアントから古い内容を読み取らないようにすることができますが、状態遷移を受信するクラスターのパフォーマンスが低下します。
状態遷移操作が必要とする処理量が増加した分をクラスター全体に分散できます。ただし、状態遷移操作によるパフォーマンスへの影響は、データセットのタイプやサイズなどの環境や要素により全く異なります。
Active/Active デプロイメントの競合解決
Data Grid は、複数のサイトがクライアント要求を処理すると (Active/Active のサイト設定と呼ばれる)、同時書き込み操作による競合を検出します。
次の例では、LON データセンターと NYC データセンターで実行されている Data Grid クラスターで、同時書き込みの結果、エントリーが競合する様子を示しています。
Active/Active のサイト設定では、同時書き込みがデッドロックになり、データが損失するので、同期バックアップストラテジーを使用しないでください。非同期バックアップ戦略 (strategy=async) を使用すると、Data Grid では、同時書き込みの処理に、クロスサイトマージポリシーを選択できます。
パフォーマンスの面では、Data Grid が競合解決に使用するマージポリシーでは、追加の計算が必要ですが、通常は大きなペナルティーは発生しません。たとえば、デフォルトのクロスサイトマージポリシーは、辞書式比較 (または "文字列の比較") を使用しており、完了するまでに数ナノ秒しかかかりません。
Data Grid では、クロスサイトマージポリシーの XSiteEntryMergePolicy SPI も提供します。Data Grid がカスタム実装との競合を解決するように設定するには、常にパフォーマンスを監視して悪影響がないかを監視する必要があります。
XSiteEntryMergePolicy SPI は、非ブロッキングスレッドプールのマージポリシーをすべて呼び出します。ブロッキングのカスタムマージポリシーを実装すると、スレッドプールをすべて使い切ってしまう可能性があります。
複雑なポリシーまたはブロックポリシーを異なるスレッドに委譲する必要があり、この実装では、マージポリシーが他のスレッドで完了した時点で、終了する CompletionStage を返す必要があります。