2.4.2 リクエストの負荷分散

負荷分散は,クラスタ構成などで並列に運用しているサーバアプリケーション間で,負荷が均等になるように処理を分散して割り当て,システム全体の可用性を高める機能です。クライアントアプリケーションからの要求をサーバ間,プロセス間およびスレッド間で負荷分散できます。負荷分散は,スケジュール用キューを共有しているサーバアプリケーション間で実行できるほか,複数のTSCデーモン間で負荷情報を交換することで,異なるスケジュール用キューで制御されているサーバアプリケーションに含まれるTSCユーザオブジェクトに対しても実行できます。

クライアントアプリケーションからサーバアプリケーションを呼び出す流れと負荷分散のタイミングを,次の図に示します。

図2-7 クライアントアプリケーションからサーバアプリケーションを呼び出す流れと負荷分散のタイミング

[図データ]

図について説明します。

  1. クライアントアプリケーションは,TSCAdmクラスのgetTSCClient()メソッドでTSCレギュレータまたはTSCデーモンに接続します。
  2. 取得したリファレンスからTSCユーザプロキシを作成し,TSCユーザオブジェクトを呼び出します。
  3. リクエストを受け付けたTSCデーモンは,スケジュールポリシーに従ってTSCドメイン内の各TSCデーモンの負荷情報を参照して,負荷の少ないTSCデーモンにリクエストを転送します。
    図の場合は,ホストBのTSCデーモンに振り分けられました。振り分けられたリクエストはスケジュール用キューに登録されます。
  4. TSCデーモンは,使用されていないスレッド上に配置されたTSCユーザオブジェクトの業務処理プログラムを呼び出します。このとき,異常終了したサーバアプリケーションやハングアップしてタイムアウトしたTSCユーザオブジェクトを呼び出すことはありません。
  5. TSCAdmクラスのreleaseTSCClient()メソッドでTSCレギュレータまたはTSCデーモンとの接続を切断します。

サーバアプリケーションからの応答は,リクエストを受け付けたTSCデーモンを経由して,クライアントアプリケーションに返されます。