2.1.6 マルチスケジューラ機能を使用したRPC
CUP.NETからスケジュールキューを使うSPP(キュー受信型サーバ)にサービスを要求した場合,要求先SPPがあるノードのスケジューラデーモンが,いったんサービス要求メッセージを受信し,該当するSPPのスケジュールキューに格納します。スケジューラデーモンとは,スケジュールサービスを提供するシステムデーモンのことです。
長大なサービス要求メッセージは,一定の長さに分割してスケジューラデーモンに送信します。スケジューラデーモンは,サービス要求メッセージを組み立ててキュー受信型サーバのスケジュールキューに格納します。スケジューラデーモンは,OpenTP1システムごとに1プロセスです。そのため,分割されたサービス要求メッセージの受信処理が完了するまで,スケジューラデーモンはほかのサービス要求メッセージを受信できません。通信速度が遅い回線を使用して,長大なサービス要求メッセージを送信した場合,ほかのサービス要求のスケジューリングが遅延することがあります。また,システムの大規模化,マシンやネットワークの高性能化などに伴って,効率良くスケジューリングできないことがあります。この場合,従来のスケジューラデーモンとは別に,サービス要求受信専用デーモンを複数プロセス起動し,サービス要求メッセージ受信処理を並行動作させることによって,スケジューリング遅延を回避できます。この機能をマルチスケジューラ機能といいます。以降,従来のスケジューラデーモンをマスタスケジューラデーモン,サービス要求受信専用デーモンをマルチスケジューラデーモンと呼びます。
マルチスケジューラ機能の検討が必要なシステム構成については,マニュアル「OpenTP1 プログラム作成の手引」を参照してください。
(1) マルチスケジューラデーモンをランダムに選択する方法
マルチスケジューラ機能を使用することで,複数起動されているマルチスケジューラデーモンの中から,利用できるマルチスケジューラデーモンをランダムに選択してサービス要求を送信できます。マルチスケジューラデーモンをランダムに選択して,スケジューラダイレクト機能,またはネームサービスを使用したRPCを実行できます。
(a) スケジューラダイレクト機能を使用したRPC
Client .NET構成定義の<rpc>要素のuse属性にscdを指定して,スケジューラダイレクト機能を使用したRPCを行う場合について説明します。
Client .NETでは,窓口となるTP1/Serverのネームサービスへ問い合わせることなく,マルチスケジューラデーモンをランダムに選択できるため,通信回数が削減されます。これによって,ネームサービスの負荷の軽減もできます。
サービス要求を送信するマルチスケジューラデーモンのポート番号は,次に示す範囲の値からランダムに選択されます。
-
下限値:Client .NET構成定義の<tp1Server>要素のport属性,または<scheduleService>要素のport属性に指定したポート番号の値
-
上限値:下限値 + Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性に指定したプロセス数 - 1
Client .NET構成定義の<tp1Server>要素のport属性,または<scheduleService>要素のport属性には,マルチスケジューラデーモンのポート番号を指定します。マスタスケジューラデーモンとマルチスケジューラデーモンのベースとなるポート番号が連続している場合は,マスタスケジューラデーモンのポート番号を指定することもできます。Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性には,TP1/Serverで起動しているスケジューラデーモンのプロセス数を指定します。Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性に指定するプロセス数は,<tp1Server>要素のport属性,または<scheduleService>要素のport属性に指定するポート番号によって,次のように異なります。
<tp1Server>要素のport属性,または<scheduleService>要素のport属性の指定値 |
<scheduleService>要素のmultiSchedulerCount属性の指定値 |
|
---|---|---|
マルチスケジューラデーモンのベースとなるポート番号 |
マルチスケジューラデーモンのプロセス数と同じ値,またはそれ以下の値を指定します。 |
|
マルチスケジューラデーモンの任意のポート番号 |
「マルチスケジューラデーモンのポート番号の最大 - <tp1Server>要素のport属性,または<scheduleService>要素のport属性に指定したポート番号 + 1」の値,またはそれ以下の値を指定します。 |
|
マスタスケジューラデーモンのポート番号 |
マスタスケジューラデーモンとマルチスケジューラデーモンのベースとなるポート番号が連続している場合 |
「マルチスケジューラデーモンのプロセス数 + 1」の値,またはそれ以下の値を指定します。 |
上記以外 |
1を指定するか,または指定を省略します(マルチスケジューラデーモンは使用できません)。 |
なお,Client .NET構成定義の<tp1Server>要素で指定した窓口となるTP1/Server間で,スケジュールサービス定義のscdmultiで指定した値を統一する必要があります。
(b) ネームサービスを使用したRPC
マルチスケジューラ機能を使用して,ネームサービスを使用したRPCを行う場合について説明します。サービス情報を一時的に格納する領域に,該当するサービス情報がないときはネームサービスにサービス情報を問い合わせます。サービス情報を基にマルチスケジューラデーモンをランダムに選択してサービス要求を送信します。
(2) Client .NET構成定義とサービス要求を送信するスケジューラデーモンの関連
マルチスケジューラ機能を使用した場合,サービス要求を送信するスケジューラデーモンはClient .NET構成定義の指定によって異なります。
スケジューラダイレクト機能を使用したRPCの場合の,Client .NET構成定義の指定とスケジューラデーモンの関連を次の表に示します。
Client .NET構成定義の指定 |
サービス要求を送信するスケジューラデーモン |
||
---|---|---|---|
<rpc>要素のuse属性 |
<rpc>要素のuseMultiScheduler属性 |
<scheduleService>要素のmultiSchedulerCount属性 |
|
scd |
true |
2以上の値 |
ランダムに選択したスケジューラデーモン※ |
1,または指定を省略する |
Client .NET構成定義の<tp1Server>要素のport属性,または<scheduleService>要素のport属性に指定したポート番号で起動されているスケジューラデーモン |
||
false |
無効 |
Client .NET構成定義の<tp1Server>要素のport属性,または<scheduleService>要素のport属性に指定したポート番号で起動されているスケジューラデーモン |
- 注※
-
スケジューラデーモンのポート番号は,次に示す範囲の値から選択されます。
下限値:Client .NET構成定義の<tp1Server>要素のport属性,または<scheduleService>要素のport属性に指定したポート番号の値
上限値:下限値 + Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性に指定したプロセス数 - 1
ネームサービスを使用したRPCの場合の,Client .NET構成定義の指定とスケジューラデーモンの関連を次の表に示します。
Client .NET構成定義の指定 |
サービス要求を送信するスケジューラデーモン |
||
---|---|---|---|
<rpc>要素のuse属性 |
<rpc>要素のuseMultiScheduler属性 |
<scheduleService>要素のmultiSchedulerCount属性 |
|
nam |
true |
無効 |
サービス情報を基にランダムに選択したスケジューラデーモン※ |
false |
マスタスケジューラデーモン※ |
- 注※
-
ネームサービスへの問い合わせが発生します。