18.5. リモートキャッシュストア
RemoteCacheStore
は、リモート Red Hat JBoss Data Grid クラスターにデータを保存するキャッシュローダーの実装です。RemoteCacheStore
は Hot Rod クライアントサーバーアーキテクチャーを使用してリモートクラスターと通信します。
Hot Rod はリモートキャッシュストアに対して ロードバランシングやフォールトトラレンスを提供します。また、
RemoteCacheStore
とクラスター間の接続を細かく調整する機能も提供します。
18.5.1. リモートキャッシュストアの設定 (リモートクライアントサーバーモード)
以下は、Red Hat JBoss Data Grid のリモートクライアントサーバーモードにおけるリモートキャッシュストアのサンプル設定を示しています。
手順18.17 リモートキャッシュストアの設定
remote-store
要素のパラメーターは次の情報を定義します。
cache
パラメーターは、リモートキャッシュの名前を定義します。定義されない状態のままの場合、デフォルトのキャッシュが代わりに使用されます。<remote-store cache="default">
socket-timeout
パラメーターは、SO_TIMEOUT
で定義される値 (ミリ秒単位) が指定されるタイムアウトでリモート Hot Rod サーバーに適用されるかどうかを設定します。タイムアウト値が0
の場合は、無限のタイムアウトを示します。<remote-store cache="default" socket-timeout="60000">
tcp-no-delay
は、TCP_NODELAY
がソケット接続でリモートの Hot Rod サーバーに適用されるかどうかを設定します。<remote-store cache="default" socket-timeout="60000" tcp-no-delay="true">
hotrod-wrapping
は、リモートストア上でラッパーが Hot Rod に必要となるかどうかを設定します。<remote-store cache="default" socket-timeout="60000" tcp-no-delay="true" hotrod-wrapping="true">
remote-server
要素の単一パラメーターは以下の通りです。outbound-socket-binding
パラメーターは、リモートサーバーのアウトバウンドソケットバインディングを設定します。
<remote-store cache="default" socket-timeout="60000" tcp-no-delay="true" hotrod-wrapping="true"> <remote-server outbound-socket-binding="remote-store-hotrod-server" /> </remote-store>
18.5.2. リモートキャッシュストアの設定 (ライブラリーモード)
手順18.18 リモートキャッシュストアの設定
以下は、Red Hat JBoss Data Grid のライブラリーモードにおけるリモートキャッシュストアのサンプル設定を示しています。
Persistence 要素の設定
passivation
をfalse
に設定した状態で、persistence
要素を作成します。<persistence passivation="false" />
- リモートキャッシュストアの属性を設定するために、
persistence
要素内にremoteStore
要素を作成します。<persistence passivation="false"> <remoteStore xmlns="urn:infinispan:config:remote:6.0" remoteCacheName="default" fetchPersistentState="false" shared="true" preload="false" ignoreModifications="false" purgeOnStartup="false" tcpNoDelay="true" pingOnStartup="true" keySizeEstimate="62" valueSizeEstimate="512" forceReturnValues="false"> </remoteStore> </persistence>
remoteCacheName
属性を追加します。リモート Infinispan クラスターに接続するリモートキャッシュの名前を指定します。リモートキャッシュの名前が指定されないと、デフォルトのキャッシュが使用されます。fetchPersistentState
属性を追加します。true
に設定されると、リモートキャッシュがクラスターに加わる際に永続状態が取り込まれます。複数のキャッシュストアがチェーンされている場合、1 つのキャッシュストアでのみこのプロパティーをtrue
に設定できます。この値のデフォルトはfalse
です。shared
属性を追加します。これは、複数のキャッシュインスタンスがキャッシュストアを共有する場合にtrue
に設定されます。これにより、複数のキャッシュインスタンスが同じ変更内容を個別に書き込むことを避けられます。この属性のデフォルトはfalse
です。preload
属性を追加します。true
に設定されている場合、キャッシュストアデータがメモリーに事前にロードされ、起動後すぐにアクセス可能になります。これをtrue
に設定する不利な点には、起動時間が増えることが挙げられます。この属性のデフォルト値はfalse
です。ignoreModifications
属性を追加します。true に設定されると、この属性は、キャッシュを変更する操作 (例: 配置、削除、消去、保存など) がキャッシュストアに影響を与えることを防ぎます。その結果、キャッシュストアは、キャッシュと同期しなくなります。この属性のデフォルト値はfalse
です。purgeOnStartup
属性を追加します。true
に設定されると、キャッシュストアは起動プロセス時にパージされます。この属性のデフォルト値はfalse
です。tcpNoDelay
属性を追加します。true
に設定されると、これはTCP
NODELAY
スタックをトリガーします。この属性のデフォルト値はtrue
です。pingOnStartup
属性を追加します。true
に設定されると、クラスタートポロジーを取り込むために ping 要求がバックエンドサーバーに送信されます。この属性のデフォルト値はtrue
です。keySizeEstimate
属性を追加します。この値は、データベースに接続するためのドライバーユーザーのクラス名です。この属性のデフォルト値は64
です。valueSizeEstimate
属性を追加します。この値は、値をシリアライズおよびデシリアライズする時のバイトバッファーのサイズです。この属性のデフォルト値は512
です。forceReturnValues
属性を追加します。この属性は、FORCE_RETURN_VALUE
をすべての呼び出しに対して有効にするかどうかを設定します。この属性のデフォルト値はfalse
です。
- サーバー情報をセットアップするために
remoteStore
要素内にservers
要素を作成します。情報を単一サーバーに追加するには、一般的なservers
要素内にserver
要素を追加します。<persistence passivation="false"> <remoteStore xmlns="urn:infinispan:config:remote:6.0" remoteCacheName="default" fetchPersistentState="false" shared="true" preload="false" ignoreModifications="false" purgeOnStartup="false" tcpNoDelay="true" pingOnStartup="true" keySizeEstimate="62" valueSizeEstimate="512" forceReturnValues="false"> <servers> <server host="127.0.0.1" port="19711"/> </servers> </remoteStore> </persistence>
- ホストアドレスを設定するには
host
属性を追加します。 - リモートキャッシュストアで使用されるポートを設定するには
port
属性を追加します。
connectionPool
要素をremoteStore
要素に対して作成します。<persistence passivation="false"> <remoteStore xmlns="urn:infinispan:config:remote:6.0" remoteCacheName="default" fetchPersistentState="false" shared="true" preload="false" ignoreModifications="false" purgeOnStartup="false" tcpNoDelay="true" pingOnStartup="true" keySizeEstimate="62" valueSizeEstimate="512" forceReturnValues="false"> <servers> <server host="127.0.0.1" port="19711"/> </servers> <connectionPool maxActive="99" maxIdle="97" maxTotal="98" /> </remoteStore> </persistence>
maxActive
属性を追加します。これは、一度に各サーバーに設定できるアクティブな接続の最大数を示します。この属性のデフォルト値は-1
であり、これはアクティブな接続の無限な数を示します。maxIdle
属性を追加します。これは、一度に各サーバーに設定できるアイドル状態の接続の最大数を示します。この属性のデフォルト値は-1
であり、これはアイドル状態の接続の無限な数を示します。maxTotal
属性を追加します。これは、組み合わされたサーバーセット内の永続的な接続の最大数を示します。この属性のデフォルト設定は-1
であり、これは接続の無限な数を示します。
18.5.3. リモートキャッシュストアのアウトバウンドソケットの定義
リモートキャッシュストアによって使用される Hot Rod サーバーは、
standalone.xml
ファイルの outbound-socket-binding
要素を使用して定義されます。
standalone.xml
ファイルにおけるこの設定の例は次の通りです。
例18.1 アウトバウンドソケットの定義
<server> ... <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> ... <outbound-socket-binding name="remote-store-hotrod-server"> <remote-destination host="remote-host" port="11222"/> </outbound-socket-binding> </socket-binding-group> </server>