9.5.3. ストアを持つキャッシュが 1 つしかないレプリケートされたキャッシュ
図9.3 2 つのノードのうち 1 つのみがバックエンドストアにアクセス
これは前のケースに似ていますが、 クラスタ内の 1 つのノードのみがキャッシュローダーよりバックエンドストアと対話します。 他のノードはすべてインメモリレプリケーションを実行します。 すべてのアプリケーションステートが各ノードのメモリに保持され、 複数のキャッシュが存在するため、 データの高可用性を実現できます (データが必要なクライアントは 1 つのキャッシュから別のキャッシュへフェールオーバーできることが前提となります)。 クラスタ内のすべてのキャッシュが障害を起こしたり再起動が必要になった場合に、 単一の永続バックエンドストアがデータのバックアップコピーを提供します。
この場合、 データベースへのアクセスなどによってクラスタのパフォーマンスを低下させないために、 キャッシュローダーが呼出側のスレッド上にない変更を非同期に保存するのが適切であると言えるでしょう。 非同期のレプリケーションを使用する場合は問題ありません。
このアーキテクチャの欠点は、 キャッシュローダーにアクセスするキャッシュが単一障害点になることです。 また、 クラスタが再起動された場合、 キャッシュローダーを持つキャッシュを最初に起動する必要があります (忘れがちな点です)。 単一障害点の問題に対応するには、 各ノードにキャッシュローダーを設定し、
singletonStore 設定を true に設定します。 この設定により、 1 つのノードのみが常に永続ストアへ書き込みすることになります。 しかし、 再起動する前にシャットダウンや障害が発生する前に書き込みを行っていたキャッシュを判断し、 そのキャッシュを最初に起動する必要があるため、 再起動の問題が複雑になります。