19.2. サービスアーキテクチャー

各ノードで JGroups 設定によって定義されるクラスタリングのトポグラフィはシステム管理者にとって非常に重要となります。 アプリケーション開発者の場合は、 クライアントアプリケーションの観点から見るクラスターアーキテクチャーの方が関心が高いと思います。 JBoss Enterprise Application Platform ではクライアント側インターセプター (スマートプロキシまたはスタブとも呼ばれます) と外部ロードバランサーの 2 つの基本クラスタリングアーキテクチャーが使用されています。 アプリケーションが使用するアーキテクチャーは、 クライアントのタイプによって異なります。

19.2.1. クライアント側インターセプターアーキテクチャー

JNDI、EJB、JMS、RMI、JBoss Remoting などの JBoss Enterprise Application Platform によって提供されるリモートサービスの多くは、クライアントによるリモートプロキシオブジェクトの取得 (ルックアップやダウンロードなど) を必要とします。 プロキシオブジェクトはサーバーによって生成され、 サービスのビジネスインターフェースを実装します。 次にクライアントはプロキシオブジェクトに対してローカルメソッド呼び出しを行います。 プロキシは自動的に呼び出しをネットワーク全体にルーティングし、 サーバー内で管理されるサービスオブジェクトに対して呼び出されます。 プロキシオブジェクトは、 適切なサーバーノードやマーシャル呼び出しパラメーター、 アンマーシャル呼び出し結果を検索する方法を見いだし、 結果を呼び出し側クライアントに返します。 クラスター化された環境では、 サーバーによって生成されたプロキシオブジェクトには、 クラスター内の複数のノードに呼び出しをルーティングする方法を認識するインターセプターが含まれています。
プロキシのクラスタリング論理はクラスターに関する最新のナレッジに対応しています。 例えば、 使用可能な全サーバーノードの IP アドレス、 ノード全体に負荷を分散させるアルゴリズム (次項を参照)、 目的のノードが使用できない場合に要求をフェイルオーバーする方法などを認識しています。 各サービス要求を処理する際にクラスタトポロジが変更されると、 サーバーノードはクラスター内の最終変更にてプロキシを更新します。 例えば、 クラスターからノードがドロップアウトすると、次にクラスタのアクティブなノードに接続した時に各プロキシが新しいトポロジで更新されます。 プロキシのクラスタリング論理で行われる操作はすべてクライアントアプリケーションに対して透過的となります。 図19.2「クラスタリング用クライアント側インターセプター (プロキシ) アーキテクチャー」 は、 クライアント側のインターセプタークラスタリングアーキテクチャーになります。
クラスタリング用クライアント側インターセプター (プロキシ) アーキテクチャー

図19.2 クラスタリング用クライアント側インターセプター (プロキシ) アーキテクチャー