(57)【要約】【課題】ポーリングによりデータを取得する複数のデータ取得手段が分散された分散環境において、１つのデータ取得手段との間で通信障害が発生しても、データの取得及び処理を継続して行うことができる、可用性の高いデータ取得管理装置、データ取得管理システム及びプログラムを提供する。【解決手段】複数のデータ取得サーバに対しポーリング先を配分した結果を示すポーリング先リストと、複数のデータ取得サーバと正常に通信が行われたことを示す情報を記録した通信記録とを記憶しておいて、データ取得サーバと正常に通信が行われた場合に通信記録を更新し、更新された通信記録に基づいて正常に通信を行うことができるデータ取得サーバを特定し、正常に通信を行うことができるデータ取得サーバの数が変動した場合には、ポーリング先を再配分し、再配分の結果に応じてポーリング先リストを更新する。【選択図】図７
2010079581.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ取得サーバの各々と通信する通信手段と、
複数のデータ取得サーバの各々に対し予め登録されたポーリング先を配分した結果を示すポーリング先リストと、複数のデータ取得サーバの各々と正常に通信が行われたことを示す情報を記録した通信記録と、を記憶した記憶手段と、
データ取得サーバと正常に通信が行われた場合に、前記通信記録を更新する通信記録更新手段と、
更新された通信記録に基づいて、正常に通信を行うことができるデータ取得サーバを特定するサーバ特定手段と、
前記サーバ特定手段による特定の結果、正常に通信を行うことができるデータ取得サーバの数が変動した場合には、正常に通信を行うことができる複数のデータ取得サーバの各々に対し予め登録されたポーリング先を再配分し、再配分の結果に応じてポーリング先リストを更新するリスト更新手段と、
正常に通信が行われたデータ取得サーバに対し、ポーリング先リストが更新された場合には更新されたポーリング先リストが送信され、ポーリング先リストが更新されない場合には更新前のポーリング先リストが送信されるように、前記通信手段から送信される情報を制御するリスト送信制御手段と、
を備えたデータ取得管理装置。
【請求項２】
前記リスト更新手段は、正常に通信を行うことができる複数のデータ取得サーバの各々に対し、予め登録されたポーリング先を、ポーリングによる負荷が分散するように再配分する請求項１に記載のデータ取得管理装置。
【請求項３】
前記サーバ特定手段は、前記更新された通信記録に基づいて、最後にデータ取得サーバと正常に通信が行われた時刻から予め定めた時間内に正常に通信を行ったデータ取得サーバは、正常に通信を行うことができるデータ取得サーバであると特定する請求項１または２に記載のデータ取得管理装置。
【請求項４】
前記サーバ特定手段は、前記通信記録が更新される毎に、前記更新された通信記録に基づいて、正常に通信を行うことができるデータ取得サーバを特定する請求項１〜３のいずれか１項に記載のデータ取得管理装置。
【請求項５】
請求項１〜４のいずれか１項に記載のデータ取得管理装置と、
前記データ取得管理装置と通信する通信手段と、前記データ取得管理装置から受信したポーリング先リストを記憶した記憶手段と、前記ポーリング先リストに基づいてポーリングを行いポーリング先からデータを取得すると共に、取得されたデータを前記データ取得管理装置に送信するポーリング手段と、前記データ取得管理装置との通信が不能となった場合にポーリングを停止するポーリング停止手段と、を各々備えた複数のデータ取得サーバと、
を含むデータ取得管理システム。
【請求項６】
前記複数のデータ取得サーバの各々と通信可能に接続され且つ予めポーリング先として登録された共有記憶装置を更に備え、前記ポーリング手段は、前記データ取得管理装置との通信が不能となった場合に、ポーリング先から取得されたデータを前記共有記憶装置に格納する請求項５に記載のデータ取得管理システム。
【請求項７】
前記複数のデータ取得サーバ同士が通信可能に接続され、前記ポーリング手段は、前記データ取得管理装置との通信が不能となった場合に、ポーリング先から取得されたデータを他のデータ取得サーバに転送する請求項５に記載のデータ取得管理システム。
【請求項８】
コンピュータを、請求項１〜４のいずれか１項に記載のデータ取得管理装置を構成する各手段として機能させるためのプログラム。
【請求項９】
コンピュータを、請求項５〜７のいずれか１項に記載のデータ取得管理システムに含まれる前記複数のデータ取得サーバの各々を構成する各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ取得管理装置、データ取得管理システム及びプログラムに関する。
【背景技術】
【０００２】
従来、複数のデータ取得手段、複数のデータ処理手段が分散されている分散環境において、１つのデータ取得手段で取得したデータをデータ処理手段に転送する際に、通信障害などにより転送に失敗した場合には、通信障害が解消するまで、そのデータを処理できないという課題があった。上記課題を解決する方法としては、データ取得手段を多重化し、通信障害の発生していない正常なデータ取得手段で処理させて、可用性を高めることが考えられる。
【０００３】
例えば、クライアントとサーバ間の要求と応答を取得し保持する手段と、サーバの障害検知手段と、サーバ障害時に保持していた要求を予備のサーバに送信する手段と、予備のサーバから応答を受信する手段と、障害が発生した時点のクライアントとサーバの通信状態を検出する手段と、上記状態から通信状態を再開するよう成り代わって応答を行う手段と、をプログラムの実行により実現する代理応答装置が提案されている（特許文献１）。
【０００４】
また、通信障害の発生を未然に防止する方法として、各分散型コンピュータの稼働情報データを、ポーリング方式によってホストコンピュータへ送信し、限界値を超えている分散型コンピュータについて、障害情報を表示し、ハードウェア障害の予測に利用する分散型コンピュータが提案されている（特許文献２）。
【０００５】
【特許文献１】特開２００４−２８０７３８号公報
【特許文献２】特開平８−１６５１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、ポーリングによりデータを取得する複数のデータ取得手段が分散された分散環境において、１つのデータ取得手段との間で通信障害が発生しても、データの取得及び処理を継続して行うことができる、可用性の高いデータ取得管理装置、データ取得管理システム及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために請求項１に記載の発明は、複数のデータ取得サーバの各々と通信する通信手段と、複数のデータ取得サーバの各々に対し予め登録されたポーリング先を配分した結果を示すポーリング先リストと、複数のデータ取得サーバの各々と正常に通信が行われたことを示す情報を記録した通信記録と、を記憶した記憶手段と、データ取得サーバと正常に通信が行われた場合に、前記通信記録を更新する通信記録更新手段と、更新された通信記録に基づいて、正常に通信を行うことができるデータ取得サーバを特定するサーバ特定手段と、前記サーバ特定手段による特定の結果、正常に通信を行うことができるデータ取得サーバの数が変動した場合には、正常に通信を行うことができる複数のデータ取得サーバの各々に対し予め登録されたポーリング先を再配分し、再配分の結果に応じてポーリング先リストを更新するリスト更新手段と、正常に通信が行われたデータ取得サーバに対し、ポーリング先リストが更新された場合には更新されたポーリング先リストが送信され、ポーリング先リストが更新されない場合には更新前のポーリング先リストが送信されるように、前記通信手段から送信される情報を制御するリスト送信制御手段と、を備えたデータ取得管理装置である。
【０００８】
請求項２に記載の発明は、請求項１に記載のデータ取得管理装置において、前記リスト更新手段は、正常に通信を行うことができる複数のデータ取得サーバの各々に対し、予め登録されたポーリング先を、ポーリングによる負荷が分散するように再配分する。
【０００９】
請求項３に記載の発明は、請求項１または２に記載のデータ取得管理装置において、前記サーバ特定手段は、前記更新された通信記録に基づいて、最後にデータ取得サーバと正常に通信が行われた時刻から予め定めた時間内に正常に通信を行ったデータ取得サーバは、正常に通信を行うことができるデータ取得サーバであると特定する。
【００１０】
請求項４に記載の発明は、請求項１〜３のいずれか１項に記載のデータ取得管理装置において、前記サーバ特定手段は、前記通信記録が更新される毎に、前記更新された通信記録に基づいて、正常に通信を行うことができるデータ取得サーバを特定する。
【００１１】
請求項５に記載の発明は、請求項１〜４のいずれか１項に記載のデータ取得管理装置と、前記データ取得管理装置と通信する通信手段と、前記データ取得管理装置から受信したポーリング先リストを記憶した記憶手段と、前記ポーリング先リストに基づいてポーリングを行いポーリング先からデータを取得すると共に、取得されたデータを前記データ取得管理装置に送信するポーリング手段と、前記データ取得管理装置との通信が不能となった場合にポーリングを停止するポーリング停止手段と、を各々備えた複数のデータ取得サーバと、を含むデータ取得管理システムである。
【００１２】
請求項６に記載の発明は、請求項５に記載のデータ取得管理システムにおいて、前記複数のデータ取得サーバの各々と通信可能に接続され且つ予めポーリング先として登録された共有記憶装置を更に備え、前記ポーリング手段は、前記データ取得管理装置との通信が不能となった場合に、ポーリング先から取得されたデータを前記共有記憶装置に格納する。
【００１３】
請求項７に記載の発明は、請求項５に記載のデータ取得管理システムにおいて、前記複数のデータ取得サーバ同士が通信可能に接続され、前記ポーリング手段は、前記データ取得管理装置との通信が不能となった場合に、ポーリング先から取得されたデータを他のデータ取得サーバに転送する。
【００１４】
請求項８に記載の発明は、コンピュータを、請求項１〜４のいずれか１項に記載のデータ取得管理装置を構成する各手段として機能させるためのプログラムである。
【００１５】
請求項９に記載の発明は、コンピュータを、請求項５〜７のいずれか１項に記載のデータ取得管理システムに含まれる前記複数のデータ取得サーバの各々を構成する各手段として機能させるためのプログラムである。
【発明の効果】
【００１６】
本発明の各請求項に係る発明によれば以下の効果がある。
【００１７】
請求項１に係るデータ取得管理装置によれば、ポーリングによりデータを取得する複数のデータ取得手段が分散された分散環境において、１つのデータ取得手段との間で通信障害が発生しても、データの取得及び処理を継続して行うことができる、という効果がある。
【００１８】
請求項２に係るデータ取得管理装置によれば、負荷が分散するようにポーリング先の再配分が行われる、という効果がある。
【００１９】
請求項３に係るデータ取得管理装置によれば、正常に通信を行うことができるデータ取得手段を客観的に特定することができる、という効果がある。
【００２０】
請求項４に係るデータ取得管理装置によれば、通信障害の検出精度が向上する、という効果がある。
【００２１】
請求項５に係るデータ取得管理システムによれば、ポーリングによりデータを取得する複数のデータ取得手段が分散された分散環境において、１つのデータ取得手段との間で通信障害が発生しても、データの取得及び処理を継続して行うことができる、即ち、冗長化されたシステムを構築できる、という効果がある。
【００２２】
請求項６に係るデータ取得管理システムによれば、データ取得手段により取得されたデータが、データ処理手段に送信不能となるのを防止できる、という効果がある。
【００２３】
請求項７に係るデータ取得管理システムによれば、データ取得手段により取得されたデータが、データ処理手段に送信不能となるのを防止できる、という効果がある。
【００２４】
請求項８に係るプログラムによれば、ポーリングによりデータを取得する複数のデータ取得手段が分散された分散環境において、１つのデータ取得手段との間で通信障害が発生しても、データの取得及び処理を継続して行うことができる、という効果がある。
【００２５】
請求項９に係るプログラムによれば、ポーリングによりデータを取得する複数のデータ取得手段が分散された分散環境において、１つのデータ取得手段との間で通信障害が発生しても、データの取得及び処理を継続して行うことができる、即ち、冗長化されたシステムを構築できる、という効果がある。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照して本発明の実施の形態の一例を詳細に説明する。
【００２７】
（第１の実施の形態）
＜データ取得管理システムの構成＞
図１は本発明の第１の実施の形態に係るデータ取得管理システムの構成の一例を示す概略図である。このデータ取得管理システムは、データ取得を管理するデータ取得管理装置として、中継サーバ１０を含んで構成されている。中継サーバ１０は、通信ネットワーク１２を介して、データを取得するデータ取得サーバ１４、データ取得サーバ１６、及びデータ取得サーバ１８の各々と接続されている。本実施の形態では、３台のデータ取得サーバを備えるシステムについて説明するが、データ取得管理システムは、複数のデータ取得サーバを備えていればよい。また、本実施の形態では、通信ネットワーク１２としては、インターネットを使用する。
【００２８】
データ取得サーバ１４、データ取得サーバ１６、及びデータ取得サーバ１８の各々は、ＬＡＮ（local area network）等の比較的狭い範囲に設置された通信ネットワーク２０を介して、クライアント・コンピュータ（以下、「クライアント」という。）２２Ａ、２２Ｂ、及び複合機２４Ａ、２４Ｂの各々と接続されている。複合機とは、複写機、プリンタ、スキャナ、及びファクシミリなどの複数の機能を備えた事務機器である。本実施の形態では、２台のクライアントと２台の複合機とが接続されている例を示すが、通信ネットワーク２０には、他のクライアント、プリンタ、ファクシミリ等、その他の機器が接続されていてもよい。また、本実施の形態では、通信ネットワーク２０としては、イーサネット（登録商標）等のＬＡＮを使用する。
【００２９】
データ取得サーバ１４、データ取得サーバ１６、及びデータ取得サーバ１８の各々には、中継サーバ１０によって、クライアント２２Ａ、２２Ｂのフォルダや、複合機２４Ａ、２４Ｂの親展ボックスなど、データの取得参照先としての「ポーリング先」が配分されている。データ取得サーバ１４、データ取得サーバ１６、及びデータ取得サーバ１８の各々は、配分されたポーリング先について順次ポーリングを行い、データを取得する。データ取得サーバ１４、データ取得サーバ１６、及びデータ取得サーバ１８の各々は、取得したデータを中継サーバ１０に送信する。
【００３０】
例えば、データ取得サーバ１４にクライアント２２Ａが「ポーリング先」として割り当てられているとする。データ取得サーバ１４は、クライアント２２Ａに対して、ポーリング信号を送信する。クライアント２２Ａは、データ取得サーバ１４に対して、送信要求が無い場合には終了信号を送信し、送信要求がある場合にはデータを送信する。データ取得サーバ１４は、取得したデータを中継サーバ１０に送信する。
【００３１】
また、中継サーバ１０は、通信ネットワーク２６を介して、データ処理サーバ２８及びデータ処理サーバ３０の各々と接続されている。本実施の形態では、通信ネットワーク２６としては、イーサネット（登録商標）等のＬＡＮを使用している。データ処理サーバ２８、３０としては、プリントサーバ、データベースサーバ、ファイルサーバ、メールサーバ、ウエブサーバ、ＦＴＰサーバ等、その他のデータ処理を行うデータ処理サーバを用いることができる。例えば、データ処理サーバ２８は、プリンタをネットワークプリンタとして制御するプリントサーバであり、受信したデータをプリント出力する。また、データ処理サーバ３０は、保有するデータベースの更新や検索を行うデータベースサーバであり、受信したデータをデータベースに蓄積する。
【００３２】
＜中継サーバの構成＞
図２は中継サーバの構成の一例を示すブロック図である。中継サーバ１０は、コンピュータ本体の外に、ハードディスク等の外部記憶装置や通信インタフェース（Ｉ／Ｆ）等のデータ入出力装置を含んで構成されている。なお、中継サーバ１０は、ディスプレイ等の表示装置、キーボードやマウス等の入力装置、コンピュータ読み取り可能な記録媒体に対してプログラムやデータを読み書きするハードディスクドライブ等の各種ドライブを備えていてもよいが、ここでは図示を省略する。
【００３３】
中継サーバ１０は、各部を制御する制御部３２、ハードディスク等で構成された各種プログラムや各種データを記憶する記憶部３４、データを検索可能な形態で蓄積するデータベース３６、ＬＡＮ接続用の通信Ｉ／Ｆ３８、及びインターネット接続用の通信Ｉ／Ｆ４０を備えている。これら各部は、バス５４により相互に接続されて、データの授受が可能とされている。通信Ｉ／Ｆ３８は、データ処理サーバと通信ネットワーク（ＬＡＮ）２６を介して通信するためのＩ／Ｆである。また、通信Ｉ／Ｆ４０は、データ取得サーバと通信ネットワーク（インターネット）１２を介して通信するためのＩ／Ｆである。
【００３４】
制御部３２は、装置全体の制御及び各種演算を行うＣＰＵ（中央処理装置：Central Processing Unit）４２、ＯＳ（Operating Systems）等の各種プログラムを記憶したＲＯＭ（Read Only Memory）４４、及びプログラムの実行時にワークエリアとして使用されるＲＡＭ（Random Access Memory）４６を備えている。ＣＰＵ４２は、ＲＯＭ４４又は記憶部３４からプログラムを読み出し、ＲＡＭ４６にロードする。そして、ＲＡＭ４６をワークエリアとして使用し、ロードされたプログラムを実行する。
【００３５】
記憶部３４には、負荷配分プログラム４８、ポーリング先リスト５０、及び稼働通知記録５２が記憶されている。ポーリング先リスト５０は、予め登録されたポーリング先を複数のデータ取得サーバに配分した結果を示すリストである。稼働通知記録５２は、複数のデータ取得サーバの各々について、正常に通信が行われたことを示す情報を記録した通信記録である。本実施の形態では、正常に通信が行われたことを示す情報として、データ取得サーバから最後に稼働通知を受信した時刻（最終稼働通知時刻）を記録する。負荷配分プログラム４８については後述する。次に、本実施の形態で用いるポーリング先リスト５０及び稼働通知記録５２について、更に詳細に説明する。
【００３６】
＜ポーリング先リスト＞
図４はポーリング先リストの一例を示す図である。このポーリング先リスト５０では、８個のポーリング先のＩＰアドレスが、エントリー順に付番されて並べられている。ポーリング先のＩＰアドレスの各々は、そのポーリング先をポーリングするデータ取得サーバのＩＰアドレスと対応付けられている。
【００３７】
例えば、図４に示すように、データ取得サーバ１４のＩＰアドレスを「111.222.123.250」、データ取得サーバ１６のＩＰアドレスを「111.222.123.251」、データ取得サーバ１８のＩＰアドレスを「111.222.123.252」とする。ポーリング先リスト５０によれば、データ取得サーバ１４にエントリーNo.１〜No.３の３個のポーリング先が配分され、データ取得サーバ１６にエントリーNo.４〜No.６の３個のポーリング先が配分され、データ取得サーバ１８にエントリーNo.７及びNo.８の２個のポーリング先が配分されている。
【００３８】
データ取得サーバ１４、データ取得サーバ１６、及びデータ取得サーバ１８の各々には、ポーリングによる負荷が分散されるように、即ち、ロードバランスするように、ポーリング先が配分される。各ポーリング先のポーリングによる負荷が等しい場合には、上記の通り、ポーリング先の数が略均等になるように、各データ取得サーバにポーリング先を配分することで、ポーリングによる負荷が分散される。ポーリング先の数が略均等とは、配分されたポーリング先の数が同数（均等）である場合の外に、配分されたポーリング先の数に２、３個までの差しかない場合を含む。
【００３９】
これに対し、各ポーリング先のポーリングによる負荷が異なる場合には、各データ取得サーバにかかる負荷が略等しくなるように、負荷に応じてポーリング先を配分してもよい。ここで、ポーリングによる負荷とは、例えば、ポーリングに要する時間や記憶容量等である。
【００４０】
＜稼働通知記録＞
図５は稼働通知記録の一例を示す図である。この稼働通知記録５２では、ＩＰアドレスで特定されたデータ取得サーバ１４、データ取得サーバ１６、及びデータ取得サーバ１８の各々について、その最終稼働通知時刻が記録されている。例えば、データ取得サーバ１４の最終稼働通知時刻は「2008/08/05 11:40:36」であり、データ取得サーバ１６の最終稼働通知時刻は「2008/08/05 11:35:00」であり、データ取得サーバ１８の最終稼働通知時刻は「2008/08/05 11:20:00」である。「2008/08/05 11:40:36」は、2008年8月5日の午前11時40分36秒という時刻を表す。ここでは、正常に通信が行われたことを示す情報として、最終稼働通知時刻を記録しているが、「正常」又は「異常」の種別や「成功」又は「失敗」の種別を示す情報でもよい。
【００４１】
＜データ取得サーバの構成＞
図３はデータ取得サーバの構成の一例を示すブロック図である。なお、以下では、データ取得サーバ１４の構成を説明するが、データ取得サーバ１６、１８の各々は、データ取得サーバ１４と同様の構成であるため説明を省略する。また、以下では、データ取得サーバ１４、１６、１８の各々を区別する必要が無い場合には、データ取得サーバ１４等と総称する。データ取得サーバ１４は、コンピュータ本体の外に、外部記憶装置やデータ入出力装置を含んで構成されている。また、中継サーバ１０と同様に、表示装置、入力装置、各種ドライブを備えていてもよいが、ここでは図示を省略する。
【００４２】
データ取得サーバ１４は、各部を制御する制御部５６、ハードディスク等により構成され各種プログラムや各種データを記憶する記憶部５８、データを検索可能な形態で蓄積するデータベース６０、ＬＡＮ接続用の通信Ｉ／Ｆ６２、及びインターネット接続用の通信Ｉ／Ｆ６４を備えている。これら各部は、バス７６により相互に接続されて、データの授受が可能とされている。通信Ｉ／Ｆ６２は、クライアント２２Ａ等と通信ネットワーク（ＬＡＮ）２０を介して通信するためのＩ／Ｆである。通信Ｉ／Ｆ６４は、中継サーバ１０と通信ネットワーク（インターネット）１２を介して通信するためのＩ／Ｆである。
【００４３】
制御部５６は、ＣＰＵ６６、ＲＯＭ６８、及びＲＡＭ７０を備えている。記憶部５８には、ポーリングプログラム７１、稼働通知プログラム７２、及びポーリング先リスト７４が記憶されている。ポーリング先リスト７４は、予め登録されたポーリング先を複数のデータ取得サーバに配分した結果を示すリストである。ポーリング先リスト７４は、稼働通知に対する応答として、中継サーバ１０から受信したポーリング先リストである。正常に通信が行われている場合には、ポーリング先リスト７４は、中継サーバ１０の記憶部３４に記憶されたポーリング先リスト５０と同じものになる。
【００４４】
＜中継サーバの処理動作＞
次に、中継サーバ１０の処理動作について説明する。図６は中継サーバ１０の制御部３２で実行される処理ルーチンの概略を示すフローチャートである。図６に示すように、中継サーバ１０は、ステップ１００で、情報を受信したか否かを繰り返し判断する。情報を受信すると、肯定判定してステップ１０２に進み、ステップ１０２で、受信した情報がデータ取得サーバ１４等から送信された稼働通知か否かを判断する。受信した情報が稼働通知である場合には、ステップ１０２で肯定判定してステップ１０４に進む。
【００４５】
ステップ１０４では、負荷配分プログラム４８（図２参照）を起動して、予め登録されたポーリング先をデータ取得サーバに配分する「負荷配分処理」を行う。一方、受信した情報が稼働通知でない場合には、受信した情報はデータ取得サーバ１４等で取得されたデータであるから、ステップ１０２で否定判定してステップ１０６に進む。ステップ１０６では、データ処理サーバ２８、３０の何れかにデータを転送してルーチンを終了する。
【００４６】
図７は負荷配分処理の処理ルーチンを示すフローチャートである。データ取得サーバ１４等の各々は、例えば１０分毎、１５分毎というように、所定時間毎に中継サーバ１０に稼働通知を送信している。中継サーバ１０は、データ取得サーバ１４等から稼働通知を受信する度に負荷配分処理を行い、受信した稼働通知に対する応答として、稼働通知を送信してきたデータ取得サーバ１４等にポーリング先リストを送信する。
【００４７】
なお、データ取得サーバ１４、１６、１８は各々バラバラに、所定時間毎に中継サーバ１０に稼働通知を送信している。従って、最初は、稼働通知を送信してきた１つのデータ取得サーバに、予め登録されたポーリング先の全部が配分されるが、稼働通知を受信する度に負荷配分処理を行うことで、徐徐に平準化されて複数のデータ取得サーバ間で負荷が分散されるようになる。
【００４８】
まず、ステップ２００で、稼働通知を送信してきたデータ取得サーバ１４等の最終稼働通知時刻を書き換えて、稼働通知記録５２を更新する。次に、ステップ２０２で、稼働通知記録５２に基づいて、今回の稼働通知の最終稼働通知時刻から予め定めた時間内に稼働通知が受信されたデータ取得サーバを、通信障害が発生しておらず、正常に通信を行うことができるデータ取得サーバであると特定する。即ち、通信可能なデータ取得サーバであると特定する。この「サーバ特定処理」については後述する。
【００４９】
次に、ステップ２０４で、受信した稼働通知に対する応答として、データ取得サーバ１４等に送信するポーリング先リストを準備する。この「リスト準備処理」については後述する。次に、ステップ２０６で、稼働通知を送信してきたデータ取得サーバ１４等に、準備したポーリング先リストを送信して、ルーチンを終了する。
【００５０】
図８は「サーバ特定処理」のサブルーチンを示すフローチャートである。サーバ特定処理では、まず、ステップ２０８で、今回の稼働通知の最終稼働通知時刻から予め定めた時間以内に稼働通知が受信されなかったデータ取得サーバがあるか否かを判断する。所定時間以内に稼働通知が受信されなかったデータ取得サーバがある場合には、ステップ２０８で肯定判定されてステップ２１０に進む。ステップ２１０では、中継サーバ１０とそのデータ取得サーバとの間で通信障害が発生したとみなして、そのデータ取得サーバを通信可能なデータ取得サーバから除外する。
【００５１】
次に、ステップ２１２で、除外されなかったデータ取得サーバを、通信可能なデータ取得サーバであると特定する。所定時間以内に稼働通知が受信されなかったデータ取得サーバが無い場合には、ステップ２０８で否定判定されてステップ２１２に進む。ステップ２１２では、除外されなかったデータ取得サーバを、通信可能なデータ取得サーバであると特定する。通信可能なデータ取得サーバの特定が終わると、「サーバ特定処理」のサブルーチンが終了する。
【００５２】
図１０は図１に示すデータ取得管理システムにおいて通信障害が発生した状態を説明する図である。なお、データ処理サーバ２８、３０は省略している。図１０に示した例では、×印で示したように、中継サーバ１０とデータ取得サーバ１８との間に在る通信ネットワーク１２上で、通信障害８０が発生している。この場合には、データ取得サーバ１８から中継サーバ１０に稼働通知を送信しても、通信障害８０により中継サーバ１０には稼働通知が届かない。中継サーバ１０は、稼働通知記録５２からこの状況を読み取る。
【００５３】
例えば、図５を参照して説明すると、データ取得サーバ１４からの最新の稼働通知により、データ取得サーバ１４の最終稼働通知時刻が「2008/08/05 11:40:36」に書き換えられて、稼働通知記録５２が更新される。ここでは所定時間以内を１５分以内とする。通信障害の検出精度を高めるためには、所定時間を短く設定すればよい。実用的な観点からは、５分〜２０分程度の範囲とすることが好ましい。
【００５４】
最新の稼働通知の時刻「2008/08/05 11:40:36」から遡ること１５分以内に稼働通知が受信されていないデータ取得サーバ１８は、中継サーバ１０とデータ取得サーバ１８との間で通信障害が発生したものとみなされ、通信可能なデータ取得サーバから除外される。一方、１５分以内に稼働通知が受信されたデータ取得サーバ１４、１６は、通信可能なデータ取得サーバであると特定される。
【００５５】
図９は「リスト準備処理」のサブルーチンを示すフローチャートである。リスト準備処理では、まず、ステップ２１４で、「サーバ特定処理」の結果、通信可能なデータ取得サーバの数が変動したか否かを判断する。通信可能なデータ取得サーバの数が減少又は増加した場合には、ステップ２１４で肯定判定してステップ２１６に進む。ステップ２１６では、ポーリング先リストを更新するために、記憶されている最新のポーリング先リストを読み出す。次に、ステップ２１８で、通信可能なデータ取得サーバの各々に予め登録されたポーリング先を再配分して、新しいポーリング先リストを作成する。この新しいポーリング先リストを、稼働通知に応答するためのポーリング先リストとして準備する。
【００５６】
一方、通信可能なデータ取得サーバの数が変動しない場合には、ステップ２１４で否定判定してステップ２２０に進む。ステップ２２０では、記憶されている最新のポーリング先リストを読み出す。通信可能なデータ取得サーバの数が変動しない場合には、再配分を行う必要が無いので、既存の最新のポーリング先リストを稼働通知に応答するためのポーリング先リストとして準備する。リストが準備されると、「リスト準備処理」のサブルーチンが終了する。
【００５７】
例えば、図５を参照して説明した通り、通信可能なデータ取得サーバの数が３個から２個に減少した場合には、図１１に示すように、通信可能なデータ取得サーバ１４、１６の各々に、データ取得サーバ１４、１６、１８の各々に配分されていた８個のポーリング先を再配分して、新しいポーリング先リスト５０Ａを作成する。この例では、各ポーリング先のポーリングによる負荷が等しいと仮定し、各データ取得サーバのポーリング先の数が均等になるように、データ取得サーバ１４、１６の各々に４個ずつポーリング先を配分して負荷を分散している。なお、中継サーバ１０の記憶部３４に記憶されたポーリング先リスト５０は、新たに作成されたポーリング先リスト５０Ａにより更新される。
【００５８】
＜データ取得サーバの処理動作＞
次に、データ取得サーバ１４等の処理動作について説明する。図１２はポーリングの処理ルーチンを示すフローチャートである。データ取得サーバ１４等は、複合機の親展ボックス等のポーリング先に対し、定期的にポーリングを行ってデータを取得するためのサーバである。データ取得サーバ１４等の制御部５６は、例えば１分毎というように、所定時間毎に「ポーリングプログラム」を起動させて、ポーリングを実行している。
【００５９】
ポーリングプログラムが起動されると、ステップ４００で、ポーリング先に対してポーリング信号を送信する。ポーリング先からは、データ取得サーバ１４等に対して送信要求が無い場合には終了信号が送信され、送信要求がある場合にはデータが送信される。次に、ステップ４０２で、ポーリング先からデータを受信したか否かを判断する。データを受信した場合は、ステップ４０２で肯定判定してステップ４０４に進み、ステップ４０４で取得したデータを中継サーバ１０に送信してルーチンを終了する。一方、データを受信していない場合は、ステップ４０２で否定判定してルーチンを終了する。
【００６０】
図１３は稼働通知の処理ルーチンを示すフローチャートである。データ取得サーバ１４等の制御部５６は、上述した通り、例えば１０分毎、１５分毎というように、所定時間毎に「稼働通知プログラム」を起動させて、中継サーバ１０に稼働通知を送信している。稼働通知の送信は、ポーリングを行っていない空き時間を利用して、ポーリングとは非同期で実行される。
【００６１】
稼働通知プログラムが起動されると、まず、ステップ５００で、中継サーバ１０に対して稼働通知を送信する。データ取得サーバ１４等と中継サーバ１０との間で正常に通信が行われている場合には、データ取得サーバ１４等は、稼働通知への応答として、中継サーバ１０からポーリング先リストを間もなく受信する。従って、次のステップ５０２で、例えば５分以内等の所定時間内に、中継サーバ１０からポーリング先リストを受信したか否かを判断する。
【００６２】
ポーリング先リストを受信した場合には、ステップ５０２で肯定判定してステップ５０４に進む。ステップ５０４では、記憶部５８に記憶されているポーリング先リスト７４を、受信したポーリング先リストに更新してルーチンを終了する。所定時間が経過してもポーリング先リストを受信しない場合には、ステップ５０２で否定判定してステップ５０６に進む。ステップ５０６では、データ取得サーバ１４等と中継サーバ１０との間で通信障害が発生したとみなして、ポーリングを停止してルーチンを終了する。
【００６３】
ステップ５０６でポーリングを停止することで、ポーリング先からデータを取得することもなくなる。従って、ポーリングを停止することで、データ取得サーバ１４等で取得されたデータが、通信障害が解消するまで処理されないという事態が、事前に回避される。
【００６４】
（第２の実施の形態）
＜データ取得管理システムの構成＞
図１４は本発明の第２の実施の形態に係るデータ取得管理システムの構成の一例を示す概略図である。このデータ取得管理システムは、共有記憶装置として共有ストレージ８２を備える以外は、第１の実施の形態に係るデータ取得管理システムと同じ構成であるため、同じ構成部分には同じ符号を付して説明を省略する。
【００６５】
共有ストレージ８２は、クライアント２２Ａ、２２Ｂ、複合機２４Ａ、２４Ｂの各々と並列に、ＬＡＮ等の通信ネットワーク２０を介して、データ取得サーバ１４等と接続されている。共有ストレージ８２は、ポーリング先の１つとして予め登録されている。
【００６６】
なお、共有ストレージ８２とは、ネットワークに直接接続できるデータストレージ機器である。ファイルを共有できるようにしたハードディスクは、共有ディスクとも称される。共有ストレージ８２としては、ハードディスクを内蔵し、ファイルサーバとしての機能を搭載する共有ディスク専用のＮＡＳ（Network Attached Storage）等を用いることができる。
【００６７】
図１５は中継サーバ、データ取得サーバ及びそのポーリング先の間での通信シーケンスを示す図である。例えば、図１０と同様に、中継サーバ１０とデータ取得サーバ１８との間で、ポーリング動作の途中で通信障害８０が発生すると仮定する。データ取得サーバ１８は、最初にポーリング先No1、次にポーリング先No2というように、配分されたポーリング先に対して順番にポーリングを行う。
【００６８】
ポーリング先No1は送信要求が無いので、データ取得サーバ１８からポーリング信号を受信すると終了信号を返信する。ポーリング先No2は送信要求があるので、データ取得サーバ１８からポーリング信号を受信するとデータを返信する。データ取得サーバ１８がデータを受信した後で通信障害８０が発生すると、取得されたデータ８４はデータ取得サーバ１４等に取り残され、中継サーバ１０に直接送信することができなくなる。従って、他の経路により、取得されたデータ８４を中継サーバ１０に送信しなければならない。
【００６９】
＜データ取得サーバの処理動作＞
次に、データ取得サーバ１４等の処理動作について説明する。データ取得サーバ１４等のポーリングの処理ルーチンが異なる以外は、中継サーバ１０の処理動作、データ取得サーバ１４等の処理動作は、第１の実施の形態に係るデータ取得管理システムと同じ手順であるため説明を省略する。
【００７０】
図１６は第２の実施の形態に係るポーリングの処理ルーチンを示すフローチャートである。データ取得サーバ１４等の制御部５６は、所定時間毎に「ポーリングプログラム」を起動させて、ポーリングを実行している。ポーリングプログラムが起動されると、ステップ６００で、ポーリング先に対してポーリング信号を送信する。ポーリング先からは、データ取得サーバ１４等に対して送信要求が無い場合には終了信号が送信され、送信要求がある場合にはデータが送信される。
【００７１】
次に、ステップ６０２で、ポーリング先からデータを受信したか否かを判断する。データを受信した場合は、ステップ６０２で肯定判定してステップ６０４に進み、ステップ６０４で取得したデータを中継サーバ１０に送信する。一方、データを受信していない場合は、ステップ６０２で否定判定してルーチンを終了する。
【００７２】
次に、ステップ６０６で、中継サーバ１０へのデータ送信が成功したか否かを判断する。中継サーバ１０とデータ取得サーバ１４等との間で通信障害が発生していると、データの送信もできなくなる。中継サーバ１０へのデータ送信が成功すると、データ取得サーバ１４等に対し「データ送信が完了した旨」が通知される（送信完了通知）。これに対し、中継サーバ１０へのデータ送信が失敗すると、データ取得サーバ１４等に対し「データが未送信である旨」が通知される（未送信通知）。
【００７３】
送信完了通知を受けた場合には、ステップ６０６で肯定判定してルーチンを終了する。一方、未送信通知を受けた場合には、ステップ６０６で否定判定してステップ６０８に進む。ステップ６０８では、中継サーバ１０との間で通信障害が発生したものとみなして、取得したデータを共有ストレージ８２に格納し、ルーチンを終了する。
【００７４】
図１７はポーリング先リストの一例を示す図である。このポーリング先リスト５０Ｂでは、９個のポーリング先のＩＰアドレスが、エントリー順に付番されて並べられている。ポーリング先のＩＰアドレスの各々は、データ取得サーバのＩＰアドレスと対応付けられている。この例では、共有ストレージ８２は、エントリーNo.9のポーリング先として予め登録されており、データ取得サーバ１８に配分されている。
【００７５】
図１８は新しいポーリング先リストの一例を示す図である。例えば、図１０と同様に、中継サーバ１０とデータ取得サーバ１８との間で通信障害８０が発生すると仮定する。これにより、通信可能なデータ取得サーバ１４、１６に対しポーリング先が再配分されて、新しいポーリング先リスト５０Ｃが作成される。この例では、エントリーNo.9の共有ストレージ８２は、データ取得サーバ１６に再配分されている。
【００７６】
この通り、共有ストレージ８２はポーリング先の１つとして予め登録されているので、共有ストレージ８２に格納されたデータは、通信可能な他のデータ取得サーバ１４等によりポーリングされる。ポーリングにより取得されたデータは、停滞することなく中継サーバ１０に送信され、中継サーバ１０からデータ処理サーバ２８、３０等に転送される。
【００７７】
図１９はポーリング先リストの変形例を示す図である。このポーリング先リスト５０Ｄでは、９個のポーリング先のＩＰアドレスが付番されて並べられている。ポーリング先のＩＰアドレスの各々は、データ取得サーバのＩＰアドレスと対応付けられている。この例では、共有ストレージ８２は、エントリーNo.4、エントリーNo.8、エントリーNo.11のポーリング先として予め登録されており、データ取得サーバ１４、１６、１８の各々に配分されている。
【００７８】
共有ストレージ８２をデータ取得サーバ１４、１６、１８の各々に対しポーリング先として配分することで、共有ストレージ８２に格納されたデータは、通信可能な何れかのデータ取得サーバ１４等によりポーリングされる。ポーリングにより取得されたデータは、停滞することなく中継サーバ１０に送信され、中継サーバ１０からデータ処理サーバ２８、３０等に転送される。
【００７９】
（第３の実施の形態）
本発明の第３の実施の形態に係るデータ取得管理システムの構成は、本発明の第１の実施の形態に係るデータ取得管理システムの構成と同じであるため説明を省略する。また、第２の実施の形態と同様に、データ取得サーバ１４等のポーリングの処理ルーチンが異なる以外は、中継サーバ１０の処理動作、データ取得サーバ１４等の処理動作は、第１の実施の形態に係るデータ取得管理システムと同じ手順であるため説明を省略する。
【００８０】
図１０を参照して説明した通り、中継サーバ１０とデータ取得サーバ１８との間で通信障害が発生する場合には、通信ネットワーク（インターネット）１２上で通信障害８０が発生することになる。これに対し、データ取得サーバ１４、データ取得サーバ１６、及びデータ取得サーバ１８の各々は、通信ネットワーク（ＬＡＮ）２０を介して相互に通信が可能である。
【００８１】
従って、図１５を参照して説明したように、通信障害の発生により、取得されたデータ８４がデータ取得サーバ１８に取り残された場合には、取得されたデータ８４を、通信可能な他のデータ取得サーバ１４、１６に転送して、中継サーバ１０に送信すればよい。
【００８２】
図２０は第３の実施の形態に係るポーリングの処理ルーチンを示すフローチャートである。ステップ６００〜ステップ６０６までは、第２の実施の形態の図１６に示す処理ルーチンと同じ手順であるため説明を省略する。第３の実施の形態では、ステップ６０６で、中継サーバ１０へのデータ送信が成功したか否かを判断し、未送信通知を受けた場合には、ステップ６０６で否定判定してステップ６１０に進む。ステップ６１０では、中継サーバ１０との間で通信障害が発生したものとみなして、取得したデータを通信可能な他のデータ取得サーバに転送し、ルーチンを終了する。
【００８３】
（変形例）
なお、上記の実施の形態では、複数のデータ取得サーバ１４等の各々が所定時間毎に中継サーバ１０に稼働通知を送信し、中継サーバ１０がデータ取得サーバ１４等から稼働通知を受信する度に負荷配分処理を行い、受信した稼働通知に対する応答としてポーリング先リストを送信する例について説明したが、逆に、中継サーバ１０側で所定時間毎に負荷配分処理を行うようにしてもよい。この場合の中継サーバ１０の処理動作について説明する。
【００８４】
図２１は中継サーバ１０の制御部３２で実行される処理ルーチンの概略を示すフローチャートである。ステップ１００、ステップ１０２、及びステップ１０６は、第１の実施の形態の図６に示す処理ルーチンと同じ手順であるため説明を省略する。図２１に示すように、中継サーバ１０は、ステップ１０２で、受信した情報がデータ取得サーバ１４等から送信された稼働通知か否かを判断する。受信した情報が稼働通知である場合には、ステップ１０２で肯定判定してステップ１０８に進む。ステップ１０８では、稼働通知を送信してきたデータ取得サーバ１４等の最終稼働通知時刻を書き換えて、稼働通知記録５２を更新してルーチンを終了する。こうして、稼働通知を受信する度に、稼働通知記録５２を更新する（図５参照）。
【００８５】
中継サーバ１０の制御部３２は、所定時間毎に負荷配分プログラム４８（図２参照）を起動して、予め登録されたポーリング先をデータ取得サーバに配分する「負荷配分処理」を行う。図２２は負荷配分処理の処理ルーチンを示すフローチャートである。中継サーバ１０は、所定時間毎に負荷配分処理を行ってポーリング先リストを準備し、通信可能なデータ取得サーバ１４等の各々にポーリング先リストを同時に送信する。
【００８６】
まず、ステップ３００で、「負荷配分処理」を行う所定時間になったか否かを判断する。所定時間になれば、肯定判定して次のステップ３０２に進み、最新の稼働通知記録５２を読み出す。次に、ステップ３０４で、稼働通知記録５２に基づいて、現時点から予め定めた時間内に稼働通知が受信されたデータ取得サーバを、通信障害が発生しておらず、正常に通信を行うことができるデータ取得サーバであると特定する。即ち、通信可能なデータ取得サーバであると特定する。この「サーバ特定処理」については、図７のステップ２０２（即ち、図８の処理ルーチン）と同様に行う。
【００８７】
次に、ステップ３０６で、データ取得サーバ１４等に送信するポーリング先リストを準備する（図４参照）。この「リスト準備処理」については、図７のステップ２０４（即ち、図９の処理ルーチン）と同様に行う。次に、ステップ３０８で、ステップ３０６により特定された通信可能なデータ取得サーバ１４等の各々に、準備したポーリング先リストを送信して、ルーチンを終了する。
【図面の簡単な説明】
【００８８】
【図１】本発明の第１の実施の形態に係るデータ取得管理システムの構成の一例を示す概略図である。
【図２】中継サーバの構成の一例を示すブロック図である。
【図３】データ取得サーバの構成の一例を示すブロック図である。
【図４】ポーリング先リストの一例を示す図である。
【図５】稼働通知記録の一例を示す図である。
【図６】中継サーバの制御部で実行される処理ルーチンの概略を示すフローチャートである。
【図７】負荷配分処理の処理ルーチンを示すフローチャートである。
【図８】「サーバ特定処理」のサブルーチンを示すフローチャートである。
【図９】「リスト準備処理」のサブルーチンを示すフローチャートである。
【図１０】図１に示すデータ取得管理システムにおいて通信障害が発生した状態を説明する図である。
【図１１】ポーリング先リストの一例を示す図である。
【図１２】ポーリングの処理ルーチンを示すフローチャートである。
【図１３】稼働通知の処理ルーチンを示すフローチャートである。
【図１４】本発明の第２の実施の形態に係るデータ取得管理システムの構成の一例を示す概略図である。
【図１５】中継サーバ、データ取得サーバ及びそのポーリング先の間での通信シーケンスを示す図である。
【図１６】第２の実施の形態に係るポーリングの処理ルーチンを示すフローチャートである。
【図１７】ポーリング先リストの一例を示す図である。
【図１８】新しいポーリング先リストの一例を示す図である。
【図１９】ポーリング先リストの変形例を示す図である。
【図２０】第３の実施の形態に係るポーリングの処理ルーチンを示すフローチャートである。
【図２１】中継サーバの制御部で実行される処理ルーチンの概略を示すフローチャートである。
【図２２】負荷配分処理の処理ルーチンを示すフローチャートである。
【符号の説明】
【００８９】
１０    中継サーバ
１２    通信ネットワーク
１４    データ取得サーバ
１６    データ取得サーバ
１８    データ取得サーバ
２０    通信ネットワーク
２２Ａ  クライアント
２２Ｂ  クライアント
２４Ａ  複合機
２４Ｂ  複合機
２６    通信ネットワーク
２８    データ処理サーバ
３０    データ処理サーバ
３２    制御部
３４    記憶部
３６    データベース
３８    通信インターフェース
４０    通信インターフェース
４２    ＣＰＵ
４４    ＲＯＭ
４６    ＲＡＭ
４８    負荷配分プログラム
５０    ポーリング先リスト
５０Ａ  ポーリング先リスト
５０Ｂ  ポーリング先リスト
５０Ｃ  ポーリング先リスト
５０Ｄ  ポーリング先リスト
５２    稼働通知記録
５４    バス
５６    制御部
５８    記憶部
６０    データベース
６２    通信インターフェース
６４    通信インターフェース
６６    ＣＰＵ
６８    ＲＯＭ
７０    ＲＡＭ
７１    ポーリングプログラム
７２    稼働通知プログラム
７４    ポーリング先リスト
７６    バス
８０    通信障害
８２    共有ストレージ
８４    データ
【図１】
2010079581.tif 000003
【図２】
2010079581.tif 000004
【図３】
2010079581.tif 000005
【図４】
2010079581.tif 000006
【図５】
2010079581.tif 000007
【図６】
2010079581.tif 000008
【図７】
2010079581.tif 000009
【図８】
2010079581.tif 000010
【図９】
2010079581.tif 000011
【図１０】
2010079581.tif 000012
【図１１】
2010079581.tif 000013
【図１２】
2010079581.tif 000014
【図１３】
2010079581.tif 000015
【図１４】
2010079581.tif 000016
【図１５】
2010079581.tif 000017
【図１６】
2010079581.tif 000018
【図１７】
2010079581.tif 000019
【図１８】
2010079581.tif 000020
【図１９】
2010079581.tif 000021
【図２０】
2010079581.tif 000022
【図２１】
2010079581.tif 000023
【図２２】
2010079581.tif 000024