説明

ジョブ処理システム、ジョブ処理装置、負荷分散装置、ジョブ処理プログラムおよび負荷分散プログラム

【課題】 要求されたジョブを複数のジョブ処理装置へ振り分けて処理すること。
【解決手段】 本ジョブ処理システム170は、複数のジョブ処理装置150と、負荷分散装置110とを含む。負荷分散装置110は、順序を規定する順序規定手段116と、ジョブ振り分け先のジョブ処理装置に対し、順序で先行する先行ジョブを特定するためのジョブ識別情報と、先行ジョブの振り分け先のジョブ処理装置を識別する装置識別情報とを送信する送信手段118とを含む。ジョブ処理装置150は、受信した装置識別情報で特定されるジョブ処理装置のログを監視し、先行ジョブの完了を検知する監視手段164と、先行ジョブの完了が検知され、かつ、振り分けられた担当ジョブの処理が終了したことに応答して、該担当ジョブを完了させて、振り分けられた次のジョブの処理を開始する処理開始手段154と、担当ジョブの完了をログに書き込む書き込み手段160とを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、負荷分散技術に関し、より詳細には、要求されたジョブを複数のジョブ処理装置へ振り分けて処理する、ジョブ処理システム、ジョブ処理装置、負荷分散装置、ジョブ処理プログラムおよび負荷分散プログラムに関する。
【背景技術】
【0002】
近年、ネットワーク環境の変化やユーザのニーズの変化により、ソフトウェア開発において、大規模対応およびクラウド環境対応が求められている。従来、大規模対応やクラウド環境対応のための種々の技術が知られており、クライアントからのリクエストを多重化した処理サーバへ振り分ける、負荷分散技術が知られている。
【0003】
上記負荷分散技術は、ウェブ・アプリケーションなどにおいて好適に利用されている。しかしながら、従来の負荷分散技術では、負荷分散装置によりクライアントからのリクエストが各処理サーバに振り分けられた後は、各処理サーバが独立にリクエストを処理することになり、用途によっては不具合が生じる場合があった。例えば、印刷ジョブ処理においては、同一プリンタに対する印刷ジョブを要求順に処理することが望ましいなど、処理の順序が意味を有する。印刷ジョブのような処理の順序が意味を持つ用途においては、上記従来技術では、負荷分散装置により処理サーバへ処理を振り分ける前の処理の順序を保証することが難しかった。
【0004】
特開2009−054044号公報(特許文献1)は、複数のサーバの夫々が出力装置に投入する印刷ジョブを制御する環境において、同一の出力装置に対するジョブをユーザからの要求順にその出力装置に投入できるようにすることを目的とした技術を開示する。
【0005】
特許文献1が開示するジョブ投入依頼装置は、ジョブの投入処理を実行しているジョブ投入装置の情報と、当該ジョブの投入先となる出力装置の情報とが対応付けられて登録されるデータベースを備える。上記ジョブ投入依頼装置は、上記データベースの登録内容に基づいてジョブ投入装置を探索し、クライアントから出力が要求されたジョブの投入先出力装置にジョブ投入処理を実行しているジョブ投入装置に対し、該要求されたジョブの投入を依頼する。これにより、クライアントからの要求順にその出力装置に印刷ジョブが投入される。
【0006】
しかしながら、上記特許文献1の従来技術では、要求順に出力装置に投入するために、ジョブ投入装置の情報と出力装置の情報とが対応付けられて登録されるデータベースを設けている。このため、データベースを格納するための小さくない記憶リソースを消費し、データベース参照のための小さくない計算リソースを消費してしまい、負荷分散のメリットが減少してしまう観点から、充分なものではなかった。また、複数のジョブ投入装置にジョブ投入処理を振り分けるジョブ投入依頼装置に負荷が集中している点でも改善の余地があった。
【0007】
上述した背景から、処理の順序を保証しながら、要求されたジョブを複数のジョブ処理装置へ振り分け、システム全体として負荷分散を行うことが可能なジョブ処理システムの開発が依然として望まれていた。
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、上記従来技術の不充分な点に鑑みてなされたものであり、本発明は、クライアントから要求されたジョブを負荷分散装置により複数のジョブ処理装置に分散する構成において、小さなリソースのコストで、システム全体としてのジョブに関連する順序を管理しながら負荷分散することが可能なジョブ処理システム、ジョブ処理装置、負荷分散装置、ジョブ処理プログラム、および負荷分散プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明では、上記課題を解決するために、以下の特徴を有するジョブ処理システムを提供する。本ジョブ処理システムは、複数のジョブ処理装置と、複数のジョブ処理装置に接続される負荷分散装置とを含む。上記負荷分散装置は、ジョブに関する順序を規定する順序規定手段と、ジョブ振り分け先のジョブ処理装置に対し、上記順序で先行する先行ジョブを特定するためのジョブ識別情報と、該先行ジョブの振り分け先のジョブ処理装置を識別する装置識別情報とを送信する送信手段とを含む。
【0010】
上記ジョブ処理装置は、それぞれ、受信した装置識別情報で特定されるジョブ処理装置のログを監視し、受信したジョブ識別情報で特定される先行ジョブの完了を検知する監視手段と、上記先行ジョブの完了が検知され、かつ、振り分けられた担当ジョブの処理が終了したことに応答して、該担当ジョブを完了させて、振り分けられた次のジョブの処理を開始する処理開始手段と、上記担当ジョブの完了をログに書き込む書き込み手段とを含む。
【発明の効果】
【0011】
上記構成によれば、クライアントから要求されたジョブを負荷分散装置により複数のジョブ処理装置に分散する構成において、小さなリソースのコストで、システム全体としてのジョブに関連する順序を可能なぎり維持することができる。
【図面の簡単な説明】
【0012】
【図1】第1の実施形態による印刷ジョブ処理システムのネットワーク環境を示す概略図。
【図2】物理ホストのハードウェア構成図。
【図3】第1の実施形態によるロードバランス・サーバおよび複数のアプリケーション・サーバ上で実現される機能ブロック図。
【図4】本実施形態によるログ監視部が実行するログ監視処理を示すフローチャート。
【図5】本実施形態によるジョブ処理終了検知部が実行するジョブ処理の終了検知処理を示すフローチャート。
【図6】本実施形態による処理開始トリガー部が実行する、振り分けられた担当ジョブにかかる処理の進行を管理する処理を示すフローチャート。
【図7】第5の実施形態における(A,C)ログ情報および(B)リクエスト情報のデータ構造を例示する図。
【図8】複数のアプリケーション・サーバに振り分けられた複数のリクエストが処理される様子を表す図。
【図9】他の実施形態において、複数の部分処理からなるジョブ処理において特定の部分処理の待ち合わせを行う構成を説明する図。
【図10】第2の実施形態によるログ監視部が実行するログ監視処理を示すフローチャート。
【図11】第2の実施形態による処理開始トリガー部が実行する、振り分けられた担当ジョブにかかる処理の進行を管理する処理を示すフローチャート。
【図12】第3の実施形態によるログ監視部が実行するログ監視処理を示すフローチャート。
【図13】第4の実施形態によるロードバランス・サーバおよび複数のアプリケーション・サーバ上で実現される機能ブロック図。
【図14】第5の実施形態によるロードバランス・サーバおよび複数のアプリケーション・サーバ上で実現される機能ブロック図。
【図15】第5の実施形態によるログ監視部が実行する、ログ監視処理を示すフローチャート。
【図16】第5の実施形態による処理開始トリガー部が実行する、振り分けられた担当ジョブにかかる処理の進行を管理する処理を示すフローチャート。
【図17】第5の実施形態における(A,C)ログ情報および(B)リクエスト情報のデータ構造を例示する図。
【発明を実施するための形態】
【0013】
以下、本発明について実施形態をもって説明するが、本発明は、後述する実施形態に限定されるものではない。なお、以下に説明する実施形態では、複数のジョブ処理装置と負荷分散装置とを含むジョブ処理システムの一例として、複数のアプリケーション・サーバとロードバランス・サーバとを含む印刷ジョブ処理システムを用いて説明する。
【0014】
図1は、第1の実施形態による印刷ジョブ処理システムのネットワーク環境100を示す概略図である。図1に示すネットワーク環境100は、要求されるリクエストにかかる印刷ジョブを処理する印刷ジョブ処理システム170を構成する要素として、ロードバランス・サーバ110と、複数のアプリケーション・サーバ150とを含む。なお、図1では、4つのアプリケーション・サーバ150が例示されている。
【0015】
ネットワーク環境100は、さらに、印刷ジョブ処理システム170により提供されるサービスを利用する、1以上のクライアント180を含む。クライアント180は、インターネットやLAN(Local Area Network)などのネットワークを介して印刷ジョブ処理システム170に接続され、該システム170が提供する印刷ジョブ処理サービスを利用する端末装置である。上記クライアント180は、当該クライアント180の操作者からの指示に応答して、所定のドキュメントの印刷を指令する印刷ジョブのリクエストを印刷ジョブ処理システム170に対し送信する。
【0016】
上記ロードバランス・サーバ110は、所定方式に従って、複数のアプリケーション・サーバ150a〜150dに対し、クライアント180からのリクエストを振り分けて、各リクエストの印刷ジョブ処理を実行させる負荷分散装置である。上記ロードバランス・サーバ110の負荷分散方式としては、特に限定されるものではないが、ラウンドロビン方式、通信量やコネクション数などを負荷の指標とした最小負荷分散方式など、これまで知られた如何なる負荷分散方式を採用することができる。本実施形態によるロードバランス・サーバ110は、さらに、上記リクエストの振り分けを行う際には、各リクエストの印刷ジョブに対し全体としての順序を規定する。そして、ロードバランス・サーバ110は、アプリケーション・サーバ150に対し、上記全体としての順序を保証するべく、詳細を後述するリクエスト情報を送信する。
【0017】
複数のアプリケーション・サーバ150a〜150dは、それぞれ、ロードバランス・サーバ110から振り分けられたリクエストにかかる印刷ジョブ処理を実行する、互いに同等の機能を備えたジョブ処理装置である。本実施形態によるアプリケーション・サーバ150は、ロードバランス・サーバ110から受信したリクエスト情報を用いて、上記全体としての順序を保証しながら、要求されたリクエストにかかる印刷ジョブを処理することができる。リクエストに付随して送信されるリクエスト情報は、リクエスト情報の送信先のアプリケーション・サーバ150に対し、上記リクエストに先行するジョブの振り分け先のアプリケーション・サーバ150を通知するための情報である。
【0018】
上記ロードバランス・サーバ110およびアプリケーション・サーバ150は、それぞれ、物理的に独立した汎用コンピュータ装置(物理マシン)として構成されてもよいし、物理マシン上に実現される仮想マシンとして構成されてもよい。印刷ジョブ処理システム170は、好適には、クラウド印刷サービスを提供するクラウド・システムとして実装することができ、説明する実施形態は、クラウド・システムとして実装された場合を例示する。ここで、クラウド印刷サービスとは、利用者がインターネットを介して、所望の時および場所から印刷を指示し、所望の場所で印刷物を得ることを可能とする、クラウド・コンピューティング方式によって提供されるサービスをいう。
【0019】
ネットワーク環境100では、図示はしないが、複合機、レーザプリンタ、インクジェットプリンタなどの1以上の画像形成装置が、クライアント180と同じまたは異なるロケーションに配置されている。クライアント180から、画像形成装置を指定して印刷ジョブのリクエストが行われると、振り分けられたアプリケーション・サーバ150でリクエストにかかる印刷ジョブの処理が完了した後、所定の画像形成装置に印刷ジョブ・データが送信され、印刷出力される。このときの印刷ジョブ・データの送信経路は、特に限定されるものではなく、アプリケーション・サーバ150から、ネットワークを介して直接、またはクライアント180を一旦経由して、指定の画像形成装置へと送信される。
【0020】
以下、図2を参照して、本実施形態によるロードバランス・サーバ110およびアプリケーション・サーバ150のハードウェア構成について説明する。図2は、本実施形態によるロードバランス・サーバ110およびアプリケーション・サーバ150として稼働させる物理ホスト10のハードウェア構成を示す図である。物理ホスト10は、マイクロプロセッサ・ユニット(MPU)12と、BIOS(Basic Input Output System)を格納する不揮発性メモリ14と、MPU12によるプログラム処理を可能とする実行記憶空間を提供するメモリ16とを含む。MPU12は、起動時に、不揮発性メモリ14からBIOSを読み出し、システム診断を行う。
【0021】
MPU12は、内部バス22を介して記憶制御用インタフェース18に接続され、ハードディスク20が、MPU12からの入出力要求に応答してデータの書込または読み出しを実行する。記憶制御用インタフェース18としては、IDE(Integrated Device Electronics)、ATA(AT Attachment)、SATA(Serial ATA)、eSATA(external ATA)などの規格により、ハードディスク20の入出力を管理するインタフェースを使用することができる。MPU12は、また、内部バス22を介して、USB、IEEE1164などのシリアルまたはパラレル・インタフェース24を制御して、キーボード、マウスなどの入出力装置26と通信し、ユーザからの入力を受け取ることができる。
【0022】
物理ホスト10は、さらにVRAM28とグラフィック・チップ30とを含むことができる。グラフィック・チップ30は、MPU12からの指令に応答してビデオ信号を処理し、ディスプレイ装置32へと表示させている。MPU12は、また、内部バス22を介してネットワークI/F(NIC;Network Interface Card)34と接続する。これにより、物理ホスト10を外部の装置と通信させている。
【0023】
物理ホスト10は、不揮発性メモリ14やハードディスク20、その他NV−RAM(図示せず)やSDカード(図示せず)などの記憶装置に格納されたプログラム(図示せず)を読み出し、メモリ16のメモリ領域に展開する。これにより、物理ホスト10は、適切なオペレーティング・システム(OS)のもとで、後述する各機能手段および各処理を実現する。上記OSとしては、Windows(登録商標)、UNIX(登録商標)またはLINUX(登録商標)など、如何なるアーキテクチャを有するOSを採用することができる。また、物理ホスト10は、上記ロードバランス・サーバ110およびアプリケーション・サーバ150を仮想マシンとして実現する実施形態では、適切なハイパーバイザまたはホストOS上にゲストOSを稼働させて、OSの制御のもとで、後述する各機能手段および各処理を実現することができる。
【0024】
なお、詳細な説明は割愛するが、本実施形態のクライアント180についても、図2に示すハードウェア構成と同様の構成とすることができる。クライアント180としては、パーソナル・コンピュータやワークステーションなどの汎用コンピュータ装置、および携帯電話やスマートフォン、タブレット端末、PDA(Personal Digital Assistance)などの携帯情報端末を挙げることができる。
【0025】
以下、図3〜図8を参照しながら、本実施形態による印刷ジョブ処理システム170上で実現され、全体としての順序を保証しながら、負荷分散のためリクエストを振り分ける、負荷分散印刷ジョブ処理機能について説明する。
【0026】
図3は、第1の実施形態によるロードバランス・サーバ110および複数のアプリケーション・サーバ150上で実現される機能ブロックを示す図である。図3に示すロードバランス・サーバ110は、振り分け部112を備え、振り分け部112は、所与の負荷分散方式により、クライアント180から受信したリクエストを、負荷分散先として登録された複数のアプリケーション・サーバ150に振り分ける処理を実行する。振り分け部112は、より詳細には、上述したリクエスト情報を送信するタイミングを検知する送信タイミング検知部114と、送信するためのリクエスト情報を生成する採番部116と、上述したリクエスト情報の送信処理を実行する送信部118とを含み構成される。
【0027】
送信タイミング検知部114は、アプリケーション・サーバ150にリクエストを振り分けた後、所定のアプリケーション・サーバ150を識別する装置識別情報と、所定のジョブを識別するジョブ識別情報とを採番部116に対し通知して、送信処理を開始させる。上記所定の装置識別情報は、全体としての順序において、振り分けた当該リクエストに先行するジョブ(以下、先行ジョブと参照する。)の振り分け先のアプリケーション・サーバ(以下、先行サーバと参照する。)を識別する情報であり、上記所定のジョブ識別情報は、上記先行ジョブを識別する情報である。
【0028】
採番部116は、振り分けたリクエストに対し、全体における処理の順序を規定するとともに、該リクエストにかかる印刷ジョブ処理の順序を識別する処理番号と、上記送信タイミング検知部114から通知された先行サーバの装置識別情報と、上記先行ジョブのジョブ識別情報とをセットにして、リクエスト情報を生成する。送信部118は、振り分け先のジョブ処理装置に対し、採番部116により生成されたリクエスト情報を送信する。採番部116は、本実施形態における順序規定手段を構成し、送信部118は、本実施形態における送信手段を構成する。
【0029】
なお、説明する実施形態では、便宜上、リクエストを振り分けた直後に、該リクエストを振り分けたサーバに対し、その処理番号、先行サーバの装置識別情報および先行ジョブのジョブ識別情報を含むリクエスト情報を送信する態様として説明する。この場合、アプリケーション・サーバ150では、振り分けられたリクエストと、その直後に受信したリクエスト情報とがセットとなる。しかしながら、リクエスト情報のタイミングは、特に限定されるものではない。例えば、他の実施形態では、リクエストを振り分けた直後に、次に予定されるアプリケーション・サーバ150に対し、本リクエストの処理番号、本リクエストの振り分け先サーバの装置識別情報および本リクエストのジョブ識別情報を含むリクエスト情報を送信する態様としてもよい。この場合、アプリケーション・サーバ150では、振り分けられたリクエストと、その直前に受信したリクエスト情報とがセットとなる。
【0030】
図3に示すアプリケーション・サーバ150は、受信部152と、処理開始トリガー部154と、ジョブ処理部156と、ログ書き込み部160と、ログ格納部162と、ログ監視部164とを含む。図3には、2つのアプリケーション・サーバ150aおよび150bが示されているが、第1のサーバ150aは、第2のサーバ150bよりも先行する印刷ジョブを処理する先行サーバに対応する。
【0031】
受信部152は、ロードバランス・サーバ110から振り分けられたリクエストと、このリクエストに先行する先行ジョブが振り分けられた先行サーバを特定するためのリクエスト情報とを受信する。ここでは、リクエストが第2のサーバ150bに振り分けられ、該リクエストに先行する先行ジョブが振り分けられた第1のサーバ150aを識別するリクエスト情報が第2のサーバ150bに対し送信された場合を例に説明する。
【0032】
ログ監視部164は、受信部152が受信したリクエスト情報を受け取り、装置識別情報で特定されるアプリケーション・サーバ150aのログを監視する。そして、ログ監視部164は、上記ジョブ識別情報で特定される先行ジョブの完了を検知した場合には、処理開始トリガー部154に対し、先行ジョブの完了を通知する。図3に示す例では、第2のサーバ150bのログ監視部164bは、装置識別情報で特定される第1のサーバ150aのログ監視を行う。
【0033】
処理開始トリガー部154は、受信部152が受信した自機に振り分けられたリクエストにかかる印刷ジョブ(以下、担当ジョブと参照する。)の処理の進行を管理し、ジョブ処理部156を呼び出して、担当ジョブの処理を開始させる。ジョブ処理部156は、処理開始トリガー部154により呼び出され、開始された担当ジョブの処理を実行する。ジョブ処理部156は、より詳細には、ジョブ処理終了検知部158を備える。ジョブ処理終了検知部158は、担当ジョブの処理を監視しており、担当ジョブの処理の終了を検知すると、処理開始トリガー部154に対し、担当ジョブの処理の終了を通知する。
【0034】
処理開始トリガー部154は、上述したように担当ジョブの処理の進行を管理しており、先行ジョブの完了と、振り分けられた担当ジョブの処理の終了とを待ち合わせて、次の担当ジョブの処理へ進める。なお、説明する実施形態において、「ジョブの処理の終了」は、要求された実体としての印刷ジョブ処理の終了を意味し、「ジョブの完了」は、上記印刷ジョブ処理を終え、さらに次ぎの処理に移行できる段階になったことを意味する。すなわち、ジョブは、該ジョブの処理が終了し、かつ、該ジョブに先行する先行ジョブが完了したことをもって、完了することになる。
【0035】
処理開始トリガー部154は、上記担当ジョブの完了に伴い、ログ書き込み部160に対し、担当ジョブの完了と、該担当ジョブのジョブ識別情報とを通知する。ログ書き込み部160は、担当ジョブの完了およびジョブ識別情報の通知を受けて、上記担当ジョブの完了を記録するログ情報をログ格納部162に対し書き込む。
【0036】
ログ格納部162は、ログ書き込み部160により書き込まれたログ情報を格納し、外部のアプリケーション・サーバ150のログ監視部164からの問い合わせに応答して、対応するログ情報を提供する。図3に示す例では、第1のサーバ150aのログ格納部162aは、後続するジョブが振り分けられる第2のサーバ150bのログ監視部164bからの問い合わせを受けて、対応するログ情報を送信する。
【0037】
上記ログ監視部164、処理開始トリガー部154およびログ書き込み部160は、それぞれ、本実施形態における監視手段、処理開始手段および書き込み手段を構成する。なお、上述した説明では、リクエスト情報は、処理番号およびジョブ識別情報を別個に含むものとして説明した。しかしながら、リクエスト情報は、先行サーバおよび先行ジョブを特定できる限り、特に限定されるものではない。例えば、全体としての処理番号が連番で与えられる前提においては、振り分けられたリクエストの処理番号をデクリメントすることにより先行ジョブを特定できるので、処理番号をそのまま、先行ジョブを識別するジョブ識別情報として使用してもよい。
【0038】
以下、図4〜図6に示すフローチャートを参照しながら、本実施形態による負荷分散印刷ジョブ処理機能の流れについて説明する。図4は、本実施形態によるログ監視部164が実行する、ログ監視処理を示すフローチャートである。図4に示す処理は、受信部152がリクエスト情報を受信したことに対応して、ステップS100から開始される。
【0039】
ステップS101では、ログ監視部164は、受信部152から渡されたリクエスト情報を読み取る。ステップS102では、ログ監視部164は、リクエスト情報から特定される、先行ジョブを処理しているアプリケーション・サーバ(先行サーバ)のログ情報を読み込む。リクエスト情報に含まれる装置識別情報は、対応するアプリケーション・サーバ150のログを格納する装置(例えばアプリケーション・サーバ150自身)の通信情報に関連付けられており、ログ監視部164は、装置識別情報を用いて装置との通信を確立させて、監視対象のログ情報を取得することができる。上記通信情報としては、MAC(Media Access Control)アドレス、IP(Internet Protocol)などの通信アドレス、ドメインサーバ名などを挙げることができる。
【0040】
また、ステップS102で読み込まれるログ情報は、先行ジョブに関するレコードを含む。ステップS103では、ログ監視部164は、取得したログ情報のうち、リクエスト情報から特定される先行ジョブのログを確認する。ステップS104では、ログ監視部164は、先行ジョブのログを確認した結果、先行ジョブが完了しているか否かを判定する。ステップS104で、先行ジョブが未だ完了していないと判定された場合(NO)は、ステップS102へ処理をループさせ、先行ジョブの完了がログ書き込みされるのを待ち受ける。一方、ステップS104で、先行ジョブのログに完了が記録されており、先行ジョブの完了が検知された場合(YES)は、ステップS105へ処理が進められる。
【0041】
ステップS105では、ログ監視部164は、処理開始トリガー部154に対し、先行ジョブの完了が検知された旨を通知し、ステップS106で、リクエスト情報の受信に対応して行われた本処理を終了する。
【0042】
図5は、本実施形態によるジョブ処理終了検知部158が実行する、ジョブ処理の終了検知処理をフローチャートである。図5に示す処理は、受信部152がリクエストを受信し、処理開始トリガー部154により該リクエストの担当ジョブにかかる処理が開始されたことに応答して、ステップS200から開始される。
【0043】
ステップS201では、ジョブ処理終了検知部158は、クライアントから受信したリクエストにかかる担当ジョブの処理の監視を開始する。ステップS202では、ジョブ処理終了検知部158は、担当ジョブの処理が終了したか否かを判定する。ステップS202で、担当ジョブの処理がまだ終了していないと判定された場合(NO)は、ステップS202へ処理をループさせて、担当ジョブの処理が終了するのを待ち受ける。
【0044】
一方、ステップS202で、担当ジョブの処理の終了を検知したと判定された場合(YES)は、ステップS203へ処理を分岐させる。ステップS203では、ジョブ処理終了検知部158は、処理開始トリガー部154に対し、担当ジョブの処理の終了を通知し、ステップS204で、本処理を終了させる。
【0045】
図6は、本実施形態による処理開始トリガー部154が実行する、振り分けられた担当ジョブにかかる処理の進行を管理する処理を示すフローチャートである。図6に示す処理は、ステップS300から開始される。
【0046】
ステップS301では、処理開始トリガー部154は、ステップS203で行われる担当ジョブの処理終了通知、およびステップS105で行われる、担当ジョブに先行する先行ジョブの完了通知の有無を確認する。ステップS302では、処理開始トリガー部154は、担当ジョブの処理終了通知および先行ジョブの完了通知の両方があったか否かを判定する。ステップS302で、担当ジョブの処理終了通知および先行ジョブの完了通知の両方、またはいずれかが行われていないと判定された場合(NO)は、ステップS301へ処理をループさせて、両方の通知が行われるのを待ち受ける。
【0047】
一方、ステップS302で、担当ジョブの処理終了通知および先行ジョブの完了通知の両方が既に行われたと判定された場合(YES)は、ステップS303へ処理を分岐させる。ステップS303では、処理開始トリガー部154は、次の担当ジョブに処理を移行し、ジョブ処理部156を呼び出して、次の担当ジョブに対する処理を開始させる。ステップS304では、処理開始トリガー部154は、ログ書き込み部160に対し、終了した担当ジョブの処理の完了と該担当ジョブの処理番号とを通知し、終了ログを書き込ませる。
【0048】
以下、図7に例示するログ情報を参照して、全体としての順序を保証しながらリクエストを振り分ける負荷分散印刷ジョブ処理について、事例をもって説明する。図7(A)は、図3に示した第1のサーバ150aのログ格納部162に格納されるログ情報のデータ構造を例示する。図7(B)は、第1のサーバ150aに後続する第2のサーバ150bへ送信されるリクエスト情報のデータ構造を例示する。図7(C)は、リクエスト情報を受信した後における第2のサーバ150bのログ格納部162に格納されるログ情報のデータ構造を例示する。
【0049】
ロードバランス・サーバ110は、第1のサーバ150aにリクエストを振り分けると、該リクエストの振り分け先である第1のサーバ150aを識別する装置識別情報と、該リクエストのジョブを識別するジョブ識別情報とを記録する。続いて、ロードバランス・サーバ110は、第1のサーバ150aに後続する第2のサーバ150bに対しリクエストを振り分けた際に、第2のサーバ150bに対し、図7(B)に示すリクエスト情報を送信する。
【0050】
図7(B)に示すリクエスト情報は、装置識別情報「server0001」で識別される第1のサーバ150aに対し先行ジョブが振り分けられたことを示し、かつ、振り分けたリクエストにかかるジョブ処理が終了した場合の全体の処理順序を意味する終了番号「51」を含む。なお、図7(B)に示すリクエスト情報においては、終了番号は、全体における処理順番を与えるとともに、先行ジョブを識別させるジョブ識別情報を与える。
【0051】
第2のサーバ150bは、図7(B)に示すリクエスト情報を受信すると、振り分けられたリクエストのログ・レコードにおけるログ番号のカラムを埋め、確認先サーバのカラムに装置識別情報「server0001」を書き込む。第2のサーバ150bは、装置識別情報「server0001」で特定される第1のサーバ150aのログを監視し、終了番号「50」(終了番号「51」をデクリメントした値である。)のログ・レコードが書き込まれるのを待ち受ける。第1のサーバ150aが、先行ジョブの処理を完了させると、図7(A)に示すように、終了フラグのカラムに「true」が書き込まれ、終了番号のカラムに「50」が書き込まれる。
【0052】
第2のサーバ150bは、第1のサーバ150aのログに終了番号「50」のログ・レコードが書き込まれたことを検知し、かつ、終了番号「51」で識別される担当ジョブの処理が終了したことを検知すると、次の担当ジョブの処理に移る。第2のサーバ150bは、上記移行とともに、自身のログ・レコードの終了フラグに「true」を書き込んで、終了番号のカラムに終了番号「51」を書き込む。このログ・レコードの書き込みにより、第2のサーバ150bに後続する他のアプリケーション・サーバ150がある場合に、第2のサーバ150bが終了番号「50」で識別されるジョブを完了させたことを後続サーバに知らしめることができる。
【0053】
図7(A)および(C)に示すログ情報には、ジョブ処理後の送信先のカラムが設けられている。このジョブ処理後送信先のカラムには、担当ジョブの処理により生成された印刷ジョブ・データの送信先の画像形成装置を識別するプリンタ識別情報が入力される。説明する実施形態では、ジョブ処理後送信先のカラムを特に使用しないが、他の実施形態では、上記負荷分散印刷ジョブ処理機能を適用するジョブを判断する際に、ジョブ処理後送信先の入力値を好適に利用することもできる。
【0054】
上述したように、同一の画像形成装置に送信される印刷ジョブの処理順序は重要であるが、異なる画像形成装置に送信される印刷ジョブ間での処理の前後は、同一の画像形成装置に送信される場合と比較して重要度が低く、必ずしも順序を保証することを要しない場合もある。そこで、他の実施形態では、図7に示したジョブ処理後送信先のカラムを設けて、先行ジョブと送信先の画像形成装置が一致しない担当ジョブについては、上記待ち合わせを行わずに、次のジョブへ処理対象を進めることができる。
【0055】
以下、図8を参照して、上述した第1の実施形態による印刷ジョブ処理システム170が有する利点について説明する。図8は、複数のアプリケーション・サーバ150に振り分けられた複数のリクエストが処理される様子を表す図である。
【0056】
図8に示す横軸は、時間経過を表し、各行における軸上のバーは、各サーバA〜Dに振り分けられたリクエストのジョブ処理の進捗状況を表す。図8に示すジョブ処理のアクティブな区間は、ジョブが処理されていることを表し、非アクティブな区間は、ジョブの処理が終了して先行ジョブの完了を待ち合わせていることを表す。図8中のバーに付された番号は、印刷ジョブに対し採番された処理番号を示す。図8中の「次へ」の吹き出しは、吹き出しで示す時点で、次の担当ジョブの処理が開始されたことを表す。図8中の「次へ」の吹き出しの箇所に示される矢印は、前の担当ジョブの完了ログが書き込みされ、上記ログ監視により、先行するサーバから後続するサーバへ、ジョブ完了が伝達されたことを表す。
【0057】
図8に示す例では、クライアント180からの複数のリクエストは、ロードバランス・サーバ110によりラウンドロビン方式で、サーバA、サーバB、サーバCおよびサーバDの順に、巡回して振り分けられる。図8の例示では、ロードバランス・サーバ110の処理の流れは、以下の通りとなる。
(1)サーバAに対し、1番目のリクエストを振り分ける。
(2)サーバBに対し、2番目のリクエストを振り分けるとともに、1番目のリクエストをサーバAに振り分けたことを通知するリクエスト情報を送信する。
(3)サーバCに対し、3番目のリクエストを振り分けるとともに、2番目のリクエストをサーバBに振り分けたことを通知するリクエスト情報を送信する。
(4)サーバDに対し、4番目のリクエストを振り分けるとともに、3番目のリクエストをサーバCに振り分けたことを通知するリクエスト情報を送信する。
(5)サーバAに対し、5番目のリクエストを振り分けるとともに、4番目のリクエストをサーバDに振り分けたことを通知するリクエスト情報を送信する。
(6)サーバBに対し、6番目のリクエストを振り分けるとともに、5番目のリクエストをサーバAに振り分けたことを通知するリクエスト情報を送信する。
(以下省略)
【0058】
上記ロードバランス・サーバ110によるリクエストの振り分けを受けて各アプリケーション・サーバ150は、以下に説明するような処理を行う。なお、以下には、サーバBが実行する処理を代表して例示する。
(サーバBの処理)
(2.1)上記ロードバランサによる(2)の処理に対応して、2番目のリクエストにかかる担当ジョブの処理を開始する。なお、これ以前の担当ジョブは、既に完了しているものとする。
(2.2)2番目のリクエストに先行する先行ジョブが振り分けられたサーバAのログの監視を開始し、先行ジョブ(1番目のリクエストにかかるジョブ)が完了するのを待ち受ける。
(2.3)2番目のリクエストにかかる担当ジョブの処理の終了を検知し、かつ、上記先行ジョブ(1番目のリクエストにかかるジョブ)の完了を検知したことをもって、2番目のリクエストにかかる担当ジョブを完了させて、次の担当ジョブに処理を移す。
(2.4)上記完了に伴い、2番目のリクエストにかかる担当ジョブの完了ログを書き込む。
(6.1)上記ロードバランサによる(6)の処理に対応して、さらに上記(2.3)を待って、6番目のリクエストにかかる担当ジョブの処理を開始する。
(6.2)6番目のリクエストに先行する先行ジョブが振り分けられたサーバAのログの監視を開始し、先行ジョブ(5番目のリクエストにかかるジョブ)が完了するのを待ち受ける。
(6.3)6番目のリクエストにかかる担当ジョブの処理の終了を検知し、かつ、先行ジョブ(5番目のリクエストにかかるジョブ)の完了を検知したことをもって、6番目のリクエストにかかる担当ジョブを完了させ、次の担当ジョブに処理を移す。
(6.4)上記完了に伴い、6番目のリクエストにかかる担当ジョブの完了ログを書き込む。
(以下省略)
【0059】
図8に示す6番目のジョブを参照すると、6番目のジョブの処理をサーバBが終了させる前に、サーバAが先行する5番目のジョブを完了させていることが示されている。したがって、6番目のリクエストのジョブは、当該6番目のジョブの処理が終了すると同時に完了する。一方、図8に示すサーバDに振り分けられた8番目のジョブを参照すると、サーバDが8番目のジョブの処理を終了させた後に、その先行サーバCが7番目の先行ジョブを完了させていることが示されている。したがって、8番目のリクエストのジョブは、先行する7番目のジョブが完了するのを待ち合わせた上で完了することになる。
【0060】
上述したように、第1の実施形態の負荷分散印刷ジョブ処理によれば、先行ジョブの完了前に自己の担当ジョブが終了した場合であっても、先行ジョブの完了を待ち合わせた上で次の担当ジョブへ処理が移されることになる。このため、各アプリケーション・サーバ150は、先行サーバが次ぎのジョブを開始させる前に自身の次の担当ジョブを開始することはなく、待ち合わせ時点におけるジョブの処理順序が保証される。
【0061】
また、上記ジョブの処理順序を保証するための追加の通信は、主としてアプリケーション・サーバ150が先行サーバに対し対して行うログの問い合わせの通信である。このため、アプリケーション・サーバ間で同期を取るためにタイミング信号を送受信するような実装と比較しても、小さな通信コストを発生させるのみであり、負荷分散の目的とも整合する。
【0062】
さらに、上記ジョブの処理順序を保証するための追加の情報は、主として各ジョブのログ・レコードに付随する確認先サーバおよび終了番号または終了フラグである。確認先サーバは、また、ログ情報として記憶されるものを流用することができる。このため、順序を保証するためにデータベース等の管理手段を設ける実装と比較しても、小さなリソースのコストを発生させるのみである。また、上記終了番号は、後続するアプリケーション・サーバ150が完了ログを読み取った時点で不要となるため、上記ログ情報をキャッシュに格納することにより、リソースの使用量をさらに縮小することができる。
【0063】
なお、上述した実施形態では、担当ジョブ全体を待ち合わせが必要な処理として、先行ジョブの完了を待ち合わせた上で次の担当ジョブへ処理が移行されるものとして説明してきた。しかしながら、担当ジョブの処理中には、待ち合わせを要しない箇所がある場合もある。そこで、他の実施形態では、担当ジョブにかかる処理のうち、特定箇所からの処理を待ち合わせ、特定箇所までの処理については、待ち合わせを行うことなく処理を進めることができる。
【0064】
図9は、複数の部分処理からなるジョブ処理において特定の部分処理を待ち合わせを行う構成を説明する図である。図9に示す例では、リクエスト毎に各アプリケーション・サーバ150に対し、ジョブ処理が要求されるが、各ジョブの処理が、図中A、BおよびCで参照される3つの部分から構成されている。上記の場合において、最初から最後までの全ての部分処理A,B,Cの待ち合わせを行う設定においては、図9(A)に示すように、待つ側のサーバは、先行サーバによる先行ジョブの処理Cが終了し、完了ログが書き込まれたことを待ち合わせた上で、次の担当ジョブを、最初の部分処理Aから開始させる。
【0065】
一方、上記の場合において、部分処理Cの待ち合わせを行う設定においては、待つ側のサーバは、先行サーバによる先行ジョブの処理Cが終了し、完了ログが書き込まれたことを少なくとも待ち合わせた上で、次の担当ジョブのうちの部分処理Cを開始させる。このとき、待つ側のサーバは、処理Cよりも前の処理Aおよび処理Bについては、待ち合わせを行わずに、先んじて実行することができる。図9(B)に示すように、次の担当ジョブ6の部分処理A,Bは、先行ジョブの完了を待たずに先んじて実行されるが、次の担当ジョブ6の部分処理Cは、先行ジョブの完了を待ち合わせて行われ、その順番が保証される。同様に、上記の場合において、処理Bの待ち合わせを行う設定では、待つ側のサーバは、先行サーバによる先行ジョブの処理Cが完了することを待ち合わせた上で、次の担当ジョブの部分処理B,Cを開始させる。このとき、待つ側のサーバは、処理Bより前の処理Aを先んじて実行することができる。
【0066】
例えば、リクエストに待ち合わせしたい処理の箇所を指定したり、待ち合わせしたい処理の箇所を事前設定しておくことにより、先行サーバによる先行ジョブが完了するまで、待ち合わせを必要とする部分処理のみの開始を待ち合わせることができる。上記他の実施形態においては、「ジョブの完了」は、上記印刷ジョブ処理を終え、次ぎの印刷ジョブの処理のうち、少なくとも待ち合わせを要する部分処理に移行できる段階になったことを意味することとなる。
【0067】
以上、第1の実施形態による印刷ジョブ処理システムを説明してきた。以下、第2の実施形態による印刷ジョブ処理システムについて説明する。第2の実施形態による印刷ジョブ処理システムでは、ネットワーク環境、ハードウェア構成および機能ブロックは、概ね第1の実施形態のものと同様であるため、以下、相違点を中心に説明する。
【0068】
第2の実施形態によるログ監視部164は、第1の実施形態と同様に、先行サーバのログを監視し、上記ジョブ識別情報で特定される先行ジョブの完了が検知することを待ち受ける。本実施形態のログ監視部164は、さらに、上記先行ジョブの完了が検知されないまま規定時間経過した場合に、先行ジョブが失敗したものとして、処理開始トリガー部154に対し先行ジョブの失敗を通知する。処理開始トリガー部154は、上述したように担当ジョブの処理の進行を管理しており、先行ジョブの完了または失敗と、振り分けられた担当ジョブの処理の終了とを待ち合わせて、次の担当ジョブの処理へ進める。
【0069】
以下、図10、図5および図11を参照しながら、第2の実施形態による印刷ジョブ処理システム170上で実現される、負荷分散印刷ジョブ処理機能について説明する。図10は、第2の実施形態によるログ監視部164が実行する、ログ監視処理を示すフローチャートである。図11は、第2の実施形態による処理開始トリガー部154が実行する、振り分けられた担当ジョブにかかる処理の進行を管理する処理を示すフローチャートである。ジョブ処理終了検知部158が実行する処理は、図5に示す処理と同様であるため、詳細は割愛する。
【0070】
図10に示す処理は、第1の実施形態と同様に、受信部152がリクエスト情報を受信したことに対応して、ステップS400から開始される。ステップS401では、ログ監視部164は、受信部152から渡されたリクエスト情報を読み取る。ステップS402では、ログ監視部164は、リクエスト情報から特定される、先行サーバのログ情報を読み込む。ステップS403では、ログ監視部164は、取得したログ情報のうち、リクエスト情報から特定される先行ジョブのログを確認する。
【0071】
ステップS404では、ログ監視部164は、先行ジョブのログを確認した結果、先行ジョブが完了しているか否かを判定する。ステップS404で、先行ジョブのログに完了が記録されており、先行ジョブの完了が検知された場合(YES)は、ステップS405へ処理が進められる。ステップS405では、ログ監視部164は、処理開始トリガー部154に対し、先行ジョブの完了が検知された旨を通知し、ステップS406で本処理を終了する。
【0072】
一方、ステップS404で、先行ジョブが未だ完了していないと判定された場合(NO)は、ステップS407へ処理を分岐させる。ステップS407では、ログ監視部164は、本処理を開始してから一定時間経過したか否かを判定する。上記一定時間の経過は、例えば、本処理開始と共に作動させるタイマによって検出することができる。ステップS407で、一定時間が未だ経過していないと判定された場合(NO)は、ステップS402へ処理をループさせる。
【0073】
一方、ステップS407で、先行ジョブの完了ログを検知しないまま一定時間経過したと判定された場合(YES)は、ステップS408へ処理を分岐させる。ステップS408では、ログ監視部164は、処理開始トリガー部154に対し、先行ジョブの失敗が検知された旨を通知し、ステップS406で本処理を終了する。
【0074】
図11に示す処理は、ステップS500から開始される。ステップS501では、処理開始トリガー部154は、図5に示したステップS203で行われる担当ジョブの処理終了通知、および図10に示したステップS405またはS408で行われる、担当ジョブに先行する先行ジョブの完了通知または失敗通知の有無を確認する。ステップS502では、処理開始トリガー部154は、担当ジョブの処理終了通知および先行ジョブの通知(完了通知または失敗通知)の両方があったか否かを判定する。ステップS502で、担当ジョブの処理終了通知および先行ジョブの通知(完了通知または失敗通知)の両方、またはいずれかが行われていないと判定された場合(NO)は、ステップS501へ処理をループさせて、両方の通知が行われるのを待ち受ける。
【0075】
一方、ステップS502で、担当ジョブの処理終了通知および先行ジョブの通知(完了通知または失敗通知)の両方が既に行われたと判定された場合(YES)は、ステップS503へ処理を分岐させる。ステップS503以降は、図6に示したステップS303以降の処理と同様であるため説明は割愛する。
【0076】
以上説明した第2の実施形態によれば、先行ジョブの完了を待ち合わせる場合において、何らかの障害により先行ジョブの完了を検知することができなかった場合でも、一定期間の待ち合わせの後に次の担当ジョブへ処理が移される。このため、何らかの障害により先行ジョブの完了を検知することができなかった場合でも、ジョブ処理の進行が妨げられない。
【0077】
以下、さらに、第3の実施形態による印刷ジョブ処理システムについて説明する。第3の実施形態による印刷ジョブ処理システムにおけるネットワーク環境、ハードウェア構成および機能ブロックは、概ね第1の実施形態のものと同様であるため、以下、相違点を中心に説明する。
【0078】
ログ監視部164は、第1の実施形態と同様に、先行サーバのログを監視し、先行ジョブの完了が検知することを待ち受ける。第3の実施形態のログ監視部164は、さらに、先行ジョブの完了が検知されないまま一定時間経過した場合に、上記先行ジョブにさらに先行するジョブが振り分けられたサーバのログを監視する。ログ監視部164は、上記先行ジョブの完了が検知されないまま一定時間経過し、かつ、先行ジョブに先行するジョブの完了が検知された場合に、先行ジョブが失敗したものとして、処理開始トリガー部154に対し先行ジョブの失敗を通知する。
【0079】
以下、先行ジョブにさらに先行するジョブを「2つ前の先行ジョブ」と参照し、先行ジョブを「1つ前の先行ジョブ」と参照し、区別する。また、1つ前の先行ジョブが振り分けられたサーバを「1つ前の先行サーバ」と参照し、2つ前の先行ジョブが振り分けられたサーバを「2つ前の先行サーバ」と参照する。
【0080】
以下、図12、図5および図11を参照しながら、第3の実施形態による印刷ジョブ処理システム170上で実現される、負荷分散印刷ジョブ処理機能について説明する。図12は、第3の実施形態によるログ監視部164が実行する、ログ監視処理を示すフローチャートである。なお、ジョブ処理終了検知部158および処理開始トリガー部154が実行する処理は、それぞれ、図5および図11に示す処理と同様である。
【0081】
図12に示す処理は、第1の実施形態と同様に、受信部152がリクエスト情報を受信したことに対応して、ステップS600から開始される。ステップS601では、ログ監視部164は、対応するリクエスト情報を読み取る。なお、説明する実施形態においては、リクエスト情報は、1つ前の先行サーバを識別する装置識別情報と、2つ前の先行サーバを識別する装置識別情報とを含んでいるものとする。または他の実施形態では、1つ前の先行サーバを識別する装置識別情報を含む第1のリクエスト情報と、2つ前の先行サーバを識別する装置識別情報を含む第2のリクエスト情報とを受信し、2つ前の先行サーバおよび2つ前の先行ジョブを特定する態様としてもよい。
【0082】
ステップS602では、ログ監視部164は、1つ前の先行サーバのログ情報を読み込む。ステップS603では、ログ監視部164は、1つ前の先行ジョブのログを確認する。ステップS604では、ログ監視部164は、ログ確認の結果、1つ前の先行ジョブが完了しているか否かを判定する。ステップS604で、1つ前の先行ジョブの完了が検知された場合(YES)は、ステップS605へ処理が進められる。ステップS605では、ログ監視部164は、処理開始トリガー部154に対し、1つ前の先行ジョブの完了が検知された旨を通知し、ステップS606で本処理を終了する。
【0083】
一方、ステップS604で、1つ前の先行ジョブが未だ完了していないと判定された場合(NO)は、ステップS607へ処理を分岐させる。ステップS607では、ログ監視部164は、本処理を開始してから一定時間経過したか否かを判定する。ステップS607で、一定時間が未だ経過していないと判定された場合(NO)は、ステップS602へ処理をループさせる。一方、ステップS607で、完了ログを検知しないまま一定時間経過したと判定された場合(YES)は、ステップS608へ処理を分岐させる。
【0084】
ステップS608では、ログ監視部164は、リクエスト情報から特定される2つ前の先行サーバのログ情報を読み込む。ステップS609では、ログ監視部164は、取得したログ情報のうち、リクエスト情報から特定される2つ前の先行ジョブのログを確認する。ステップS610では、ログ監視部164は、ログ確認の結果、2つ前の先行ジョブが完了しているか否かを判定する。
【0085】
ステップS610で、2つ前の先行ジョブの完了が検知された場合(YES)は、ステップS611へ処理が進められる。ステップS611では、ログ監視部164は、処理開始トリガー部154に対し、1つ前の先行ジョブの失敗が検知された旨を通知し、ステップS606で本処理を終了する。一方、ステップS610で、2つ前の先行ジョブの完了が検知されなかった場合(NO)は、ステップS609へループさせて、2つ前の先行ジョブの完了を待ち受ける。
【0086】
以上説明した第3の実施形態の処理によれば、先行ジョブの完了を待ち合わせる場合において、何らかの障害により先行ジョブの完了を一定期間の検知できない場合に、2つ前の先行ジョブの完了をもって、1つ前の先行ジョブの失敗を検知し、次の担当ジョブへ処理を進めることができる。2つ前の先行ジョブが完了しているにも関わらず、一定時間内に1つ前の先行ジョブが完了していないということは、2つ前の先行ジョブも完了していない場合に比較して1つ前の先行ジョブに障害があった可能性が高いことを意味している。このため、第2の実施形態と比較して高い精度で1つ前の先行ジョブの失敗を検知することが可能となる。
【0087】
以下、さらに、第4の実施形態による印刷ジョブ処理システムについて説明する。第4の実施形態による印刷ジョブ処理システムにおけるネットワーク環境およびハードウェア構成は、概ね第1の実施形態のものと同様であるため、以下、図13を参照して、機能ブロックにおける相違点を中心に説明する。
【0088】
図13は、第4の実施形態によるロードバランス・サーバ110および複数のアプリケーション・サーバ150上で実現される機能ブロックを示す図である。図13に示すロードバランス・サーバ110は、図3に示す構成と概ね同じであるため、詳細な説明は割愛する。図13に示すアプリケーション・サーバ150は、第1の実施形態と同様の構成152〜164(待ち合わせジョブ処理部156は、第1の実施形態のジョブ処理部156に相当する。)を備える他、さらに、待ち合わせ処理分離部166と、通常処理部168とを備える。
【0089】
第4の実施形態の受信部152は、ロードバランス・サーバ110から振り分けられたリクエストと、先行ジョブおよび先行サーバを特定するためのリクエスト情報とを受信し、振り分けられたリクエストを待ち合わせ処理分離部166へ渡す。
【0090】
待ち合わせ処理分離部166は、振り分けられた担当ジョブの処理のうち、先行ジョブの完了を待ち合わせる必要のある処理を分離し、処理開始トリガー部154に通知し、担当ジョブの終了およびその先行ジョブの完了の待ち合わせを開始させる。リクエスト自体に待ち合わせの要否を指定する処理を規定する情報を含めることができる。通常処理部168は、振り分けられた担当ジョブの処理のうち、先行ジョブの完了を待ち合わせる必要のない分離された処理を実行する。
【0091】
待ち合わせジョブ処理部156は、第1の実施形態と同様に、処理開始トリガー部154により呼び出され、待ち合わせる必要のあるとされる処理を実行する。待ち合わせジョブ処理部156のジョブ処理終了検知部158は、待ち合わせが必要とされる処理を監視しており、該処理の終了を検知すると、処理開始トリガー部154に対し、その終了を通知する。処理開始トリガー部154は、待ち合わせが必要とされる処理の終了と先行ジョブの完了とを待ち合わせて、次の担当ジョブの処理へ進める。
【0092】
以上説明した第4の実施形態の処理によれば、リクエストされたジョブの処理のうち、待ち合わせが不要な処理については、先行ジョブの完了および担当ジョブの処理の終了を待ち合わせずに順次処理することができる。例えば、アプリケーション・サーバ150に対して要求されたリクエストのジョブ処理が、処理A、Bという処理の後、処理Cおよび処理Dに分離される場合に適用することができる。このとき、処理Cについては、待ち合わせが行われ、処理Dについては、待ち合わせを行わずに通常処理部168が処理を実行することができる。
【0093】
以下、さらに、第5の実施形態による印刷ジョブ処理システムについて説明する。第5の実施形態による印刷ジョブ処理システムにおけるネットワーク環境およびハードウェア構成は、概ね第1の実施形態のものと同様であるため、以下、図14〜図17を参照して、相違点を中心に説明する。
【0094】
図14は、第5の実施形態によるロードバランス・サーバ110および複数のアプリケーション・サーバ150上で実現される機能ブロックを示す図である。図14に示すロードバランス・サーバ110の振り分け部112は、第1の実施形態と同様の構成114〜118に加えて、さらにリクエスト内フラグ検知部120を備える。
【0095】
リクエスト内フラグ検知部120は、クライアント180から受信したリクエストにおけるユーザが印刷設定として設定された待ち合わせが不要であることを示すフラグの値を参照し、先行ジョブの完了を待ち合わせることが必要であるか否かを検知する。送信タイミング検知部114は、アプリケーション・サーバ150にリクエストを振り分けた後、採番部116に通知を行い、送信処理を開始させる。
【0096】
採番部116は、リクエスト内フラグ検知部120よりフラグが立っていないことが確認された場合は、振り分けたリクエストに対し、処理番号と、先行サーバの装置識別情報と、先行ジョブのジョブ識別情報とをセットにしてリクエスト情報を生成する。採番部116は、リクエスト内フラグ検知部120よりフラグが立っていることが確認された場合は、待ち合わせ不要を指定する専用のリクエスト情報を生成する。送信部118は、振り分け先のジョブ処理装置に対し、採番部116により生成されたリクエスト情報を送信する。
【0097】
第5の実施形態のログ監視部164は、待ち合わせ不要を示す専用のリクエスト情報を受信した場合は、監視を行わずに、処理開始トリガー部154に対し、待ち合わせが不要である旨を通知する。処理開始トリガー部154は、第1の実施形態と同様に、担当ジョブの処理の進行を管理しており、先行ジョブの完了と、振り分けられた担当ジョブの処理の終了とを待ち合わせて、次の担当ジョブの処理へ進める。第5の実施形態の処理開始トリガー部154は、さらに、待ち合わせが不要である旨の通知と、振り分けられた担当ジョブの処理の終了の通知があった場合にも、次の担当ジョブの処理へ進める。
【0098】
以下、図15、図5および図16を参照しながら、第5の実施形態による印刷ジョブ処理システム170上で実現される、負荷分散印刷ジョブ処理機能について説明する。図15は、第5の実施形態によるログ監視部164が実行する、ログ監視処理を示すフローチャートである。図16は、第5の実施形態による処理開始トリガー部154が実行する、振り分けられた担当ジョブにかかる処理の進行を管理する処理を示すフローチャートである。ジョブ処理終了検知部158が実行する処理は、図5に示す処理と同様であるため、詳細は割愛する。
【0099】
図15に示す処理は、第1の実施形態と同様に、受信部152がリクエスト情報を受信したことに対応して、ステップS700から開始される。ステップS701では、ログ監視部164は、リクエスト情報を確認し、待ち合わせの要否を判定する。ステップS702で、待ち合わせ不要が指定された専用のリクエスト情報であり、待ち合わせが不要であると判定された場合は、ステップS708へ処理を進める。ステップS708では、ログ監視部164は、処理開始トリガー部154に対し、待ち合わせが不要である旨を通知し、ステップS707で本処理を終了する。ステップS702で、待ち合わせが必要であると判定された場合は、ステップS703へ処理を分岐させる。ステップS703〜S707の処理は、図3に示したステップS102〜S106の処理と同様であるため、説明を割愛する。
【0100】
図16に示す処理は、ステップS800から開始される。ステップS801では、処理開始トリガー部154は、図5に示したステップS203で行われる担当ジョブの処理終了通知と、図15に示したステップS706またはS708で行われる通知との両方の有無を確認する。ステップS802では、処理開始トリガー部154は、担当ジョブの処理終了通知および上記通知(先行ジョブの完了通知または待ち合わせ不要の旨の通知)の両方があったか否かを判定する。ステップS802で、上記通知のうちの両方またはいずれかが行われていないと判定された場合(NO)は、ステップS801へ処理をループさせて、両方の通知が行われるのを待ち受ける。一方、ステップS802で、両方の通知が既に行われたと判定された場合(YES)は、ステップS803へ処理を分岐させる。ステップS803以降は、図6に示したステップS303以降の処理と同様であるため説明は割愛する。
【0101】
図17(A)は、第5の実施形態において先行する第1のサーバ150aのログ格納部162に格納されるログ情報のデータ構造を例示する。図17(B)は、第5の実施形態において第1のサーバ150aに後続する第2のサーバ150bへ送信されるリクエスト情報のデータ構造を例示する。図17(C)は、第5の実施形態においてリクエスト情報を受信した後における第2のサーバ150bのログ格納部162に格納されるログ情報のデータ構造を例示する。
【0102】
ユーザにより待ち合わせが不要である旨の指定がなされる場合は、ロードバランス・サーバ110は、図17(B)に示すように、アプリケーション・サーバ150に対し、待ち合わせ不要を示す値(false)が設定されたフラグが立てられたリクエスト情報を送信する。アプリケーション・サーバ150は、図17(B)に示すリクエスト情報を受信すると、振り分けられたリクエストのログ・レコードにおけるログ番号および確認先サーバのカラムを埋めて、さらに、待ち合わせの要否を格納するカラムに値「false」を書き込む。この場合、アプリケーション・サーバ150は、ログ監視を行わず、終了番号「51」で識別される担当ジョブの処理の終了をまって、次の担当ジョブの処理に移る。
【0103】
以上説明した第5の実施形態の処理によれば、第4の実施形態と同様に、処理順序の重要度に応じて、待ち合わせが不要なジョブについては、先行ジョブの完了および担当ジョブの処理の終了を待ち合わせずに順次処理することができる。
【0104】
以上説明したように、本実施形態によれば、クライアントから要求されたジョブを負荷分散装置により複数のジョブ処理装置に分散する構成において、小さなリソースのコストで、システム全体としてのジョブに関連する順序を可能な限り維持しながらの負荷分散が可能なジョブ処理システム、ジョブ処理装置、負荷分散装置、ジョブ処理プログラム、および負荷分散プログラムを提供することができる。
【0105】
上記機能部は、アセンブラ、C、C++、C#、Java(登録商標)、などのレガシープログラミング言語やオブジェクト指向プログラミング言語などで記述されたコンピュータ実行可能なプログラムにより実現でき、ROM、EEPROM、EPROM、フラッシュメモリ、フレキシブルディスク、CD−ROM、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、ブルーレイディスク、SDカード、MOなど装置可読な記録媒体に格納して、あるいは電気通信回線を通じて頒布することができる。
【0106】
これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【0107】
10…物理ホスト、12…MPU、14…不揮発性メモリ、16…メモリ、18…記憶制御用インタフェース、20…ハードディスク、22…バス、24…インタフェース、26…入出力装置、28…VRAM、30…グラフィック・チップ、32…ディスプレイ装置、34…ネットワークI/F、100…ネットワーク環境、110…ロードバランス・サーバ、112…振り分け部、114…送信タイミング検知部、116…採番部、118…送信部、120…リクエスト内フラグ検知部、150…アプリケーション・サーバ、152…受信部、154…処理開始トリガー部、156…ジョブ処理部、158…ジョブ処理終了検知部、160…ログ書き込み部、162…ログ格納部、164…ログ監視部、166…待ち合わせ処理分離部、168…通常ジョブ処理部、170…印刷ジョブ処理システム、180…クライアント
【先行技術文献】
【特許文献】
【0108】
【特許文献1】特開2009−054044号公報

