(57)【要約】【課題】  ネットワークを介して接続される複数のノード２からなる分散処理システム１において、特殊なＯＳやハードウェアを必要とせず、またデータ共有のための管理サーバを用いることなく、異なるノードで動作するアプリケーションプログラムがデータを共有できるようにする。【解決手段】  各ノードの空き容量などを管理するテーブル３３と、データのサイズや保持されているノードの情報などを管理するテーブル３４を保持するミドルウェア３を各ノード２に搭載し、データを書き込み可能なノードに対してデータを送信して保持させるとともに、データが書き込まれた情報を全てのノードに通知することにより、管理テーブル３３，３４の情報を共有することによって、データの共有を実現する。【選択図】図１
2006023801.tif 000002
【特許請求の範囲】
【請求項１】
ＯＳとミドルウェアとアプリケーションプログラムを備えた複数のノードがネットワークを介して互いに接続されているとともに前記複数のノードが前記ミドルウェアに格納された前記アプリケーションプログラムのデータを共有する分散処理システムにおいて、
前記ミドルウェアは、
前記アプリケーションプログラムの前記データを格納するデータ格納部と、
共有された前記データの情報を保持するデータ情報管理テーブルと、
前記複数のノードの情報を保持するノード情報管理テーブルと、
メッセージと前記データを送受信するデータ送受信部と、
を備えたことを特徴とする分散処理システム。
【請求項２】
前記データ情報管理テーブルは、
データの書き込み単位で割り付けるデータＩＤと、
前記アプリケーションが定めるデータ属性と、
前記データのサイズと、
前記データが格納されたノードのノードＩＤと、
前記データを保持するところが自らのノードであれば前記データが格納されているデータ領域中の場所を示すインデックスと、を備えており、
前記ノード情報管理テーブルは、
ノードを識別するノードＩＤと、
そのノードに対応するネットワークアドレスと、
データ容量と、
使用可能なデータ格納部の残量と、を備えていることを特徴とする請求項１に記載の分散処理システム。
【請求項３】
ミドルウェアとアプリケーションプログラムと前記アプリケーションプログラムのデータを備えた複数のノードがネットワークを介して互いに接続されるとともに複数のノードがデータを共有する分散処理システムにおいて、次の処理手順でデータが共有されることを特徴とする分散処理システムのデータ共有方法。
（１）アプリケーションプログラムの要求が、データ書き込みと、読み出しと、削除のいずれであるかを判断する。
（２）各ノードの情報を保持するノード情報管理テーブルの内容と、共有されたデータの情報を保持するデータ情報管理テーブルの内容に基づいて、要求を実行するためのメッセージを作成する。
（３）データ送受信部を介してメッセージとデータを送受信する。
（４）受信したメッセージ内容に基づいてノード情報管理テーブル及びデータ情報管理テーブルの内容と、ミドルウェア毎に予め確保したデータ格納部の内容を更新する。
【請求項４】
以下の手順によりデータの書き込み要求を処理することを特徴とする請求項３に記載の分散処理システムのデータ共有方法。
（１）ミドルウェアがアプリケーションプログラムからデータ書き込み要求を受ければ自身のノード内のデータ格納部の残量を確認し、データが書き込み可能であればデータ格納部にデータを格納してデータ情報管理テーブルを更新するとともにデータが書き込まれたことを他のノードに通知する。
（２）その通知を受けた各ノードのミドルウェアは、通知内容に従って情報管理テーブルを更新し、一方で、データ書き込み要求に対し、自身のデータ格納部にデータを格納するのに十分な残量がなければ、ノード情報管理テーブルの情報に基づいて、必要な残量を持つ任意のノードにデータ書き込み要求を出し、要求の受理後にデータを送信する。
（３）データを書き込まれたノードは、データの送信元に書き込み完了を通知すると共に、他のノードにもデータが書き込まれたことを通知する。
（４）書き込み完了通知を受けた全てのノードにあるミドルウェアは、その通知の内容に従って情報管理テーブルを更新する。
【請求項５】
以下の手順によりデータの読み出し要求を処理することを特徴とする請求項３に記載の分散処理システムのデータ共有方法。
（１）ミドルウェアがアプリケーションプログラムからデータ読み出し要求を受けたときに、自身のデータ格納部に要求されたデータがあればそのデータをアプリケーションプログラムに渡し、
要求されたデータがなければデータ情報管理テーブルとノード情報管理テーブルの情報に基づいて当該データを保持するノードにデータ読み出し要求を送信する。
（２）この要求を受けたノードのミドルウェアが要求されたデータを要求元に送信する。
【請求項６】
以下の手順によりデータの削除要求を処理することを特徴とする請求項３に記載の分散処理システムのデータ共有方法。
（１）ミドルウェアがアプリケーションプログラムからデータの削除要求を受けたときにデータが自身のデータ格納部にあれば、データを削除した後にデータが削除されたことを各ノードに通知する。
（２）通知を受けた全てのノードのミドルウェアは、通知内容に従って情報管理テーブルを更新し、一方で、データの削除要求に対し、自身のデータ格納部に削除を要求されたデータがなければ削除要求メッセージを他の全ノードに送信する。
（３）そのメッセージを受けたミドルウェアは、データ格納部にデータがなければデータ情報管理テーブルのデータが削除対象となったことを記録し、そのデータ格納部にデータがあればそのデータを削除してから全てのノードに削除完了を通知する。
（４）削除完了通知を受けた全てのミドルウェアは、通知内容に従って情報管理テーブルを更新する。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードがネットワークを介して接続された分散処理システムに関し、特に異なるノードで動作するアプリケーションプログラムがデータを共有する技術に関する。
【背景技術】
【０００２】
従来の分散処理システムが複数のノード間でデータを共有するときは、アプリケーションプログラムが動作するＯＳにアプリケーションプログラムやデータを配置するための仮想空間を管理する機能を設けたり、記憶領域の割り当てを管理するサーバを設けるなどして実現されている（例えば、特許文献１参照）。他にも分散処理システムのメモリを共有化する専用のハードウェアが使われたりしている（例えば、特許文献２参照）。
【特許文献１】特開平８−８３２５３
【特許文献２】特開平８−６９４０５
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところがこれらの従来の技術のように、ＯＳレベルで拡張されたシステムや、特殊なハードウェアによるメモリ共有機構を用いてデータを共有すると、アプリケーションが稼動する環境が特殊なＯＳやハードウェアに限定されるため、汎用のＯＳや計算機を用いて分散処理システムを構築したいという要求には応えられないという問題があった。特に、本発明の対象のように、メモリの共有目的が、システム上で稼動するアプリケーションプログラムが使用するデータの共有のみであって、プログラムが稼動するメモリの共有までを必要とせず、データ共有の仕組みの可搬性が重視されるような場合には、特殊な環境に依存せずにデータの共有を実現することが課題となる。
また、特殊なハードウェアを用いないとしても、ＯＳレベルの拡張システムで用いられて記憶領域の割り当て管理等に使用されるようなサーバを必要とするときは、互いに同等の機能を持つノードだけで分散処理システムを構築することが出来ないという問題があった。
本発明は、このような問題に鑑みてなされたものであり、汎用のＯＳや計算機を用いて構築することができて、特殊な管理用サーバを設置することなく、各ノード上のアプリケーションプログラムがデータを共有することができるような分散処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記問題を解決するため、本発明は、次のようにしたのである。
請求項１に記載の発明は、ＯＳとミドルウェアとアプリケーションプログラムを備えた複数のノードがネットワークを介して互いに接続されているとともに前記複数のノードが前記ミドルウェアに格納された前記アプリケーションプログラムのデータを共有する分散処理システムにおいて、前記ミドルウェアは、前記アプリケーションプログラムの前記データを格納するデータ格納部と、共有された前記データの情報を保持するデータ情報管理テーブルと、前記複数のノードの情報を保持するノード情報管理テーブルと、メッセージと前記データを送受信するデータ送受信部と、を備えたことを特徴としている。
請求項２に記載の発明は、前記データ情報管理テーブルは、データの書き込み単位で割り付けるデータＩＤと、前記アプリケーションが定めるデータ属性と、前記データのサイズと、前記データが格納されたノードのノードＩＤと、前記データを保持するところが自らのノードであれば前記データが格納されているデータ領域中の場所を示すインデックスと、を備えており、前記ノード情報管理テーブルは、ノードを識別するノードＩＤと、そのノードに対応するネットワークアドレスと、データ容量と、使用可能なデータ格納部の残量と、を備えていることを特徴としている。
請求項３に記載の発明は、データが共有されるときの処理手順を次のようにしたことを特徴としている。すなわち、
（１）アプリケーションプログラムの要求が、データ書き込みと、読み出しと、削除のいずれであるかを判断する。
（２）各ノードの情報を保持するノード情報管理テーブルの内容と、共有されたデータの情報を保持するデータ情報管理テーブルの内容に基づいて、要求を実行するためのメッセージを作成する。
（３）データ送受信部を介してメッセージとデータを送受信する。
（４）受信したメッセージ内容に基づいてノード情報管理テーブル及びデータ情報管理テーブルの内容と、ミドルウェア毎に予め確保したデータ格納部の内容を更新する。
請求項４に記載の発明は、データの書き込み要求を処理するときの処理手順を次のようにしたことを特徴としている。すなわち、
（１）ミドルウェアがアプリケーションプログラムからデータ書き込み要求を受ければ自身のノード内のデータ格納部の残量を確認し、データが書き込み可能であればデータ格納部にデータを格納してデータ情報管理テーブルを更新するとともにデータが書き込まれたことを他のノードに通知する。
（２）その通知を受けた各ノードのミドルウェアは、通知内容に従って情報管理テーブルを更新し、一方で、データ書き込み要求に対し、自身のデータ格納部にデータを格納するのに十分な残量がなければ、ノード情報管理テーブルの情報に基づいて、必要な残量を持つ任意のノードにデータ書き込み要求を出し、要求の受理後にデータを送信する。
（３）データを書き込まれたノードは、データの送信元に書き込み完了を通知すると共に、他のノードにもデータが書き込まれたことを通知する。
（４）書き込み完了通知を受けた全てのノードにあるミドルウェアは、その通知の内容に従って情報管理テーブルを更新する。
請求項５に記載の発明は、データの読み出し要求を処理するときの処理手順を次のようにしたことを特徴としている。すなわち、
（１）ミドルウェアがアプリケーションプログラムからデータ読み出し要求を受けたときに、自身のデータ格納部に要求されたデータがあればそのデータをアプリケーションプログラムに渡し、
要求されたデータがなければデータ情報管理テーブルとノード情報管理テーブルの情報に基づいて当該データを保持するノードにデータ読み出し要求を送信する。
（２）この要求を受けたノードのミドルウェアが要求されたデータを要求元に送信する。
請求項５に記載の発明は、データの削除要求を処理するときの処理手順を次のようにしたことを特徴としている。すなわち、
（１）ミドルウェアがアプリケーションプログラムからデータの削除要求を受けたときにデータが自身のデータ格納部にあれば、データを削除した後にデータが削除されたことを各ノードに通知する。
（２）通知を受けた全てのノードのミドルウェアは、通知内容に従って情報管理テーブルを更新し、一方で、データの削除要求に対し、自身のデータ格納部に削除を要求されたデータがなければ削除要求メッセージを他の全ノードに送信する。
（３）そのメッセージを受けたミドルウェアは、データ格納部にデータがなければデータ情報管理テーブルのデータが削除対象となったことを記録し、そのデータ格納部にデータがあればそのデータを削除してから全てのノードに削除完了を通知する。
（４）削除完了通知を受けた全てのミドルウェアは、通知内容に従って情報管理テーブルを更新する。
【発明の効果】
【０００５】
請求項１〜５に記載の発明によると、特殊なＯＳやハードウェアのメモリ共有機構に依存することなく、アプリケーションプログラムが使うデータの共有が可能である。また、分散処理システムのデータ共有を管理するサーバが不要となり、データ共有に使用するシステムの領域も全体としてノードの数に応じて増加するため、規模拡張性のあるスケーラブルなシステム構築を行うことができる。
【発明を実施するための最良の形態】
【０００６】
以下、本発明の方法の具体的実施例について、図に基づいて説明する。
【実施例】
【０００７】
図１は、本発明の分散処理システムの構成を示す図であり、ミドルウェア３を搭載した複数のノード２がネットワーク６を介して互いに接続されたことが示されている。図において、１は分散処理システムであり、２は分散処理システムを構成するノード、６はイーサネット（登録商標）などのネットワークである。図１ではノード２の数が４つになっているが、これに限定されることはなく任意である。３はミドルウェア、４はノードにおけるソフトウェアの実行環境となっているＯＳ、５はミドルウェアを使用して他のノード上のアプリケーションプログラムとデータを共有するアプリケーションプログラムであり、これらがノード２に備えられている。３１はミドルウェアが予め確保しておくデータ格納部、３２はミドルウェアが他のノードとメッセージやデータの送受信を行うためのデータ送受信部、３３は各ノードの情報を保持するノード情報管理テーブル、３４は分散処理システム内のアプリケーションが共有するデータの情報を保持するデータ情報管理テーブルであり、これらがミドルウェア３に備えられている。
ここでミドルウェアについて少し説明を補充しておく。ミドルウェアとは、ソフトウェアをつなぐためのソフトウェアともいわれており、基本ソフトのＯＳと応用ソフトのアプリケーションプログラムの中間に位置するソフトウェアであり、一般的にはエンドユーザとバックオフィスサーバを接続する。その役目は、１台のサーバ上のアプリケーションとそのアプリケーションへのアクセスを要求する任意の台数のクライアントとの仲介を行い、異種コンピューティング環境のアプリケーションにおける双方向のやり取りを実現する、というものである。これがあることにより、異なるアーキテクチャやプロトコル、ネットワークを超えて簡単でスムーズにアプリケーションや情報にアクセスすることができるのである。
【０００８】
図２は、ノード情報管理テーブル３３とデータ情報管理テーブル３４の内容を示す図である。ここで、各ノードには、システム内でノードを一意に識別するためのノードＩＤを与えておくものとする。ノード情報管理テーブル３３はノード毎にノードＩＤとノードのネットワークアドレス、ノードで確保されているデータ格納部３１のデータ容量、データ格納部の空き容量を保持している。データ情報管理テーブル３４はデータ格納部３１に書き込まれているデータ毎に、データの書き込み時にミドルウェアが定めるデータＩＤと、アプリケーションプログラムがデータの書き込み時に指定できるデータ属性、データのサイズ、データを保持するノードのノードＩＤを保持しており、さらに、そのデータを保持するノードが自身である場合は、そのデータ格納部からデータを取得するために使用するインデックスを保持している。
【０００９】
次に図３〜図５を用いてアプリケーションプログラム５の要求に従って、ミドルウェア３がデータをデータ格納部３１に書き込む処理とデータを読み出す処理、データを削除する処理の３つの処理の流れについて説明する。
図３は、請求項３に記載された発明を説明する図であり、（ａ）はミドルウェア３がデータをデータ格納部３１に書き込むときの処理の流れを示すシーケンス図、（ｂ）は書き込み処理の過程で送受信されるメッセージの内容を示している。ノード２１はアプリケーションプログラム５のデータ書き込み要求を受けてデータの書き込み処理を開始するノードであり、ノード２２は実際にデータが書き込まれるノード、ノード２３、２４がその他のノードであるとし、また、ノード２１には要求されたデータを書き込む空き容量がなく、ノード２２には十分な空き容量があるものとすると、図３（ａ）の処理の流れは次のようになる。
（Ｓ１）まず、ノード２１がアプリケーションプログラム５のデータ書き込み要求７１を受けると、ノード情報管理テーブル３３の情報が調べられる。このとき、自ノードにデータを格納する十分な空き容量がなく、ノード２２に十分な空き容量があることがわかれば、ノード２２がデータ書き込み対象ノードとして選択される。書き込み可能なノードが複数あるときは任意のノードが選択される。
（Ｓ２）次に、ノード２１は、書き込もうとするデータにデータＩＤを割り当てた後、ノード２２に書き込み要求メッセージ７１を送信する。ここで、送信されたメッセージと以下のステップで送信されるメッセージについて補足説明する。（Ｓ２）〜（Ｓ７）のメッセージの構成は図３（ｂ）のようになっており、それぞれメッセージの種別を示すヘッダとメッセージ本体から成っている。「書き込み要求」、「書き込み許可」、「書き込み完了」などと書かれた部分がメッセージの種別を示すヘッダである。但し、種別を表すデータの実際の形式はどんなものでもよく、形式は問われない。図４以降の実施例に示されたメッセージも同様の形式になっている。書き込み要求メッセージ７１は、データＩＤの他にデータのサイズの情報を含んでいる。データＩＤは、システム全体で一意になるように各ノードによって決められる。例えば、ノードＩＤとノード内で生成した連番を組み合わせてデータＩＤとすることができる。
（Ｓ３）次に、データの書き込み要求７１を受けたノード２２は、ノード情報管理テーブル３３により、データの書き込みが可能であることを判定した後、書き込み許可メッセージ７２を送信する。容量不足によりデータの書き込みができないときは、ノードの現在の空き容量の情報を含む書き込み不能通知メッセージ７３が送信される。書き込み不能メッセージ７３を受けたノードは、ノード情報管理テーブル３３の送信元ノードに対応する空き容量を、通知された空き容量で更新する。なお、書き込み不能通知メッセージ７３が送られるのは、ノード２１によるノード選択後、ノード２２に対する書き込み要求が受理される前に、他のノードがノード２２にデータを書き込んだような場合である。
【００１０】
（Ｓ４）ノード２１がノード２２の書き込み許可メッセージ７２を受信すると、データを含むデータ送信メッセージ７４をノード２２に送信する。メッセージ７４にはデータ本体の他にアプリケーションが定めたデータ属性の情報も含まれている。
（Ｓ５）ノード２２がデータを受信すると、自身のデータ格納部３１にデータを格納し、ノード情報管理テーブル３３の空き容量を更新して、データ情報管理テーブル３４に新しいエントリを追加する。
（Ｓ６）書き込み完了通知メッセージ７５をノード２１に送信する。
（Ｓ７）新しいデータが登録されたことを他のノードに通知するために、自ノードの空き容量を含む、書き込み完了通知メッセージ７６をブロードキャストする。
（Ｓ８）ノード２３、２４が書き込み完了通知メッセージ７６のブロードキャストを受けると、メッセージの内容に従ってノード情報管理テーブル３３の空き容量を更新し、データ情報管理テーブル３４に新しいエントリを追加する。メッセージに含まれるデータＩＤが既に受信している書き込み完了通知メッセージ７５に含まれているため、ノード２１はメッセージ７６を無視する。
【００１１】
図４は、請求項４に記載された発明を説明する図であり、（ａ）はミドルウェア３がデータをデータ格納部３１から読み出すときの処理の流れを示すシーケンス図、（ｂ）は読み出し処理の過程で送受信されるメッセージの内容を示している。ノード２１はアプリケーションからのデータ読み出し要求を受けたデータの読み出し処理を開始するノードであり、ノード２２は実際にデータが保持されるノードである。図４（ａ）の処理の流れは次のようになる。
（Ｓ２１）まず、ノード２１がデータ情報管理テーブル３４を検索して実際にデータを保持しているノードを検索する。この図の場合はそのノードがノード２２であると判定する。
（Ｓ２２）次に、ノード２１がデータ読み出し要求メッセージ８１をノード２２に送信する。
（Ｓ２３）最後に、ノード２２が要求されたデータを含むデータ送信メッセージ８２をノード２１に送信する。
【００１２】
図５は、請求項５に記載された発明を説明する図であり、（ａ）はミドルウェア３がデータをデータ格納部３１から削除するときの処理の流れを示すシーケンス図、（ｂ）は削除処理の過程で送受信されるメッセージの内容を示している。ノード２１はアプリケーションからのデータ削除要求を受けてデータの削除処理を開始するノードであるが実際にはデータを保持していないノードであり、ノード２４は実際にそのデータを保持しているノード、ノード２２、２３はその他のノードである。図５（ａ）の処理の流れは次のようになる。
（Ｓ３１）まず、ノード２１がデータ格納部３１を検索して自ノードに削除すべきデータ本体がないことを知る。
（Ｓ３２）次に、ノード２１が削除すべきデータのデータＩＤを含む削除要求メッセージ９１をブロードキャストする。
（Ｓ３３）ノード２４が削除要求メッセージ９１を受信すると、ノード２４がそのデータを保持しているので、そのデータをデータ情報管理テーブル３４から削除し、ノード情報管理テーブル３３の空き容量を更新する。
（Ｓ３４）ノード２２、２３は削除すべきデータ本体を持たないので、そのデータＩＤが示すデータが削除対象となったことを記憶する。これ以降は、アプリケーションのデータ読み出し要求があれば、データが存在しないという応答を返す。
（Ｓ３５）ノード２４がデータを削除すると、データの削除完了通知メッセージ９２をブロードキャストする。
（Ｓ３６）最後に、各ノードがデータ削除完了通知メッセージ９２を受信すると、データＩＤに対応するエントリをデータ情報管理テーブル３４から削除し、ノード情報管理テーブル３３の当該データを保持していたノードの空き容量を更新する。
【産業上の利用可能性】
【００１３】
本発明は、ネットワークを介して接続される複数のモーションコントローラなどのＦＡ用の機器をノードとする分散処理システムに使うことができ、特に、異なるノード上で動作するアプリケーションプログラム同士がデータを共有するようなシステムに適用することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の分散処理システムの構成図
【図２】情報管理テーブルの内容を表す説明図
【図３】データ書き込み処理の説明図
【図４】データ読み出し処理の説明図
【図５】データ削除処理の説明図
【符号の説明】
【００１５】
１  分散処理システム、             ２、２１、２２、２３、２４  ノード、
３  ミドルウェア、                 ３１  データ格納部、
３２  データ送受信部、             ３３  ノード情報管理テーブル、
３４  データ情報管理テーブル、            ４  ＯＳ、
５  アプリケーションプログラム、   ６  ネットワーク、
７１  書き込み要求メッセージ、     ７２  書き込み許可メッセージ、
７３  書き込み不能通知メッセージ、 ７４  データ送信メッセージ、
７５  書き込み完了通知メッセージ（ユニキャスト）、
７６  書き込み完了通知メッセージ（ブロードキャスト）、
８１  読み出し要求メッセージ、     ８２  データ送信メッセージ、
９１  削除要求メッセージ、         ９２  削除完了通知メッセージ
【図１】
2006023801.tif 000003
【図２】
2006023801.tif 000004
【図３】
2006023801.tif 000005
【図４】
2006023801.tif 000006
【図５】
2006023801.tif 000007