第6章 クラスタリング


キャッシュマネージャーは、ローカル(スタンドアロン)またはクラスター化のいずれかに設定できます。クラスター化すると、マネージャーインスタンスは JGroups の検出プロトコルを使用して、同じローカルネットワーク上の近傍インスタンスを自動的に検出し、クラスターを形成します。

ローカルのみのキャッシュマネージャーの作成は簡単なです。no-argument DefaultCacheManager コンストラクターを使用するか、以下の XML 設定ファイルを指定するだけです。

<infinispan/>
Copy to Clipboard Toggle word wrap

クラスターキャッシュマネージャーを起動するには、クラスター構成を作成する必要があります。

GlobalConfigurationBuilder gcb = GlobalConfigurationBuilder.defaultClusteredBuilder();
DefaultCacheManager manager = new DefaultCacheManager(gcb.build());
Copy to Clipboard Toggle word wrap
<infinispan>
  <cache-container>
    <transport/>
  </cache-container>
</infinispan>
Copy to Clipboard Toggle word wrap

個別のキャッシュは、異なるモードで設定できます。

  • ローカル: 変更と読み取りは複製されません。これは、クラスター化されていないキャッシュマネージャーで使用できる唯一のモードです。
  • Invalidation: 変更はレプリケートされません。代わりに、キーがすべてのノードで無効にされます。読み取りはローカルになります。
  • replicated: 変更はすべてのノードにレプリケートされ、読み取りは常にローカルになります。
  • Distributed (分散): 変更が固定された数のノードに複製され、最低でも 1 つの所有者ノードから値を読み取ります。

6.1. ローカルモード

Red Hat Data Grid はクラスター化モードで特に興味がありますが、非常に多くのローカルモードも提供します。このモードでは、ConcurrentHashMap と同様の単純なインメモリーデータキャッシュとして機能します。

ただし、マップではなくローカルキャッシュを使用するのはなぜでしょうか。キャッシュは、単純なマップよりも多くの機能を提供します。これには、永続ストアへのライトスルーおよびライトビハインド、エントリーのエビクション、メモリー不足や有効期限の発生を防ぐことができます。

Red Hat Data Grid の Cache インターフェースは、JDK の ConcurrentMap ConcurrentMap で Red Hat Data Grid trivial への移行を拡張します。

Red Hat Data Grid キャッシュは、既存のトランザクションマネージャーと統合するか、別のトランザクションマネージャーを実行するか、トランザクションもサポートしています。ローカルキャッシュトランザクションには、2 つの選択肢があります。

  1. ロックのタイミング。悲観的ロックは、書き込み操作時、またはユーザーがAdvancedCache.lock(keys)を明示的に呼び出したときにキーをロックします。楽観的ロックは、トランザクションのコミット中にのみキーをロックし、代わりに、現在のトランザクションがキーを読み取った後に別のトランザクションが同じキーを変更した場合は、コミット時に WriteSkewCheckException をスローします。
  2. 分離レベルread-committed および repeatable read をサポートします。

6.1.1. 簡易キャッシュ

従来のローカルキャッシュは、クラスター化されたキャッシュと同じアーキテクチャーを使用します。つまり、インターセプタースタックを使用します。これにより、多くの実装を再利用できます。ただし、高度な機能が不要でパフォーマンスがより重要な場合は、インターセプタースタックを削除して、単純なキャッシュを使用できます。

そのため、どの機能も削除されますか。設定の観点からは、簡単なキャッシュは以下に対応していません。

  • トランザクションと呼び出しバッチ処理
  • 永続性(キャッシュストアおよびローダー)
  • カスタムインターセプター(インターセプタースタックなし)
  • インデックス化
  • 互換性(組み込み/サーバーモード)
  • バイナリーとして保存(ローカルキャッシュに非常に便利です)

API パースペクティブから、これらの機能は例外をスローします。

  • カスタムインターセプターの追加
  • 分散済みエグゼキューターフレームワーク

そして、何が残っていますか。

  • 基本的なマップのような API
  • キャッシュリスナー(ローカルリスナー)
  • 有効期限
  • eviction
  • security
  • JMX アクセス
  • 統計(ただし、最大のパフォーマンスを得るには、statistics-available=false を使用してこれをオフにすることが推奨されます)

6.1.1.1. 宣言型設定

   <local-cache name="mySimpleCache" simple-cache="true">
        <!-- expiration, eviction, security... -->
   </local-cache>
Copy to Clipboard Toggle word wrap

6.1.1.2. プログラムによる設定

CacheManager cm = getCacheManager();
ConfigurationBuilder builder = new ConfigurationBuilder().simpleCache(true);
cm.defineConfiguration("mySimpleCache", builder.build());
Cache cache = cm.getCache("mySimpleCache");
Copy to Clipboard Toggle word wrap

サポートされていない機能に対する簡単なキャッシュチェック。たとえばトランザクションを使用するよう設定すると、設定検証によって例外が出力されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat