ヘッダーをスキップ
Oracle® Coherenceスタート・ガイド
リリース3.7.1
B65028-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

9 レプリケーション・キャッシュ・サービス

レプリケートされたキャッシュは、クラスタ内のデータのレプリケーション、並行処理制御およびフェイルオーバーを処理する能力に優れており、これらの処理はすべてメモリー内のデータ・アクセス速度で実行されます。クラスタ化されたレプリケーション・キャッシュとは、文字どおり、すべてのクラスタ・ノードに自身のデータをレプリケートするキャッシュです。

信頼性のあるレプリケーション・キャッシュを構築するには、いくつかの課題があります。その1つは、どのような方法で高いスケーラビリティとパフォーマンスを得るかということです。キャッシュに対する更新はすべてのクラスタ・ノードに送信する必要があり、たとえ同じデータへの更新が同時に複数行われても、最終的にはすべてのクラスタ・ノードのデータが一致している必要があります。また、あるクラスタ・ノードがロックをリクエストしても、すべてのクラスタ・ノードがそれに従う必要はありません。そうしないと、スケーラビリティがきわめて低くなります。ただし、クラスタ・ノードに障害が発生した場合は、すべてのデータおよびロック情報が安全に維持される必要があります。Coherenceは、このようなシナリオをすべて透過的に処理し、Javaアプリケーションに対応する最もスケーラブルで可用性の高いレプリケーション・キャッシュの実装を実現します。

レプリケーション・キャッシュの最大の長所は、そのアクセス速度です。データがそれぞれのクラスタ・ノードにレプリケートされるため、待機せずにデータを利用できます。これをゼロ待機時間アクセスといい、アプリケーションに最高速のデータ・アクセスが要求される状況においては、まさに理想的な機能です。各クラスタ・ノード(JVM)は、自身のメモリーからデータにアクセスします。

図9-1 レプリケーション・キャッシュ環境でのget操作

この図については前の文で説明しています。

一方で、レプリケートされたキャッシュの更新には、他のすべてのクラスタ・ノードに新しいバージョンのデータをプッシュすることが要求されます。

図9-2 レプリケーション・キャッシュ環境でのput操作

この図については前の文で説明しています。

Coherenceにおけるレプリケーション・キャッシュ・サービスの実装は、読取り専用操作をすべてローカルで実行する、並行処理制御操作に使用する他のクラスタ・ノードは最大1つとする、他のすべてのクラスタ・ノードとの通信が要求される操作を更新にのみ制限する、という方法で行われます。これにより、スケーラビリティに優れたパフォーマンスが実現し、すべてのCoherenceサービスと同様に、レプリケーション・キャッシュ・サービスからも透過的で完全なフェイルオーバーおよびフェイルバックが提供されます。

レプリケーション・キャッシュ・サービスの制限事項にも十分な留意が必要です。まず、いかに多くのデータをレプリケーション・キャッシュ・サービスで管理していても、それらのデータはサービスに参加している個々のすべてのクラスタ・ノードに保持されます。つまり、メモリー使用量(Javaヒープ・サイズ)はクラスタ・ノードごとに増加し、パフォーマンスに影響する可能性があります。2つ目は、レプリケートされたキャッシュは、更新頻度が高い場合、クラスタ・サイズの増大に比例して線形には拡張されません。つまり、クラスタ・ノードを増設するに従ってクラスタ内の応答能力が損なわれます。