この章では、Coherenceでサポートされているネットワーク・プロトコルについて説明します。
Coherenceでは、サーバーの検出、クラスタ管理、サービス・プロビジョニングおよびデータ転送に、クラスタ化されたIPベースのプロトコルであるTCMPが使用されます。真のスケーラビリティを実現するため、サーバー上で多数のスレッドが同時に通信している場合でも、TCMPプロトコルは完全に非同期であり、通信がブロックされることはありません。さらに、非同期の特性により、ネットワークの待機時間(2つの異なるサイト間でルーティングされたネットワーク上など)が特定の操作の速度に影響を与える場合でも、クラスタ・スループットに影響を与えることはありません。
TCMPでは、UDP/IPマルチキャスト、UDP/IPユニキャストおよびTCP/IPを次のように組み合せて使用しています。
マルチキャスト
クラスタ検出: 新しいメンバーが参加できるクラスタが実行されているかを検出します。
クラスタ・ハートビート: マルチキャストを通じてクラスタの最も古いメンバーからハートビートが定期的に送信されます。その頻度は構成可能で、デフォルトでは1秒間に1回に設定されています。
メッセージ配信: 複数のクラスタ・メンバーへの配信が必要なメッセージは、マルチキャストを通じて送信されることがよくあります。一方、ユニキャストを使用すると、メッセージは一度に1人のメンバーに送信されます。
ユニキャスト
直接的なメンバー間(Point-to-Point)通信。メッセージ、非同期の肯定応答(ACK)、非同期の否定応答(NACK)およびPeer-to-Peerハートビートなどがあります。
状況によっては、複数のメンバーを対象とするメッセージでも、ユニキャストを通じて送信されることがあります。これは、非常に大きなクラスタでトラフィック・フローを形成したりCPUの負荷を軽減するために実行されます。
TCP
オプションのTCP/IPリングを追加の停止検出メカニズムとして使用し、JVMがフルGCを実行する場合などに、実際のノード障害と無応答ノードとを識別します。
TCP/IPは、このプロトコル固有のオーバーヘッドおよびその同期性により、データ転送メカニズムとしては使用されません。
TCMPプロトコルは、あらゆるメッセージについて信頼性の高いインオーダー配信を実現します。基盤となるUDP/IPプロトコルでは信頼性のある配信やインオーダー配信ができないため、TCMPでは、キュー型の完全非同期ACKおよびNACKに基づいたメカニズムと、メッセージの確実な順序付けに不可欠な一意のIDを使用して信頼性のあるメッセージ配信を実現しています。
TCMPプロトコルには、クラスタ・サイズに関係なく、JVMごとに2つのUDP/IPソケット(それぞれマルチキャストおよびユニキャスト用)および6つのスレッドのみが必要です。これはCoherenceのスケーラビリティに主要な要素です。これにより、サーバー数に関係なく、クラスタの各ノードが追加のネットワーク接続を必要とせずに、Point-to-Pointで、または一群のクラスタ・メンバーと通信できます。
オプションのTCP/IPリングでは、TCP/IPソケットをいくつか追加で使用し、全体で1つのスレッドが追加されます。
TCMPプロトコルは非常にチューニング性が高いため、特定のネットワーク・トポロジを利用したり、地理的に分散されたクラスタ内の低帯域幅および長待機時間のセグメントの両方に公差を追加できます。Coherenceには出荷時の初期設定の構成があります。一部のTCMP属性は実行時に動的に自己構成されますが、デプロイ目的でオーバーライドやロックダウンすることもできます。
マルチキャストUDP/IPパケットは、そのパケットがネットワーク上を移動する範囲を指定するTime-to-Live(TTL)値を使用して構成されます。TTLは、パケットが存続するホップ数で表されます。各ネットワーク・インタフェース、ルーターおよびマネージド・スイッチが1ホップと見なされます。Coherenceには、マルチキャスト・メッセージの有効範囲を制限するTTL設定が用意されています。