トランザクショナル分散オブジェクト基盤 TPBroker Object Transaction Monitor ユーザーズガイド

[目次][索引][前へ][次へ]

2.4.1 リクエストの処理

クライアントアプリケーションまたはTSCレギュレータからのリクエストを受信すると,TSCデーモンは次の手順でリクエストを処理します。

  1. リクエストを受け付けたTSCデーモンに受信したリクエストを格納するか,ほかのTSCデーモンに転送するかを振り分けます。
  2. 振り分けたリクエストをスケジュール用キューに登録します。
  3. スケジュール用キューに登録されたリクエストは,サーバアプリケーションのTSCユーザオブジェクトを呼び出します。その後,TSCデーモンは,TSCユーザオブジェクトからの応答をリクエストの要求元に返します。
<この項の構成>
(1) リクエストの振り分け
(2) リクエストの登録
(3) TSCユーザオブジェクトの呼び出しと要求元への応答

(1) リクエストの振り分け

TSCデーモンは,リクエストの受信後,目的のTSCユーザオブジェクトがあるTSCデーモンにリクエストを振り分け,スケジュール用キューに登録します。そのとき,負荷情報をほかのTSCデーモンと連絡し合い,リクエストを受け付けたTSCデーモンに格納するか,ほかのTSCデーモンに転送するかを振り分けます。ほかのTSCデーモンが異なるコンピュータにある場合でもTSCドメインが同じであれば,リクエストを転送できます。

リクエストを振り分ける方法(スケジュールポリシー)には,次の2種類があります。

なお,スケジュールポリシーは,tscstartコマンドの-TSCDispatchPolicyオプションで指定できます。

(2) リクエストの登録

スケジュール用キューに同時に登録できるリクエスト数は,tscstartコマンドの-TSCMaxRequestCountオプションで指定できます。このオプションを省略した場合,"50"が設定されます。これを超えてリクエストが発生した場合は例外が返ります。

リクエストには,プライオリティ(処理の優先順位)を設定できます。プライオリティ値が1の場合,最もプライオリティが高く,プライオリティ値が大きくなるほどプライオリティは低くなります。また,リクエストに設定されたプライオリティが高いかどうかは,tscstartコマンドの-TSCHighPriorBorderオプションの指定値で判断します。さらに,スケジュール用キューに登録できるリクエスト数のうち,プライオリティの高いリクエストだけを登録する数は,tscstartコマンドの-TSCHighPriorRequestCountオプションに指定できます。

これらのコマンドオプションの指定値を利用して,プライオリティの高いリクエストを優先してスケジュール用キューに登録できます。具体的には,プライオリティの低いリクエストの発生件数が,-TSCMaxRequestCountオプション指定値から-TSCHighPriorRequestCountオプション指定値を減算した値を超えた場合は例外が返ります。プライオリティの高いリクエストは,-TSCMaxRequestCountオプション指定値を超えて発生した場合にだけ例外が返ります。

(3) TSCユーザオブジェクトの呼び出しと要求元への応答

スケジュール用キューに登録されたリクエストは,サーバアプリケーションの使用中でないスレッド上に配置されたTSCユーザオブジェクトを呼び出します。どのサーバアプリケーションの,どのスレッド上のTSCユーザオブジェクトが呼び出されるかは,クライアントアプリケーションからはわかりません。

その後,TSCデーモンは,TSCユーザオブジェクトからの応答をリクエストの要求元に返します。ほかのTSCデーモンから転送されてきたリクエストについては,該当する転送元を経由して,リクエストの要求元に応答を返します。

なお,リクエストがスケジュール用キューに登録されてから取り出されるまでの時間がリクエストのタイムアウト値を超えている場合は,非応答型呼び出しを除きリクエストを破棄します。