3.8.1 負荷分散のタイミング
CTMでは,次の2回のタイミングで負荷分散を実行します。
-
createの実行によって,EJBオブジェクトリファレンスを取得するタイミング
このタイミングでは,負荷が軽いCTMデーモンに処理を振り分けるか,createを受け付けたホストのCTMデーモンに優先的に処理を振り分けるかが,create時の選択ポリシーに従って決まります。
-
invokeの実行によって,リモートインタフェースのビジネスメソッドを実行するタイミング
このタイミングでは,負荷が軽いCTMデーモンに処理を振り分けるか,リクエストを受け付けたホストのCTMデーモンに優先的に処理を振り分けるかが,スケジュールポリシーに従って決まります。
クライアントから業務処理プログラムを呼び出す流れと負荷分散のタイミングを,次の図に示します。
図について説明します。
-
EJBクライアントは,各ホストに配置されているグローバルCORBAネーミングサービスに対して,lookupを実行します。
図の場合は,ホストAに対してlookupを実行しています。
グローバルCORBAネーミングサービスには,スケジュールキューのリファレンスが登録されています。図の場合は,ホストAから,登録されていたスケジュールキューのリファレンスが返却されます。
-
取得したリファレンスを使用してcreateを実行します。
図の場合は,ホストAのCTMデーモンに対して,createを実行しています。
このタイミングで,1回目の負荷分散が実行されます。
このとき,create時の選択ポリシーに従って負荷分散が実行されます。
createを受け付けたCTMデーモンは,create時の選択ポリシーに従って,次のどちらかのリファレンスをEJBクライアントに返却します。
-
createを受け付けたホストのCTMデーモンに対応するCTMレギュレータのリファレンス
-
CTMドメイン内の負荷が軽いCTMデーモンに対応するCTMレギュレータのリファレンス
図の場合は,ホストBのCTMレギュレータのリファレンスが返却されます。
-
-
取得したリファレンスを使用して,リモートインタフェースに定義したinvokeまたはremoveを実行します。
図の場合は,ホストBのCTMレギュレータに対して,invokeを実行しています。リクエストは,CTMレギュレータによってCTMデーモンに送信されます。
このタイミングで,2回目の負荷分散が実行されます。
invoke実行時に,スケジュールポリシーに従って負荷分散が実行されます。※
図の場合は,リクエストを受け付けたホストAのCTMデーモンに振り分けられました。振り分けられたリクエストはスケジュールキューに登録されます。実行時には,あらかじめプールされていたEJBオブジェクトのリファレンスと結び付けられて,J2EEサーバの業務処理プログラムを呼び出します。このとき,異常終了したJ2EEサーバやハングアップしてタイムアウトした業務処理プログラムを呼び出すことはありません。
- 注※
-
remove実行時にはスケジュールポリシーは適用されません。
業務処理プログラムからの応答は,リクエストを受け付けたCTMデーモンを経由して,EJBクライアントに返却されます。