【特許請求の範囲】
【請求項1】
複数のジョブ処理装置と、前記複数のジョブ処理装置に接続される負荷分散装置とを含むジョブ処理システムであって、前記負荷分散装置は、
ジョブに関する順序を規定する順序規定手段と、
ジョブ振り分け先のジョブ処理装置に対し、前記順序で先行する先行ジョブを特定するためのジョブ識別情報と、前記先行ジョブの振り分け先のジョブ処理装置を識別する装置識別情報とを送信する送信手段と
を含み、前記ジョブ処理装置は、それぞれ、
受信した前記装置識別情報で特定されるジョブ処理装置のログを監視し、前記ジョブ識別情報で特定される先行ジョブの完了を検知する監視手段と、
前記先行ジョブの完了が検知され、かつ、振り分けられた担当ジョブの処理が終了したことに応答して、該担当ジョブを完了させて、振り分けられた次のジョブの処理を開始する処理開始手段と、
前記担当ジョブの完了をログに書き込む書き込み手段と
を含む、ジョブ処理システム。
【請求項2】
前記監視手段は、前記先行ジョブの完了が検知されないまま規定時間経過した場合には、前記先行ジョブが失敗したものとし、前記処理開始手段は、前記先行ジョブが完了するかまたは失敗し、かつ、前記担当ジョブが終了したことに応答して、前記次のジョブの処理を開始する、請求項1に記載のジョブ処理システム。
【請求項3】
前記監視手段は、前記先行ジョブの完了が検知されないまま規定時間経過した場合には、前記先行ジョブにさらに先行するジョブが振り分けられたジョブ処理装置のログを監視し、該ジョブの完了を検知した場合に、前記先行ジョブが失敗したものとし、前記処理開始手段は、前記先行ジョブが完了するかまたは失敗し、かつ、前記担当ジョブが終了したことに応答して、前記次のジョブの処理を開始する、請求項1に記載のジョブ処理システム。
【請求項4】
前記ジョブ処理装置は、それぞれ、振り分けられた1以上の担当ジョブの処理うち、先行ジョブの完了を待ち合わせる必要のある処理を分離し、該先行ジョブの完了および担当ジョブの終了の待ち合わせを開始する分離手段をさらに含む、請求項1〜3のいずれか1項に記載のジョブ処理システム。
【請求項5】
前記負荷分散装置は、クライアントから受信したリクエスト内の指定から、先行するリクエストにかかる先行ジョブの完了を待ち合わせることが必要であるか否かを検知する要否検知手段をさらに含み、前記送信手段は、前記待ち合わせることが不要である場合は、待ち合わせが不要であることを示す情報をジョブの振り分け先のジョブ処理装置に対し送信する、請求項1〜4のいずれか1項に記載のジョブ処理システム。
【請求項6】
前記監視手段は、それぞれ、振り分けられた1以上の担当ジョブのうち、先行ジョブの完了を待ち合わせる必要のある担当ジョブについては、前記ログの監視を行わず、先行ジョブの完了を待ち合わせる必要が無い旨を前記処理開始手段に通知し、前記処理開始手段は、前記先行ジョブの完了を待ち合わせる必要が無い旨の通知を受け、かつ、前記担当ジョブの終了が検知されたことに応答して、前記次のジョブの処理を開始する、請求項5に記載のジョブ処理システム。
【請求項7】
前記処理開始手段は、前記振り分けられた次のジョブの処理として、該振り分けられた次のジョブの処理のうちの少なくとも待ち合わせを要する処理とする、請求項1〜6のいずれか1項に記載のジョブ処理システム。
【請求項8】
負荷分散装置および1以上の他のジョブ処理装置に接続されるジョブ処理装置であって、当該ジョブ処理装置は、
前記負荷分散装置から、定義された順序において振り分けられた担当ジョブに先行する先行ジョブを特定するためのジョブ識別情報と、前記先行ジョブの振り分け先のジョブ処理装置を識別する装置識別情報とを受信する受信手段と、
前記装置識別情報で特定される他のジョブ処理装置のログを監視し、前記ジョブ識別情報で特定される先行ジョブの完了を検知する監視手段と、
前記先行ジョブの完了が検知され、かつ、振り分けられた担当ジョブの処理が終了したことに応答して、該担当ジョブを完了させて、振り分けられた次のジョブの処理を開始する処理開始手段と、
前記担当ジョブの完了をログに書き込む書き込み手段と
を含む、ジョブ処理装置。
【請求項9】
前記監視手段は、前記先行ジョブの完了が検知されないまま規定時間経過した場合には、前記先行ジョブが失敗したものとし、前記処理開始手段は、前記先行ジョブが完了するかまたは失敗し、かつ、前記担当ジョブが終了したことに応答して、前記次のジョブの処理を開始する、請求項8に記載のジョブ処理装置。
【請求項10】
前記監視手段は、前記先行ジョブの完了が検知されないまま規定時間経過した場合には、前記先行ジョブにさらに先行するジョブが振り分けられた他のジョブ処理装置のログを監視し、該ジョブの完了を検知した場合に、前記先行ジョブが失敗したものとし、前記処理開始手段は、前記先行ジョブが完了するかまたは失敗し、かつ、前記担当ジョブが終了したことに応答して、前記次のジョブの処理を開始する、請求項8に記載のジョブ処理装置。
【請求項11】
複数のジョブ処理装置に接続される負荷分散装置であって、前記負荷分散装置は、
ジョブに関する順序を規定する順序規定手段と、
振り分け先のジョブ処理装置に対し、前記順序で先行する先行ジョブを特定するためのジョブ識別情報と、前記先行ジョブの振り分け先のジョブ処理装置を識別する装置識別情報とを送信する送信手段とを含み、
前記ジョブ処理装置は、それぞれ、前記装置識別情報で特定されるジョブ処理装置のログを監視して、前記ジョブ識別情報で特定される先行ジョブの完了が検知され、かつ、自機に振り分けられた担当ジョブの処理が終了したことに応答して、該担当ジョブを完了させて、自機に振り分けられた次のジョブの処理を開始し、前記担当ジョブの完了をログに書き込むことを特徴とする、
負荷分散装置。
【請求項12】
前記負荷分散装置は、クライアントから受信したリクエスト内の指定から、先行するリクエストにかかる先行ジョブの完了を待ち合わせることが必要であるか否かを検知する要否検知手段をさらに含み、前記送信手段は、前記待ち合わせることが不要である場合は、待ち合わせ不要を示す情報をジョブの振り分け先のジョブ処理装置に対し送信する、請求項11に記載の負荷分散装置。
【請求項13】
コンピュータを、請求項8〜10のいずれか1項に記載のジョブ処理装置の各手段として機能させるためのジョブ処理プログラム。
【請求項14】
コンピュータを、請求項11または12に記載の負荷分散装置の各手段として機能させるための負荷分散プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate