以下、本発明の実施の形態について図面を参照して説明する。
(データ分散管理方法の概要)
図1は、本発明の実施の形態のデータ分散管理方法の概要を示す図である。図1に示すデータ分散管理システム1は、撮像部211、配信ノード212、一つ以上の処理ノード213、一つ以上の蓄積ノード214、指示ノード215等を備える。このデータ分散管理システム1は、本発明の実施の形態のデータ分散処理方法を実施する。
撮像部211は、半導体製造用ウェーハ等の検査対象の所定の検査ポイントを繰り返し撮像することによって、画像データ(検査用画像データ)を連続的に生成する。配信ノード212は、撮像部211によって生成された画像データを取得し、処理ノード213、蓄積ノード214に対して配信する。処理ノード213は、配信ノード212によって配信された画像データを対象とした検査処理を実行する。蓄積ノード214は、配信ノード212によって配信された画像データ、及び、処理ノード213による検査処理結果のデータ等を蓄積する。指示ノード215は、画像データを対象とした検査処理を処理ノード213に対して割振り、検査処理の実行を指示する。なお、配信ノード212、処理ノード213、蓄積ノード214、指示ノード215には、画像データの配信及び受信、各ノードの状態及び各ノードの保有データの状態等の相互監視及び管理等を実施するためのミドルウェア101、102、103、104が導入される。
また、これら配信ノード212、処理ノード213、蓄積ノード214、指示ノード215は、自ノードの状態及び自ノードの保有データの状態等の情報を格納する状態通知メッセージ105を、自ノード以外のノード(他ノード)に対して定期的に送信する。各ノードは、他ノードからの状態通知メッセージ105を受信する。
配信ノード212は、撮像部211から画像データ106を取得する度に、他ノードから受信した状態通知メッセージ105を参照して、画像データ106の取得時点における各ノードの状態に応じて、画像データ106の配信先として1つ以上のノード(配信先グループのメンバ)を決定する。ここで、配信ノード212は、特に、状態通知メッセージ105に含まれる各ノードの画像データを格納するためのディスクの残容量、実行中のアプリケーションによる負荷状態等を参照し、ディスク残容量が指定された閾値以上、負荷状態が指定された閾値以下等の条件を満たすノードのみを配信先グループのメンバとして決定する。
図1では、前回の配信先が配信先グループ111(4台)であり、今回の配信先が配信先グループ112(3台)に更新されたことを示す。なお、撮像部211によって生成された画像データ106毎に配信先、つまりその画像データを保有するノードは異なり得る。しかしながら、各ノードは、状態通知メッセージ105により各ノードの保有する画像データに関する情報を相互通知することによって、データ分散管理システム1内の画像データの所在を共有できる。
以上のように、本発明の実施の形態のデータ分散管理方法は、画像データの連続的な生成に連動してシステム及び構成するノードの負荷等の状態が変化し得るデータ分散管理システム1において、各ノードのリアルタイムな状態に応じて画像データの配信先を動的に変更させることによって、1つ以上のノードに画像データの所在を共有させている。これにより、システム全体のスループット及びデータの信頼性を向上させることができる。また、データの喪失による装置の処理中断等を回避できるため、システム動作の信頼性を向上させることもできる。
(装置内データ処理システム201の概要)
図2は、本発明の実施の形態の装置内データ処理システム201の概要を示す図である。図2に示す装置内データ処理システム201は、図1のデータ分散管理システム1に対応する。この装置内データ処理システム201は、図1に示す各構成要素に加え、中継ノード216を備える。なお、以下では前述の図1と同様の機能を果たす部分には同一の符号を付して重複する説明を適宜省略する。
中継ノード216は、外部ネットワーク203を介して接続された外部端末202からデータ要求を受付け、このデータ要求に応じた応答を外部端末202に対して返す。
以下、各ノードのハードウェア構成を説明する。
配信ノード212は、処理装置(CPU)221、記憶装置(メモリ、ハードディスク)222、通信装置223を備える。処理装置221は、記憶装置222に格納されたソフトウェアプログラムを処理する。記憶装置222は、ソフトウェアプログラムを格納する。ここでいうソフトウェアプログラムとは、撮像部211から画像データを取得するためのソフトウェアプログラム、画像データの配信先を決定するためのソフトウェアプログラム、装置内ネットワーク217を介して画像データを配信するためのソフトウェアプログラム、及び、装置内ネットワーク217を介して処理ノード213、蓄積ノード214、指示ノード215、中継ノード216との間で状態通知メッセージ105(図1参照)を送受信するためのソフトウェアプログラム等である。通信装置223は、装置内ネットワーク217を介して処理ノード213、蓄積ノード214、指示ノード215、中継ノード216との間で通信するためのインタフェース装置である。
処理ノード213は、処理装置(CPU)231、記憶装置(メモリ、ハードディスク)232、通信装置233を備える。処理装置231は、記憶装置232に格納されたソフトウェアプログラムを処理する。記憶装置232は、ソフトウェアプログラムを格納する。ここでいうソフトウェアプログラムとは、配信ノード212によって配信された画像データを受信し、記憶装置232に格納するためのソフトウェアプログラム、装置内ネットワーク217を介して配信ノード212、他の処理ノード213、蓄積ノード214、指示ノード215、中継ノード216との間で状態通知メッセージ105(図1参照)を送受信するためのソフトウェアプログラム、及び、画像データを対象とした検査処理を実行するためのソフトウェアプログラム等である。また記憶装置(ハードディスク)232には、配信ノード212から受信した画像データ、処理ノード213による検査処理結果のデータ等も格納される。通信装置233は、装置内ネットワーク217を介して配信ノード212、他の処理ノード213、蓄積ノード214、指示ノード215、中継ノード216との間で通信するためのインタフェース装置である。
蓄積ノード214は、処理装置(CPU)241、記憶装置(メモリ、ハードディスク)242、通信装置243を備える。処理装置241は、記憶装置242に格納されたソフトウェアプログラムを処理する。記憶装置242は、ソフトウェアプログラムを格納する。ここでいうソフトウェアプログラムとは、配信ノード212によって配信された画像データを受信し、記憶装置242へ格納するためのソフトウェアプログラム、及び、装置内ネットワーク217を介して配信ノード212、処理ノード213、指示ノード215、中継ノード216との間で状態通知メッセージ105(図1参照)を送受信するためのソフトウェアプログラム等である。また記憶装置(ハードディスク)242には、配信ノード212から受信した画像データ、処理ノード213による検査処理結果のデータ等も格納される。通信装置243は、配信ノード212、処理ノード213、指示ノード215、中継ノード216との間で通信するためのインタフェース装置である。
指示ノード215は、処理装置(CPU)251、記憶装置(メモリ、ハードディスク)252、通信装置253を備える。処理装置251は、記憶装置252に格納されたソフトウェアプログラムを処理する。記憶装置252は、ソフトウェアプログラムを格納する。ここでいうソフトウェアプログラムとは、装置内ネットワーク217を介して配信ノード212、処理ノード213、蓄積ノード214、中継ノード216との間で状態通知メッセージ105(図1参照)を送受信するためのソフトウェアプログラム、及び、処理ノード213に対して画像データを対象とした検査処理の割振り及び検査処理の実行を指示するためのソフトウェアプログラム等である。通信装置253は、装置内ネットワーク217を介して配信ノード212、処理ノード213、蓄積ノード214、中継ノード216との間で通信するためのインタフェース装置である。
中継ノード216は、処理装置(CPU)261、記憶装置(メモリ、ハードディスク)262、通信装置263を備える。処理装置261は、記憶装置262に格納されたソフトウェアプログラムを処理する。記憶装置262は、ソフトウェアプログラムを格納する。ここでいうソフトウェアプログラムとは、装置内ネットワーク217を介して他ノードから画像データを取得するためのプログラム、装置内ネットワーク217を介して配信ノード212、処理ノード213、蓄積ノード214、指示ノード215との間で状態通知メッセージ105(図1参照)を送受信するためのソフトウェアプログラム、及び、外部ネットワーク203を介して外部端末202からデータ要求を受付けて応答を返すソフトウェアプログラム等である。通信装置263は、装置内ネットワーク217を介して配信ノード212、処理ノード213、蓄積ノード214、指示ノード215との間で、また外部ネットワーク203を介して外部端末202との間で通信するためのインタフェース装置である。
(ノード間の全体処理シーケンス)
図3は、本発明の実施の形態の装置内データ処理システム201を構成する各ノード間の全体処理シーケンスを示す図である。ここでは、装置内データ処理システム201を構成する撮像部211、配信ノード212、処理ノード213、蓄積ノード214、指示ノード215、中継ノード216及び外部端末202のノード間の処理を説明する。
(1.状態通知メッセージの送信及び受信の処理)
まず、各ノードが、自ノードの状態及び自ノードの保有データの状態等の情報を格納する状態通知メッセージ105(図1参照)を、自ノード以外のノードに対して定期的に送信する処理、及び、他ノードからの状態通知メッセージ105を受信する処理について説明する。
ステップ311、321、331、341、351において、配信ノード212、処理ノード213、蓄積ノード214、指示ノード215、中継ノード216は、それぞれ状態通知メッセージ105を他ノードに対してブロードキャスト等によって定期的に送信する(311、321、331、341、351)。その後ステップ312、322、332、342、352において、配信ノード212、処理ノード213、蓄積ノード214、指示ノード215、中継ノード216は、他ノードからの状態通知メッセージ105を受信すると、受信した状態通知メッセージに含まれるデータを抽出し、それぞれのノードが管理するテーブルに上書きして格納する(312、322、332、342、352)。
なお、この状態通知メッセージ105の送信及び受信の処理は、後述する撮像部211によって生成された画像データの配信及び受信、検査等の処理と並行して実施される。
(2.画像データの配信及び受信の処理)
次に、配信ノード212が、撮像部211によって生成された画像データを取得し、他ノードに対して配信する処理について説明する。
ステップ301において、撮像部211は、画像データを配信ノード212に対して出力する(301)。次にステップ313において、配信ノード212は、ステップ301で撮像部211から出力された画像データを取得する(313)。その後ステップ314において、配信ノード212は、ステップ313で取得された画像データの配信先として1つ以上のノード(配信先グループのメンバ)を決定する(314)。その後ステップ315において、配信ノード212は、ステップ314で配信先として決定された配信先グループのメンバに対して、ステップ313で取得された画像データを配信する(315)。その後ステップ323、333において、ステップ314で配信先グループのメンバとして決定された処理ノード213及び蓄積ノード214は、ステップ315で配信ノード212から配信された画像データを受信し、受信した画像データを各ノードのディスクに格納する(323、333)。
(3.画像データの検査処理)
次に、処理ノード213が、指示ノード215によって検査処理の実行を指示されると、自ノードに蓄積された画像データを対象とした検査処理を実行する処理について説明する。
ステップ343において、指示ノード215は、撮像部211から取得された画像データを対象とした検査処理を処理ノード213に対して割振り、処理ノード213に対して検査処理の実行を指示する(343)。次にステップ324において、ステップ343で指示ノード215から検査処理の実行指示を受けた処理ノード213は、ステップ323でディスクに格納された画像データを対象とした検査処理を実行する(324)。その後ステップ325において、処理ノード213は、ステップ324の検査処理結果のデータを蓄積ノード214のディスクに格納する(325)。
(4.データ要求の受信及び応答の処理)
次に、中継ノード216が、外部端末202からデータ要求を受付け、このデータ要求に応じた応答を返す処理について説明する。
ステップ361において、中継ノード216は、外部端末202からデータ要求を受信する(361)。次にステップ353に進んで、中継ノード216は、ステップ361で受信したデータ要求の中で要求されている画像データを検索する(353)。ここでは、中継ノード216は自ノードで管理する状態管理テーブル(図13を用いて後述)を参照して検索する。その後ステップ354において、中継ノード216は、ステップ353の検索結果に基づき、要求されている画像データを保有するノードからその画像データを取得する(354)。その後ステップ355において、中継ノード216は、ステップ354で取得された画像データを外部端末202に対して送信する。
なお、ステップ353から355の処理は、ステップ301からステップ325の画像データ配信及び受信、検査処理等とは非同期に実行される。
(配信ノード212のモジュール構成)
図4は、本発明の実施の形態の配信ノード212のモジュール構成を示す図である。
配信ノード212には、ミドルウェア401が導入される。このミドルウェア401は、データ取得部411、データ作成・配信制御部412、配信先グループ管理部413、状態通知受信部414、状態監視・状態通知送信部415、データ通信部416、状態管理テーブル421、データ配信先グループ決定ポリシー422、アプリケーション事前定義情報423を含む。このミドルウェア401は、撮像部211からの画像データ取得、装置内ネットワーク217を介した他ノードへの画像データ配信、自ノード及び他ノードの状態管理を実施するソフトウェアである。
データ取得部411は、撮像部211から出力される画像データを取得する。データ作成・配信制御部412は、データ取得部411によって取得された画像データに対して必要な加工処理、各種ヘッダ情報の付加等を実施することによって、装置内データ処理システム201で使用するための画像データを生成する。また、後述する配信先グループ管理部413によって決定された配信先に対して画像データを配信するようデータ通信部416を制御する。配信先グループ管理部413は、データ配信先グループ決定ポリシー422、アプリケーション事前定義情報423及び状態管理テーブル421(図13を用いて後述)を参照して、画像データの配信先として1つ以上のノード(配信先グループのメンバ)を決定する。状態通知受信部414は、他ノードから送信された状態通知メッセージ105(図1参照)を、データ通信部416を介して受信し、受信した状態通知メッセージ105から抽出した他ノードの状態及び他ノードが保有するデータに関する情報を状態管理テーブル421に上書きして書き込む。状態監視・状態通知送信部415は、自ノードの状態及び保有データの状態を監視し、自ノードの状態及び保有データの状態を状態管理テーブル421に上書きして書き込む。また、自ノードの状態及び保有データの状態を格納する状態通知メッセージ105を、データ通信部416を介して定期的に他ノードに対して送信する。データ通信部416は、装置内ネットワーク217を介して他ノードとの間で通信する。
データ配信先グループ決定ポリシー422は、配信先グループ管理部413が画像データの配信先グループのメンバを決定するための条件等を定義したものである。例えば装置内データ処理システム201(図2参照)を構成する各ノードの種別、役割、性能等に応じて、配信先グループのメンバの数、メンバを選出するための条件等を定義する。アプリケーション事前定義情報423は、処理ノード213にて稼動する検査処理等のアプリケーションプログラムに関して、処理ロジック、扱うデータの種別及びサイズ、使用するI/Oの種別、等に基づいて、プログラム全体及びプログラムを構成する処理ステップ毎の負荷状態を静的に定義したものである。このようなデータ配信先グループ決定ポリシー422及びアプリケーション事前定義情報423は、配信先グループ管理部413が撮像部211から取得する画像データ毎に配信先グループのメンバを決定する際に参照される。
(処理ノード213のモジュール構成)
図5は、本発明の実施の形態の処理ノード213のモジュール構成を示す図である。
処理ノード213には、ミドルウェア501、ハードディスク502、検査処理アプリケーションプログラム503が導入される。ミドルウェア501は、データ蓄積部511、蓄積データ管理部512、アプリケーション処理制御部513、状態通知受信部514、状態監視・状態通知送信部515、データ通信部516を含む。このミドルウェア501は、配信ノード212から配信された画像データの蓄積及び管理、検査処理アプリケーションプログラム503の実行管理、自ノード及び他ノードの状態管理を実施するソフトウェアである。ハードディスク502は、配信ノード212から配信された画像データを格納する。検査処理アプリケーションプログラム503は、ハードディスク502に格納された画像データを対象とした検査処理を実行する。
データ蓄積部511は、データ通信部516を介して配信ノード212から受信した画像データをハードディスク502に格納する。蓄積データ管理部512は、ハードディスク502に格納されている画像データの状態を監視し、監視結果に基づき状態管理テーブル521を更新する。具体的には、古いデータの削除、転送等を実行する。アプリケーション処理制御部513は、検査処理アプリケーションプログラム503の実行状態を監視し、監視結果に基づき状態管理テーブル521(図13を用いて後述)を更新する。また、このアプリケーション処理制御部513は、状態管理テーブル521を参照して他の処理ノードにおける障害発生を検知した場合に、障害が発生した処理ノードにおいて実行中であった処理を引継ぐために検査処理アプリケーションプログラム503を起動等する。状態通知受信部514は、他ノードから送信された状態通知メッセージを、データ通信部516を介して受信し、受信した状態通知メッセージから抽出した他ノードの状態及び他ノードが保有するデータに関する情報を状態管理テーブル521に上書きして書き込む。状態監視・状態通知送信部515は、自ノードの状態及び保有データの状態を監視し、自ノードの状態及び保有データの状態を状態管理テーブル521に上書きして書き込む。また、自ノードの状態及び保有データの状態を格納する状態通知メッセージを、データ通信部516を介して定期的に他ノードに対して送信する。データ通信部516は、装置内ネットワーク217を介して他のノードとの間で通信する。
(蓄積ノード214のモジュール構成)
図6は、本発明の実施の形態の蓄積ノード214のモジュール構成を示す図である。
蓄積ノード214には、ミドルウェア601、ハードディスク602が導入される。ミドルウェア601は、データ蓄積部611、蓄積データ管理部612、状態通知受信部613、状態監視・状態通知送信部614、データ通信部615を含む。このミドルウェア601は、配信ノード212から配信された画像データの蓄積及び管理、自ノード及び他ノードの状態管理を実施するソフトウェアである。ハードディスク602は、配信ノード212から配信された画像データ及び処理ノード213による検査処理結果のデータを格納する。
データ蓄積部611は、データ通信部615を介して配信ノード212から受信した画像データ及び処理ノード213から受信した検査処理結果のデータをハードディスク602に格納する。蓄積データ管理部612は、ハードディスク602に格納されている画像データの状態を監視し、監視結果に基づき状態管理テーブル621(図13を用いて後述)を更新する。具体的には、古いデータの削除、転送等を実行する。状態通知受信部613は、他ノードから送信された状態通知メッセージを、データ通信部615を介して受信し、受信した状態通知メッセージから抽出した他ノードの状態及び他ノードが保有するデータに関する情報を状態管理テーブル621に上書きして書き込む。状態監視・状態通知送信部614は、自ノードの状態及び保有データの状態を監視し、自ノードの状態及び保有データの状態を状態管理テーブル621に上書きして書き込む。また、自ノードの状態及び保有データの状態を格納する状態通知メッセージを、データ通信部615を介して定期的に他ノードに対して送信する。データ通信部615は、装置内ネットワーク217を介して他のノードとの間で通信する。
(指示ノード215のモジュール構成)
図7は、本発明の実施の形態の指示ノード215のモジュール構成を示す図である。
指示ノード215には、ミドルウェア701、実行割振り・指示アプリケーションプログラム702が導入される。ミドルウェア701は、状態通知受信部711、状態監視・状態通知送信部712、データ通信部713を含む。このミドルウェア701は、自ノード及び他ノードの状態管理を実施するソフトウェアである。実行割振り・指示アプリケーションプログラム702は、処理ノード213に対して画像データを対象とした検査処理の割振り、検査処理の実行を指示する。
状態通知受信部711は、他ノードから送信された状態通知メッセージを、データ通信部713を介して受信し、受信した状態通知メッセージから抽出した他ノードの状態及び他ノードが保有するデータに関する情報を状態管理テーブル721(図13を用いて後述)に上書きして書き込む。状態監視・状態通知送信部712は、自ノードの状態及び保有データの状態を監視し、自ノードの状態及び保有データの状態を状態管理テーブル721に上書きして書き込む。また、自ノードの状態及び保有データの状態を格納する状態通知メッセージを、データ通信部713を介して定期的に他ノードに対して送信する。データ通信部713は、装置内ネットワーク217を介して他ノードとの間で通信する。
なお、実行割振り・指示アプリケーションプログラム702は、状態管理テーブル721を参照し、状態管理テーブル721に格納された各々の処理ノード213の状態、保有データ等に応じて、画像データに対して検査処理を割振り、検査処理の実行を指示する処理ノード213を決定する。
(中継ノード216のモジュール構成)
図8は、本発明の実施の形態の中継ノード216のモジュール構成を示す図である。
中継ノード216には、ミドルウェア801、データ要求受付プログラム802が導入される。ミドルウェア801は、データ検索・取得部811、状態通知受信部812、状態監視・状態通知送信部813、データ通信部814を含む。このミドルウェア801は、装置内データ処理システム201内のデータ検索及び取得、自ノード及び他ノードの状態管理を実施するソフトウェアである。データ要求受付プログラム802は、外部ネットワーク203を介して外部端末202からデータ要求を受付け、このデータ要求に応じた応答を返す。
データ検索・取得部811は、外部端末202からデータ要求を受けたデータ要求受付プログラム802からの指示に基づいて、状態管理テーブル821(図13を用いて後述)を参照することによって要求されている画像データを保有するノードを検索し、そのノードから画像データを取得する。また、取得された画像データを、データ要求受付プログラム802に対して出力する。状態通知受信部812は、他ノードから送信された状態通知メッセージ105を、データ通信部814を介して受信し、受信した状態通知メッセージから抽出した他ノードの状態及び他ノードが保有するデータに関する情報を状態管理テーブル721に上書きして書き込む。状態監視・状態通知送信部813は、自ノードの状態及び保有データの状態を監視し、自ノードの状態及び保有データの状態を状態管理テーブル821に上書きして書き込む。また、自ノードの状態及び保有データの状態を格納する状態通知メッセージ105を、データ通信部814を介して定期的に他ノードに対して送信する。データ通信部814は、装置内ネットワーク217を介して他ノードとの間で通信する。
(画像データの配信処理)
図9は、本発明の実施の形態の画像データの配信処理の手順を示すフローチャートである。ここでは、配信ノード212による画像データの配信処理について図4も参照して説明する。
まずステップ901において、データ取得部411は、撮像部211から画像データを取得する(901)。次にステップ902において、配信先グループ管理部413は、状態管理テーブル421におけるノード毎の状態情報を参照し、稼働中のノード毎に後述するステップ903から910の処理を実施する(902)。ステップ903において、配信先グループ管理部413は、所定のノードのディスク残容量が事前に指定された閾値よりも大きいか否かを判定する(903)。ノードのディスク残容量が事前に指定された閾値以下である場合(903でNO)、ステップ902に戻って次のノードについて処理を繰り返す。一方、ノードのディスク残容量が事前に指定された閾値を超過する場合(903でYES)、ステップ904に進む。
ステップ904に進んだ場合、配信先グループ管理部413は、そのノードの負荷状態が事前に指定された条件と照合して許容可能か否かを判定する(904)。ノードの負荷状態が事前に指定された条件と照合して許容不可である場合(904でNO)、ステップ902に戻って次のノードについて処理を繰り返す。一方、ノードの負荷状態が事前に指定された条件と照合して許容可能である場合(904でYES)、ステップ905に進む。ステップ905に進んだ場合、配信先グループ管理部413は、そのノードが実行中のアプリケーションの種別が、事前定義による負荷が事前に指定された閾値以上のアプリケーションであるか否かを判定する(905)。実行中のアプリケーションの種別が事前定義による負荷が事前に指定された閾値以上のアプリケーションである場合(905でNO)、ステップ902に戻って次のノードについて処理を繰り返す。アプリケーションの種別に対する事前定義による負荷とは、アプリケーションの処理ロジック、処理対象となるデータの種類及びサイズ、アプリケーションの実行環境等に基づいて推定され、アプリケーション実行前に静的に定義される負荷の度合いである。一方、実行中のアプリケーションの種別が、事前定義による負荷が事前に指定された閾値未満のアプリケーションである場合(905でYES)、ステップ906に進む。ステップ906に進んだ場合、配信先グループ管理部413は、そのノードの実行中のアプリケーションの実行中のステップが、事前定義による負荷が事前に指定された閾値以上のステップであるか否かを判定する(906)。実行中のステップが、事前定義による負荷が事前に指定された閾値以上のステップである場合(906でNO)、ステップ902に戻って次のノードについて処理を繰り返す。アプリケーションの処理ステップに対する事前定義による負荷とは、アプリケーションの中で特定の処理ステップの処理ロジック、処理対象となるデータの種類及びサイズ、アプリケーションの実行環境等から推定され、アプリケーション実行前に静的に定義される負荷の度合いである。一方、実行中のステップが、事前定義による負荷が事前に指定された閾値未満のステップである場合(906でYES)、ステップ907に進む。ステップ907に進んだ場合、配信先グループ管理部413は、そのノードの実行中アプリケーションが次に実行するステップ(以降、「次実行ステップ」という)が、事前定義による負荷が事前に指定された閾値以上のステップであるか否かを判定する(907)。次実行ステップが、事前定義による負荷が事前に指定された閾値以上のステップである場合(907でNO)、ステップ902に戻って次のノードについて処理を繰り返す。一方、次実行ステップが、事前定義による負荷が事前に指定された閾値未満のステップである場合(907でYES)、ステップ908に進む。ステップ908に進んだ場合、配信先グループ管理部413は、データ配信先グループ決定ポリシー422において事前に作成されたノード決定の条件を参照し(908)、そのノードが条件に合致するか否かを判定する(909)。そのノードが条件に合致しない場合(909でNO)、ステップ902に戻って次のノードについて処理を繰り返す。一方、そのノードが条件に合致する場合(909でYES)、ステップ910に進んで、配信先グループ管理部413は、そのノードを配信先グループのメンバに追加する(910)。その後ステップ911において、配信先グループ管理部413は、稼働中の全ノードに対してステップ902から909の処理が完了したか否かを判定する(911)。稼動中の全ノードに対してステップ902から909の処理が完了していない場合(911でNO)、ステップ902に戻って次のノードについて処理を繰り返す。稼動中の全ノードに対してステップ902から909の処理が完了した場合(911でYES)、ステップ912において、データ通信部416は、ステップ910でメンバが順次追加された配信先グループのメンバに対して画像データを配信する(912)。
以上のように、配信ノード212は、撮像部211から画像データ106を取得する度に、他ノードから受信した状態通知メッセージ105を参照して、画像データ106の取得時点における各ノードの状態に応じて、画像データ106の配信先として1つ以上のノード(配信先グループのメンバ)を決定し、画像データを配信する。これにより、配信ノード212への画像データ106を蓄積し、各ノードが配信ノード212に問合せて画像データの配信を指示する場合等に比べて、配信ノード212の負荷が増大するのを防ぐことができる。
(画像データの受信処理)
図10Aは、本発明の実施の形態の画像データの受信処理の手順を示すフローチャートである。ここでは、処理ノード213、蓄積ノード214が、配信ノード212から配信された画像データを受信する処理について説明する。
まずステップ1011において、配信ノード212から配信先として決定された処理ノード213、蓄積ノード214(以下、単に「受信ノード」という)は、配信ノード212によって配信された画像データを受信する(1011)。次にステップ1012において、受信ノードは、ステップ1011で受信した画像データを自ノードのディスクに格納する(1012)。その後ステップ1013において、受信ノードは、ステップ1011で受信した画像データに関する情報を自ノードの状態管理テーブル(図13を用いて後述)に書き込むことによって同テーブルを更新する(1013)。ここでは、特に、状態管理テーブルにおける自ノードの保有データに関する保有データ状態管理テーブル1302(図13B参照)を更新する。
(画像データの管理処理)
図10Bは、本発明の実施の形態の画像データの管理処理の手順を示すフローチャートである。ここでは、受信ノードが、受信した画像データに対して実施する蓄積、転送、削除等の管理処理について説明する。
まずステップ1021において、受信ノードは、自ノードにおけるアプリケーションの実行状態を監視する(1021)。次にステップ1022において、受信ノードは、ステップS1021の監視結果としてアプリケーションの実行状態に変化があるか否かを判定する(1022)。アプリケーションの実行状態に変化がある場合(1022でYES)、ステップ1023において、受信ノードは、状態管理テーブルを更新する(1023)。ここでは、状態管理テーブル(図13を用いて後述)におけるノード状態管理テーブル1301の実行アプリケーション名称1316、実行中ステップ1317、次実行ステップ1318の各項目を更新する。一方、アプリケーションの実行状態に変化がない場合(1022でNO)、ステップ1024に進む。ステップ1024において、受信ノードは、自ノードのディスクの残容量を監視する(1024)。その後ステップ1025において、受信ノードは、ステップ1024の監視結果としてディスク残容量が事前に指定された閾値以下か否かを判定する(1025)。ディスク残容量が事前に指定された閾値以下ではない場合(1025でNO)、ステップ1021に戻る。一方、ディスク残容量が事前に指定された閾値以下である場合(1025でYES)、ステップ1026に進む。ステップ1026において、受信ノードは、自ノードにおいて保有データのディスクへの保存期間が設定されているか否かを判定する(1026)。保有データのディスクへの保存期間が設定されていない場合(1026でNO)、ステップ1027に進む。一方、保有データのディスクへの保存期間が設定されている場合(1026でYES)、ステップ1031に進む。
ステップ1027に進んだ場合、受信ノードは、状態管理テーブルにおける自ノードの保有データ状態管理テーブル(図13B参照)を参照し、保有データの中を取得時間が最も古いデータから検索する(1027)。その後ステップ1028において、受信ノードは、状態管理テーブルにおける他ノードの保有データ状態管理テーブルを参照し、ステップ1027で検索されたデータが他ノードで保有されているか否かを判定する(1028)。他ノードで保有されている場合(1028でYES)、ステップ1029において、受信ノードは、該当するデータを自ノードのディスクより削除し(1029)、状態管理テーブルを更新する(1030)。一方、他ノードで保有されていない場合(1028でNO)、ステップ1021に戻る。
ステップ1031に進んだ場合、受信ノードは、状態管理テーブルにおける自ノードの保有データ状態管理テーブルにて保有データ毎の状態情報を参照する(1031)。その後ステップ1032において、受信ノードは、ステップ1031の結果、保有データ状態管理テーブルにおける各データの取得時刻を比較して、データ保存期間を経過したか否かを判定する(1032)。データ保存期間を経過していない場合(1032でNO)、ステップ1032から1036を実施せずにステップ1037に進む。一方、データ保存期間を経過した場合(1032でYES)、ステップ1033において、受信ノードは、ステップ1031の結果、該当データの参照頻度が低いか否かを判定する(1033)。該当データの参照頻度が低くない場合(1033でNO)、ステップ1034から1036の処理を実施せずにステップ1037に進む。一方、該当データの参照頻度が低い場合(1033でYES)、ステップ1034に進んで、受信ノードは、該当データを他ノードでも保有しているか否かを判定する(1034)。他ノードが該当するデータを保有している場合(1034でYES)、ステップ1035に進んで、受信ノードは、該当するデータを自ノードのディスクより削除する(1035)。一方、他ノードが該当データを保有していない場合(1034でNO)、ステップ1036に進んで、受信ノードは、該当するデータを装置外部のデータ管理サーバ等へと転送し、データ管理サーバ上のディスクに保存してから、自ノードのディスクより該当するデータを削除する(1036)。その後ステップ1037に進んで、受信ノードは、処理結果に基づき状態管理テーブルを更新する(1037)。その後ステップ1038に進んで、受信ノードは、自ノードが保有する全てのデータに対してステップ1031から1037の処理が完了したか否かを判定する(1038)。処理が完了していない場合(1038でNO)、ステップ1031に戻る。処理が完了した場合(1038でYES)、ステップ1021に戻る。
(状態通知メッセージの送信処理)
図11Aは、本発明の実施の形態の状態通知メッセージの送信処理の手順を示すフローチャートである。ここでは、各ノードが、他ノードに対して状態通知メッセージ(図1の状態通知メッセージ105)を送信する処理の詳細について説明する。
まずステップ1111において、各ノードは、自ノードにて管理する状態管理テーブル(図13を用いて後述)を参照し、自ノードの状態に関する情報を抽出する(1111)。次にステップ1112において、各ノードは、自ノードにて管理する状態管理テーブルを参照し、自ノードの保有データに関する情報を抽出する(1112)。なお、状態管理テーブルに自ノードの状態に関する情報及び保有データに関する情報を書込む処理の詳細は図10Aのステップ1012にて前述している。その後ステップ1113において、各ノードは、ステップ1111及び1112で抽出されたデータを格納し、状態通知メッセージのデータを作成する(1113)。その後ステップ1114において、各ノードは、ステップ1113で作成された状態通知メッセージを他ノードに対して送信する(1114)。その後ステップ1115において、各ノードは、指定された一定時間待機する(1115)。その後、ステップ1111から1115までの処理は繰り返される。
(状態通知メッセージの受信処理)
図11Bは、本発明の実施の形態の状態通知メッセージの受信処理の手順を示すフローチャートである。ここでは、各ノードが、他ノードから状態通知メッセージ(図1の状態通知メッセージ105)を受信する処理の詳細について説明する。
まずステップ1121において、各ノードは、他ノードから状態通知メッセージを受信する(1121)。次にステップ1122において、各ノードは、ステップ1121で受信した状態通知メッセージから送信元の他ノードの状態に関する情報を抽出する(1122)。その後ステップ1123において、各ノードは、ステップ1122で抽出された他ノードの状態に関する情報を、自ノードにて管理する状態管理テーブル(図13を用いて後述)に格納する(1123)。その後ステップ1124において、各ノードは、ステップ1121で受信した状態通知メッセージから他ノードの保有データに関する情報を抽出する(1124)。その後ステップ1125において、各ノードは、ステップ1124で抽出された他ノードの保有データに関する情報を、自ノードにて管理する状態管理テーブルに格納する(1125)。その後、ステップ1121から1125までの処理は繰り返される。
(状態通知メッセージ1201の一例)
図12は、本発明の実施の形態の状態通知メッセージ1201の一例を示す図である。
状態通知メッセージ(以下、単に「メッセージ」という)1201は、ヘッダ情報1211、通番1212、送信時刻1213、ノード状態情報領域1214、保有データ数1215、保有データ情報領域1216を含む。
ヘッダ情報1211には、メッセージプロトコル等に関する情報が格納される。通番1212には、送信元ノードによって送信されるメッセージに付与される通し番号が格納される。送信時刻1213には、送信元ノードによって記録されたメッセージ1201の送信時刻が格納される。ノード状態情報領域1214には、メッセージ1201の送信時点での送信元ノードの状態に関する情報が格納される。保有データ数1215には、メッセージ1201の送信時点での送信元ノードによって保有されるデータの総数が格納される。保有データ情報領域1216には、メッセージ1201送信時点での送信元ノードにおける個々の保有データ情報(1231、1232、1233)が格納される。
ノード状態情報領域1214には、ノードID1221、ノード種別1222、稼動状態1223、負荷状態1224、ディスク残容量1225、実行アプリケーション名称1226、実行中ステップ1227、次実行ステップ1228が格納される。
ノードID1221には、メッセージ1201の送信元であるノードを識別する情報が格納される。ノード種別1222には、メッセージ1201の送信元であるノードの種別が格納される。ここでノード種別とは、ノードの処理内容に基づく種別である。具体的には、配信ノード、処理ノード、蓄積ノード、指示ノード、中継ノードのいずれかである。稼動状態1223には、メッセージ1201送信時点での送信元ノードの稼動状態が格納される。負荷状態1224には、送信元ノードの負荷状態が格納される。ここでの負荷状態は、CPU負荷、I/O負荷等の現在値、過去の統計値等を含む。ディスク残容量1225には、メッセージ1201送信時点での送信元ノードにおけるディスクの残りの容量が格納される。実行アプリケーション名称1226には、メッセージ1201送信時点での送信元ノードにおいて実行中のアプリケーションの名称が格納される。実行中ステップ1227には、実行アプリケーション名称1226に該当するアプリケーションにおける、メッセージ1201送信時点での実行中のステップを識別する情報が格納される。次実行ステップ1228には、実行アプリケーション名称1226に該当するアプリケーションにおける、メッセージ1201送信時点での次に実行されるステップを識別する情報が格納される。
保有データ情報領域1216に格納される個々の保有データ情報(1231、1232、1233)は、データ名称1241、データサイズ1242、データ形式1243、検査ID1244、グループID1245、取得時刻1246、処理進捗1247を含む。データ名称1241には、保有データの名称が格納される。データサイズ1242には、保有データのデータサイズが格納される。データ形式1243には、保有データのデータ形式が格納される。検査ID1244には、保有データに対して割り当てられた検査IDが格納される。グループID1245には、保有データが配信ノードによって配信された際に割り当てられる配信先グループを識別する情報が格納される。取得時刻1246には、保有データの配信ノードにおける取得時刻が格納される。処理進捗1247には、保有データに対して実施された処理の進捗に関する情報が格納される。
(状態管理テーブルの構成)
図13は、本発明の実施の形態の状態管理テーブルの構成を示す図である。状態管理テーブルは、前述のように、各ノードが自ノードの状態及び保有データに関する情報及び他ノードの状態及び保有データに関する情報を格納するためのテーブルである。各ノードは、他ノードから状態通知メッセージ(図12参照)を受信する度に、この状態管理テーブルに上書きして書込む。
状態管理テーブルは、各ノードの状態に関する情報を一括して管理するノード状態管理テーブル1301(図13A)、各ノードの保有データに関する情報を管理する保有データ状態管理テーブル1302(図13B)を含む。なお、保有データ状態管理テーブル1302は、自ノード用の一つ及び他ノードの個数分用意される。
図13Aに示すノード状態管理テーブル1301は、ノードID1311、ノード種別1312、稼動状態1313、負荷状態1314、ディスク残容量1315、実行アプリケーション名称1316、実行中ステップ1317、次実行ステップ1318、保有データ情報ポインタ1319、更新時刻1310を含む。
ノードID1311には、自ノード又は状態通知メッセージの送信元ノードの識別情報が格納される。ノード種別1312には、自ノード又は状態通知メッセージの送信元ノードの種別が格納される。ここでノード種別とは、ノードの処理内容に基づく種別である。具体的には、配信ノード、処理ノード、蓄積ノード、指示ノード、中継ノードのいずれかである。稼動状態1313には、自ノード又は状態通知メッセージ送信時点での送信元ノードの稼動状態が格納される。負荷状態1314には、自ノード又は状態通知メッセージの送信元ノードの負荷状態が格納される。ここでの負荷状態は、CPU負荷、I/O負荷等の現在値、過去の統計値等を含む。ディスク残容量1315には、自ノード又は状態通知メッセージ送信時点での送信元ノードにおけるディスクの残りの容量が格納される。実行アプリケーション名称1316には、自ノード又は状態通知メッセージ送信時点での送信元ノードにおいて実行中のアプリケーションの名称が格納される。実行中ステップ1317には、実行アプリケーション名称1316に該当するアプリケーションにおける、状態通知メッセージ送信時点での実行中のステップを識別する情報が格納される。次実行ステップ1318には、実行アプリケーション名称1316に該当するアプリケーションにおける、状態通知メッセージ送信時点での次に実行されるステップを識別する情報が格納される。保有データ情報ポインタ1319には、ノードID1311に格納されるノード識別情報に該当するノードの保有データに関する情報が格納される保有データ状態管理テーブル1302へのポインタとなるアドレス情報が格納される。更新時刻1310には、1311から1310のいずれか一以上のデータが最後に更新された時刻が格納される。ここで自ノード以外のノードに関する1311から1318の各データには、ノードID1311に格納された識別情報に該当するノードから送信された状態通知メッセージ1201のノード状態情報領域1214に含まれるデータ1221から1228が、それぞれ格納される。
図13Bに示す保有データ状態管理テーブル1302は、データID1321、データ名称1322、データサイズ1323、データ形式1324、検査ID1325、グループID1326、取得時刻1327、処理進捗1328、参照頻度1329、更新時刻1330を含む。
データID1321には、自ノード又は状態通知メッセージの送信元ノードにおける個々の保有データの識別情報が格納される。データ名称1322には、データID1321に該当するデータの名称が格納される。データサイズ1323には、データID1321に該当するデータのデータサイズが格納される。データ形式1324には、データID1321に該当するデータのデータ形式が格納される。検査ID1325には、データID1321に該当するデータに対して割り当てられる検査IDが格納される。グループID1326には、データID1321に該当するデータが配信ノード212によって配信された際に割り当てられる配信先グループを識別する情報が格納される。取得時刻1327には、データID1321に該当するデータが配信ノード212によって取得された時刻が格納される。処理進捗1328には、データID1321に該当するデータに対して実施される処理の進捗に関する情報が格納される。参照頻度1329には、データID1321に該当するデータに対する自ノード及び他ノードからの参照の頻度が格納される。更新時刻1330には、1321から1329のいずれか一以上のデータが最後に更新された時刻が格納される。ここで自ノード以外のノードに関する1322から1328の各データには、ノードID1311に格納されたノード識別情報に該当するノードから送信された状態通知メッセージ1201の保有データ情報領域1216における保有データ情報1231、1232、1233に含まれるデータ1241から1247が、それぞれ格納される。
(処理ノード213に障害が発生した場合の処理引継ぎ)
図14Aは、本発明の実施の形態の処理ノード213に障害が発生した場合の処理引継ぎの第一のシーケンスを示す図である。ここでは、複数の処理ノードA213A、B213B、C213Cのうちの一つの処理ノードB213Bに障害が発生した場合の処理引継ぎの第一の例について説明する。
ステップ1411において、配信ノード212は、処理ノードA213A、処理ノードB213Bに対して画像データを配信する(1411)。次にステップ1421、1431において、処理ノードA213A、処理ノードB213Bは、配信された画像データを受信する(1421、1431)。これら画像データの配信及び受信の処理の詳細は図3にて前述している。その後ステップ1451において、指示ノード215は、配信ノード212から配信された画像データを対象とした検査処理を処理ノードB213Bに割振り、処理ノードB213Bに対して検査処理の実行を指示する。その後ステップ1432において、処理ノードB213Bは、指示ノード215からの実行指示に基づいて検査処理を実行する(1432)。その後ステップ1433において、処理ノードB213Bに障害が発生し、ステップ1432で開始した検査処理の実行途中で異常終了したとする。この場合、ステップ1434において、処理ノードB213Bは、発生した障害に関する情報も含めた状態通知メッセージを装置内データ処理システム内の他ノードに送信する(1434)。なお、ステップ1434では、処理ノードB213B自体の停止等により状態通知メッセージを送信できない場合がある。この場合は、他の稼働中のノード(処理ノードA213A、C213C)は、定期的に送信されるべき状態通知メッセージを一定時間経過しても受信しないことをもって処理ノードB213Bが異常停止したと判定してもよい。
その後ステップ1422、1441において、他の稼働中の処理ノードA213A、C213Cは、状態管理テーブルを参照して処理ノードB213Bの障害発生を検出し、処理ノードB213Bが検査処理実行中であった画像データを自ノードが保有するか否かを判定する(1422、1441)。処理ノードA213Aが処理ノードB213Bによって検査処理実行中の画像データを保有する場合には、ステップ1423において、処理ノードA213Aは、自身が保有する画像データを対象とした検査処理を実行する(1423)。処理ノードC213Cが処理ノードB213Bによって検査処理実行中の画像データを保有しない場合には、処理ノードC213Cは検査処理を実行しない。
これにより、画像データが配信された処理ノードB213Bに障害が発生した場合であっても、処理ノードA213Aに処理を引き継がせることができるとともに、画像データの喪失を防ぐことができる。
図14Bは、本発明の実施の形態の処理ノード213に障害が発生した場合の処理引継ぎの第二のシーケンスを示す図である。ここでは、複数の処理ノードA213A、B213B、C213Cのうちの一つの処理ノードB213Bに障害が発生した場合の処理引継ぎの第二の例について説明する。
ステップ1461から1484までの処理は、図14Aのステップ1411から1483までの処理と同様であるため、ここでは説明を省略する。
ステップ1492において、指示ノード215は、自ノードの状態管理テーブルを参照して処理ノードB213Bでの障害発生を検出する(1492)。そうすると、指示ノード215は、処理ノードB213Bによって検査処理実行中であった画像データを保有する他の処理ノードを検索する。ここで処理ノードA213Aが処理ノードB213Bによって検査処理実行中であった画像データを保有する場合には、その後ステップ1493において、指示ノード215は、処理ノードA213Aに対して画像データを対象とした検査処理を再度割振り、実行を指示する(1493)。その後ステップ1472において、処理ノードA213Aは、指示ノード215から実行指示を受信すると、画像データを対象とした検査処理を実行する(1472)。
これにより、画像データが配信された処理ノードB213Bに障害が発生した場合であっても、処理ノードA213Aに処理を引き継がせることができるとともに、画像データの喪失を防ぐことができる。
(蓄積ノード214に障害が発生した場合の処理引継ぎ)
図15は、本発明の実施の形態の蓄積ノード214に障害が発生した場合の処理引継ぎのシーケンスを示す図である。ここでは、蓄積ノード214に障害が発生した場合の処理引継ぎの一例について説明する。
ステップ1511において、配信ノード212は、処理ノード213、蓄積ノード214に対して画像データを配信する(1511)。次にステップ1521、1531において、処理ノード213、蓄積ノード214は、配信された画像データを受信する(1521、1531)。これら画像データの配信及び受信の処理の詳細は図3にて前述している。その後ステップ1522において、処理ノード213は、指示ノード215(不図示)からの実行指示に基づいて検査処理を実行する(1522)。その後ステップ1523において、処理ノード213は、ステップ1522の検査処理結果のデータを蓄積ノード214に格納する(1523)。その後ステップ1532において、蓄積ノード214に障害が発生し、画像データの受信等が不能になったとする。この場合、ステップ1533において、処理ノード213は、発生した障害に関する情報も含めた状態通知メッセージを装置内データ処理システム内の他ノードへと送信する(1533)。なお、ステップ1533では、蓄積ノード214自体の停止等により状態通知メッセージを送信できない場合がある。この場合は、他の稼働中のノード(処理ノード213、中継ノード216)は、定期的に送信されるべき状態通知メッセージを一定時間経過しても受信しないことをもって蓄積ノード214が異常停止したと判定してもよい。
その後ステップ1551において、外部端末202が、中継ノード216に対してデータ要求を送信する(1551)。そうすると、ステップ1541において、外部端末202からのデータ要求を受信した指示ノード215は、自ノードの状態管理テーブルを参照し、要求に該当するデータの所在を検索する(1541)。その後ステップ1542において、中継ノード216は、該当データを保有する処理ノード213から該当データを取得する(1542)。ここで、蓄積ノード214が正常稼動中は、中継ノード216は蓄積ノード214からデータを取得する。一方、蓄積ノード214が障害発生中は、中継ノード216は装置内データ処理システム201においてその他に該当データを保有する処理ノード213からデータを取得する。その後ステップ1543において、中継ノード216は、ステップ1543で取得されたデータを、外部端末202へ応答として返す(1543)。
これにより、画像データや検査処理結果のデータが蓄積された蓄積ノード214に障害が発生した場合であっても、処理ノード213に処理を引き継がせることができるとともに、画像データの喪失を防ぐことができる。
以上のように、本発明の実施の形態のデータ分散管理方法、データ分散管理システムによれば、配信ノードの負荷の増大、画像データが配信された処理ノードに障害が発生したときの画像データの喪失等の状況を防ぐことができるので、システム全体のスループットを維持したまま、データの信頼性を向上させることができる。
また、データ分散管理システムのオンライン処理の性能を維持したまま、オンライン稼働中のシステム内の画像データの信頼性及び装置外部からのデータ要求に対する確実な提供を保証することができる。
以上、本発明の実施の形態について、その実施の形態に基づき具体的に説明したが、これに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。