(57)【特許請求の範囲】
【請求項１】
他の複数の計算機と同じネットワークに接続され、前記他の計算機と共に計算機クラスタを構成する計算機において、
トピックを識別するトピック識別データと、前記ネットワークにおける通信で使用されるマルチキャストアドレスとポート番号との組と、前記トピックを送信するトピック送信処理の起動した時刻を示すトピック送信処理起動時刻と、前記トピック識別データの示す前記トピックが起動した計算機であって前記ネットワークに接続する計算機のＩＰアドレスとを含むレコードであって、前記トピック識別データごとの前記レコードが登録されたクラスタ内トピック管理情報を有するクラスタ内管理部と、
前記クラスタ内トピック管理情報に登録された前記トピック識別データと同一のトピックの前記トピック送信処理が自身の計算機で起動すると、起動した前記トピック送信処理の起動時刻を検出し、検出した起動時刻と、前記クラスタ内トピック管理情報に登録された前記トピック識別データのトピック送信処理起動時刻とを比較し、検出した起動時刻の方が過去である場合には、起動したトピックと同一の前記トピック識別データのレコードにおける前記マルチキャストアドレスと前記ポート番号とを所定の生成規則に基づき新たに生成して変更し、起動したトピックと同一の前記トピック識別データのレコードにおける前記トピック送信処理起動時刻を検出した前記起動時刻に変更し、起動したトピックと同一の前記トピック識別データのレコードにおける前記ネットワークに接続する計算機のＩＰアドレスに自身の計算機の前記ネットワークにおけるＩＰアドレスを追加する変更を実行すると共に、起動したトピックと同一の前記トピック識別データのレコードにおける変更内容を、変更情報として、前記ネットワークに接続する他の計算機に通知するクラスタ内通知部と
を備えたことを特徴とする計算機。
【請求項２】
前記クラスタ内通知部は、
検出した前記起動時刻と、前記クラスタ内トピック管理情報に登録された前記トピック識別データのトピック送信処理起動時刻との比較の結果、検出した前記起動時刻の方が新しい場合には、起動したトピックと同一の前記トピック識別データのレコードにおける前記ネットワークに接続する計算機のＩＰアドレスに自身の計算機の前記ネットワークにおけるＩＰアドレスを追加する変更を実施すると共に、起動したトピックと前記トピック識別データと自身の前記ＩＰアドレスとを前記変更情報として、前記ネットワークに接続する他の計算機に通知することを特徴とする請求項１記載の計算機。
【請求項３】
前記クラスタ内通知部は、
前記計算機クラスタを構成する前記他の計算機から、前記クラスタ内管理部の有する前記クラスタ内トピック管理情報の変更を示す前記変更情報を受信すると、前記変更情報の内容を前記クラスタ内トピック管理情報に反映することを特徴とする請求項１または２のいずれかに記載の計算機。
【請求項４】
前記計算機は、
前記計算機クラスタを代表する代表計算機であって、
前記計算機は、さらに、
前記ネットワークと異なる代表計算機ネットワークに接続することにより、前記代表計算機ネットワークに接続され、他の計算機ネットワークを代表する他の代表計算機と通信可能な代表計算機間通知部と、
前記トピック識別データと、前記代表計算機ネットワークにおける通信で使用されるマルチキャストアドレスとポート番号との組と、前記トピック送信処理起動時刻と、前記代表計算機間の通信における前記トピック識別データの示すトピックのデータの送信元となる前記代表計算機のＩＰアドレスとを含むレコードであって、前記トピック識別データごとの前記レコードが登録された代表計算機間トピック管理情報を有する代表計算機間管理部と
を備え、
前記クラスタ内通知部は、
起動したトピックの前記起動時刻を検出すると、検出した前記起動時刻に係るトピックの前記トピック識別データと検出した起動時刻とを前記代表計算機間通知部に渡し、
前記代表計算機間通知部は、
前記クラスタ内通知部から前記トピック識別データと前記起動時刻とを渡されると、前記代表計算機間管理部の有する前記代表計算機間トピック管理情報を参照することにより、渡された前記トピック識別データと同一の前記トピック識別データの前記トピック送信処理起動時刻が登録されている場合には、渡された前記起動時刻と前記トピック送信処理起動時刻とを比較し、渡された前記起動時刻のほうが過去である場合には、渡されたトピック識別データと同一の前記トピック識別データのレコードにおける前記マルチキャストアドレスと前記ポート番号とを所定の生成規則に基づき新たに生成して変更し、渡されたトピック識別データと同一の前記トピック識別データのレコードにおける前記トピック送信処理起動時刻を渡された前記起動時刻に変更すると共に、渡されたトピック識別データと同一の前記トピック識別データのレコードにおける変更内容を、前記代表計算機ネットワークに接続する他の代表計算機に通知することを特徴とする請求項１〜３のいずれかに記載の計算機。
【請求項５】
複数の計算機がネットワークに接続されることにより構成された計算機クラスタを複数備え、
前記複数の計算機クラスタは、各計算機クラスタを代表する各代表計算機が前記ネットワークと異なる代表計算機ネットワークに接続することにより、ネットワーク接続される分散計算機システムにおいて、
（１）前記計算機クラスタに属する計算機は、
自身の計算機でトピックデータの送信を希望する送信プロセスが起動すると、前記送信プロセスの起動を示す送信プロセス起動通知を、自身の計算機が所属する計算機クラスタの他のすべての計算機に送信し、
（２）前記送信プロセス起動通知を送信した前記計算機と同じ計算機クラスタに所属する前記代表計算機は、
前記送信プロセス起動通知を受信すると、前記代表計算機ネットワークを介して他のすべての前記代表計算機に前記送信プロセス起動通知を送信し、
（３）前記送信プロセス起動通知を受信した他の全ての前記代表計算機は、
同じ計算機クラスタに所属するすべての計算機に前記送信プロセス起動通知を送信し、（４）前記計算機クラスタに属する計算機は、
自身の計算機で前記トピックデータの受信を希望する受信プロセスが起動すると、前記受信プロセスの起動を示す受信プロセス起動通知を、自身の計算機が所属する計算機クラスタの他のすべての計算機に送信し、
（５）前記受信プロセス起動通知を送信した前記計算機と同じ計算機クラスタに所属する前記代表計算機は、
前記受信プロセス起動通知を受信すると、他の前記代表計算機から前記送信プロセス起動通知を受信している場合には、前記送信プロセス起動通知を送信した前記他の前記代表計算機に前記代表計算機ネットワークを介して受信希望通知を送信し、
（６）前記受信希望通知を受信した前記代表計算機は、
自身の所属するクラスタにおいて前記送信プロセスが起動した前記計算機から前記トピックデータを受信し、受信した前記トピックデータを前記代表計算機ネットワークを介して前記受信希望通知を送信した前記代表計算機に送信し、
（７）前記受信希望通知を受信した前記代表計算機は、
前記受信プロセス起動通知を送信した同一クラスタ内の前記計算機に、前記トピックデータを送信することを特徴とする分散計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、出版−購読型データ通信方式で計算機クラスタ間の通信を行う、分散計算機システムに関する。
【背景技術】
【０００２】
一般に、出版−購読型データ通信方式では、データの種別であるトピックによってＩＰマルチキャストグループなどの計算機グループを作成し、そのトピックの購読を希望するプロセスが計算機グループに参入し、トピックの配信を行うプロセスがそのグループにデータを配信することにより、希望するトピックの送受信を実現することが多い。
【０００３】
また、分散計算機システム（以降、計算機クラスタ）を複数個ネットワーク結合して出来た分散計算機システム（以降、分散計算機システム）において、異なる計算機クラスタに属する計算機間でマルチキャストデータの交換を行う際、複数のネットワークに属する計算機がデータを受信し、自計算機クラスタ内のプロセスが必要とするデータか、他の計算機クラスタにて必要とするデータかを判定し、他の計算機クラスタにて必要とするデータであれば、その計算機クラスタに転送することによって、異なる計算機クラスタ間でのマルチキャストデータの送受信を実現することができる（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１２４７６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の出版−購読型データ通信方式では、ＩＰマルチキャスト通信にてトピックの送受信を行っているため、計算機クラスタが複数結合して構成された分散システムにでは、ネットワークが異なるため、異なる計算機クラスタ上プロセスの間でのトピック送受信を行うことはできない。また、従来の出版−購読型データ通信に特許文献１を組み合わせることにより、本発明で対象とするような分散計算機システムでトピックの送受信を実現することは可能であるが、この場合、複数ネットワークに属する計算機が必ず一度データを受信してから転送すべきデータかどうかを判別しているため、受信不要なデータも受信することになり、複数ネットワークに属する計算機の負荷が高い、いう問題点があった。
【０００６】
この発明は、複数ネットワークに接続された計算機が、自ネットワーク上で交換されているトピックを他のネットワーク上でも必要とするときにのみ、その計算機がトピックを受信して他のネットワークに転送することにより、複数ネットワークに属する計算機は転送不要なデータの受信をなくし、負荷を軽減することを目的とする。
【課題を解決するための手段】
【０００７】
この発明の計算機は、
他の複数の計算機と同じネットワークに接続され、前記他の計算機と共に計算機クラスタを構成する計算機において、
トピックを識別するトピック識別データと、前記ネットワークにおける通信で使用されるマルチキャストアドレスとポート番号との組と、前記トピックを送信するトピック送信処理の起動した時刻を示すトピック送信処理起動時刻と、前記トピック識別データの示す前記トピックが起動した計算機であって前記ネットワークに接続する計算機のＩＰアドレスとを含むレコードであって、前記トピック識別データごとの前記レコードが登録されたクラスタ内トピック管理情報を有するクラスタ内管理部と、
前記クラスタ内トピック管理情報に登録された前記トピック識別データと同一のトピックの前記トピック送信処理が自身の計算機で起動すると、起動した前記トピック送信処理の起動時刻を検出し、検出した起動時刻と、前記クラスタ内トピック管理情報に登録された前記トピック識別データのトピック送信処理起動時刻とを比較し、検出した起動時刻の方が過去である場合には、起動したトピックと同一の前記トピック識別データのレコードにおける前記マルチキャストアドレスと前記ポート番号とを所定の生成規則に基づき新たに生成して変更し、起動したトピックと同一の前記トピック識別データのレコードにおける前記トピック送信処理起動時刻を検出した前記起動時刻に変更し、起動したトピックと同一の前記トピック識別データのレコードにおける前記ネットワークに接続する計算機のＩＰアドレスに自身の計算機の前記ネットワークにおけるＩＰアドレスを追加する変更を実行すると共に、起動したトピックと同一の前記トピック識別データのレコードにおける変更内容を、変更情報として、前記ネットワークに接続する他の計算機に通知するクラスタ内通知部と
を備えたことを特徴とする。
【発明の効果】
【０００８】
この発明により、計算機クラスタが複数結合して構成された分散システムにおいて、自ネットワーク上で交換されているトピックを他のネットワーク上でも必要とするときにのみ、所定の計算機がトピックを受信して他のネットワークに転送する分散システムを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１の分散計算機システム４の構成図。
【図２】実施の形態１の計算機の内部構成を示すブロック図。
【図３】実施の形態１の出版・購読計算機管理部７の有するテーブル７Ｔ。
【図４】実施の形態１のトピック送信部８とトピック受信部９とのデータ授受を示す図。
【図５】実施の形態１の転送トピック管理部１１の有するテーブル１１Ｔ。
【図６】実施の形態１のトピックデータのデータフォーマットを示す図。
【図７】図１のシステムを簡略化した図。
【図８】図７での送信プロセスの同一クラスタ内の伝搬を示す図。
【図９】図７での送信プロセスのクラスタ外への伝搬を示す図。
【図１０】図７での送信プロセスの他のクラスタ内部への伝搬を示す図。
【図１１】図７での受信プロセスの起動を示す図。
【図１２】図７での受信プロセスの他のクラスタへの伝搬を示す図。
【図１３】図７での受信プロセスの他のクラスタ内部への伝搬を示す図。
【図１４】図７でのトピックデータの配信状態を示す図。
【図１５】実施の形態１の計算機１−１−１での出版プロセス起動の起動通知がクラスタ内に伝搬する状況を示す図。
【図１６】実施の形態１の計算機１−１−２での購読プロセス起動の起動通知がクラスタ内に伝搬する状況を示す図。
【図１７】実施の形態１の計算機１−１−２のトピック受信部９のソケット設定を示す図。
【図１８】実施の形態１の出版プロセスの中継器間の伝搬を示す図。
【図１９】実施の形態１の受信計算機の転送トピック受信部１３のソケット設定を示す図。
【図２０】実施の形態１の他クラスタからの出版プロセス起動通知の伝搬を示す図。
【図２１】実施の形態１のトピックの送信を示す図。
【図２２】実施の形態１の出版・購読計算機通知部６のフローチャート。
【図２３】実施の形態１のトピック送信部８のフローチャート。
【図２４】実施の形態１のトピック受信部９のフローチャート。
【図２５】実施の形態１の転送トピック通知部１０のフローチャート。
【図２６】実施の形態１のトピック転送部１２のフローチャート。
【図２７】実施の形態１の転送トピック受信部１３のフローチャート。
【図２８】実施の形態２のトピック配信停止通知のクラスタ内への伝搬を示す図。
【図２９】実施の形態２の受信プロセス削除通知のクラスタ内への伝搬を示す図。
【図３０】実施の形態２のトピック配信停止通知の他クラスタへの伝搬を示す図。
【図３１】実施の形態２の受信プロセス削除通知のクラスタ内への伝搬を示す図。
【図３２】実施の形態２の出版・購読計算機管理部７のフローチャート。
【図３３】実施の形態２のトピック送信部８のフローチャート。
【図３４】実施の形態２のトピック受信部９のフローチャート。
【図３５】実施の形態２の転送トピック通知部１０のフローチャート。
【図３６】実施の形態２のトピック転送部１２のフローチャート。
【図３７】実施の形態２の転送トピック受信部１３のフローチャート。
【図３８】実施の形態３の計算機の外観を示す図。
【図３９】実施の形態３の計算機のハードウェア資源を示す図。
【発明を実施するための形態】
【００１０】
実施の形態１．
図１は、この発明が対象とする分散計算機システムの構成の一例を示したものである。
図１のように、本発明が対象とする分散計算機システムでは、複数の計算機クラスタ３をネットワーク接続することにより構成されている。例えば、図１において、計算機１−１−１〜１−１−６はネットワーク２−１に接続され、計算機クラスタ３−１を構成している。同様に、計算機１−２−１〜１−２−６はネットワーク２−２に接続され、計算機クラスタ３−２を構成している。そして、計算機１−３−１〜１−３−６はネットワーク２−３に接続され、計算機クラスタ３−３を構成している。そして、ネットワーク２−４が計算機クラスタ３−１〜３−３を接続することによって分散計算機システム４が構成される。なお、本構成において、計算機が接続されているネットワークが異なる場合、計算機間で直接通信ができないものとする。
【００１１】
また、以下で使用する「出版プロセス」、「送信プロセス」は同じ意味である。また「購読プロセス」、「受信プロセス」は同じ意味である。
【００１２】
（前提条件）
（１）つまり、図１において、ネットワーク２−４に接続されている計算機１−１−５，１−２−５，１−３−５はネットワークルータの機能を持っていないものとする。例えば、図１において、計算機１−１−１上で動作するプロセスは、異なる計算機クラスタに属する計算機１−２−６上で動作するプロセスに対し、計算機１−２−６のＩＰアドレスを指定して通信することはできないものとする。
（２）しかし、計算機１−１−５，１−２−５，１−３−５はそれぞれ異なる計算機クラスタに属しているが、ネットワーク２−４にて接続されているため、各計算機のＩＰアドレスを指定して直接通信することが可能である。
（３）なお、計算機１−１−５，１−２−５，１−３−５を以降、それぞれ計算機クラスタ３−１，３−２，３−３のデータ中継計算機５（代表計算機）と呼ぶ。なお、システムを構成するすべての計算機の内部時刻はＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）などで整合されているものとする。以下、分散計算機システム４に示すような分散計算機システムにおいて、異なる計算機クラスタ３上の計算機の間で出版−購読型データ通信を実現するための構成および方法について述べる。
【００１３】
図２は、本実施の形態１における出版−購読型データ通信方式の構成図である。本実施の形態１における出版−購読型通信方式は、出版・購読計算機通知部６、出版・購読計算機管理部７、トピック送信部８、トピック受信部９、転送トピック通知部１０、転送トピック管理部１１、トピック転送部１２、転送トピック受信部１３で構成される。
【００１４】
（出版・購読計算機通知部６）
出版・購読計算機通知部６（クラスタ内通知部）は、計算機上でトピックを出版または購読するプロセスが起動すると、
（１）そのトピック名、
（２）計算機のＩＰアドレス、
（３）トピックを送信する際のマルチキャストＩＰアドレス、
（４）ポート番号などを同一計算機クラスタ内の全計算機に通知する。また、他の計算機の出版・購読計算機通知部６からの通知を受信し、他の出版・購読計算機管理部７に登録する役割を持つ。
【００１５】
（出版・購読計算機管理部７）
出版・購読計算機管理部７（クラスタ内管理部）は、出版・購読計算機通知部６が受信した、
（１）各トピック名（トピック識別データ）と、
（２）そのトピックが送信されるマルチキャストＩＰアドレスと、
（３）ポート番号、
（４）各トピックを出版するプロセス、
（５）購読するプロセスが動作する計算機のＩＰアドレス、
（６）ＩＰマルチキャストアドレスの設定時刻、
などを保持する役割を持つ。
例えば、出版・購読計算機管理部７は図３のようなテーブル７Ｔ（クラスタ内トピック管理情報）を持つ。後述ように、出版・購読計算機管理部７の他、転送トピック管理部１１も図３と類似のテーブルを持つ（以下、図３をテーブル７Ｔ、後述の図５をテーブル１１Ｔと呼ぶ場合がある）。また、「出版・購読計算機管理部７に登録」、あるいは「出版・購読計算機管理部７を参照」等の説明が登場するが、これらはテーブル７Ｔに登録、テーブル７Ｔを参照等することを意味する。転送トピック管理部１１についても同様である。
【００１６】
図３の例では、ＩＰアドレスが、「１９２．１６８．１．１」、「１９２．１６８．１．３」上のプロセスがトピック１のデータを送信し、トピック１を受信する際のＩＰマルチキャストアドレスが「２３９．１９２．１００．１」、ポートが８０００番、そのトピックを受信するプロセスが動作する計算機が「１９２．１６８．１．１」，「１９２．１６８．１．２」、「１９２．１６８．１．４」、ＩＰマルチキャストアドレスを設定した時刻が１２時３４分５６秒であることを示している。
【００１７】
同様に、計算機「１９２．１６８．１．５」上のプロセスがトピック２を送信し、そのトピックを受信するプロセスが動作する計算機が計算機「１９２．１６８．１．１」、計算機「１９２．１６８．１．４」、計算機「１９２．１６８．１．５」であり、トピック１を受信するためのＩＰマルチキャストアドレスが「２３９．１９２．１００．２」、ポート番号が８０００、ＩＰマルチキャストアドレスを設定した時刻が１１時１２分１３秒であることを示している。なお、本表では、時刻を時、分、秒のみ取得しているが、年、月、日、時、分、秒、ミリ秒（マイクロ秒、ナノ秒）まで取得してもよい。
【００１８】
（トピック送信部８）
トピック送信部８は、送信プロセスが送信するトピックのデータを実際に同一計算機クラスタを構成するネットワーク上に送信する役割を持つ。トピック送信部８はライブラリのデータ送信ＡＰＩであることや、プロセスまたはスレッドであることが考えられる。トピック送信部８がプロセスまたはスレッドである場合のデータ送信方法としては、送信プロセスとの間でデータを相互アクセス可能な領域を作成し、送信プロセスがその領域にデータを配置し、トピック送信部８のプロセスまたはスレッドが転送する、という方法が考えられる。
【００１９】
（トピック受信部９）
トピック受信部９は、送信されたトピックのデータを受信する役割を持つ。トピック受信部９はライブラリの送信ＡＰＩであることや、プロセスまたはスレッドであることが考えられる。トピック受信部９がプロセスまたはスレッドの場合のデータの受信方法としては、受信プロセスとの間でデータを相互アクセス可能な領域を作成し、トピック受信部９がその領域にデータを配置することにより、受信プロセスがデータを受信する、という方法が考えられる。
【００２０】
図４は、トピック送信部８がプロセスまたはスレッド、トピック受信部９がプロセスまたはスレッドであった場合の送信プロセスとトピック送信部８との間でのデータの受け渡し方法、受信プロセスとトピック受信部９とのデータ受け渡しの一例を図示したものである。
【００２１】
（転送トピック通知部１０）
転送トピック通知部１０（代表計算機間通知部）は、自計算機が属する計算機クラスタ内のある計算機でトピック送信プロセスが起動した場合に、計算機クラスタを接続するネットワークに接続された全データ中継計算機５にトピックを送信するためのマルチキャストＩＰアドレス、ポート番号を決定し、
（１）トピック名、
（２）トピックを送信するマルチキャストＩＰアドレス、
（３）ポート番号
を他の転送トピック通知部１０に通知する。また、その通知を他の転送トピック通知部１０から受信した場合に、転送トピック管理部１１を参照し、自計算機クラスタ内にそのトピックの購読を希望するプロセスが起動していた場合には、通知送信元の転送トピック通知部１０に、自計算機クラスタ内にデータ購読プロセスが起動している旨を通知する。
【００２２】
（転送トピック管理部１１）
転送トピック管理部１１（代表計算機間管理部）は、
（１）計算機クラスタのデータ中継計算機間で交換されるトピック名、
（２）トピックを送受信するデータ中継計算機のＩＰアドレス、
（３）トピックを送受信する際のＩＰマルチキャストアドレスおよびポート番号、
（４）ＩＰマルチキャストアドレス設定時刻など、
を保持する。
【００２３】
転送トピック管理部１１は、例えば図５のようなテーブル１１Ｔを有する。図５の例では、トピック１を「１９２．１６８．１．５」の計算機がＩＰマルチキャストアドレス「２３９．１９２．１９０１．１０１」、ポート８０００にマルチキャスト送信し、中継計算機「１９２．１６８．２．５」、「１９２．１６８．３．５」が受信すること、そして、ＩＰマルチキャストアドレスが設定された時刻が１２時３４分５６秒と示されている。
【００２４】
（トピック転送部１２）
トピック転送部１２は、自計算機クラスタで送信されているトピックが、他の計算機クラスタが必要とする場合、そのトピックをトピック受信部から受け取り、その計算機クラスタのデータ中継計算機に送信する役割を持つ。
【００２５】
（転送トピック受信部１３）
転送トピック受信部１３は、他の計算機クラスタから送信されたトピックのデータを受信し、トピック送信部８に渡す役割を持つ。なお、転送トピック通知部１０、転送トピック管理部１１、トピック転送部１２、転送トピック受信部１３は、データ中継計算機のみが保持すればよい。
【００２６】
（トピックデータのフォーマット）
本実施の形態１における、トピックデータを格納するバッファのフォーマットの概要を図６に示す。図６のように、バッファをヘッダ部とボディ部にわけ、ヘッダ部にはトピック名、送信元のＩＰアドレスなどを含み、ボディ部に送信したいデータを格納する。以降、図６の、ヘッダ部とボディ部をあわせたものを「データ」と呼ぶ。
【００２７】
図７〜図１４を参照して、本システムの動作の概要を説明する。この動作概要では、テーブル７Ｔ、テーブル１１Ｔに、まだレコードが登録されていない、初期状態から、動作を開始するものとして説明する。図７は図１を簡略化した図である。説明の簡略化のため、計算機クラスタ３−１、３−２を対象として説明する。計算機クラスタ３−１において、計算機１−１−１の「１９２．１６８．１１」は計算機のＩＰアドレスを示す。他の計算機についても同じである。
【００２８】
（送信プロセスの同一クラスタ内（各計算機）への伝搬）
図８は、計算機１−１−１において「トピック１」の送信プロセスが起動した場合の、同一クラスタ内へ、トピック１の「送信プロセス起動の情報」が伝搬する様子を説明する図である。トピック１の送信プロセスが起動すると、計算機１−１−１上の出版・購読計算機通知部６がトピック１の送信プロセス起動を検出し、プロセス起動検出時刻（１２時３４分５６秒とする。以下、１２：３４：５６と表記する）（トピック送信処理起動時刻）を取得する。出版・購読計算機通知部６は、自計算機上の出版・購読計算機管理部７を参照し、トピック１を送信するテーブル７Ｔのレコードが登録されているかどうかをチェックする。この例では初期状態であるので登録されていない。そこで、計算機１−１−１の出版・購読計算機通知部６は、図８に出版・購読計算機通知部６として示すように、ＩＰマルチキャストアドレス、ポート番号を、それぞれ、「２３９．６８．１．１」、「３０００１」と決定する。そして出版・購読計算機通知部６は、図８に示すように、計算機１−１−１の出版・購読計算機管理部７に、トピック１について、
（１）トピック名；トピック１、
（２）ＩＰマルチキャストアドレス、ポート番号；「２３９．１６８．１．１」、「３０００１」、
（３）アドレス登録時刻（プロセス起動検出時刻）；「１２：３４：５６」、
（４）送信計算機ＩＰアドレス；計算機１−１−１のＩＰアドレス；
のレコードを登録する。送信プロセスの起動した起動計算機である出版・購読計算機通知部６は、情報が登録されたテーブル７Ｔの内容を、同一クラスタ３−１の他の計算機に通知する。
なお、後述のように、出版・購読計算機通知部６による同一クラスタ内の他の出版・購読計算機通知部６への通知は、例えば、予め設定されたマルチキャストアドレス等を用いて行う。図８は、計算機１−１−３、１−１−５も同じ内容のテーブル７Ｔを有することを示している。
【００２９】
（送信プロセスの他のクラスタへの伝搬）
図９は、中継計算機１−１−５によって、計算機１−１−１から受信した送信プロセス起動の情報の内容が、他のクラスタ（この例では計算機クラスタ３−２）に伝搬する様子を示す図である。図９に示すように、中継系計算機１−１−５では、中継系計算機１−１−５の出版・購読計算機通知部６が計算機１−１−１から送信プロセス起動の情報を受信し、この情報の内容を転送トピック通知部１０に通知する。転送トピック管理部１１は出版・購読計算機通知部６から通知を受けると、テーブル１１Ｔにレコードを登録する。この登録の際、中継系計算機１−１−５の転送トピック通知部１０は、クラスタ間通信用のＩＰマルチキャストアドレス、ポート番号をそれぞれ「２３９．１６９．１．１」、「３０００２」と決定する。
またテーブル１１Ｔのアドレス登録時刻（プロセス起動検出時刻）は出版・購読計算機通知部６からの通知内容を登録する。また、送信計算機ＩＰアドレスの欄には、中継計算機１−１−５のＩＰアドレスを登録する。トピック１のデータを他のクラスタへ転送する際、クラスタ間通信において、中継計算機１−１−５が送信計算機になるからである。図９に示すように、中継計算機１−１−５の転送トピック通知部１０は、他のクラスタの中継計算機に、登録したテーブル１１Ｔの内容を通知する。なお、後述のように、転送トピック通知部１０による他のクラスタの通知は、例えば、予め設定されたマルチキャストアドレス等を用いて行う。中継計算機間では、テーブル１１Ｔの内容は同じである。これにより、図９に示すように、送信プロセスの起動情報が、他のクラスタの中継計算機に伝搬する。図９には、中継計算機１−２−５が中継計算機１−１−１と同じ内容のテーブル１１Ｔを有することを示した。
【００３０】
（送信プロセスの他のクラスタの内部（各計算機）への伝搬）
図１０は、そのクラスタの中継計算機が、他のクラスタの中継計算機から送信プロセスの起動情報を受信した場合に、中継計算機から同一クラスタ内の計算機に、送信プロセスの起動情報が伝搬する様子を示す。図１０の上部は、中継計算機１−２−５の転送トピック通知部１０が、中継計算機１−１−５の転送トピック通知部１０から送信プロセスの起動情報を受信した場合に、転送トピック通知部１０が受信内容を出版・購読計算機通知部６に通知し、出版・購読計算機通知部６が、中継計算機１−２−５のテーブル７Ｔに登録する様子を示している。すなわち中継計算機１−２−５の出版・購読計算機通知部６は転送トピック通知部１０から通知を受けると、計算機クラスタ３−２内でトピック１のデータを転送する際に使用するＩＰマルチキャストアドレス、ポート番号をそれぞれ「２４０．１６９．１．１」、「３０００１」と決定する。また、テーブル７Ｔの送信計算機には、自己の計算機ＩＰアドレスを設定する。中継計算機１−２−５が計算機クラスタ３−２内でのトピック１のデータの送信元となるからである。中継計算機１−２−５のテーブル７Ｔの情報が、中継計算機１−２−５の出版・購読計算機通知部６によって、同一クラスタ内の他の計算機の出版・購読計算機通知部６に通知される。以上の動作によって、計算機クラスタ３−１の計算機１−１−１で起動した送信プロセスの起動情報が、他の計算機クラスタ３−２の各計算機に伝搬する。計算機クラスタ３−２以外の他の計算機クラスタについても同様である。
【００３１】
（受信プロセスの同一クラスタ内（各計算機）への伝搬）
図１１は、計算機クラスタ３−２の計算機１−２−２でトピック１の購読を希望する受信プロセスが起動した場合を示す図である。計算機１−２−２で受信プロセスが起動すると、計算機１−２−２の出版・購読計算機通知部６がこれを検知し、図１１に示すように、出版・購読計算機通知部６は、トピック名（トピック）１と、受信プロセスが起動した自己の計算機ＩＰアドレスとを、同一クラスタ内にマルチキャストする。このマルチキャストは、予め設定された通知用のマルチキャストアドレスを用いる。同一クラスタ内の中継計算機１−２−５等の他の計算機では、出版・購読計算機通知部６が、この通知を受信し、テーブル７Ｔの受信計算機の欄に、受信計算機である計算機１−２−２のＩＰアドレスを登録する。
【００３２】
（受信プロセスの他クラスタへの伝搬）
図１２は、受信プロセスの他クラスタ（他の中継計算機）への伝搬を示す図である。中継計算機１−２−５の出版・購読計算機通知部６は、受信プロセスの起動情報（トピック名、受信計算機ＩＰアドレス）を受信すると転送トピック通知部１０に通知する。転送トピック通知部１０は、この通知を受けると、図１２に示すように、テーブル１１Ｔにおけるトピック１のレコードの受信計算機の欄に自己（中継計算機１−２−５）のＩＰアドレスを登録すると共に、他のクラスタの中継計算機の転送トピック通知部１０に、トピック名（トピック１）と受信計算機のＩＰアドレス（中継計算機１−２−５のＩＰアドレス）を通知する。図１２の下側に示すように、中継計算機１−１−５の転送トピック通知部１０もトピック名（トピック１）と受信計算機のＩＰアドレス（中継計算機１−２−５のＩＰアドレス）の通知を受信し、テーブル１１Ｔのトピック１の受信計算機欄に、中継計算機１−２−５のＩＰアドレスを登録する。
【００３３】
（受信プロセスの他のクラスタ内部（各計算機）への伝搬）
図１３は、受信プロセスの他のクラスタ内部（各計算機）への伝搬を示す図である。中継計算機１−１−５の転送トピック通知部１０は、通知された内容をテーブル１１Ｔに登録すると、通知された内容を出版・購読計算機通知部６に通知する。出版・購読計算機通知部６は、この通知を受けると、テーブル７Ｔの受信計算機の欄に、中継計算機１−１−５のＩＰアドレスを登録する。そして中継計算機１−１−５の出版・購読計算機通知部６は、トピック名（トピック１）と受信計算機ＩＰアドレス（中継計算機１−１−５のＩＰアドレス）を、同一クラスタ内の計算機にマルチキャストする。図１３の下側には、計算機１−１−１の出版・購読計算機通知部６が、中継計算機１−１−５の出版・購読計算機通知部６からの通知を受けて、テーブル７Ｔの受信計算機の欄に、中継計算機１−１−５のＩＰアドレスを登録した様子を示した。
【００３４】
（１）図１４は、トピック１のデータが配信される様子を示す。送信計算機である１−１−１のトピック送信部８は、テーブル７Ｔの「トピック１のマルチキャストＩＰアドレス：ポート番号」に向けて、トピック１のデータを送信する。中継計算機１−１−５のトピック受信部９は、トピック１のデータのデータを受信すると、自己のテーブル７Ｔを参照し、自身がトピック１の受信計算機であると判断し、トピック１のデータをトピック転送部１２に渡す。トピック転送部１２はトピック１のデータを受けると、テーブル１１Ｔを参照し、「トピック１のマルチキャストＩＰアドレス：ポート番号」に向けて、トピック１のデータを送信する。
（２）計算機ラスタ３−２の中継計算機１−２−５の転送トピック受信部１３は、テーブル１１Ｔから、自身の中継計算機が受信計算機と判断し、トピック１のデータを受信する。転送トピック受信部１３は、受信したトピック１のデータをトピック送信部８に渡す。トピック送信部８は、テーブル７Ｔのトピック１のレコードに登録されている「マルチキャストＩＰアドレス：ポート番号」に向けて、トピック１のデータを送信する。
（３）同一クラスタ内の受信計算機１−２−２のトピック受信部９は、テーブル１１Ｔから自身の計算機が受信計算機であるので、トピック１のデータを受信する。
【００３５】
次に、本実施の形態１の出版−購読型データ通信方式における、トピック出版プロセス、トピック購読プロセスが起動した際のシステム全体の動作概要の一例を、図１５〜図２０を用いて説明する。
【００３６】
図１５を参照して、計算機１−１−１での出版プロセス起動から、出版プロセス起動通知がクラスタ３−１内の他の計算機に伝わるまでの動作を説明する。
計算機クラスタ３−１に属する計算機１−１−１でトピック１を送信する送信プロセスが起動するものとする。計算機１−１−１上の出版・購読計算機通知部６がトピック１を送信するプロセスが起動したことを検出し（Ｓ３で出版プロセス）、プロセス起動検出時刻を取得する。そして、計算機１−１−１の出版・購読計算機通知部６は、自計算機上の出版・購読計算機管理部７参照し、トピック１を送信するためのＩＰマルチキャストアドレス、ポート番号が登録されているかどうかを調べる（Ｓ４）。
計算機１−１−１の出版・購読計算機通知部６は、登録されていなければ（Ｓ４でＮＯ）、ＩＰマルチキャストアドレス、ポート番号を決定し、ＩＰマルチキャストアドレス、ポート番号、プロセス起動検出時刻、自計算機のＩＰアドレス、トピック名、自計算機のＩＰアドレス（送信計算機アドレス）を、自計算機上の出版・購読計算機管理部７に登録する（Ｓ５）。
【００３７】
登録済であれば（Ｓ４でＹＥＳ）、出版・購読計算機通知部６は、プロセス起動検出時刻と、出版・購読計算機管理部７に登録してある時刻を比較し（Ｓ６）、登録してある時刻のほうが新しければ、登録済のデータを削除し、ＩＰマルチキャストアドレス、ポート番号を決定し、出版・購読計算機管理部７に示されているＩＰマルチキャストアドレス、ポート番号、プロセス起動検出時刻を変更する（Ｓ７）。そして、出版・購読計算機通知部６は、トピック送信部８に、出版・購買計算機管理部７に新規登録、あるいは更新登録したＩＰマルチキャストアドレス、ポート番号でデータを送信できるよう、通信ソケットの設定を行う（Ｓ８）。そして、出版・購読計算機通知部６は、トピックを出版・購買計算機管理部７に新規登録した場合、あるいは出版・購買計算機管理部７に示されているトピックのＩＰマルチキャストアドレスを変更した場合は、トピックデータを送受信するためのＩＰマルチキャストアドレス、ポート番号、プロセス起動検出時刻、出版プロセスが起動した計算機のＩＰアドレスを、同一計算機クラスタ内の全ての計算機の出版・購読計算機通知部６に通知する（Ｓ１０）。ＩＰマルチキャストアドレスを変更しなかった場合は、出版・購買計算機管理部７に、そのトピック名のレコードに自計算機のＩＰアドレスを登録する（Ｓ９）と共に、トピック名と、出版プロセスが起動した計算機のＩＰアドレス（この例では自己である計算機１−１−１のＩＰアドレス）とを、同一計算機クラスタ内の全ての計算機の出版・購読計算機通知部６に通知する（Ｓ１０）。この場合の同一計算機クラスタ内全計算機への通知は、例えばＩＰマルチキャストまたはブロードキャストにより通知することが考えられる。ＩＰマルチキャストする場合のＩＰマルチキャストアドレスおよびポート番号は予め与えられているものとする。
【００３８】
（他の計算機の出版）
出版プロセスが起動した計算機１−１−１−の出版・購読計算機通知部６からの出版プロセス起動通知を受信した出版・購読計算機通知部６は、
（１）トピック１を送信する計算機のＩＰアドレス、
（２）ＩＰマルチキャストアドレス、
（３）ポート番号
に関する情報を受信すると、それぞれを出版・購読計算機管理部７に登録する（Ｓ１６）。出版・購読計算機管理部７に登録されているＩＰマルチキャストアドレスの変更があり、自計算機上でトピック出版プロセスが動作している場合、前記受信した、ＩＰマルチキャストアドレス、ポート番号でトピック１を送信できるよう、トピック送信部８に指示する（Ｓ１９）。トピック送信部８は、トピックデータを送信できるよう、ＩＰマルチキャストアドレス、ポート番号の設定変更などを行う。
【００３９】
また、データ中継計算機１−１−５上の出版・購読計算機通知部６の場合は、さらに、転送トピック通知部１０に、計算機クラスタ内で送信されるトピック名、およびプロセス起動検出時刻を渡す。ここまでの動作を示した図が図１５である。
【００４０】
（前提条件  その２）
なお、本実施の形態１では、同一計算機クラスタ内では、同一トピックには同一のマルチキャストＩＰアドレス、同一ポート番号が割り振られることを特徴としている。「同一トピック」とは、「トピック名」が同一のトピック同士をいう。トピック名は、そのトピックの名称の他、広く、トピックを識別できる情報を含む。また、トピックとマルチキャストアドレスは対応させておらず、各トピック出版プロセス起動時に、そのプロセスが起動した計算機の出版・購読計算機管理部７によって動的に決定することを特徴としている。そのため、すでに計算機クラスタ内の計算機で同一トピックを出版するプロセスが起動していた場合には、マルチキャストＩＰアドレスおよびポート番号がすでに決定しており、出版・購読計算機管理部７に登録されている。そのため、遅れて新規に起動した送信プロセスのデータは、登録済のＩＰマルチキャストアドレスで送信することになる。
【００４１】
次に、図１６を参照して、購読プロセスが起動した場合を説明する。
【００４２】
（購読プロセス起動の計算機１−１−２）
計算機クラスタ３−１に属する計算機１−１−２でトピック１の購読を希望する購読プロセスが起動するとする。トピック１の購読プロセスが起動すると、計算機１−１−２上の出版・購読計算機通知部６がその起動を検出し、同一計算機クラスタ３−１内の全計算機の出版・購読計算機通知部６に、その起動を通知（購読プロセス起動通知を通知）する。購読プロセス起動通知は、トピック名と受信計算機のＩＰアドレスとを含む（後述のＳ１３）
【００４３】
（クラスタ３−１内の他の計算機）
クラスタ３−１内の他の計算機の出版・購読計算機通知部６は、購読プロセス起動通知を受信すると、
（１）トピック名と、
（２）受信計算機（本例では計算機１−１−２）のＩＰアドレスを、
自計算機上の出版・購読計算機管理部７に登録する。
なお、すでに同一クラスタ内の計算機で同一トピックの出版プロセスまたは購読プロセスが起動しており、トピック名が登録されている場合には、出版・購読計算機管理部７の、そのトピック名が登録されている行（レコード）の受信計算機ＩＰアドレス欄に、通知を受けたＩＰアドレスを登録する。
【００４４】
（データ中継計算機１−１−５）
そして、計算機クラスタ３−１の中継計算機１−１−５上の出版・購読計算機通知部６は、トピック１の購読プロセスの起動を、転送トピック通知部１０に通知する（Ｓ１２）。ここまでの動作を示した図が図１６である。
【００４５】
（受信計算機１−１−２のトピック受信部９のソケット設定）
次に、図１７を参照して、購読プロセスが起動した受信計算機１−１−２の動作を説明する。受信計算機１−１−２の出版・購読計算機通知部６は、以下の処理を実行する。購読プロセスが起動した計算機１−１−２上の出版・購読計算機管理部７に、送信プロセスの計算機識別子（送信機ＩＰアドレス）、ポート番号、およびＩＰマルチキャストアドレスが登録された後、
（Ａ）自計算機にて同一トピックの受信プロセスが起動した場合（Ｓ１３）、
または、
（Ｂ）自計算機１−１−２上にトピック１の受信プロセスが起動し、出版・購読計算機管理部７に登録された後に他の計算機で同一トピックの送信プロセスが起動した場合、
計算機１−１−２の出版・購読計算機通知部６は、前述の方法で「プロセス起動通知」を受信し、指定されたＩＰマルチキャストアドレス、ポート番号でデータを受信（受信プロセス起動）できるよう、トピック受信部９に、ソケットの設定を指示する。計算機１−１−２のトピック受信部９はこの指示を受けると、出版・購読計算機管理部７を参照してトピック１のデータ受信のためのソケットを作成する。すなわちトピック受信部９は、出版・購読計算機管理部７に登録されたＩＰマルチキャストアドレスでデータを受信できるよう、ソケットの設定を行う。これにより受信プロセスは計算機１−１−２のトピック受信部９を経由して、トピック１に関するトピックデータ（図６）の受信が可能となる。本動作を示した図が図１７である。
【００４６】
また、本動作以降、計算機クラスタ３で起動した受信プロセスは、各計算機の出版・購読計算機管理部７にマルチキャストＩＰアドレスが登録されているので、ソケットを作成し，出版・購読計算機管理部７に指定されているマルチキャストアドレスをソケットに設定すればデータの受信が可能になる。
【００４７】
次に、図１８を参照して、データ中継計算機１−１−５の動作を説明する。図１５の動作により、計算機クラスタ３−１の中継計算機５−１（計算機１−１−５）の出版・購読計算機通知部６が、計算機クラスタ３−１内でトピック１を出版するプロセス起動通知を計算機１−１−１の出版・購読計算機通知部６からプロセス起動通知を受信し、受信したプロセス起動通知を転送トピック通知部１０に渡した後（Ｓ１２）、転送トピック通知部１０は、通知内容のトピック名と、そのトピックを他の計算機クラスタの中継計算機に送信するためのＩＰマルチキャストアドレス、ポート番号、プロセス起動検出時刻が転送トピック管理部１１に登録されているかどうかを調べる。登録されていれば、転送トピック管理部１１に登録されている時刻と通知内の時刻を比較し、通知されたプロセス起動検出時刻のほうが古ければ、転送トピック管理部１１のトピック１の行のＩＰマルチキャストアドレス、ポート番号、プロセス起動検出時刻を計算機１−１−１からの通知の情報に変更する。通知されたプロセス起動検出時刻のほうが新しければそのままとする。そして、転送トピック通知部１０は、計算機クラスタ間を接続しているネットワーク（ネットワーク２−４）に接続された全てのデータ中継計算機（計算機１−２−５、計算機１−３−５）の転送トピック通知部１０に、トピック１を出版するプロセスが起動した旨、およびトピック名、トピックを送信するＩＰマルチキャストアドレス（変更時のみ）、ポート番号（変更時のみ）、プロセス起動検出時刻（変更時のみ）、および計算機１−１−５のＩＰアドレスを通知する。この場合も、全データ中継計算機への通知は例えばブロードキャストＩＰマルチキャストにより通知することが考えられ、ＩＰマルチキャストする場合のＩＰマルチキャストアドレスおよびポート番号は予め与えられているものとする。
【００４８】
データ中継計算機１−１−５からの出版プロセス起動の通知を受信した他のデータ中継計算機の転送トピック通知部１０は、通知された情報（トピック名、ＩＰアドレス、ＩＰマルチキャストアドレス（変更時のみ）、ポート番号（変更時のみ）、プロセス起動検出時刻（変更時のみ））を、転送トピック管理部１１に登録する。ＩＰマルチキャストアドレスの変更時は、転送トピック管理部１１の、同一トピック名が登録されている行の該当欄を変更する（以上は出版プロセスの起動）。
【００４９】
転送トピック管理部１１にトピック１の出版プロセスが登録された後にトピック１の購読プロセスがデータ中継計算機の出版・購読計算機管理部７に登録されるか、トピック１の購読プロセスがデータ中継計算機の出版・購読計算機管理部７に登録された後に、転送トピック管理部１１にトピック１の出版プロセスが登録されると、転送トピック通知部１０は、トピック１の出版プロセスが動作する計算機クラスタのデータ中継計算機の転送トピック通知部１０に向けて、トピックの購読希望通知を送信する。
【００５０】
図１５以降、ここまでの動作を示した図が図１８である。
【００５１】
図１９を参照して、転送トピック受信部１３におけるソケット設定を説明する。同一計算機クラスタ内でトピック１の購読プロセスが動作する場合、データ中継計算機の転送トピック受信部１３は、図１６の動作により転送トピック管理部１１に示されたＩＰマルチキャストアドレス、ポート番号でデータが受信できるよう、通信ソケットの設定を行う。この動作を示した図が図１９である。
【００５２】
（他のクラスタからの出版プロセス起動通知の受信）
次に、図２０を参照して中継計算機どうしの通信動作を説明する。中継計算機１−１−５上の転送トピック通知部１０から出版プロセス起動通知を受信した中継計算機（本例では計算機１−２−５，１−３−５）の転送トピック通知部１０は、トピック１の出版プロセスが起動した旨を同一クラスタ内の出版・購読計算機通知部６に通知するよう出版・購読計算機通知部６に指示する。指示を受けた中継計算機の出版・購読計算機通知部６は、トピック１をマルチキャスト送信するためのＩＰマルチキャストアドレス、ポート番号を決定する。そして、指示を受けた中継計算機の出版・購読計算機通知部６は、出版・購読計算機管理部７を参照し、トピック１のＩＰマルチキャストアドレス、ポート番号、プロセス起動検出時刻が登録されているかどうかを調べる。登録済であれば、指示を受けた中継計算機の出版・購読計算機通知部６は、中継計算機１−１−５から受信したプロセス起動検出時刻と出版・購読計算機管理部７に登録されているプロセス起動検出時刻を比較し、中継計算機１−１−５から受信したプロセス起動検出時刻が古ければ、中継計算機が決定したＩＰマルチキャストアドレス、ポート番号、プロセス起動検出時刻、本通知の送信元ＩＰアドレスを、出版・購読計算機管理部７のトピック１の行の該当欄に登録し、これらの情報を同一計算機クラスタ内の全計算機の出版・購読計算機通知部６に通知する。
【００５３】
指示を受けた中継計算機の出版・購読計算機通知部６は、プロセス起動検出時刻のほうが新しければ、トピック名、本通知の送信元ＩＰアドレスのみを同一計算機クラスタ内全計算機の出版・購読計算機通知部６に通知する。そして、トピック名、送信元ＩＰアドレス、ＩＰマルチキャストアドレス（変更時のみ）、ポート番号（変更時のみ）の通知を受けた同一クラスタ内の他計算機の出版・購読計算機通知部６は、出版・購読計算機管理部７の該当欄の変更を行う。
【００５４】
ここまでの動作を示した図が図２０である。
【００５５】
そして、出版・購読計算機管理部７の、トピックを受信するためのＩＰマルチキャストアドレス、ポート番号を変更、または新規登録した場合、トピック受信部９は、自計算機上でトピック受信プロセスが動作していれば、指定されたポート番号でソケットを作成し（新規のトピックの場合）、トピック受信できるようＩＰマルチキャストアドレスを設定する。本動作は図１７と同一である。
【００５６】
次に、図２１を参照してトピックの送信動作を説明する。図１５〜図２０に示す動作により、計算機１−１−１のトピック送信部８がトピック１のデータを送信すると、このトピックデータは、計算機１−１−２のほか、他の計算機でもトピック１の購読を希望しているプロセスが存在するため（計算機１−２−２）、データ中継計算機である計算機１−１−５にも届く。計算機１−１−２および計算機１−１−５のトピック受信部９は、出版・購読計算機管理部７を参照し、自計算機上にデータ受信プロセスが起動しているかどうかを調べ、起動していれば、そのデータ受信プロセスにデータを渡す。計算機１−１−５の出版・購読計算機管理部７には転送トピック管理部１１に自計算機の送信側計算機として登録されているので、トピック受信部９は、本トピックデータを転送すべきものと認識し、トピック転送部１２にトピックを転送するよう指示する。計算機１−１−５上のトピック転送部１２は、転送トピック管理部１１を参照し、指定されるマルチキャストＩＰアドレスの指定されたポートにデータをマルチキャスト送信する。
【００５７】
（他の中継計算機１−２−５）
そして、トピック１の購読を希望するプロセス（計算機１−２−２）が動作する計算機クラスタ３−２のデータ中継計算機１−２−５は、トピック１のマルチキャストグループに参入しているため、計算機１−１−５が送信するトピック１のデータを受信することができる。そして、計算機１−１−５からのデータを受信した計算機１−２−５の転送トピック受信部１３は、自ホストがそのトピックの受信計算機であることを、転送トピック管理部１１を参照することにより確認し、トピック送信部８にデータを渡す。計算機１−２−５のトピック送信部８は、出版・購読計算機管理部７に示されているマルチキャストＩＰアドレス、ポート番号にデータを送信する。
【００５８】
（計算機１−２−２）
計算機１−２−２は、データ中継計算機１−２−５上のトピック送信部８が設定したマルチキャストグループに参入しているため、データが届く。その後、計算機１−２−２のトピック受信部９がデータを受信し、アプリケーションに渡す。この動作を示したものが図２１である。
【００５９】
次に、本実施の形態１における出版・購読計算機通知部６、トピック送信部８、トピック受信部９、転送トピック通知部１０、トピック転送部１２、転送トピック受信部１３の個々の処理手順の一例を図２２〜図２６を用いて説明する。
【００６０】
図２２は、本実施の形態１における出版・購読計算機通知部６の動作手順を示したフローチャートである。
【００６１】
ステップＳ１で、他計算機の出版・購読計算機通知部６から送信プロセスまたは受信プロセス起動を検出するか、自計算機上の送信プロセスまたは受信プロセスの起動を検出すると、ステップＳ２に進み、
ステップＳ２で、通知内容および通知の送信元を調査し、他の計算機の出版・購読計算機通知部からの通知であれば、ステップＳ１７へ進み、自計算機のプロセス起動検出であれば、ステップＳ３に進み、終了要求であれば、終了する。終了要求とは、例えばオペレーティングシステムからのシグナルなどが考えられる。
ステップＳ３で、起動プロセスがトピック出版プロセスかトピック購読プロセスかを調査し、トピック出版プロセスであれば、ステップＳ４に、トピック購読プロセスであれば、Ｓ１３に進む。
【００６２】
（自計算機で出版プロセスが起動した場合）
ステップＳ４で、起動したプロセスが出版するトピックのＩＰマルチキャストアドレスが出版・購読計算機管理部７に登録済かどうかを調べ、登録されていなければステップＳ５へ、登録されていればステップＳ６に進み、
ステップＳ５で、トピックを送信するＩＰマルチキャストアドレスおよびポート番号を決定し、これらの情報と自計算機のＩＰアドレス、プロセスの起動時刻を出版・購読計算機管理部７に登録し、ステップＳ８に進む。
ステップＳ６で、出版・購読計算機管理部７に登録されているトピック出版プロセスのプロセス起動検出時刻と、自計算機上で起動したトピック出版プロセスの起動時刻を比較し、出版・購読計算機管理部７に登録されている起動検出時刻Ｔ（登録）のほうが新しければ、ステップＳ７に進み、起動検出時刻Ｔ（登録）の方が古ければステップＳ９に進む。
ステップＳ７で、出版・購読計算機通知部６は、トピックを送信する際のマルチキャストＩＰアドレス、ポート番号を決定し、出版・購読計算機管理部７の起動プロセスが出版するトピックが登録されている行（レコード）の、ＩＰマルチキャストアドレス・ポート番号欄を、前記決定内容に変更し、プロセス起動検出時刻を、自計算機上で起動した出版プロセスの起動検出時刻に変更し、送信元計算機ＩＰアドレス欄に、自計算機のＩＰアドレスを登録し、ステップＳ８に進む。このようにステップＳ７では、ＩＰマルチキャストアドレス、ポート番号及び出版プロセスの起動検出時刻を更新する。
ステップＳ８で、新規登録、あるいは更新登録したＩＰマルチキャストアドレス・ポート番号でトピックを送信するよう、自計算機のトピック送信部８に指示し、ステップＳ１０に進む。
【００６３】
ステップＳ９で、
起動検出時刻Ｔ（登録）＜起動検出時刻Ｔ（通知）であるので、
自計算機のＩＰアドレスのみを出版・購読計算機管理部７の起動プロセスが送信するトピック名の行の送信元計算機のＩＰアドレス欄に登録し、ステップＳ１０に進む。
【００６４】
ステップＳ１０で、出版プロセスが起動した計算機（この例では計算機１−１−１）の出版・購読計算機通知部６は、同一計算機クラスタの全計算機の出版・購読計算機通知部６に、起動プロセスが出版するトピック名および自計算機の出版・購読計算機管理部７で変更した内容、または新規に登録した内容を通知し、ステップＳ１１に進む。
【００６５】
ステップＳ１１で、自計算機がデータ中継計算機５かどうかを調べ、データ中継計算機５の場合は、ステップＳ１２に進み、そうでなければステップＳ１に戻る。
ステップＳ１２で、転送トピック通知部１０に通知内容を渡し、転送トピック管理部１１にトピック名、ＩＰマルチキャストアドレスなどを登録するよう指示する。新規起動したトピック出版プロセスが出版するトピック名および、出版・購読計算機管理部７に登録されているトピックの出版プロセスの起動時刻を通知し、ステップＳ１に戻る。
【００６６】
（自計算機で購読プロセスが起動した場合）
ステップＳ１３で、同一計算機クラスタの全計算機の出版・購読計算機通知部６に、起動プロセスが購読するトピック名、トピック購読プロセスの起動した計算機のＩＰアドレスを通知し、ステップＳ１４に進み、
ステップＳ１４で、すでに、購読希望するトピックのＩＰマルチキャストアドレスが出版・購読管理部７に登録されており、自計算機のＩＰアドレスが購読希望するトピックの受信計算機ＩＰアドレス欄に登録されていなければ、ステップＳ１５に進み、
ステップＳ１５で、ＩＰマルチキャストアドレスでトピックデータを受信できるよう、トピック受信部９に指示し、ステップＳ２０に進む。
【００６７】
（他計算機からの通知の場合）
ステップＳ１７で、出版・購読計算機通知部６は、通知内容を調査し、内容が出版プロセスの起動通知かどうかを判定する。
起動の場合はＳ１９に進み、起動でない場にはＳ１８に進む。
ステップＳ１８で、出版・購読計算機通知部６は受信内容を出版・購読計算機管理部７に登録し、Ｓ１１に進む。
ステップＳ１９で、通知トピックのＩＰマルチキャストアドレスが出版・購読計算機管理部７に登録済かを判定する。登録済の場合、Ｓ２０へ進み、登録済でない場合はＳ２１ｂに進む。
【００６８】
Ｓ２１ｂでは、ＩＰマルチキャストアドレス、ポート番号を決定し出版・購読計算機管理部７に登録し、Ｓ２２に進む。
【００６９】
Ｓ２０で、登録済のプロセス起動検出時刻と、通知されたプロセス起動検出時刻とを比較する。
Ｓ２０において、登録済時刻の方が大くない場合（古いか、同一時刻）はＳ２１ａ進み、登録済時刻の方が大きい（新しい）場合は、Ｓ２３に進み起動計算機のＩＰアドレスを出版・購読計算機管理部７に登録する。
【００７０】
ステップＳ２１ａで、ＩＰマルチキャストアドレス、ポート番号などを変更し、起動計算機のＩＰアドレスと共に出版・購読計算機管理部７に登録する。
【００７１】
ステップＳ２２で、自計算機でトピック出版プロセスが動作する場合に備えて、変更したＩＰマルチキャストアドレスでデータを送信するよう、トピック送信部８に設定変更を指示し、ステップＳ１１に進む。
ステップ２４で、自計算機上でトピック受信プロセスが動作しているかどうかを調べ、動作していれば、ステップＳ２１に進み、動作していなければ、ステップＳ１１に進む。
ステップＳ２５で、トピック受信部９に、指定されたＩＰマルチキャストアドレスでトピックデータを受信できるよう、トピック受信部９に指示し、ステップＳ１１に進む。
【００７２】
ステップＳ１〜Ｓ１９の動作を、ステップＳ１で終了要求を受信するまで繰り返す。
【００７３】
次に、トピック送信部８の動作手順の一例を、図２３のフローチャートを用いて説明する。
【００７４】
ステップＳ３１でデータ受信を待ち、データを受信すると、ステップＳ３２に進み、
ステップＳ３２で受信データの種別を調査し、終了要求であれば処理を終了し、トピック出版プロセスが送信したトピックデータであれば、ステップＳ３３に進み、ステップＳ６、ステップＳ８、ステップＳ１９の出版・購読計算機通知部６からの指示であれば、ステップＳ３４に進む。ここで、終了要求とは、例えばオペレーティングシステムからのシグナルなどが考えられる。
ステップＳ３３では、データを送信し、ステップＳ３１に戻る。
ステップＳ３４では、出版・購読計算機管理部７を参照し、ＩＰマルチキャストアドレス、ポート番号を取得し、そのＩＰマルチキャストアドレス、ポート番号にデータを送信できるよう、ソケットの設定を行い、ステップＳ３１に戻る。
ステップＳ３１〜Ｓ３４の処理を、ステップＳ３１で終了要求を受信するまで繰り返す。
【００７５】
次に、トピック受信部９の動作手順の一例を、図２４のフローチャートを用いて説明する。
【００７６】
ステップＳ４１でデータ受信を待ち、データを受信すると、ステップＳ４２に進み、
ステップＳ４２で、データの内容がトピックデータか、出版・購読計算機通知部６または転送トピック通知部１０からのマルチキャストＩＰアドレスおよびポート番号の設定要求か、終了要求かを調査し、トピック送信部８が送信したトピックのデータであれば、
ステップＳ４３に進み、マルチキャストＩＰアドレスおよびポート番号の設定要求であれば、ステップＳ４６に進み、
ステップＳ４３で、出版・購読計算機管理部７を参照し、自計算機が受信すべきトピックデータかどうかを調べ、自計算機が受信すべきトピックデータであればステップＳ４４へ進み、自計算機が受信すべきトピックデータでなければ、ステップＳ４５に進み、
ステップＳ４４で、受信プロセスにデータを渡し、ステップＳ４５に進み、
ステップＳ４５で自計算機がデータ中継計算機であり、かつ、他の計算機クラスタに転送すべきデータかどうかを転送トピック管理部１１を参照することにより調べ、転送すべきデータであれば、ステップＳ４６に進み、
ステップＳ４６でトピック転送部１２にデータを渡す。
ステップＳ４１〜Ｓ４６の処理を、ステップＳ４１で終了要求を受信するまで繰り返す。
【００７７】
次に、転送トピック通知部１０の動作手順の一例を、図２５のフローチャートを用いて説明する。
【００７８】
ステップＳ５１で、データ受信を待ち、データを受信するとステップＳ５２に進み、
ステップＳ５２で、データの種別を調査し、自計算機の出版・購読計算機管理部７がステップＳ１２にて送信する通知であれば、ステップＳ５３に進み、他のデータ中継計算機の転送トピック通知部１０からのトピック購読希望通知または出版通知であれば、ステップＳ５９に進み、終了要求であれば、処理を終了する。終了要求とは、例えばオペレーティングシステムからのシグナルなどが考えられる。
ステップＳ５３で、Ｓ１２で送信した通知内容の、起動したプロセスの種別を調査し、起動したプロセスがトピック購読プロセスであれば、ステップＳ５４に進み、トピック出版プロセスであれば、ステップＳ５９に進み、
ステップＳ５４で、転送トピック管理部１１の受信トピックの行の受信計算機ＩＰアドレスに自ホストのＩＰアドレスを登録し（トピック名が登録されていなければ、トピック名も登録）、ステップＳ５５に進み、
ステップＳ５５で、トピック購読プロセスが購読を希望するトピックおよびＩＰマルチキャストアドレス、ポート番号が転送トピック管理部１１に登録されていればステップＳ５６に進み、登録されていなければステップＳ５１に戻る。
ステップＳ５６で、そのトピックの出版プロセスが動作する計算機クラスタの中継計算機の転送トピック通知部１０に、トピック購読プロセスが起動した旨を通知し、ステップＳ５７に進み、
ステップＳ５７で、転送トピック管理部１１の該当するトピック行に示されているＩＰマルチキャストアドレス、ポート番号でトピックデータを受信できるよう、転送トピック受信部１３に指示し、
ステップＳ５８で、自計算機の出版・購読計算機通知部６に、自計算機上で該当トピックを出版する送信プロセスが起動した旨を通知し、ステップＳ５１に戻る。
ステップＳ５９で、転送トピック管理部１１を参照し、通知されたトピックのＩＰマルチキャストアドレスが登録されているかどうかを調べ、登録されていなければステップＳ６２に進み、登録されていればステップＳ６０に進む。
【００７９】
ステップＳ６０で、トピックのＩＰマルチキャストアドレスの登録時刻と、出版・購読計算機管理部７から通知された時刻を調べ、出版・購読計算機管理部７から通知された時刻のほうが古ければステップＳ、新しければステップＳ６１へ進み、
ステップＳ６１で、該当トピックのＩＰマルチキャストアドレス・ポート番号欄はそのままとし、送信計算機ＩＰアドレス欄に、自計算機のＩＰアドレスのみを登録し、ステップＳ６４に進む。
ステップＳ６２で、転送トピック通知部１０は、他の計算機クラスタへトピックデータを送信するためのＩＰマルチキャストアドレス、ポート番号を決定して、転送トピック管理部１１に登録し、ステップＳ６３に進み、
ステップＳ６３で、出版プロセスが配信するトピックを購読するプロセスのＩＰアドレスが登録済であれば、ステップＳ６４に進み、
ステップＳ６４で、転送トピック管理部１１に示されたＩＰマルチキャストアドレス、ポート番号にてトピックを送信するよう、トピック転送部１２に指示し、ステップＳ６５に進み、
ステップＳ６５で、計算機クラスタを接続するネットワーク上に接続されたデータ中継計算機の転送トピック通知部１０に、ステップＳ６１、ステップＳ６２で転送トピック管理部１１に登録した内容を通知し、ステップＳ５１に戻る。
【００８０】
ステップＳ６６において、出版プロセスの起動通知かどうかを判定する。出版プロセスの起動通知ではない場合、ステップＳ６７に進み通知内容を転送する共に、転送トピック管理部１１に登録し、Ｓ６８に進む。ステップＳ６８で自身の所属するクラスタに出版プロセスが起動済かを判定し、済の場合にはステップＳ６４に進み、起動していない場合にはステップＳ５１に戻る。
【００８１】
ステップＳ６６でＹＥＳの場合にはステップＳ６９に進む。ステップＳ６９では、ＩＰマルチキャストアドレスが登録済かどうかを判定する。登録済でない場合にはステップＳ７５に進み、ＩＰマルチキャストアドレスなどを転送トピック管理部に登録しステップＳ７１に進む。
【００８２】
ステップＳ６９で登録済の場合にはＳ７０に進み、Ｓ７０においてＩＰマルチキャストアドレスの登録時刻と、出版プロセスの起動通知の通知された時刻とを比較する。登録時刻の方が小さくない場合（登録時刻の方が古い（小さい）か、同一時刻）の場合にはステップＳ７５に進む。ステップＳ７５において、通知されたＩＰマルチキャストアドレスなどを転送トピック管理部に登録する。登録時刻の方が大きい場合にはステップＳ７１に進む。
【００８３】
ステップＳ７０で、通知された時刻の方が小さい場合は、ステップＳ７１に進む。
【００８４】
ステップＳＳ７１で、転送トピック管理部１１を参照し、自計算機が同一トピックの購読プロセスが動作する計算機として登録されていればステップＳ７２に進み、登録されていなければステップＳ５１に戻る。
【００８５】
ステップＳ７２で、トピック出版プロセスが動作した計算機に、購読プロセスが起動している旨および自ホストのＩＰアドレスを通知し、ステップＳ７３に進み、
ステップ７３で、転送トピック受信部１３に、指定されたＩＰマルチキャストアドレス、ポート番号でデータを受信するよう設定を指示し、ステップＳ７４に進み、
ステップＳ７４では、自計算機の出版・購読計算機通知部６に、自計算機上で該当トピックを出版する送信プロセスが起動した旨を通知し、ステップＳ５１に戻る。
ステップＳ５１〜Ｓ７４の動作を、ステップＳ５１で終了要求を受信するまで繰り返す。
【００８６】
次に、トピック転送部１２の動作手順の一例を、図２６のフローチャートを用いて説明する。
【００８７】
ステップＳ８１で、外部からのイベントの受信を待ち、イベントを受信するとステップＳ７３に進み、
ステップＳ８２でイベントの種別を調査する。イベントの種別がトピックデータの受信であれば、ステップＳ８３に進み、転送トピック管理部１１からの通知であれば、ステップＳ８５に進み、終了要求であれば、処理を終了する。終了要求とは、例えばオペレーティングシステムからのシグナルなどが考えられる。
ステップ８３で、データのトピック名が転送トピック管理部１１に登録されていることを確認し、登録されていれば、
ステップＳ８４で、転送トピック管理部１１のトピックが登録されている行のＩＰマルチキャストアドレス、ポート番号にデータを送信する。登録されていなければ、エラーとしてステップＳ８１に戻る。
ステップＳ８５では、転送トピック通知部１０から届くＩＰマルチキャストアドレス、ポート番号を通信ソケットに設定し、ステップＳ８１に戻る。
ステップＳ８１〜８５の処理を、ステップＳ８１で終了要求を受信するまで繰り返す。
【００８８】
次に、転送トピック受信部１３の処理手順の一例を、図２７のフローチャートを用いて説明する。
【００８９】
ステップＳ９１で、イベントの受信を待ち、イベントを受信するとステップＳ８２に進み、
ステップＳ９２で、イベントの種別がトピックデータの受信であれば、ステップＳ９３に進み、トピック転送部１２からのメッセージ通知であれば、ステップＳ９５へ、終了要求であれば処理を終了する。終了要求とは、例えばオペレーティングシステムからのシグナルなどが考えられる。
ステップＳ９３で、データのトピック名が転送トピック管理部１１に登録されており、自ホストが受信ホストとして登録されていることを確認し、登録されていれば、ステップＳ９４に進み、登録されていなければ、ステップＳ９１に戻る。
ステップＳ９４で、データをトピック受信部に渡し、ステップＳ９１に戻る。
ステップＳ９５で、指定されたＩＰマルチキャストアドレスでデータを受信できるよう、ソケットの設定の変更を行い、ステップＳ９１に戻る。
【００９０】
以上のように、本実施の形態１では、転送データ管理部が、それぞれの計算機クラスタ上で出版されているトピックを交換し、異なる計算機クラスタの計算機でトピック購読希望があった場合には、トピック転送部１２を経由してデータを届けることにより、プロセスは、計算機クラスタの違いを意識することなく、異なる計算機クラスタ間での出版−購読形式でのデータ通信が可能となる。
【００９１】
また、本実施の形態１では、データ中継計算機は、データ中継計算機が属する計算機クラスタ内において、トピックの受信希望があった場合にのみＩＰマルチキャストグループに参入することから、常にデータを受信する場合と比べて、データ中継計算機の負荷が軽減できる。
【００９２】
また、本実施の形態１では、同一のトピックを送信する、複数のデータ出版プロセスが異なる計算機で起動した場合において、最も早く起動したプロセスのＩＰマルチキャストアドレスを採用することから、事前にトピックとＩＰマルチキャストアドレスの対応を決定しておかなくともトピックとＩＰマルチキャストアドレスの対応が動的に一意に決定する。
【００９３】
実施の形態２．
以上の実施の形態１は、ある計算機クラスタで、他の計算機クラスタ上で送信されるトピックデータの購読を希望する場合のデータ送信方法として、データ出版プロセスが動作する計算機クラスタのデータ中継計算機がそのトピックを受信するためのＩＰマルチキャストグループに参入してトピックデータを受信し、そのデータ中継計算機が、データ購読プロセスが動作する計算機クラスタのデータ中継計算機にデータを送信し、データ購読プロセスが動作する計算機をＩＰマルチキャストグループに参入させ、データ購読プロセスが動作する計算機クラスタのデータ中継計算機がそのＩＰマルチキャストグループにデータを送信する方法について述べた。
【００９４】
実施の形態１では、それぞれの計算機クラスタのデータ中継計算機が、他の計算機クラスタからのトピックデータを送受信する際にのみＩＰマルチキャストグループに参入することにより、全てのデータを受信し必要に応じて転送する場合と比べて計算機の負荷を軽減できる点を特徴としている。
【００９５】
実施の形態２では、これまでトピックを購読していたプロセスまたはトピックを配信していたプロセスが停止するなどにより、データ中継計算機が、配信または購読していたトピックのＩＰマルチキャストグループに属する必要がなくなった場合の処理について述べるものである。
【００９６】
実施の形態２における出版―購読型データ通信方式の構成は、実施の形態１と同一であり、説明を省略する。
【００９７】
本実施の形態２における、出版・購読計算機通知部６、送信トピック通知部１０について説明する。出版・購読計算機管理部７、トピック送信部８、トピック受信部９、転送トピック管理部１１、トピック転送部１２、転送トピック受信部１３の機能については実施の形態１と同一であるため説明を省略する。
【００９８】
出版・購読計算機通知部６は、計算機でトピックを出版、購読するプロセスが停止するか、または、出版、購読を停止した場合に、そのトピック名などの情報を同一計算機クラスタ内の全計算機に通知するとともに、その通知を受信し、出版・購読計算機管理部７の情報を更新する役割を持つ。
【００９９】
送信トピック通知部１０は、自計算機クラスタ内でトピックを配信するプロセスが停止したか、または、そのプロセスのトピック配信を停止した場合に、計算機クラスタを接続するネットワークに接続された全データ中継計算機に、トピック名を通知するとともに、その通知を受信し、転送トピック管理部１１の情報を更新する役割を持つ。
【０１００】
次に、本実施の形態２における出版―購読型データ通信方式を適用した場合において、トピック出版プロセス、トピック購読プロセスが起動し、実施の形態１の方法により通信を開始したあと、停止した場合のシステム全体の動作概要の一例を図１のシステム構成を用いて、図２８〜図３１を用いて説明する。
【０１０１】
図２８を参照して説明する。計算機クラスタ３−１に属する計算機１−１−１上でトピック１を送信するプロセスが起動後、停止するか、または、トピック１の配送を停止すると、計算機１−１−１の出版・購読計算機通知部６が、トピック１の配送停止を検出し、計算機クラスタ内全ての出版・購読計算機通知部６にトピック名およびトピックの出版を停止する旨を通知する。また、トピック送信部８に、ソケットをクローズするよう指示し、トピック送信部８はソケットをクローズする。
【０１０２】
各計算機上の出版・購読計算機通知部６は、トピック１の出版停止通知を受信すると、出版・購読計算機管理部７中、出版を停止したトピックの送信計算機ＩＰアドレス欄から、ＩＰマルチキャストアドレス、ポート番号、およびその計算機のＩＰアドレスを削除する。
また、データ中継計算機上の出版・購読計算機通知部６は、受信した通知内容を転送トピック通知部１０に渡す。ここまでの動作を示した図が図２８である。
【０１０３】
図２９を参照して説明する。また、計算機クラスタ３−１に属する計算機１−１−２で、トピック１の購読を希望するプロセスが停止した場合、または、プロセスがトピック１の購読を停止すると、計算機１−１−２の出版・購読計算機通知部６はトピック１の購読停止を検出し、計算機クラスタ３−１内全ての出版・購読計算機通知部６にトピック名および購読を停止する旨を通知し、トピック受信部９に、ソケットクローズするよう指示する。指示を受けたトピック受信部９は、ソケットをクローズする。
【０１０４】
各計算機上の出版・購読計算機通知部６は、トピック１の購読停止通知を受信すると、出版・購読計算機管理部７中、購読を停止したトピックの受信計算機ＩＰアドレス欄から、その計算機のＩＰアドレスを削除する。そのトピックの購読を希望するプロセスがなくなった場合、データ中継計算機の出版・購読計算機通知部６は、通知内容を転送トピック通知部１０に渡す。ここまでの動作を示した図が図２９である。
【０１０５】
図３０を参照して説明する。図２８の動作の後、転送トピック通知部１０は、転送トピック管理部１１中、配信を停止したトピック名の行の、送信計算機ＩＰアドレスのエントリ中、計算機１−１−５のＩＰアドレスを削除する。そして、計算機クラスタ間を接続しているネットワーク（ネットワーク２−４）に接続された全てのデータ中継計算機（計算機１−２−５、計算機１−３−５）の転送トピック通知部１０に、トピック１の出版を停止した旨を通知する。この場合も、全データ中継計算機への通知は例えばブロードキャストＩＰマルチキャストアドレスにより通知することが考えられ、ＩＰマルチキャストアドレスを使用する場合のＩＰマルチキャストアドレスおよびポート番号は予め決められているものとする。データ中継計算機１−１−５からの通知を受信した他のデータ中継計算機の転送トピック通知部１０は、転送トピック管理部１１中、配信を停止したトピックの行の送信計算機の欄において、計算機１−１−５のＩＰアドレスを削除する。計算機１−１−５のＩＰアドレスを削除することによりそのトピックを送信する中継計算機が１台もなくなった場合、転送トピック通知部１０は、転送トピック受信部１３に、マルチキャストグループから離脱するよう指示し、転送トピック受信部１３はそのトピックを受信するために使用していたソケットをクローズする。ここまでの動作を示した図が図３０である。
【０１０６】
図３１を参照して説明する。図２９の動作により、計算機クラスタ３−１内にトピック１を購読する計算機がなくなった場合、転送トピック通知部１０は、転送トピック管理部１１の、購読を停止したトピック名の行の、受信計算機のＩＰアドレス欄から自計算機のＩＰアドレスを削除する。そして、転送トピック管理部１１の送信計算機欄に他の計算機クラスタのデータ中継計算機があれば、その計算機の転送トピック通知部１０に、トピック１の購読停止を通知する。この場合も、データ中継計算機への通知は例えばブロードキャストまたはＩＰマルチキャストアドレスにより通知することが考えられ、ＩＰマルチキャストアドレスを使用する場合のＩＰマルチキャストアドレスおよびポート番号は予め決められているものとする。データ中継計算機１−１−５からのトピック購読停止通知を受信した他のデータ中継計算機の転送トピック通知部１０は、転送トピック管理部１１中、購読を停止したトピック欄の、受信計算機ＩＰアドレス欄から、計算機１−１−５のＩＰアドレスを削除する。ここまでの動作を示した図が図３１である。
【０１０７】
次に、本実施の形態２における出版・購読計算機管理部７、トピック送信部８、トピック受信部９、転送トピック管理部１１、トピック転送部１２、転送トピック受信部１３の動作の一例を説明する。
【０１０８】
図３２は、本実施の形態２における出版・購読計算機管理部７の動作の一例を示したフローチャートである。
【０１０９】
ステップＳ１０１において、他計算機の出版・購読計算機通知部６から送信プロセスまたは受信プロセス停止通知を受信するか、自計算機上の送信プロセスまたは受信プロセスの停止を検出するか、または停止要求を受信すると、ステップＳ１０２に進み、
ステップＳ１０２で、通知内容および通知の送信元を調査し、他の計算機の出版・購読計算機通知部６からの通知であればステップＳ１１２へ進み、自計算機のプロセス停止通知または出版・購読の変更通知であれば、ステップＳ１０３に進み、終了要求であれば終了する。終了要求とは、例えばオペレーティングシステムからのシグナルなどが考えられる。
ステップＳ１０３で、トピック出版プロセスの出版停止（停止を含む）かトピック購読プロセスの購読停止（停止を含む）かを調査し、出版停止であればステップＳ１０４に、購読停止であればステップＳ１０９に進み、
ステップＳ１０４で、自計算機上の出版・購読計算機管理部７の、出版停止したトピックの行の送信計算機ＩＰアドレス欄から自計算機のＩＰアドレスを削除し、ステップＳ１０５に進み、
ステップＳ１０５で、同一計算機クラスタ内の全計算機にトピック名およびＩＰアドレスを通知し、ステップＳ１０６に進み、
ステップＳ１０６で、自計算機上のトピック送信部８にそのトピックを送信するＩＰマルチキャストアドレスのソケットをクローズするよう指示し、ステップＳ１０７に進み、
ステップＳ１０７で、自計算機がデータ中継計算機かどうかを調べ、データ中継計算機であればステップＳ１０８に進み、そうでなければステップＳ１０１に戻り、
ステップＳ１０８で、転送トピック通知部１０に、出版または購読停止したトピック名を通知し、ステップＳ１０１に戻る。
ステップＳ１０９において、自計算機上の出版・購読計算機管理部７の、購読停止したトピックの行の受信計算機ＩＰアドレス欄から、自計算機のＩＰアドレスを削除し、
ステップＳ１１０にて、同一計算機クラスタ内他の計算機の出版・購読計算機通知部６に、トピック１の受信プロセスの購読停止を通知する。
【０１１０】
ステップＳ１１１にて、自計算機上に、同一トピックの購読を希望するプロセスがあるかどうかを調べ、なければ、トピック受信部９に、ソケットをクローズするよう指示する。そして、ステップＳ１０７に進む。ステップＳ１０１で受信した通知が、他の計算機の出版・購読計算機通知部６からの通知であった場合、ステップＳ１１２で、出版・購読計算機管理部７の、出版・購読停止したトピックの行の、送信計算機のＩＰアドレス欄または、購読計算機のＩＰアドレスの欄から、出版または購読停止した計算機のＩＰアドレスを削除し、ステップＳ１１３に進み、
ステップＳ１１３で通知内容が配信停止か購読停止かを調べ、配信停止であった場合、ステップＳ１１４に進み、購読停止であった場合、ステップＳ１０７に進む。
ステップＳ１１４で、そのトピックを送信するプロセスが他にあるかどうかを調べ、他になければステップＳ１１５に進み、なければステップＳ１０７に進み、
ステップＳ１１５で、トピック受信部９に、そのトピックを受信するためのソケットをクローズするよう指示し、ステップＳ１０７に進む。
ステップＳ１０１〜Ｓ１１５の動作を、ステップＳ１０１で終了要求を受信するまで繰り返す。
【０１１１】
次に、本実施の形態２におけるトピック送信部８の動作の一例を図３３のフローチャートで示す。
【０１１２】
ステップＳ１２１でデータの受信を待ち、データを受信するとステップＳ１２２に進み、データの内容が終了要求であれば処理を終了し、
ステップＳ１２２で通知内容を調査し、出版・購読計算機管理部７からのソケットクローズ指示であれば、ステップＳ１２３に進み、
ステップＳ１２３でソケットをクローズする。ステップＳ１２１〜Ｓ１２３を、終了要求があるまで繰り返す。
【０１１３】
次に、トピック受信部９の動作の一例を図３４のフローチャートで説明する。
【０１１４】
ステップＳ１３１でデータ受信を待ち、データを受信するとステップＳ１３２に進み、
ステップＳ１３２で、受信したデータの内容を調べ、ソケットクローズ指示であれば、ステップＳ１３３に進み、終了要求であれば、終了する。
ステップＳ１３３でソケットをクローズする。
ステップＳ１３１〜Ｓ１３３を、ステップＳ１３１で終了要求を受信するまで繰り返す。
【０１１５】
次に、転送トピック通知部１０の動作の一例を、図３５のフローチャートで説明する。
【０１１６】
ステップＳ１４１で、イベント受信を待ち、イベントを受信すると、ステップＳ１４２に進み、
ステップＳ１４２でイベントの送信元を調査し、自計算機からの通知であれば、ステップＳ１４３に、他計算機からの通知であれば、ステップＳ１５０に進み、終了要求であれば終了する。
ステップＳ１４３で、通知内容がトピック購読プロセスの購読停止か、トピック配信プロセスの配信停止かを調べ、トピック配信プロセスの配信停止であれば、ステップＳ１４４に進み、トピック購読プロセスの購読停止であれば、ステップＳ１４６に進む。
ステップＳ１４４で、そのトピックが転送トピック管理部１１に登録されており、通知されたトピックと同一トピックを配信するプロセスが同一計算機クラスタ内にあるかどうかを調べ、あればステップＳ１４１に戻り、なければ、ステップＳ１４５に進み、
ステップＳ１４５で、出版・購読計算機通知部６にトピック受信部９のソケットをクローズするよう指示し、ステップＳ１４６に進み、
ステップＳ１４６で、トピック転送部１２に対してソケットクローズするよう指示し、ステップＳ１４１に戻る。
ステップＳ１４７で、そのトピックが転送トピック管理部１１に登録されており、計算機クラスタ内に、同一トピックを受信するプロセスがあるかどうかを調べ、なければ、ステップＳ１４８に進み、あればステップＳ１４１に戻る。ステップＳ１４８で、転送トピック受信部１３に、そのトピックを受信するためのソケットをクローズするよう指示し、ステップＳ１４９に進み、
ステップＳ１４９で、出版・購読計算機通知部６に、トピック送信部８のそのトピックを転送するためのＩＰマルチキャスト通信を行うためのソケットをクローズするよう指示し、ステップＳ１４１に戻る。
ステップＳ１５０で、通知内容がトピック配信停止か、トピック購読停止かを調べ、トピック配信停止であれば、ステップＳ１５１へ、トピック購読停止であればステップＳ１５４へ進み、
【０１１７】
ステップＳ１５１で、転送トピック管理部１１を参照し、他の計算機クラスタで、同一トピックを配信する計算機があるかどうかを調べ、同一トピックを配信する計算機が他にあれば、ステップＳ１４１に戻り、なければ、ステップＳ１５２に進み、
ステップＳ１５２で、転送トピック受信部１３に、そのトピックを受信するためのソケットをクローズするよう指示し、ステップＳ１５３に進み、
ステップＳ１５３で、出版・購読計算機通知部６に、トピック送信部８の、そのトピックを計算機クラスタ内に転送するためのソケットをクローズするよう指示し、ステップＳ１４１に戻る。
ステップＳ１５４で、転送トピック管理部１１を参照し、他の計算機クラスタで、そのトピックの購読を希望するプロセスがあるかどうかを調べ、あれば、ステップＳ１４１に戻り、なければ、ステップＳ１５５に進み、
ステップＳ１５５で、トピック転送部１２に、そのトピックを他の計算機クラスタに転送するためのソケットをクローズするよう指示し、ステップＳ１５６に進み、
ステップＳ１５６で、出版・購読計算機通知部６に、トピック受信部９の、そのトピックを計算機クラスタ内で受信するためのソケットをクローズするよう指示し、ステップＳ１４１に戻る。
ステップＳ１４１〜Ｓ１５６を、ステップＳ１４１で停止要求を受信するまで繰り返す。
【０１１８】
次に、トピック転送部１２の動作の一例を、図３６のフローチャートで説明する。
【０１１９】
ステップＳ１６１で、イベント通知を待ち、イベントを受信するとステップＳ１６２に進み、
ステップＳ１６２で、イベントの種別を調べ、転送トピック通知部１０からの通知であればステップＳ１６３に進み、終了要求であれば、終了する。
ステップＳ１６３で、ソケットをクローズする。
ステップＳ１６１〜Ｓ１６３を、ステップＳ１６３で終了要求を受信するまで繰り返す。
【０１２０】
次に、転送トピック受信部１３の動作の一例を、図３７のフローチャートで説明する。
ステップＳ１７１で、イベント通知を待ち、イベントを受信するとステップＳ１６２に進み、
ステップＳ１７２で、イベントの種別を調べ、転送トピック通知部１０からの通知であればステップＳ１７３に進み、終了要求であれば、終了する。
ステップＳ１７３で、ソケットをクローズする。
ステップＳ１７１〜Ｓ１７３を、ステップＳ１６３で終了要求を受信するまで繰り返す。
【０１２１】
このように、本実施の形態２では、計算機クラスタ間でトピックデータを交換している状態において、ある計算機クラスタ上でプロセスがトピックの出版、購読を停止した場合に、不要となったソケットをクローズすることにより、ＯＳのリソースを有功活用することが可能となる。
【０１２２】
実施の形態３．
図３８、図３９を参照して実施の形態３を説明する。実施の形態３は、コンピュータである計算機１−１−１、あるいは中継計算機１−１−５等のハードウェア構成を説明する。
図３８は、計算機１−１−１等の外観の一例を示す図である。
図３９、計算機１−１−１等のハードウェア資源の一例を示す図である。
【０１２３】
外観を示す図３８おいて、計算機は、システムユニット８３０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置８１３、キーボード８１４（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス８１５、コンパクトディスク装置８１８（ＣＤＤ：Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｄｒｉｖｅ）などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。システムユニット８３０はネットワークに接続している。
【０１２４】
またハードウェア資源を示す図３９において、計算機は、プログラムを実行するＣＰＵ８１０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ８１０は、バス８２５を介してＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８１２、表示装置８１３、キーボード８１４、マウス８１５、通信ボード８１６、ＣＤＤ８１８、磁気ディスク装置８２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置８２０の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【０１２５】
ＲＡＭ８１２は、揮発性メモリの一例である。ＲＯＭ８１１、ＣＤＤ８１８、磁気ディスク装置８２０等の記憶媒体は、不揮発性メモリの一例である。これらは、「記憶装置」あるいは記憶部、格納部、バッファの一例である。通信ボード８１６、キーボード８１４などは、入力部、入力装置の一例である。また、通信ボード８１６、表示装置８１３などは、出力部、出力装置の一例である。通信ボード８１６は、ネットワークに接続されている。
【０１２６】
磁気ディスク装置８２０には、オペレーティングシステム８２１（ＯＳ）、ウィンドウシステム８２２、プログラム群８２３、ファイル群８２４が記憶されている。プログラム群８２３のプログラムは、ＣＰＵ８１０、オペレーティングシステム８２１、ウィンドウシステム８２２により実行される。
【０１２７】
上記プログラム群８２３には、以上の実施の形態の説明において「〜部」として説明した機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ８１０により読み出され実行される。
【０１２８】
ファイル群８２４には、以上の実施の形態の説明において、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明した情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ８１０によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【０１２９】
また、以上に述べた実施の形態の説明において、データや信号値は、ＲＡＭ８１２のメモリ、ＣＤＤ８１８のコンパクトディスク、磁気ディスク装置８２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス８２５や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【０１３０】
また、以上の実施の形態の説明において、「〜部」として説明したものは、「〜手段」、であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明したものは、ソフトウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ８１０により読み出され、ＣＰＵ８１０により実行される。すなわち、プログラムは、以上に述べた「〜部」としてコンピュータを機能させるものである。あるいは、以上に述べた「〜部」の手順や方法を計算機（コンピュータ）に実行させるものである。
【０１３１】
以上の実施の形態では、以下の分散計算機システムを説明した。
【０１３２】
計算機をネットワーク接続することにより構成された計算機クラスタが複数存在し、計算機クラスタ内にある、複数のネットワークインタフェースカードを持つ計算機が、他の計算機クラスタの複数のネットワークインタフェースカードを持つ計算機とネットワーク接続することにより、各計算機クラスタ同士を接続することによって構成された分散計算機システムにおいて、
以下の構成要素を持ち、計算機クラスタを接続するネットワークに接続された計算機に高い負荷をかけることなく、異なる計算機クラスタ間での出版−購読型データ通信を実現することを特徴とする出版−購読型データ通信方式。
＊以下の機能を持つ出版・購読計算機通知部
・自計算機上でトピックを送信または受信するプロセスが起動した場合に、自計算機クラスタ内の全ての計算機に通知する。
・他計算機の出版・購読計算機通知部からのプロセス起動通知を受信し、自計算機上でデータの送信または受信を希望するプロセスが動作している場合に、トピック送信部またはトピック受信部に対して、自計算機クラスタ内の他の計算機との間でデータを送受信するための処理を行うよう指示する。
・出版・購読計算機通知部の動作する計算機が自計算機が計算機クラスタを接続するネットワークに接続された計算機である場合において、同一クラスタ内計算機の出版・購読計算機通知部からの送信またはプロセス起動通知を受信した場合、起動した受信プロセスの受信トピック名または送信プロセスの送信トピック名を、他の計算機クラスタの、計算機クラスタを接続するネットワークに接続された計算機に送信するよう、転送トピック通知部に指示する。
・出版・購読計算機通知部の動作する計算機が計算機クラスタを接続するネットワークに接続された計算機である場合において、自計算機クラスタ内に、他の計算機クラスタで送信されるトピックの受信を希望する送信プロセスが動作している場合に、転送トピック受信部が受信するデータを自計算機クラスタ内に配信するようトピック送信部に指示する。
・出版・購読計算機通知部の動作する計算機が計算機クラスタを接続するネットワークに接続された計算機である場合、他計算機クラスタ内に、自計算機クラスタで送信されるトピックの受信を希望するプロセスが動作している場合に、トピックをトピック転送部から他の計算機クラスタに送信できるよう、トピック受信部に、同一計算機クラスタ内で送信されているトピックを受信するよう指示する。
＊計算機クラスタを接続するネットワークに接続された計算機に存在し、以下の機能を持つ転送トピック通知部
・自計算機クラスタ内で送信または受信しているトピック名を他の転送トピック通知部に送信し、他の計算機クラスタで送信または受信しているトピック名を他の転送トピック通知部からを受信する。
・他計算機クラスタ内で送信されているトピックを、自計算機クラスタ内プロセスが受信を希望する場合に、転送トピック受信部に、そのトピックを受信するよう指示する。
・自計算機クラスタ内で送信されているトピックを、他の計算機クラスタ内プロセスが受信希望する場合に、トピック転送部にトピックを転送するよう指示する。
＊計算機クラスタを接続するネットワークに接続された計算機に存在し、自計算機クラスタ内で送信されているデータを、他の計算機クラスタで動作するプロセスが必要とする場合に、他の計算機クラスタに向けてトピックを転送するトピック転送部
＊計算機クラスタを接続するネットワークに接続された計算機に存在し、他の計算機クラスタで送信されているトピックを自計算機クラスタ内のプロセスが必要とする場合に、トピック転送部から送信されたデータを受信する転送トピック受信部
＊自クラスタ内計算機のトピック送信部より送信されたトピックを受信するトピック受信部
＊自クラスタ内計算機のトピック受信部にデータを送信するトピック送信部
【０１３３】
上記の構成において、各構成要素に以下の機能を付与することにより、トピック送受信を停止した場合のシステムリソースの浪費を軽減することを特徴とする出版−購読型データ通信方式
＊出版・購読計算機通知部は上記の機能に加え、以下の機能を持つ。
・自計算機クラスタ内にて、プロセスがトピックの送信または受信を停止した場合に、自計算機クラスタ内の全ての計算機の出版・購読計算機通知部に通知する。
・他計算機の出版・購読計算機通知部が送信した、トピックの送信停止または受信停止の通知を受信し、自計算機上でトピックの送信または受信を希望するプロセスが動作している場合に、トピック送信部またはトピック受信部に対して、トピック送信または受信のために使用していたリソースを解放するための処理を行うよう指示する。
・自計算機が計算機クラスタを接続するネットワークに接続された計算機である場合、自計算機クラスタで、トピックの送信停止または受信停止の通知を受信した場合、他の計算機クラスタとの間でのトピック送信または受信を停止するための処理を行うよう転送トピック通知部に指示する。
・自計算機が計算機クラスタを接続するネットワークに接続された計算機である場合、自計算機クラスタ内にて、他の計算機クラスタで送信されるトピックの受信を希望するプロセスが動作し、その後、受信停止した場合に、転送トピック受信部が受信するデータの自計算機クラスタ内への配信を停止するよう、トピック送信部に指示する。
・自計算機が計算機クラスタを接続するネットワークに接続された計算機である場合、他計算機クラスタ内に、自計算機クラスタでデータ送信されるデータの受信を希望するプロセスが動作後、自計算機クラスタ上の送信プロセスが送信を停止した場合に、トピック受信部に、データ受信のために使用していたリソースを解放するための処理を行うよう指示する。
＊転送トピック通知部は上記の機能に加え、以下の機能を持つ
・他の計算機クラスタ内で、プロセスが送受信停止した場合、そのプロセスが送受信していたトピック名などに関する情報を他の転送トピック通知部との間で交換する。
・他計算機クラスタ内で送信されているデータを自計算機クラスタ内プロセスが受信しており、その後、他クラスタからのプロセスがデータ送信を停止したか、自クラスタのプロセスがデータ受信を停止した場合に、転送トピック受信部に、そのプロセスが送信または受信していたトピックの受信を停止し、ＯＳリソースを解放するよう指示する。
・自計算機クラスタ内で送信されているデータを、他の計算機クラスタ内プロセスが受信している状態において、その後、自クラスタ内でプロセスの送信が停止した場合、または他計算機クラスタでプロセスの受信が停止した場合に、トピック転送部に対し、データ転送を停止し、ＯＳリソースを解放するよう指示する。
＊トピック転送部は上記の機能に加え、転送トピック通知部からの指示で、データ転送を停止し、ＯＳリソースを解放する。
＊転送トピック受信部は上記の機能に加え、転送トピック通知部からの指示で、データ受信を停止し、ＯＳリソースを解放する。
＊トピック受信部は上記の機能に加え、出版・購読計算機通知部からの指示で、データ受信を停止し、ＯＳリソースを解放する。
＊トピック送信部は上記の機能に加え、出版・購読計算機通知部からの指示で、データ送信を停止し、ＯＳリソースを解放する。
【符号の説明】
【０１３４】
１−１−１〜１−３−６  計算機、２−１，２−２，２−３，２−４  ネットワーク、３−１，３−２，３−３  計算機クラスタ、４  分散計算機システム、６  出版・購読計算機通知部、７  出版・購読計算機管理部、８  トピック送信部、９  トピック受信部、１０  転送トピック通知部、１１  転送トピック管理部、１２  トピック転送部、１３  転送トピック受信部。
【図１】
0005618876.tif 000002
【図２】
0005618876.tif 000003
【図３】
0005618876.tif 000004
【図４】
0005618876.tif 000005
【図５】
0005618876.tif 000006
【図６】
0005618876.tif 000007
【図７】
0005618876.tif 000008
【図８】
0005618876.tif 000009
【図９】
0005618876.tif 000010
【図１０】
0005618876.tif 000011
【図１１】
0005618876.tif 000012
【図１２】
0005618876.tif 000013
【図１３】
0005618876.tif 000014
【図１４】
0005618876.tif 000015
【図１５】
0005618876.tif 000016
【図１６】
0005618876.tif 000017
【図１７】
0005618876.tif 000018
【図１８】
0005618876.tif 000019
【図１９】
0005618876.tif 000020
【図２０】
0005618876.tif 000021
【図２１】
0005618876.tif 000022
【図２２】
0005618876.tif 000023
【図２３】
0005618876.tif 000024
【図２４】
0005618876.tif 000025
【図２５】
0005618876.tif 000026
【図２６】
0005618876.tif 000027
【図２７】
0005618876.tif 000028
【図２８】
0005618876.tif 000029
【図２９】
0005618876.tif 000030
【図３０】
0005618876.tif 000031
【図３１】
0005618876.tif 000032
【図３２】
0005618876.tif 000033
【図３３】
0005618876.tif 000034
【図３４】
0005618876.tif 000035
【図３５】
0005618876.tif 000036
【図３６】
0005618876.tif 000037
【図３７】
0005618876.tif 000038
【図３８】
0005618876.tif 000039
【図３９】
0005618876.tif 000040