(57)【特許請求の範囲】
【請求項１】
検査対象を繰り返し撮像することによって、画像データを連続的に生成する撮像部と、前記撮像部によって生成された画像データを取得し、他ノードに配信する配信ノードと、前記配信された画像データに検査処理を実行する一つ以上の処理ノードと、前記配信された画像データ及び前記処理ノードによる検査結果を蓄積する一つ以上の蓄積ノードと、前記処理ノードに対して検査処理の実行を指示する指示ノードと、を備えたデータ分散管理システムであって、
前記配信ノード、前記処理ノード、前記蓄積ノード、及び、前記指示ノードの各々は、プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリと、前記プロセッサに接続されたインタフェースとを備え、
前記配信ノード、前記処理ノード、前記蓄積ノード、及び、前記指示ノードの各々は、他ノードに対して、自ノードの状態及び自ノードが保有する画像データに関する情報を含む状態通知を繰り返し送信し、
他ノードから受信した他ノードの状態通知を蓄積し、
前記配信ノードは、前記撮像部から画像データを取得した場合、前記他ノードの状態通知に基づいて、取得した画像データの配信先のノードを決定し、
決定された前記配信先のノードに前記取得した画像データを配信し、
前記配信ノードから配信された画像データを受信した各ノードは、受信した画像データを蓄積し、
前記処理ノードは、前記配信ノードから配信された画像データを蓄積し、
前記指示ノードから検査処理の実行指示を受信した場合、前記蓄積された画像データに検査処理を実行し、
検査結果を前記蓄積ノードへ送信し、
前記蓄積ノードは、前記配信ノードから配信された画像データ、及び、前記処理ノードから受信した検査結果を蓄積することを特徴とするデータ分散管理システム。
【請求項２】
前記状態通知は、ノードの状態の情報として、ノードの負荷状態、ディスク残容量、実行中のアプリケーションの種別、前記実行中のアプリケーションにおける実行中のステップ及び次に実行されるステップに関する情報を含み、
前記配信ノードは、各々のノードの前記ノードの状態の情報に基づいて、前記配信先のノードを決定することを特徴とする請求項１に記載のデータ分散管理システム。
【請求項３】
前記配信ノードは、前記配信先のノードを決定するための条件を定義したデータ配信先グループ決定ポリシーを保持し、前記データ配信先グループ決定ポリシーに基づいて、前記配信先のノードを決定することを特徴とする請求項１に記載のデータ分散管理システム。
【請求項４】
前記配信ノード、前記処理ノード、前記蓄積ノード、及び、前記指示ノードの各々は、
他ノードから受信した状態通知から、前記他ノードの状態及び保有データに関する情報を抽出し、抽出された前記情報を自ノードに上書きして格納することによって、前記状態通知を前記他ノードと共有することを特徴とする請求項１に記載のデータ分散管理システム。
【請求項５】
前記処理ノード、及び、前記蓄積ノードの各々は、自ノードのディスク残容量が所定の閾値以下であり、且つ、自ノードが保有する画像データが他ノードによって保有されていることを、前記状態通知に基づいて検出した場合、前記自ノードが保有する画像データを自ノードから削除することを特徴とする請求項１に記載のデータ分散管理システム。
【請求項６】
前記処理ノード、及び、前記蓄積ノードの各々は、自ノードのディスク残容量が所定の閾値以下であり、且つ、自ノードが保有する画像データが他ノードによって保有されていないことを、前記状態通知に基づいて検出した場合、前記自ノードが保有する画像データをシステム外部のデータサーバに移動することを特徴とする請求項１に記載のデータ分散管理システム。
【請求項７】
システム外部からデータ要求を受信し、受信した前記データ要求に応じたデータを応答として送信する中継ノードをさらに備え、
前記中継ノードは、前記データ要求を受信すると、前記他ノードの状態通知に基づいて前記データ要求に応じたデータを保有するノードを検索し、その後前記データを保有するノードから前記データを取得し、取得された前記データを応答として送信することを特徴とする請求項１に記載のデータ分散管理システム。
【請求項８】
前記処理ノードが複数存在し、且つ、検査処理実行中の処理ノードに障害が発生した場合、
他の処理ノードは、自ノードに蓄積された前記他のノードの状態通知に基づいて障害が発生した処理ノードを検出し、前記障害が発生した処理ノードによって検査処理実行中の画像データと同一の画像データを前記他の処理ノードが保有する場合には、該画像データに検査処理を実行することを特徴とする請求項１に記載のデータ分散管理システム。
【請求項９】
前記処理ノードが複数存在し、且つ、検査処理実行中の処理ノードに障害が発生した場合、
前記指示ノードは、自ノードに蓄積された前記他のノードの状態通知に基づいて障害が発生した処理ノードを検出し、前記障害が発生した処理ノードによって検査処理実行中の画像データと同一の画像データを他の処理ノードが保有する場合には、前記画像データの検査処理の実行を前記他の処理ノードに指示することを特徴とする請求項１に記載のデータ分散管理システム。
【請求項１０】
検査対象を繰り返し撮像することによって、画像データを連続的に生成する撮像部と、前記撮像部によって生成された画像データを取得し、他ノードに配信する配信ノードと、前記配信された画像データに検査処理を実行する一つ以上の処理ノードと、前記配信された画像データ及び前記処理ノードによる検査結果を蓄積する一つ以上の蓄積ノードと、前記処理ノードに対して検査処理の実行を指示する指示ノードと、を備えたデータ分散管理システムにおけるデータ分散管理方法であって、
前記配信ノード、前記処理ノード、前記蓄積ノード、及び、前記指示ノードの各々は、プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリと、前記プロセッサに接続されたインタフェースとを備え、
前記方法は、
前記配信ノード、前記処理ノード、前記蓄積ノード、及び、前記指示ノードの各々が、他ノードに対して、自ノードの状態及び自ノードが保有する画像データに関する情報が格納された状態通知を繰り返し送信し、他ノードから受信した他ノードの状態通知を蓄積する手順と、
前記配信ノードが、前記撮像部から画像データを取得した場合、前記他ノードの状態通知に基づいて、取得した画像データの配信先のノードを決定し、決定された配信先のノードに前記取得した画像データを配信する手順と、
前記配信ノードから配信された画像データを受信した各ノードが、受信した画像データを蓄積する手順と、
前記処理ノードが、前記配信ノードから配信された画像データを蓄積し、前記指示ノードから検査処理の実行指示を受信した場合、前記蓄積された画像データに検査処理を実行し、検査結果を前記蓄積ノードへ送信する手順と、
前記蓄積ノードが、前記配信ノードから配信された画像データ、及び、前記処理ノードから受信した検査結果を蓄積する手順と、
を含むことを特徴とするデータ分散管理方法。
【請求項１１】
前記状態通知は、ノードの状態の情報として、ノードの負荷状態、ディスク残容量、実行中アプリケーションの種別、前記実行中アプリケーションにおける実行中のステップ及び次に実行されるステップに関する情報を含み、
前記配信する手順において、前記配信ノードは、各々のノードの前記ノードの状態の情報に基づいて、前記配信先のノードを決定することを特徴とする請求項１０に記載のデータ分散管理方法。
【請求項１２】
前記データ分散管理システムは、システム外部からデータ要求を受信し、受信した前記データ要求に応じたデータを応答として送信する中継ノードをさらに備え、
前記方法は、
前記中継ノードが、前記データ要求を受信すると、前記他ノードの状態通知に基づいて前記データ要求に応じたデータを保有するノードを検索する手順と、
その後前記データを保有するノードから前記データを取得する手順と、
取得された前記データを応答として送信する手順と、
を含むことを特徴とする請求項１０に記載のデータ分散管理方法。
【請求項１３】
前記方法は、
前記処理ノードが複数存在し、且つ、検査処理実行中の処理ノードに障害が発生した場合、他の処理ノードが、自ノードに蓄積された前記他のノードの状態通知に基づいて障害が発生した処理ノードを検出する手順と、
前記障害が発生した処理ノードによって検査処理実行中の画像データと同一の画像データを前記他の処理ノードが保有する場合には、該画像データに検査処理を実行する手順と、
を含むことを特徴とする請求項１０に記載のデータ分散管理方法。
【請求項１４】
前記方法は、
前記処理ノードが複数存在し、且つ、検査処理実行中の処理ノードに障害が発生した場合に、前記指示ノードが、自ノードに蓄積された前記他のノードの状態通知に基づいて障害が発生した処理ノードを検出する手順と、
前記障害が発生した処理ノードによって検査処理実行中の画像データと同一の画像データを他の処理ノードが保有する場合には、前記画像データの検査処理の実行を前記他の処理ノードに指示する手順と、
を含むことを特徴とする請求項１０に記載のデータ分散管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ分散管理システム及びデータ分散管理方法に関する。
【背景技術】
【０００２】
半導体製造用ウェーハ等の検査対象の所定の検査ポイントを繰り返し撮像することによって、連続的に画像データを生成する撮像部と、撮像部によって生成された画像データを配信用に蓄積する配信ノードと、配信ノードから配信されたる画像データに対して検査処理を実行する複数の処理ノードと、を備えた計算機システムが知られている。
【０００３】
特許文献１から３には、複数の装置を用いた並列データ処理に関連する各種技術が開示されている。特許文献１には、複数のプロセッサユニットを有し、プロセッサユニットの動作テストを行い、動作テスト結果に基づき正常なプロセッサユニットにのみ処理を割り当てることによって、処理の最適化を図る並列データ処理装置が開示されている。特許文献２には、複数のサーバ端末との間で通信接続の確立からデータ送信の前処理までを予め実行することによって、サーバ切り替え時にスムーズにデータ受信を復旧できるネットワークシステムが開示されている。特許文献３には、サーバに障害が発生した場合のシステムダウンを回避するため、障害が発生したサーバの機能を迅速に他のサーバへ引き継がせるサーバ機能引継方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１６２１３０号公報
【特許文献２】特開２００３−７６６２３号公報
【特許文献３】特開２００５−５６３４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記従来の計算機システムでは、連続的に生成される画像データに対して、前記画像データの生成と連動して所定の検査処理を実施していく必要がある。
【０００６】
上記従来の計算機システムの一例として、撮像部によって生成された画像データの全てが配信ノードに蓄積され、各処理ノードはこの配信ノードに対して自ノードの処理対象の画像データを配信するよう指示する。その後、配信ノードは処理ノードからの配信指示に応じて画像データを配信する。
【０００７】
しかしながら、このような構成では、配信ノードの負荷が増大する又は画像データが配信された処理ノードに障害が発生したときに装置にて連続的に発生する画像データが喪失する、前記画像データに対する検査処理が未実施のままとなる等の状況が起こった。そのため、システム全体のスループット低下やデータの信頼性低下等の問題があった。
【０００８】
例えば特許文献１に開示された技術では、装置のオンライン処理中に障害が発生すると、プロセッサユニットの動作テストの再実行と、処理プログラム及びデータの再割り当てが必要となる。そのため、装置のオンライン処理の中断、装置にて連続的に発生する画像データの喪失等の状況が起こり得た。特許文献２に開示された技術では、サーバ切り替え時にサーバの稼動状態のみが監視される。そのため、障害発生に伴って切り替えられたサーバが通信端末の要求データを保有しない又はデータに対する処理が未実施のままである等の状況が起こり得た。特許文献３に開示された技術では、サーバ切り替え時に、装置外部からのデータ要求に対して応答不能になる又は装置にて連続的に発生するデータが喪失する等の状況が起こり得た。
【０００９】
本発明は、上述した課題を考慮したものであって、システム全体のスループットやデータの信頼性を向上させるデータ分散管理システム及びデータ分散管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、検査対象を繰り返し撮像することによって、画像データを連続的に生成する撮像部と、前記撮像部によって生成された画像データを取得し、他ノードに配信する配信ノードと、前記配信された画像データに検査処理を実行する一つ以上の処理ノードと、前記配信された画像データ及び前記処理ノードによる検査結果を蓄積する一つ以上の蓄積ノードと、前記処理ノードに対して検査処理の実行を指示する指示ノードと、を備えたデータ分散管理システムであって、前記配信ノード、前記処理ノード、前記蓄積ノード、及び、前記指示ノードの各々は、プログラムを実行するプロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリと、前記プロセッサに接続されたインタフェースとを備え、前記配信ノード、前記処理ノード、前記蓄積ノード、及び、前記指示ノードの各々は、他ノードに対して、自ノードの状態及び自ノードが保有する画像データに関する情報を含む状態通知を繰り返し送信し、他ノードから受信した他ノードの状態通知を蓄積し、前記配信ノードは、前記撮像部から画像データを取得した場合、前記他ノードの状態通知に基づいて、取得した画像データの配信先のノードを決定し、決定された前記配信先のノードに前記取得した画像データを配信し、前記配信ノードから配信された画像データを受信した各ノードは、受信した画像データを蓄積し、前記処理ノードは、前記配信ノードから配信された画像データを蓄積し、前記指示ノードから検査処理の実行指示を受信した場合、前記蓄積された画像データに検査処理を実行し、検査結果を前記蓄積ノードへ送信し、前記蓄積ノードは、前記配信ノードから配信された画像データ、及び、前記処理ノードから受信した検査結果を蓄積することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、配信ノードの負荷の増大、画像データが配信された処理ノードに障害が発生したときの画像データの喪失等の状況を防ぐことができるので、システム全体のスループットを維持したまま、データの信頼性を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態のデータ分散管理方法の概要を示す図である。
【図２】本発明の実施の形態の装置内データ処理システムの概要を示す図である。
【図３】本発明の実施の形態の装置内データ処理システムを構成する各ノード間の全体処理シーケンスを示す図である。
【図４】本発明の実施の形態の配信ノードのモジュール構成を示す図である。
【図５】本発明の実施の形態の処理ノードのモジュール構成を示す図である。
【図６】本発明の実施の形態の蓄積ノードのモジュール構成を示す図である。
【図７】本発明の実施の形態の指示ノードのモジュール構成を示す図である。
【図８】本発明の実施の形態の中継ノードのモジュール構成を示す図である。
【図９】本発明の実施の形態の画像データの配信処理の手順を示すフローチャートである。
【図１０Ａ】本発明の実施の形態の画像データの受信処理の手順を示すフローチャートである。
【図１０Ｂ】本発明の実施の形態の画像データの管理処理の手順を示すフローチャートである。
【図１１Ａ】本発明の実施の形態の状態通知メッセージの送信処理の手順を示すフローチャートである。
【図１１Ｂ】本発明の実施の形態の状態通知メッセージの受信処理の手順を示すフローチャートである。
【図１２】本発明の実施の形態の状態通知メッセージの一例を示す図である。
【図１３】本発明の実施の形態の状態管理テーブルの構成を示す図である。
【図１４Ａ】本発明の実施の形態の処理ノードに障害が発生した場合の処理引継ぎの第一のシーケンスを示す図である。
【図１４Ｂ】本発明の実施の形態の処理ノードに障害が発生した場合の処理引継ぎの第二のシーケンスを示す図である。
【図１５】本発明の実施の形態の蓄積ノードに障害が発生した場合の処理引継ぎのシーケンスを示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について図面を参照して説明する。
【００１４】
（データ分散管理方法の概要）
図１は、本発明の実施の形態のデータ分散管理方法の概要を示す図である。図１に示すデータ分散管理システム１は、撮像部２１１、配信ノード２１２、一つ以上の処理ノード２１３、一つ以上の蓄積ノード２１４、指示ノード２１５等を備える。このデータ分散管理システム１は、本発明の実施の形態のデータ分散処理方法を実施する。
【００１５】
撮像部２１１は、半導体製造用ウェーハ等の検査対象の所定の検査ポイントを繰り返し撮像することによって、画像データ（検査用画像データ）を連続的に生成する。配信ノード２１２は、撮像部２１１によって生成された画像データを取得し、処理ノード２１３、蓄積ノード２１４に対して配信する。処理ノード２１３は、配信ノード２１２によって配信された画像データを対象とした検査処理を実行する。蓄積ノード２１４は、配信ノード２１２によって配信された画像データ、及び、処理ノード２１３による検査処理結果のデータ等を蓄積する。指示ノード２１５は、画像データを対象とした検査処理を処理ノード２１３に対して割振り、検査処理の実行を指示する。なお、配信ノード２１２、処理ノード２１３、蓄積ノード２１４、指示ノード２１５には、画像データの配信及び受信、各ノードの状態及び各ノードの保有データの状態等の相互監視及び管理等を実施するためのミドルウェア１０１、１０２、１０３、１０４が導入される。
【００１６】
また、これら配信ノード２１２、処理ノード２１３、蓄積ノード２１４、指示ノード２１５は、自ノードの状態及び自ノードの保有データの状態等の情報を格納する状態通知メッセージ１０５を、自ノード以外のノード（他ノード）に対して定期的に送信する。各ノードは、他ノードからの状態通知メッセージ１０５を受信する。
【００１７】
配信ノード２１２は、撮像部２１１から画像データ１０６を取得する度に、他ノードから受信した状態通知メッセージ１０５を参照して、画像データ１０６の取得時点における各ノードの状態に応じて、画像データ１０６の配信先として１つ以上のノード（配信先グループのメンバ）を決定する。ここで、配信ノード２１２は、特に、状態通知メッセージ１０５に含まれる各ノードの画像データを格納するためのディスクの残容量、実行中のアプリケーションによる負荷状態等を参照し、ディスク残容量が指定された閾値以上、負荷状態が指定された閾値以下等の条件を満たすノードのみを配信先グループのメンバとして決定する。
【００１８】
図１では、前回の配信先が配信先グループ１１１（４台）であり、今回の配信先が配信先グループ１１２（３台）に更新されたことを示す。なお、撮像部２１１によって生成された画像データ１０６毎に配信先、つまりその画像データを保有するノードは異なり得る。しかしながら、各ノードは、状態通知メッセージ１０５により各ノードの保有する画像データに関する情報を相互通知することによって、データ分散管理システム１内の画像データの所在を共有できる。
【００１９】
以上のように、本発明の実施の形態のデータ分散管理方法は、画像データの連続的な生成に連動してシステム及び構成するノードの負荷等の状態が変化し得るデータ分散管理システム１において、各ノードのリアルタイムな状態に応じて画像データの配信先を動的に変更させることによって、１つ以上のノードに画像データの所在を共有させている。これにより、システム全体のスループット及びデータの信頼性を向上させることができる。また、データの喪失による装置の処理中断等を回避できるため、システム動作の信頼性を向上させることもできる。
【００２０】
（装置内データ処理システム２０１の概要）
図２は、本発明の実施の形態の装置内データ処理システム２０１の概要を示す図である。図２に示す装置内データ処理システム２０１は、図１のデータ分散管理システム１に対応する。この装置内データ処理システム２０１は、図１に示す各構成要素に加え、中継ノード２１６を備える。なお、以下では前述の図１と同様の機能を果たす部分には同一の符号を付して重複する説明を適宜省略する。
【００２１】
中継ノード２１６は、外部ネットワーク２０３を介して接続された外部端末２０２からデータ要求を受付け、このデータ要求に応じた応答を外部端末２０２に対して返す。
【００２２】
以下、各ノードのハードウェア構成を説明する。
【００２３】
配信ノード２１２は、処理装置（ＣＰＵ）２２１、記憶装置（メモリ、ハードディスク）２２２、通信装置２２３を備える。処理装置２２１は、記憶装置２２２に格納されたソフトウェアプログラムを処理する。記憶装置２２２は、ソフトウェアプログラムを格納する。ここでいうソフトウェアプログラムとは、撮像部２１１から画像データを取得するためのソフトウェアプログラム、画像データの配信先を決定するためのソフトウェアプログラム、装置内ネットワーク２１７を介して画像データを配信するためのソフトウェアプログラム、及び、装置内ネットワーク２１７を介して処理ノード２１３、蓄積ノード２１４、指示ノード２１５、中継ノード２１６との間で状態通知メッセージ１０５（図１参照）を送受信するためのソフトウェアプログラム等である。通信装置２２３は、装置内ネットワーク２１７を介して処理ノード２１３、蓄積ノード２１４、指示ノード２１５、中継ノード２１６との間で通信するためのインタフェース装置である。
【００２４】
処理ノード２１３は、処理装置（ＣＰＵ）２３１、記憶装置（メモリ、ハードディスク）２３２、通信装置２３３を備える。処理装置２３１は、記憶装置２３２に格納されたソフトウェアプログラムを処理する。記憶装置２３２は、ソフトウェアプログラムを格納する。ここでいうソフトウェアプログラムとは、配信ノード２１２によって配信された画像データを受信し、記憶装置２３２に格納するためのソフトウェアプログラム、装置内ネットワーク２１７を介して配信ノード２１２、他の処理ノード２１３、蓄積ノード２１４、指示ノード２１５、中継ノード２１６との間で状態通知メッセージ１０５（図１参照）を送受信するためのソフトウェアプログラム、及び、画像データを対象とした検査処理を実行するためのソフトウェアプログラム等である。また記憶装置（ハードディスク）２３２には、配信ノード２１２から受信した画像データ、処理ノード２１３による検査処理結果のデータ等も格納される。通信装置２３３は、装置内ネットワーク２１７を介して配信ノード２１２、他の処理ノード２１３、蓄積ノード２１４、指示ノード２１５、中継ノード２１６との間で通信するためのインタフェース装置である。
【００２５】
蓄積ノード２１４は、処理装置（ＣＰＵ）２４１、記憶装置（メモリ、ハードディスク）２４２、通信装置２４３を備える。処理装置２４１は、記憶装置２４２に格納されたソフトウェアプログラムを処理する。記憶装置２４２は、ソフトウェアプログラムを格納する。ここでいうソフトウェアプログラムとは、配信ノード２１２によって配信された画像データを受信し、記憶装置２４２へ格納するためのソフトウェアプログラム、及び、装置内ネットワーク２１７を介して配信ノード２１２、処理ノード２１３、指示ノード２１５、中継ノード２１６との間で状態通知メッセージ１０５（図１参照）を送受信するためのソフトウェアプログラム等である。また記憶装置（ハードディスク）２４２には、配信ノード２１２から受信した画像データ、処理ノード２１３による検査処理結果のデータ等も格納される。通信装置２４３は、配信ノード２１２、処理ノード２１３、指示ノード２１５、中継ノード２１６との間で通信するためのインタフェース装置である。
【００２６】
指示ノード２１５は、処理装置（ＣＰＵ）２５１、記憶装置（メモリ、ハードディスク）２５２、通信装置２５３を備える。処理装置２５１は、記憶装置２５２に格納されたソフトウェアプログラムを処理する。記憶装置２５２は、ソフトウェアプログラムを格納する。ここでいうソフトウェアプログラムとは、装置内ネットワーク２１７を介して配信ノード２１２、処理ノード２１３、蓄積ノード２１４、中継ノード２１６との間で状態通知メッセージ１０５（図１参照）を送受信するためのソフトウェアプログラム、及び、処理ノード２１３に対して画像データを対象とした検査処理の割振り及び検査処理の実行を指示するためのソフトウェアプログラム等である。通信装置２５３は、装置内ネットワーク２１７を介して配信ノード２１２、処理ノード２１３、蓄積ノード２１４、中継ノード２１６との間で通信するためのインタフェース装置である。
【００２７】
中継ノード２１６は、処理装置（ＣＰＵ）２６１、記憶装置（メモリ、ハードディスク）２６２、通信装置２６３を備える。処理装置２６１は、記憶装置２６２に格納されたソフトウェアプログラムを処理する。記憶装置２６２は、ソフトウェアプログラムを格納する。ここでいうソフトウェアプログラムとは、装置内ネットワーク２１７を介して他ノードから画像データを取得するためのプログラム、装置内ネットワーク２１７を介して配信ノード２１２、処理ノード２１３、蓄積ノード２１４、指示ノード２１５との間で状態通知メッセージ１０５（図１参照）を送受信するためのソフトウェアプログラム、及び、外部ネットワーク２０３を介して外部端末２０２からデータ要求を受付けて応答を返すソフトウェアプログラム等である。通信装置２６３は、装置内ネットワーク２１７を介して配信ノード２１２、処理ノード２１３、蓄積ノード２１４、指示ノード２１５との間で、また外部ネットワーク２０３を介して外部端末２０２との間で通信するためのインタフェース装置である。
【００２８】
（ノード間の全体処理シーケンス）
図３は、本発明の実施の形態の装置内データ処理システム２０１を構成する各ノード間の全体処理シーケンスを示す図である。ここでは、装置内データ処理システム２０１を構成する撮像部２１１、配信ノード２１２、処理ノード２１３、蓄積ノード２１４、指示ノード２１５、中継ノード２１６及び外部端末２０２のノード間の処理を説明する。
【００２９】
（１．状態通知メッセージの送信及び受信の処理）
まず、各ノードが、自ノードの状態及び自ノードの保有データの状態等の情報を格納する状態通知メッセージ１０５（図１参照）を、自ノード以外のノードに対して定期的に送信する処理、及び、他ノードからの状態通知メッセージ１０５を受信する処理について説明する。
【００３０】
ステップ３１１、３２１、３３１、３４１、３５１において、配信ノード２１２、処理ノード２１３、蓄積ノード２１４、指示ノード２１５、中継ノード２１６は、それぞれ状態通知メッセージ１０５を他ノードに対してブロードキャスト等によって定期的に送信する（３１１、３２１、３３１、３４１、３５１）。その後ステップ３１２、３２２、３３２、３４２、３５２において、配信ノード２１２、処理ノード２１３、蓄積ノード２１４、指示ノード２１５、中継ノード２１６は、他ノードからの状態通知メッセージ１０５を受信すると、受信した状態通知メッセージに含まれるデータを抽出し、それぞれのノードが管理するテーブルに上書きして格納する（３１２、３２２、３３２、３４２、３５２）。
【００３１】
なお、この状態通知メッセージ１０５の送信及び受信の処理は、後述する撮像部２１１によって生成された画像データの配信及び受信、検査等の処理と並行して実施される。
【００３２】
（２．画像データの配信及び受信の処理）
次に、配信ノード２１２が、撮像部２１１によって生成された画像データを取得し、他ノードに対して配信する処理について説明する。
【００３３】
ステップ３０１において、撮像部２１１は、画像データを配信ノード２１２に対して出力する（３０１）。次にステップ３１３において、配信ノード２１２は、ステップ３０１で撮像部２１１から出力された画像データを取得する（３１３）。その後ステップ３１４において、配信ノード２１２は、ステップ３１３で取得された画像データの配信先として１つ以上のノード（配信先グループのメンバ）を決定する（３１４）。その後ステップ３１５において、配信ノード２１２は、ステップ３１４で配信先として決定された配信先グループのメンバに対して、ステップ３１３で取得された画像データを配信する（３１５）。その後ステップ３２３、３３３において、ステップ３１４で配信先グループのメンバとして決定された処理ノード２１３及び蓄積ノード２１４は、ステップ３１５で配信ノード２１２から配信された画像データを受信し、受信した画像データを各ノードのディスクに格納する（３２３、３３３）。
【００３４】
（３．画像データの検査処理）
次に、処理ノード２１３が、指示ノード２１５によって検査処理の実行を指示されると、自ノードに蓄積された画像データを対象とした検査処理を実行する処理について説明する。
【００３５】
ステップ３４３において、指示ノード２１５は、撮像部２１１から取得された画像データを対象とした検査処理を処理ノード２１３に対して割振り、処理ノード２１３に対して検査処理の実行を指示する（３４３）。次にステップ３２４において、ステップ３４３で指示ノード２１５から検査処理の実行指示を受けた処理ノード２１３は、ステップ３２３でディスクに格納された画像データを対象とした検査処理を実行する（３２４）。その後ステップ３２５において、処理ノード２１３は、ステップ３２４の検査処理結果のデータを蓄積ノード２１４のディスクに格納する（３２５）。
【００３６】
（４．データ要求の受信及び応答の処理）
次に、中継ノード２１６が、外部端末２０２からデータ要求を受付け、このデータ要求に応じた応答を返す処理について説明する。
【００３７】
ステップ３６１において、中継ノード２１６は、外部端末２０２からデータ要求を受信する（３６１）。次にステップ３５３に進んで、中継ノード２１６は、ステップ３６１で受信したデータ要求の中で要求されている画像データを検索する（３５３）。ここでは、中継ノード２１６は自ノードで管理する状態管理テーブル（図１３を用いて後述）を参照して検索する。その後ステップ３５４において、中継ノード２１６は、ステップ３５３の検索結果に基づき、要求されている画像データを保有するノードからその画像データを取得する（３５４）。その後ステップ３５５において、中継ノード２１６は、ステップ３５４で取得された画像データを外部端末２０２に対して送信する。
【００３８】
なお、ステップ３５３から３５５の処理は、ステップ３０１からステップ３２５の画像データ配信及び受信、検査処理等とは非同期に実行される。
【００３９】
（配信ノード２１２のモジュール構成）
図４は、本発明の実施の形態の配信ノード２１２のモジュール構成を示す図である。
【００４０】
配信ノード２１２には、ミドルウェア４０１が導入される。このミドルウェア４０１は、データ取得部４１１、データ作成・配信制御部４１２、配信先グループ管理部４１３、状態通知受信部４１４、状態監視・状態通知送信部４１５、データ通信部４１６、状態管理テーブル４２１、データ配信先グループ決定ポリシー４２２、アプリケーション事前定義情報４２３を含む。このミドルウェア４０１は、撮像部２１１からの画像データ取得、装置内ネットワーク２１７を介した他ノードへの画像データ配信、自ノード及び他ノードの状態管理を実施するソフトウェアである。
【００４１】
データ取得部４１１は、撮像部２１１から出力される画像データを取得する。データ作成・配信制御部４１２は、データ取得部４１１によって取得された画像データに対して必要な加工処理、各種ヘッダ情報の付加等を実施することによって、装置内データ処理システム２０１で使用するための画像データを生成する。また、後述する配信先グループ管理部４１３によって決定された配信先に対して画像データを配信するようデータ通信部４１６を制御する。配信先グループ管理部４１３は、データ配信先グループ決定ポリシー４２２、アプリケーション事前定義情報４２３及び状態管理テーブル４２１（図１３を用いて後述）を参照して、画像データの配信先として１つ以上のノード（配信先グループのメンバ）を決定する。状態通知受信部４１４は、他ノードから送信された状態通知メッセージ１０５（図１参照）を、データ通信部４１６を介して受信し、受信した状態通知メッセージ１０５から抽出した他ノードの状態及び他ノードが保有するデータに関する情報を状態管理テーブル４２１に上書きして書き込む。状態監視・状態通知送信部４１５は、自ノードの状態及び保有データの状態を監視し、自ノードの状態及び保有データの状態を状態管理テーブル４２１に上書きして書き込む。また、自ノードの状態及び保有データの状態を格納する状態通知メッセージ１０５を、データ通信部４１６を介して定期的に他ノードに対して送信する。データ通信部４１６は、装置内ネットワーク２１７を介して他ノードとの間で通信する。
【００４２】
データ配信先グループ決定ポリシー４２２は、配信先グループ管理部４１３が画像データの配信先グループのメンバを決定するための条件等を定義したものである。例えば装置内データ処理システム２０１（図２参照）を構成する各ノードの種別、役割、性能等に応じて、配信先グループのメンバの数、メンバを選出するための条件等を定義する。アプリケーション事前定義情報４２３は、処理ノード２１３にて稼動する検査処理等のアプリケーションプログラムに関して、処理ロジック、扱うデータの種別及びサイズ、使用するＩ／Ｏの種別、等に基づいて、プログラム全体及びプログラムを構成する処理ステップ毎の負荷状態を静的に定義したものである。このようなデータ配信先グループ決定ポリシー４２２及びアプリケーション事前定義情報４２３は、配信先グループ管理部４１３が撮像部２１１から取得する画像データ毎に配信先グループのメンバを決定する際に参照される。
【００４３】
（処理ノード２１３のモジュール構成）
図５は、本発明の実施の形態の処理ノード２１３のモジュール構成を示す図である。
【００４４】
処理ノード２１３には、ミドルウェア５０１、ハードディスク５０２、検査処理アプリケーションプログラム５０３が導入される。ミドルウェア５０１は、データ蓄積部５１１、蓄積データ管理部５１２、アプリケーション処理制御部５１３、状態通知受信部５１４、状態監視・状態通知送信部５１５、データ通信部５１６を含む。このミドルウェア５０１は、配信ノード２１２から配信された画像データの蓄積及び管理、検査処理アプリケーションプログラム５０３の実行管理、自ノード及び他ノードの状態管理を実施するソフトウェアである。ハードディスク５０２は、配信ノード２１２から配信された画像データを格納する。検査処理アプリケーションプログラム５０３は、ハードディスク５０２に格納された画像データを対象とした検査処理を実行する。
【００４５】
データ蓄積部５１１は、データ通信部５１６を介して配信ノード２１２から受信した画像データをハードディスク５０２に格納する。蓄積データ管理部５１２は、ハードディスク５０２に格納されている画像データの状態を監視し、監視結果に基づき状態管理テーブル５２１を更新する。具体的には、古いデータの削除、転送等を実行する。アプリケーション処理制御部５１３は、検査処理アプリケーションプログラム５０３の実行状態を監視し、監視結果に基づき状態管理テーブル５２１（図１３を用いて後述）を更新する。また、このアプリケーション処理制御部５１３は、状態管理テーブル５２１を参照して他の処理ノードにおける障害発生を検知した場合に、障害が発生した処理ノードにおいて実行中であった処理を引継ぐために検査処理アプリケーションプログラム５０３を起動等する。状態通知受信部５１４は、他ノードから送信された状態通知メッセージを、データ通信部５１６を介して受信し、受信した状態通知メッセージから抽出した他ノードの状態及び他ノードが保有するデータに関する情報を状態管理テーブル５２１に上書きして書き込む。状態監視・状態通知送信部５１５は、自ノードの状態及び保有データの状態を監視し、自ノードの状態及び保有データの状態を状態管理テーブル５２１に上書きして書き込む。また、自ノードの状態及び保有データの状態を格納する状態通知メッセージを、データ通信部５１６を介して定期的に他ノードに対して送信する。データ通信部５１６は、装置内ネットワーク２１７を介して他のノードとの間で通信する。
【００４６】
（蓄積ノード２１４のモジュール構成）
図６は、本発明の実施の形態の蓄積ノード２１４のモジュール構成を示す図である。
【００４７】
蓄積ノード２１４には、ミドルウェア６０１、ハードディスク６０２が導入される。ミドルウェア６０１は、データ蓄積部６１１、蓄積データ管理部６１２、状態通知受信部６１３、状態監視・状態通知送信部６１４、データ通信部６１５を含む。このミドルウェア６０１は、配信ノード２１２から配信された画像データの蓄積及び管理、自ノード及び他ノードの状態管理を実施するソフトウェアである。ハードディスク６０２は、配信ノード２１２から配信された画像データ及び処理ノード２１３による検査処理結果のデータを格納する。
【００４８】
データ蓄積部６１１は、データ通信部６１５を介して配信ノード２１２から受信した画像データ及び処理ノード２１３から受信した検査処理結果のデータをハードディスク６０２に格納する。蓄積データ管理部６１２は、ハードディスク６０２に格納されている画像データの状態を監視し、監視結果に基づき状態管理テーブル６２１（図１３を用いて後述）を更新する。具体的には、古いデータの削除、転送等を実行する。状態通知受信部６１３は、他ノードから送信された状態通知メッセージを、データ通信部６１５を介して受信し、受信した状態通知メッセージから抽出した他ノードの状態及び他ノードが保有するデータに関する情報を状態管理テーブル６２１に上書きして書き込む。状態監視・状態通知送信部６１４は、自ノードの状態及び保有データの状態を監視し、自ノードの状態及び保有データの状態を状態管理テーブル６２１に上書きして書き込む。また、自ノードの状態及び保有データの状態を格納する状態通知メッセージを、データ通信部６１５を介して定期的に他ノードに対して送信する。データ通信部６１５は、装置内ネットワーク２１７を介して他のノードとの間で通信する。
【００４９】
（指示ノード２１５のモジュール構成）
図７は、本発明の実施の形態の指示ノード２１５のモジュール構成を示す図である。
【００５０】
指示ノード２１５には、ミドルウェア７０１、実行割振り・指示アプリケーションプログラム７０２が導入される。ミドルウェア７０１は、状態通知受信部７１１、状態監視・状態通知送信部７１２、データ通信部７１３を含む。このミドルウェア７０１は、自ノード及び他ノードの状態管理を実施するソフトウェアである。実行割振り・指示アプリケーションプログラム７０２は、処理ノード２１３に対して画像データを対象とした検査処理の割振り、検査処理の実行を指示する。
【００５１】
状態通知受信部７１１は、他ノードから送信された状態通知メッセージを、データ通信部７１３を介して受信し、受信した状態通知メッセージから抽出した他ノードの状態及び他ノードが保有するデータに関する情報を状態管理テーブル７２１（図１３を用いて後述）に上書きして書き込む。状態監視・状態通知送信部７１２は、自ノードの状態及び保有データの状態を監視し、自ノードの状態及び保有データの状態を状態管理テーブル７２１に上書きして書き込む。また、自ノードの状態及び保有データの状態を格納する状態通知メッセージを、データ通信部７１３を介して定期的に他ノードに対して送信する。データ通信部７１３は、装置内ネットワーク２１７を介して他ノードとの間で通信する。
【００５２】
なお、実行割振り・指示アプリケーションプログラム７０２は、状態管理テーブル７２１を参照し、状態管理テーブル７２１に格納された各々の処理ノード２１３の状態、保有データ等に応じて、画像データに対して検査処理を割振り、検査処理の実行を指示する処理ノード２１３を決定する。
【００５３】
（中継ノード２１６のモジュール構成）
図８は、本発明の実施の形態の中継ノード２１６のモジュール構成を示す図である。
【００５４】
中継ノード２１６には、ミドルウェア８０１、データ要求受付プログラム８０２が導入される。ミドルウェア８０１は、データ検索・取得部８１１、状態通知受信部８１２、状態監視・状態通知送信部８１３、データ通信部８１４を含む。このミドルウェア８０１は、装置内データ処理システム２０１内のデータ検索及び取得、自ノード及び他ノードの状態管理を実施するソフトウェアである。データ要求受付プログラム８０２は、外部ネットワーク２０３を介して外部端末２０２からデータ要求を受付け、このデータ要求に応じた応答を返す。
【００５５】
データ検索・取得部８１１は、外部端末２０２からデータ要求を受けたデータ要求受付プログラム８０２からの指示に基づいて、状態管理テーブル８２１（図１３を用いて後述）を参照することによって要求されている画像データを保有するノードを検索し、そのノードから画像データを取得する。また、取得された画像データを、データ要求受付プログラム８０２に対して出力する。状態通知受信部８１２は、他ノードから送信された状態通知メッセージ１０５を、データ通信部８１４を介して受信し、受信した状態通知メッセージから抽出した他ノードの状態及び他ノードが保有するデータに関する情報を状態管理テーブル７２１に上書きして書き込む。状態監視・状態通知送信部８１３は、自ノードの状態及び保有データの状態を監視し、自ノードの状態及び保有データの状態を状態管理テーブル８２１に上書きして書き込む。また、自ノードの状態及び保有データの状態を格納する状態通知メッセージ１０５を、データ通信部８１４を介して定期的に他ノードに対して送信する。データ通信部８１４は、装置内ネットワーク２１７を介して他ノードとの間で通信する。
【００５６】
（画像データの配信処理）
図９は、本発明の実施の形態の画像データの配信処理の手順を示すフローチャートである。ここでは、配信ノード２１２による画像データの配信処理について図４も参照して説明する。
【００５７】
まずステップ９０１において、データ取得部４１１は、撮像部２１１から画像データを取得する（９０１）。次にステップ９０２において、配信先グループ管理部４１３は、状態管理テーブル４２１におけるノード毎の状態情報を参照し、稼働中のノード毎に後述するステップ９０３から９１０の処理を実施する（９０２）。ステップ９０３において、配信先グループ管理部４１３は、所定のノードのディスク残容量が事前に指定された閾値よりも大きいか否かを判定する（９０３）。ノードのディスク残容量が事前に指定された閾値以下である場合（９０３でＮＯ）、ステップ９０２に戻って次のノードについて処理を繰り返す。一方、ノードのディスク残容量が事前に指定された閾値を超過する場合（９０３でＹＥＳ）、ステップ９０４に進む。
【００５８】
ステップ９０４に進んだ場合、配信先グループ管理部４１３は、そのノードの負荷状態が事前に指定された条件と照合して許容可能か否かを判定する（９０４）。ノードの負荷状態が事前に指定された条件と照合して許容不可である場合（９０４でＮＯ）、ステップ９０２に戻って次のノードについて処理を繰り返す。一方、ノードの負荷状態が事前に指定された条件と照合して許容可能である場合（９０４でＹＥＳ）、ステップ９０５に進む。ステップ９０５に進んだ場合、配信先グループ管理部４１３は、そのノードが実行中のアプリケーションの種別が、事前定義による負荷が事前に指定された閾値以上のアプリケーションであるか否かを判定する（９０５）。実行中のアプリケーションの種別が事前定義による負荷が事前に指定された閾値以上のアプリケーションである場合（９０５でＮＯ）、ステップ９０２に戻って次のノードについて処理を繰り返す。アプリケーションの種別に対する事前定義による負荷とは、アプリケーションの処理ロジック、処理対象となるデータの種類及びサイズ、アプリケーションの実行環境等に基づいて推定され、アプリケーション実行前に静的に定義される負荷の度合いである。一方、実行中のアプリケーションの種別が、事前定義による負荷が事前に指定された閾値未満のアプリケーションである場合（９０５でＹＥＳ）、ステップ９０６に進む。ステップ９０６に進んだ場合、配信先グループ管理部４１３は、そのノードの実行中のアプリケーションの実行中のステップが、事前定義による負荷が事前に指定された閾値以上のステップであるか否かを判定する（９０６）。実行中のステップが、事前定義による負荷が事前に指定された閾値以上のステップである場合（９０６でＮＯ）、ステップ９０２に戻って次のノードについて処理を繰り返す。アプリケーションの処理ステップに対する事前定義による負荷とは、アプリケーションの中で特定の処理ステップの処理ロジック、処理対象となるデータの種類及びサイズ、アプリケーションの実行環境等から推定され、アプリケーション実行前に静的に定義される負荷の度合いである。一方、実行中のステップが、事前定義による負荷が事前に指定された閾値未満のステップである場合（９０６でＹＥＳ）、ステップ９０７に進む。ステップ９０７に進んだ場合、配信先グループ管理部４１３は、そのノードの実行中アプリケーションが次に実行するステップ（以降、「次実行ステップ」という）が、事前定義による負荷が事前に指定された閾値以上のステップであるか否かを判定する（９０７）。次実行ステップが、事前定義による負荷が事前に指定された閾値以上のステップである場合（９０７でＮＯ）、ステップ９０２に戻って次のノードについて処理を繰り返す。一方、次実行ステップが、事前定義による負荷が事前に指定された閾値未満のステップである場合（９０７でＹＥＳ）、ステップ９０８に進む。ステップ９０８に進んだ場合、配信先グループ管理部４１３は、データ配信先グループ決定ポリシー４２２において事前に作成されたノード決定の条件を参照し（９０８）、そのノードが条件に合致するか否かを判定する（９０９）。そのノードが条件に合致しない場合（９０９でＮＯ）、ステップ９０２に戻って次のノードについて処理を繰り返す。一方、そのノードが条件に合致する場合（９０９でＹＥＳ）、ステップ９１０に進んで、配信先グループ管理部４１３は、そのノードを配信先グループのメンバに追加する（９１０）。その後ステップ９１１において、配信先グループ管理部４１３は、稼働中の全ノードに対してステップ９０２から９０９の処理が完了したか否かを判定する（９１１）。稼動中の全ノードに対してステップ９０２から９０９の処理が完了していない場合（９１１でＮＯ）、ステップ９０２に戻って次のノードについて処理を繰り返す。稼動中の全ノードに対してステップ９０２から９０９の処理が完了した場合（９１１でＹＥＳ）、ステップ９１２において、データ通信部４１６は、ステップ９１０でメンバが順次追加された配信先グループのメンバに対して画像データを配信する（９１２）。
【００５９】
以上のように、配信ノード２１２は、撮像部２１１から画像データ１０６を取得する度に、他ノードから受信した状態通知メッセージ１０５を参照して、画像データ１０６の取得時点における各ノードの状態に応じて、画像データ１０６の配信先として１つ以上のノード（配信先グループのメンバ）を決定し、画像データを配信する。これにより、配信ノード２１２への画像データ１０６を蓄積し、各ノードが配信ノード２１２に問合せて画像データの配信を指示する場合等に比べて、配信ノード２１２の負荷が増大するのを防ぐことができる。
【００６０】
（画像データの受信処理）
図１０Ａは、本発明の実施の形態の画像データの受信処理の手順を示すフローチャートである。ここでは、処理ノード２１３、蓄積ノード２１４が、配信ノード２１２から配信された画像データを受信する処理について説明する。
【００６１】
まずステップ１０１１において、配信ノード２１２から配信先として決定された処理ノード２１３、蓄積ノード２１４（以下、単に「受信ノード」という）は、配信ノード２１２によって配信された画像データを受信する（１０１１）。次にステップ１０１２において、受信ノードは、ステップ１０１１で受信した画像データを自ノードのディスクに格納する（１０１２）。その後ステップ１０１３において、受信ノードは、ステップ１０１１で受信した画像データに関する情報を自ノードの状態管理テーブル（図１３を用いて後述）に書き込むことによって同テーブルを更新する（１０１３）。ここでは、特に、状態管理テーブルにおける自ノードの保有データに関する保有データ状態管理テーブル１３０２（図１３Ｂ参照）を更新する。
【００６２】
（画像データの管理処理）
図１０Ｂは、本発明の実施の形態の画像データの管理処理の手順を示すフローチャートである。ここでは、受信ノードが、受信した画像データに対して実施する蓄積、転送、削除等の管理処理について説明する。
【００６３】
まずステップ１０２１において、受信ノードは、自ノードにおけるアプリケーションの実行状態を監視する（１０２１）。次にステップ１０２２において、受信ノードは、ステップＳ１０２１の監視結果としてアプリケーションの実行状態に変化があるか否かを判定する（１０２２）。アプリケーションの実行状態に変化がある場合（１０２２でＹＥＳ）、ステップ１０２３において、受信ノードは、状態管理テーブルを更新する（１０２３）。ここでは、状態管理テーブル（図１３を用いて後述）におけるノード状態管理テーブル１３０１の実行アプリケーション名称１３１６、実行中ステップ１３１７、次実行ステップ１３１８の各項目を更新する。一方、アプリケーションの実行状態に変化がない場合（１０２２でＮＯ）、ステップ１０２４に進む。ステップ１０２４において、受信ノードは、自ノードのディスクの残容量を監視する（１０２４）。その後ステップ１０２５において、受信ノードは、ステップ１０２４の監視結果としてディスク残容量が事前に指定された閾値以下か否かを判定する（１０２５）。ディスク残容量が事前に指定された閾値以下ではない場合（１０２５でＮＯ）、ステップ１０２１に戻る。一方、ディスク残容量が事前に指定された閾値以下である場合（１０２５でＹＥＳ）、ステップ１０２６に進む。ステップ１０２６において、受信ノードは、自ノードにおいて保有データのディスクへの保存期間が設定されているか否かを判定する（１０２６）。保有データのディスクへの保存期間が設定されていない場合（１０２６でＮＯ）、ステップ１０２７に進む。一方、保有データのディスクへの保存期間が設定されている場合（１０２６でＹＥＳ）、ステップ１０３１に進む。
【００６４】
ステップ１０２７に進んだ場合、受信ノードは、状態管理テーブルにおける自ノードの保有データ状態管理テーブル（図１３Ｂ参照）を参照し、保有データの中を取得時間が最も古いデータから検索する（１０２７）。その後ステップ１０２８において、受信ノードは、状態管理テーブルにおける他ノードの保有データ状態管理テーブルを参照し、ステップ１０２７で検索されたデータが他ノードで保有されているか否かを判定する（１０２８）。他ノードで保有されている場合（１０２８でＹＥＳ）、ステップ１０２９において、受信ノードは、該当するデータを自ノードのディスクより削除し（１０２９）、状態管理テーブルを更新する（１０３０）。一方、他ノードで保有されていない場合（１０２８でＮＯ）、ステップ１０２１に戻る。
【００６５】
ステップ１０３１に進んだ場合、受信ノードは、状態管理テーブルにおける自ノードの保有データ状態管理テーブルにて保有データ毎の状態情報を参照する（１０３１）。その後ステップ１０３２において、受信ノードは、ステップ１０３１の結果、保有データ状態管理テーブルにおける各データの取得時刻を比較して、データ保存期間を経過したか否かを判定する（１０３２）。データ保存期間を経過していない場合（１０３２でＮＯ）、ステップ１０３２から１０３６を実施せずにステップ１０３７に進む。一方、データ保存期間を経過した場合（１０３２でＹＥＳ）、ステップ１０３３において、受信ノードは、ステップ１０３１の結果、該当データの参照頻度が低いか否かを判定する（１０３３）。該当データの参照頻度が低くない場合（１０３３でＮＯ）、ステップ１０３４から１０３６の処理を実施せずにステップ１０３７に進む。一方、該当データの参照頻度が低い場合（１０３３でＹＥＳ）、ステップ１０３４に進んで、受信ノードは、該当データを他ノードでも保有しているか否かを判定する（１０３４）。他ノードが該当するデータを保有している場合（１０３４でＹＥＳ）、ステップ１０３５に進んで、受信ノードは、該当するデータを自ノードのディスクより削除する（１０３５）。一方、他ノードが該当データを保有していない場合（１０３４でＮＯ）、ステップ１０３６に進んで、受信ノードは、該当するデータを装置外部のデータ管理サーバ等へと転送し、データ管理サーバ上のディスクに保存してから、自ノードのディスクより該当するデータを削除する（１０３６）。その後ステップ１０３７に進んで、受信ノードは、処理結果に基づき状態管理テーブルを更新する（１０３７）。その後ステップ１０３８に進んで、受信ノードは、自ノードが保有する全てのデータに対してステップ１０３１から１０３７の処理が完了したか否かを判定する（１０３８）。処理が完了していない場合（１０３８でＮＯ）、ステップ１０３１に戻る。処理が完了した場合（１０３８でＹＥＳ）、ステップ１０２１に戻る。
【００６６】
（状態通知メッセージの送信処理）
図１１Ａは、本発明の実施の形態の状態通知メッセージの送信処理の手順を示すフローチャートである。ここでは、各ノードが、他ノードに対して状態通知メッセージ（図１の状態通知メッセージ１０５）を送信する処理の詳細について説明する。
【００６７】
まずステップ１１１１において、各ノードは、自ノードにて管理する状態管理テーブル（図１３を用いて後述）を参照し、自ノードの状態に関する情報を抽出する（１１１１）。次にステップ１１１２において、各ノードは、自ノードにて管理する状態管理テーブルを参照し、自ノードの保有データに関する情報を抽出する（１１１２）。なお、状態管理テーブルに自ノードの状態に関する情報及び保有データに関する情報を書込む処理の詳細は図１０Ａのステップ１０１２にて前述している。その後ステップ１１１３において、各ノードは、ステップ１１１１及び１１１２で抽出されたデータを格納し、状態通知メッセージのデータを作成する（１１１３）。その後ステップ１１１４において、各ノードは、ステップ１１１３で作成された状態通知メッセージを他ノードに対して送信する（１１１４）。その後ステップ１１１５において、各ノードは、指定された一定時間待機する（１１１５）。その後、ステップ１１１１から１１１５までの処理は繰り返される。
【００６８】
（状態通知メッセージの受信処理）
図１１Ｂは、本発明の実施の形態の状態通知メッセージの受信処理の手順を示すフローチャートである。ここでは、各ノードが、他ノードから状態通知メッセージ（図１の状態通知メッセージ１０５）を受信する処理の詳細について説明する。
【００６９】
まずステップ１１２１において、各ノードは、他ノードから状態通知メッセージを受信する（１１２１）。次にステップ１１２２において、各ノードは、ステップ１１２１で受信した状態通知メッセージから送信元の他ノードの状態に関する情報を抽出する（１１２２）。その後ステップ１１２３において、各ノードは、ステップ１１２２で抽出された他ノードの状態に関する情報を、自ノードにて管理する状態管理テーブル（図１３を用いて後述）に格納する（１１２３）。その後ステップ１１２４において、各ノードは、ステップ１１２１で受信した状態通知メッセージから他ノードの保有データに関する情報を抽出する（１１２４）。その後ステップ１１２５において、各ノードは、ステップ１１２４で抽出された他ノードの保有データに関する情報を、自ノードにて管理する状態管理テーブルに格納する（１１２５）。その後、ステップ１１２１から１１２５までの処理は繰り返される。
【００７０】
（状態通知メッセージ１２０１の一例）
図１２は、本発明の実施の形態の状態通知メッセージ１２０１の一例を示す図である。
【００７１】
状態通知メッセージ（以下、単に「メッセージ」という）１２０１は、ヘッダ情報１２１１、通番１２１２、送信時刻１２１３、ノード状態情報領域１２１４、保有データ数１２１５、保有データ情報領域１２１６を含む。
【００７２】
ヘッダ情報１２１１には、メッセージプロトコル等に関する情報が格納される。通番１２１２には、送信元ノードによって送信されるメッセージに付与される通し番号が格納される。送信時刻１２１３には、送信元ノードによって記録されたメッセージ１２０１の送信時刻が格納される。ノード状態情報領域１２１４には、メッセージ１２０１の送信時点での送信元ノードの状態に関する情報が格納される。保有データ数１２１５には、メッセージ１２０１の送信時点での送信元ノードによって保有されるデータの総数が格納される。保有データ情報領域１２１６には、メッセージ１２０１送信時点での送信元ノードにおける個々の保有データ情報（１２３１、１２３２、１２３３）が格納される。
【００７３】
ノード状態情報領域１２１４には、ノードＩＤ１２２１、ノード種別１２２２、稼動状態１２２３、負荷状態１２２４、ディスク残容量１２２５、実行アプリケーション名称１２２６、実行中ステップ１２２７、次実行ステップ１２２８が格納される。
【００７４】
ノードＩＤ１２２１には、メッセージ１２０１の送信元であるノードを識別する情報が格納される。ノード種別１２２２には、メッセージ１２０１の送信元であるノードの種別が格納される。ここでノード種別とは、ノードの処理内容に基づく種別である。具体的には、配信ノード、処理ノード、蓄積ノード、指示ノード、中継ノードのいずれかである。稼動状態１２２３には、メッセージ１２０１送信時点での送信元ノードの稼動状態が格納される。負荷状態１２２４には、送信元ノードの負荷状態が格納される。ここでの負荷状態は、ＣＰＵ負荷、Ｉ／Ｏ負荷等の現在値、過去の統計値等を含む。ディスク残容量１２２５には、メッセージ１２０１送信時点での送信元ノードにおけるディスクの残りの容量が格納される。実行アプリケーション名称１２２６には、メッセージ１２０１送信時点での送信元ノードにおいて実行中のアプリケーションの名称が格納される。実行中ステップ１２２７には、実行アプリケーション名称１２２６に該当するアプリケーションにおける、メッセージ１２０１送信時点での実行中のステップを識別する情報が格納される。次実行ステップ１２２８には、実行アプリケーション名称１２２６に該当するアプリケーションにおける、メッセージ１２０１送信時点での次に実行されるステップを識別する情報が格納される。
【００７５】
保有データ情報領域１２１６に格納される個々の保有データ情報（１２３１、１２３２、１２３３）は、データ名称１２４１、データサイズ１２４２、データ形式１２４３、検査ＩＤ１２４４、グループＩＤ１２４５、取得時刻１２４６、処理進捗１２４７を含む。データ名称１２４１には、保有データの名称が格納される。データサイズ１２４２には、保有データのデータサイズが格納される。データ形式１２４３には、保有データのデータ形式が格納される。検査ＩＤ１２４４には、保有データに対して割り当てられた検査ＩＤが格納される。グループＩＤ１２４５には、保有データが配信ノードによって配信された際に割り当てられる配信先グループを識別する情報が格納される。取得時刻１２４６には、保有データの配信ノードにおける取得時刻が格納される。処理進捗１２４７には、保有データに対して実施された処理の進捗に関する情報が格納される。
【００７６】
（状態管理テーブルの構成）
図１３は、本発明の実施の形態の状態管理テーブルの構成を示す図である。状態管理テーブルは、前述のように、各ノードが自ノードの状態及び保有データに関する情報及び他ノードの状態及び保有データに関する情報を格納するためのテーブルである。各ノードは、他ノードから状態通知メッセージ（図１２参照）を受信する度に、この状態管理テーブルに上書きして書込む。
【００７７】
状態管理テーブルは、各ノードの状態に関する情報を一括して管理するノード状態管理テーブル１３０１（図１３Ａ）、各ノードの保有データに関する情報を管理する保有データ状態管理テーブル１３０２（図１３Ｂ）を含む。なお、保有データ状態管理テーブル１３０２は、自ノード用の一つ及び他ノードの個数分用意される。
【００７８】
図１３Ａに示すノード状態管理テーブル１３０１は、ノードＩＤ１３１１、ノード種別１３１２、稼動状態１３１３、負荷状態１３１４、ディスク残容量１３１５、実行アプリケーション名称１３１６、実行中ステップ１３１７、次実行ステップ１３１８、保有データ情報ポインタ１３１９、更新時刻１３１０を含む。
【００７９】
ノードＩＤ１３１１には、自ノード又は状態通知メッセージの送信元ノードの識別情報が格納される。ノード種別１３１２には、自ノード又は状態通知メッセージの送信元ノードの種別が格納される。ここでノード種別とは、ノードの処理内容に基づく種別である。具体的には、配信ノード、処理ノード、蓄積ノード、指示ノード、中継ノードのいずれかである。稼動状態１３１３には、自ノード又は状態通知メッセージ送信時点での送信元ノードの稼動状態が格納される。負荷状態１３１４には、自ノード又は状態通知メッセージの送信元ノードの負荷状態が格納される。ここでの負荷状態は、ＣＰＵ負荷、Ｉ／Ｏ負荷等の現在値、過去の統計値等を含む。ディスク残容量１３１５には、自ノード又は状態通知メッセージ送信時点での送信元ノードにおけるディスクの残りの容量が格納される。実行アプリケーション名称１３１６には、自ノード又は状態通知メッセージ送信時点での送信元ノードにおいて実行中のアプリケーションの名称が格納される。実行中ステップ１３１７には、実行アプリケーション名称１３１６に該当するアプリケーションにおける、状態通知メッセージ送信時点での実行中のステップを識別する情報が格納される。次実行ステップ１３１８には、実行アプリケーション名称１３１６に該当するアプリケーションにおける、状態通知メッセージ送信時点での次に実行されるステップを識別する情報が格納される。保有データ情報ポインタ１３１９には、ノードＩＤ１３１１に格納されるノード識別情報に該当するノードの保有データに関する情報が格納される保有データ状態管理テーブル１３０２へのポインタとなるアドレス情報が格納される。更新時刻１３１０には、１３１１から１３１０のいずれか一以上のデータが最後に更新された時刻が格納される。ここで自ノード以外のノードに関する１３１１から１３１８の各データには、ノードＩＤ１３１１に格納された識別情報に該当するノードから送信された状態通知メッセージ１２０１のノード状態情報領域１２１４に含まれるデータ１２２１から１２２８が、それぞれ格納される。
【００８０】
図１３Ｂに示す保有データ状態管理テーブル１３０２は、データＩＤ１３２１、データ名称１３２２、データサイズ１３２３、データ形式１３２４、検査ＩＤ１３２５、グループＩＤ１３２６、取得時刻１３２７、処理進捗１３２８、参照頻度１３２９、更新時刻１３３０を含む。
【００８１】
データＩＤ１３２１には、自ノード又は状態通知メッセージの送信元ノードにおける個々の保有データの識別情報が格納される。データ名称１３２２には、データＩＤ１３２１に該当するデータの名称が格納される。データサイズ１３２３には、データＩＤ１３２１に該当するデータのデータサイズが格納される。データ形式１３２４には、データＩＤ１３２１に該当するデータのデータ形式が格納される。検査ＩＤ１３２５には、データＩＤ１３２１に該当するデータに対して割り当てられる検査ＩＤが格納される。グループＩＤ１３２６には、データＩＤ１３２１に該当するデータが配信ノード２１２によって配信された際に割り当てられる配信先グループを識別する情報が格納される。取得時刻１３２７には、データＩＤ１３２１に該当するデータが配信ノード２１２によって取得された時刻が格納される。処理進捗１３２８には、データＩＤ１３２１に該当するデータに対して実施される処理の進捗に関する情報が格納される。参照頻度１３２９には、データＩＤ１３２１に該当するデータに対する自ノード及び他ノードからの参照の頻度が格納される。更新時刻１３３０には、１３２１から１３２９のいずれか一以上のデータが最後に更新された時刻が格納される。ここで自ノード以外のノードに関する１３２２から１３２８の各データには、ノードＩＤ１３１１に格納されたノード識別情報に該当するノードから送信された状態通知メッセージ１２０１の保有データ情報領域１２１６における保有データ情報１２３１、１２３２、１２３３に含まれるデータ１２４１から１２４７が、それぞれ格納される。
【００８２】
（処理ノード２１３に障害が発生した場合の処理引継ぎ）
図１４Ａは、本発明の実施の形態の処理ノード２１３に障害が発生した場合の処理引継ぎの第一のシーケンスを示す図である。ここでは、複数の処理ノードＡ２１３Ａ、Ｂ２１３Ｂ、Ｃ２１３Ｃのうちの一つの処理ノードＢ２１３Ｂに障害が発生した場合の処理引継ぎの第一の例について説明する。
【００８３】
ステップ１４１１において、配信ノード２１２は、処理ノードＡ２１３Ａ、処理ノードＢ２１３Ｂに対して画像データを配信する（１４１１）。次にステップ１４２１、１４３１において、処理ノードＡ２１３Ａ、処理ノードＢ２１３Ｂは、配信された画像データを受信する（１４２１、１４３１）。これら画像データの配信及び受信の処理の詳細は図３にて前述している。その後ステップ１４５１において、指示ノード２１５は、配信ノード２１２から配信された画像データを対象とした検査処理を処理ノードＢ２１３Ｂに割振り、処理ノードＢ２１３Ｂに対して検査処理の実行を指示する。その後ステップ１４３２において、処理ノードＢ２１３Ｂは、指示ノード２１５からの実行指示に基づいて検査処理を実行する（１４３２）。その後ステップ１４３３において、処理ノードＢ２１３Ｂに障害が発生し、ステップ１４３２で開始した検査処理の実行途中で異常終了したとする。この場合、ステップ１４３４において、処理ノードＢ２１３Ｂは、発生した障害に関する情報も含めた状態通知メッセージを装置内データ処理システム内の他ノードに送信する（１４３４）。なお、ステップ１４３４では、処理ノードＢ２１３Ｂ自体の停止等により状態通知メッセージを送信できない場合がある。この場合は、他の稼働中のノード（処理ノードＡ２１３Ａ、Ｃ２１３Ｃ）は、定期的に送信されるべき状態通知メッセージを一定時間経過しても受信しないことをもって処理ノードＢ２１３Ｂが異常停止したと判定してもよい。
【００８４】
その後ステップ１４２２、１４４１において、他の稼働中の処理ノードＡ２１３Ａ、Ｃ２１３Ｃは、状態管理テーブルを参照して処理ノードＢ２１３Ｂの障害発生を検出し、処理ノードＢ２１３Ｂが検査処理実行中であった画像データを自ノードが保有するか否かを判定する（１４２２、１４４１）。処理ノードＡ２１３Ａが処理ノードＢ２１３Ｂによって検査処理実行中の画像データを保有する場合には、ステップ１４２３において、処理ノードＡ２１３Ａは、自身が保有する画像データを対象とした検査処理を実行する（１４２３）。処理ノードＣ２１３Ｃが処理ノードＢ２１３Ｂによって検査処理実行中の画像データを保有しない場合には、処理ノードＣ２１３Ｃは検査処理を実行しない。
【００８５】
これにより、画像データが配信された処理ノードＢ２１３Ｂに障害が発生した場合であっても、処理ノードＡ２１３Ａに処理を引き継がせることができるとともに、画像データの喪失を防ぐことができる。
【００８６】
図１４Ｂは、本発明の実施の形態の処理ノード２１３に障害が発生した場合の処理引継ぎの第二のシーケンスを示す図である。ここでは、複数の処理ノードＡ２１３Ａ、Ｂ２１３Ｂ、Ｃ２１３Ｃのうちの一つの処理ノードＢ２１３Ｂに障害が発生した場合の処理引継ぎの第二の例について説明する。
【００８７】
ステップ１４６１から１４８４までの処理は、図１４Ａのステップ１４１１から１４８３までの処理と同様であるため、ここでは説明を省略する。
【００８８】
ステップ１４９２において、指示ノード２１５は、自ノードの状態管理テーブルを参照して処理ノードＢ２１３Ｂでの障害発生を検出する（１４９２）。そうすると、指示ノード２１５は、処理ノードＢ２１３Ｂによって検査処理実行中であった画像データを保有する他の処理ノードを検索する。ここで処理ノードＡ２１３Ａが処理ノードＢ２１３Ｂによって検査処理実行中であった画像データを保有する場合には、その後ステップ１４９３において、指示ノード２１５は、処理ノードＡ２１３Ａに対して画像データを対象とした検査処理を再度割振り、実行を指示する（１４９３）。その後ステップ１４７２において、処理ノードＡ２１３Ａは、指示ノード２１５から実行指示を受信すると、画像データを対象とした検査処理を実行する（１４７２）。
【００８９】
これにより、画像データが配信された処理ノードＢ２１３Ｂに障害が発生した場合であっても、処理ノードＡ２１３Ａに処理を引き継がせることができるとともに、画像データの喪失を防ぐことができる。
【００９０】
（蓄積ノード２１４に障害が発生した場合の処理引継ぎ）
図１５は、本発明の実施の形態の蓄積ノード２１４に障害が発生した場合の処理引継ぎのシーケンスを示す図である。ここでは、蓄積ノード２１４に障害が発生した場合の処理引継ぎの一例について説明する。
【００９１】
ステップ１５１１において、配信ノード２１２は、処理ノード２１３、蓄積ノード２１４に対して画像データを配信する（１５１１）。次にステップ１５２１、１５３１において、処理ノード２１３、蓄積ノード２１４は、配信された画像データを受信する（１５２１、１５３１）。これら画像データの配信及び受信の処理の詳細は図３にて前述している。その後ステップ１５２２において、処理ノード２１３は、指示ノード２１５（不図示）からの実行指示に基づいて検査処理を実行する（１５２２）。その後ステップ１５２３において、処理ノード２１３は、ステップ１５２２の検査処理結果のデータを蓄積ノード２１４に格納する（１５２３）。その後ステップ１５３２において、蓄積ノード２１４に障害が発生し、画像データの受信等が不能になったとする。この場合、ステップ１５３３において、処理ノード２１３は、発生した障害に関する情報も含めた状態通知メッセージを装置内データ処理システム内の他ノードへと送信する（１５３３）。なお、ステップ１５３３では、蓄積ノード２１４自体の停止等により状態通知メッセージを送信できない場合がある。この場合は、他の稼働中のノード（処理ノード２１３、中継ノード２１６）は、定期的に送信されるべき状態通知メッセージを一定時間経過しても受信しないことをもって蓄積ノード２１４が異常停止したと判定してもよい。
【００９２】
その後ステップ１５５１において、外部端末２０２が、中継ノード２１６に対してデータ要求を送信する（１５５１）。そうすると、ステップ１５４１において、外部端末２０２からのデータ要求を受信した指示ノード２１５は、自ノードの状態管理テーブルを参照し、要求に該当するデータの所在を検索する（１５４１）。その後ステップ１５４２において、中継ノード２１６は、該当データを保有する処理ノード２１３から該当データを取得する（１５４２）。ここで、蓄積ノード２１４が正常稼動中は、中継ノード２１６は蓄積ノード２１４からデータを取得する。一方、蓄積ノード２１４が障害発生中は、中継ノード２１６は装置内データ処理システム２０１においてその他に該当データを保有する処理ノード２１３からデータを取得する。その後ステップ１５４３において、中継ノード２１６は、ステップ１５４３で取得されたデータを、外部端末２０２へ応答として返す（１５４３）。
【００９３】
これにより、画像データや検査処理結果のデータが蓄積された蓄積ノード２１４に障害が発生した場合であっても、処理ノード２１３に処理を引き継がせることができるとともに、画像データの喪失を防ぐことができる。
【００９４】
以上のように、本発明の実施の形態のデータ分散管理方法、データ分散管理システムによれば、配信ノードの負荷の増大、画像データが配信された処理ノードに障害が発生したときの画像データの喪失等の状況を防ぐことができるので、システム全体のスループットを維持したまま、データの信頼性を向上させることができる。
【００９５】
また、データ分散管理システムのオンライン処理の性能を維持したまま、オンライン稼働中のシステム内の画像データの信頼性及び装置外部からのデータ要求に対する確実な提供を保証することができる。
【００９６】
以上、本発明の実施の形態について、その実施の形態に基づき具体的に説明したが、これに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【符号の説明】
【００９７】
１    データ分散管理システム
１０５、１２０１    状態通知メッセージ
１０６    画像データ
２０１    装置内データ処理システム
２１１    撮像部
２１２    配信ノード
２１３    処理ノード
２１４    蓄積ノード
２１５    指示ノード
２１６    中継ノード
４２１、５２１、６２１、７２１、８２１    状態管理テーブル
４２２    データ配信先グループ決定ポリシー
４２３    アプリケーション事前定義情報
【図２】
0005408620.tif 000002
【図３】
0005408620.tif 000003
【図４】
0005408620.tif 000004
【図５】
0005408620.tif 000005
【図６】
0005408620.tif 000006
【図７】
0005408620.tif 000007
【図８】
0005408620.tif 000008
【図９】
0005408620.tif 000009
【図１０Ａ】
0005408620.tif 000010
【図１０Ｂ】
0005408620.tif 000011
【図１１Ａ】
0005408620.tif 000012
【図１１Ｂ】
0005408620.tif 000013
【図１２】
0005408620.tif 000014
【図１３】
0005408620.tif 000015
【図１４Ａ】
0005408620.tif 000016
【図１４Ｂ】
0005408620.tif 000017
【図１５】
0005408620.tif 000018
【図１】
0005408620.tif 000019