20.2. ライトビハインドキャッシング

Red Hat JBoss Data Grid のライトビハインド (非同期) モードでは、キャッシュの更新が非同期的にキャッシュストアへ書き込みされます。非同期的な更新は、キャッシュと対話するクライアントスレッド以外のスレッドによってキャッシュストアの更新が実行されるようにします。
ライトビハインドモードの主な利点は、キャッシュ操作のパフォーマンスが基礎のストア更新によって影響されないことです。ただし、非同期の更新であるため、キャッシュと比較した場合にキャッシュストアに陳腐データが短期間存在することになります。

20.2.1. スケジュール外のライトビハインドストラテジーについて

スケジュール外のライトビハインドストラテジーモードでは、Red Hat JBoss Enterprise Data Grid は保留の変更を平行して適用し、変更をできるだけ早く保管しようとします。そのため、複数のスレッドが変更の完了を待つことになります。これらの変更が完了すると、スレッドが使用可能になり、基礎のキャッシュストアに適用されます。
このストラテジーは、待ち時間が短く、運用コストが低いキャッシュストアに適しています。例としては、キャッシュストアがキャッシュ自体に対してローカルとなる、共有されていないローカルのファイルベースキャッシュストアなどが挙げられます。このストラテジーを使用すると、キャッシュの内容とキャッシュストアの内容に不整合が生じる時間が、可能な限り最短の間隔まで削減されます。

20.2.2. スケジュール外のライトビハインドストラテジーの設定 (リモートクライアントサーバーモード)

Red Hat JBoss Data Grid のリモートクライアントサーバーモードでライトビハインドストラテジーを設定するには、次のように write-behind 要素をターゲットキャッシュストアの設定に追加します。

手順20.2 write-behind 要素

<file-store passivation="false" 
            path="${PATH}" 
            purge="true" 
            shared="false">
    <write-behind modification-queue-size="1024" 
                  shutdown-timeout="25000"  
                  flush-lock-timeout="15000" 
                  thread-pool-size="5" />
</file-store>
write-behind 要素は次の設定パラメーターを使用します。
  1. modification-queue-size パラメーターは、非同期ストアの変更キューサイズを設定します。更新がキャッシュストアがキューを処理するよりも速く行なわれる場合に、非同期ストアは同期ストアのように動作します。ストアの動作は、キューが要素を許可できるようになるまで同期された状態になり、要素をブロックします。その後ストアの動作は再び非同期になります。
  2. shutdown-timeout パラメーターは、キャッシュストアがシャットダウンするまでのミリ秒単位の時間を指定します。ストアが停止している場合でも、いくらかの変更が依然として適用される必要がある場合があります。タイムアウトの値として大きな値を設定すると、データを損失する可能性が低くなります。このパラメーターのデフォルト値は 25000 です。
  3. flush-lock-timeout パラメーターは、定期的にフラッシュされる状態を保護するロックを取得するための時間 (ミリ秒単位) を指定します。このパラメーターのデフォルト値は 15000 です。
  4. thread-pool-size パラメーターはスレッドプールのサイズを指定します。このスレッドプール内のスレッドによって、変更がキャッシュストアに適用されます。このパラメーターのデフォルト値は 5 です。

20.2.3. スケジュール外のライトビハインドストラテジーの設定 (ライブラリーモード)

キャッシュのストアへのエントリーのライトビハインドストラテジーを有効にするには、以下のように async 要素をストア設定に追加します。

手順20.3 async 要素

<persistence>
    <singleFile location="${LOCATION}">
        <async enabled="true" 
                    modificationQueueSize="1024" 
                    shutdownTimeout="25000" 
                    flushLockTimeout="15000" 
                    threadPoolSize="5"/>
    </singleFile>
</persistence>
async 要素は次の設定パラメーターを使用します。
  1. modificationQueueSize パラメーターは、非同期ストアの変更キューサイズを設定します。更新がキャッシュストアがキューを処理するよりも速く行なわれる場合に、非同期ストアは同期ストアのように動作します。ストアの動作は、キューが要素を受け入れるまで同期が取られた状態のままになり、要素をブロックします。その後ストアの動作は再び非同期になります。
  2. shutdownTimeout パラメーターは、キャッシュストアがシャットダウンされた後の時間 (ミリ秒単位) を指定します。これにより、キャッシュがシャットダウンされた際に非同期ライターがデータをストアへフラッシュする時間が提供されます。このパラメーターのデフォルト値は 25000 です。
  3. flushLockTimeout パラメーターは、定期的にフラッシュする状態を保護するロックを取得するための時間 (ミリ秒単位) を指定します。このパラメーターのデフォルト値は 15000 です。
  4. threadPoolSize パラメーターは、変更をストアに同時に適用するスレッドの数を指定します。このパラメーターのデフォルト値は 5 です。