負荷分散は,クラスタ構成などで並列に運用しているサーバアプリケーション間で,負荷が均等になるように処理を分散して割り当て,システム全体の可用性を高める機能です。クライアントアプリケーションからの要求をサーバ間,プロセス間およびスレッド間で負荷分散できます。負荷分散は,スケジュール用キューを共有しているサーバアプリケーション間で実行できるほか,複数のTSCデーモン間で負荷情報を交換することで,異なるスケジュール用キューで制御されているサーバアプリケーションに含まれるTSCユーザオブジェクトに対しても実行できます。
クライアントアプリケーションからサーバアプリケーションを呼び出す流れと負荷分散のタイミングを,次の図に示します。
図2-7 クライアントアプリケーションからサーバアプリケーションを呼び出す流れと負荷分散のタイミング
![[図データ]](figure/zu020850.gif)
図について説明します。
- クライアントアプリケーションは,TSCAdmクラスのgetTSCClient()メソッドでTSCレギュレータまたはTSCデーモンに接続します。
- 取得したリファレンスからTSCユーザプロキシを作成し,TSCユーザオブジェクトを呼び出します。
- リクエストを受け付けたTSCデーモンは,スケジュールポリシーに従ってTSCドメイン内の各TSCデーモンの負荷情報を参照して,負荷の少ないTSCデーモンにリクエストを転送します。
図の場合は,ホストBのTSCデーモンに振り分けられました。振り分けられたリクエストはスケジュール用キューに登録されます。
- TSCデーモンは,使用されていないスレッド上に配置されたTSCユーザオブジェクトの業務処理プログラムを呼び出します。このとき,異常終了したサーバアプリケーションやハングアップしてタイムアウトしたTSCユーザオブジェクトを呼び出すことはありません。
- TSCAdmクラスのreleaseTSCClient()メソッドでTSCレギュレータまたはTSCデーモンとの接続を切断します。
サーバアプリケーションからの応答は,リクエストを受け付けたTSCデーモンを経由して,クライアントアプリケーションに返されます。