1.4. バックアップストラテジー
Data Grid は、キャッシュへの書き込みが発生すると同時に、クラスター間でデータを複製します。たとえば、クライアントが LON に "k1" と書き込む場合、Data Grid は同時に "k1" を NYC バックアップします。
別のクラスターにデータのバックアップを作成するには、Data Grid は同期または非同期ストラテジーを使用します。
同期ストラテジー
Data Grid がデータをバックアップの場所に複製するとき、ローカルクラスターのキャッシュとリモートクラスターのキャッシュに同時に書き込みます。同期ストラテジーでは、Data Grid は両方の書き込み操作が完了するのを待ってから戻ります。
バックアップ操作が失敗した場合に、Data Grid がローカルクラスターのキャッシュへの書き込みを処理する方法を制御できます。Data Grid は以下を行うことができます。
- 失敗したバックアップを無視し、ローカルクラスターへの書き込みを警告せずに続行します。
- 警告メッセージをログに記録するか、例外を出力し、ローカルクラスターへの書き込みを続行します。
- 失敗したバックアップ操作をカスタムロジックで処理します。
同期バックアップは、楽観的なトランザクションに参加するキャッシュを持つ 2 フェーズコミットもサポートします。バックアップの最初のフェーズはロックを取得します。2 番目のフェーズは変更をコミットします。
クロスサイトレプリケーションのある 2 フェーズコミットは、ネットワーク全体で 2 つのラウンドトリップが必要なため、パフォーマンスに大きく影響します。
非同期ストラテジー
Data Grid がデータをバックアップ場所に複製する場合、操作が完了するのを待たずにローカルキャッシュに書き込みます。
非同期バックアップ操作およびローカルキャッシュへの書き込みは、互いに独立しています。バックアップ操作が失敗した場合は、ローカルキャッシュへの書き込み操作は続行され、例外は発生しません。これが発生すると、Data Grid は、リモートクラスターがクロスサイトビューから切断されるまで、書き込み操作も再試行します。
同期バックアップと非同期バックアップの比較
同期バックアップは、サイト全体でのデータの一貫性を最も強力に保証します。strategy=sync
の場合、cache.put()
呼び出しが返されると、ローカルキャッシュとバックアップの場所で値が最新の状態であることがわかります。
この一貫性のために犠牲となるのがパフォーマンスです。同期バックアップは、非同期バックアップと比較すると、レイテンシーが大幅に高くなります。
一方、非同期バックアップは、クライアントリクエストにレイテンシーを追加しないので、パフォーマンスに影響を及ぼすことはありません。ただし、strategy=async
の場合、cache.put()
呼び出しが返されると、バックアップの場所の値がローカルキャッシュの値と同じであるかどうかを確認できません。