Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Client for .NET Framework 使用の手引


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属性に指定するポート番号によって,次のように異なります。

表2‒3 Client .NET構成定義の<scheduleService>要素のmultiSchedulerCount属性に指定するプロセス数の違い

<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構成定義の指定とスケジューラデーモンの関連を次の表に示します。

表2‒4 Client .NET構成定義の指定とスケジューラデーモンの関連(スケジューラダイレクト機能を使用したRPC)

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構成定義の指定とスケジューラデーモンの関連を次の表に示します。

表2‒5 Client .NET構成定義の指定とスケジューラデーモンの関連(ネームサービスを使用したRPC)

Client .NET構成定義の指定

サービス要求を送信するスケジューラデーモン

<rpc>要素のuse属性

<rpc>要素のuseMultiScheduler属性

<scheduleService>要素のmultiSchedulerCount属性

nam

true

無効

サービス情報を基にランダムに選択したスケジューラデーモン

false

マスタスケジューラデーモン

注※

ネームサービスへの問い合わせが発生します。