6.4. 状態の転送 (State Transfer)


状態転送は、基本的なデータグリッドまたはクラスター化キャッシュ機能です。状態転送を使用しないと、ノードをクラスターに追加する場合やノードをクラスターから削除する場合にデータが失われます。
状態転送により、キャッシュメンバーシップでの変更に応じてキャッシュの内部状態が調整されます。変更は、ノードが参加または脱退したとき、2 つ以上のクラスターパーティションがマージしたとき、参加、脱退、およびマージが実行されたときに行われます。状態転送は、ノードがクラスターに参加したときやクラスターから脱退したときに必ず Red Hat JBoss Data Grid で自動的に実行されます。
Red Hat JBoss Data Grid のレプリケーションモードでは、キャッシュに参加する新しいノードは既存のノードから全体のキャッシュ状態を受け取ります。分散モードでは、新しいノードは既存のノードから一部の状態のみを受け取り、既存のノードは各キーの numOwners コピーをキャッシュに保持するために一部の状態を削除します (整合的なハッシュによって決定されます)。インバリデーションモードでは、最初の状態転送はレプリケーションモードと似ており、唯一の違いはノードの状態が同じであることが保証されないことです。ノードが脱退すると、レプリケーションモードまたはインバリデーションモードでキャッシュが状態転送を実行しません。分散キャッシュは、各キーの numOwners コピーを保持するために、脱退するノードに格納されたキーの追加コピーを作成する必要があります。
状態転送では、デフォルトでインメモリ状態と永続状態の両方が転送されます。ただし、両方の状態は設定で無効にできます。

6.4.1. 非ブロッキング状態転送

Red Hat JBoss Data Grid における非ブロック状態転送は、状態転送が実行中であるためクラスターまたはノードが応答できない時間を最小化します。非ブロック状態転送はアーキテクチャー上の大きな機能向上であり、その目的は以下のとおりです。
  • 状態転送が実行中であるためクラスター全体が要求に応答できない時間を最小化します。
  • 状態転送が実行中であるため既存のメンバーが要求への応答を中止する時間を最小化します。
  • 状態転送を実行することを可能にします (クラスターのパフォーマンスが低下します)。ただし、状態転送時にパフォーマンスが低下すると、例外がスローされず、プロセスを続行できます。
  • 状態転送の実行中に null 値を返さずに GET 操作が別のノードからキーを正常に取得することを許可します。
簡素化のために、総オーダーベースコミットプロトコルは、現在実装されている状態転送メカニズムのブロックバージョンを使用します。通常の状態転送と総オーダー状態転送の主な違いは、以下のとおりです。
  • ブロックプロトコルは、状態転送中にトランザクション配信をキューに格納します。
  • 状態転送制御メッセージ (CacheTopologyControlCommand など) は、総オーダー情報に基いて送信されます。
総オーダーベースコミットプロトコルは、すべてのトランザクションが同じオーダーで配信され、同じデータセットを認識することを前提として動作します。したがって、トランザクションは、すべてのノードでメモリーに最新のキーまたは値が含まれる必要があるため、状態転送中に検証されません。
状態転送とブロックプロトコルをこのように使用すると、すべてのノードでの状態転送とトランザクション配信を同期できます。ただし、状態転送にすでに関係があるトランザクション (状態転送が始まる前に送信され、状態転送が終了した後に配信されたトランザクション) は再び送信する必要があります。再送信された場合、これらのトランザクションは新しい参加者として扱われ、新しい総オーダー値が割り当てられます。

6.4.2. JMX による状態転送の抑制

保守を行うためにクラスターの停止および再起動を行うにあたり、JMX を使用して状態転送を抑制することができます。この操作は、より効率的なクラスターのシャットダウンと起動を許可し、グリッドを停止する際のメモリー不足のエラーの発生リスクを取り除きます。
新規ノードがクラスターに参加し、再調整が抑制される際に、getCache() 呼び出しは、再調整が再度有効にされないか、または stateTransfer.awaitInitialTransferfalse に設定されない限り、stateTransfer.timeout が期限切れになった後にタイムアウトになります。
状態転送および再調整を無効にすることは、部分的なクラスターのシャットダウンや再起動の場合に有効ですが、状態転送が無効にされているために部分的なクラスターのシャットダウンでデータが失われる可能性があります。

6.4.3. rebalancingEnabled 属性

再調整の抑制は、rebalancingEnabled JMX 属性によってのみトリガーでき、これには特定の設定は不要です。
rebalancingEnabled 属性は、いずれのノードでも LocalTopologyManager JMX Mbean から、クラスター全体に対して変更することができます。この属性はデフォルトではtrue であり、プログラムを使って設定することができます。
Hot Rod などのサーバーは、起動時に設定で宣言されるすべてのキャッシュを起動するよう試みます。再調整が無効にされる場合、キャッシュは起動に失敗します。そのため、サーバー環境で以下の設定を使用することが必須になります。
<await-initial-transfer="false"/>
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.