(57)【要約】  トランザクションを分割して実行する複数層の独立性を容易に高めることを目的とする。ノード３０は、分散トランザクション管理部により、下位層のノード３０をトランザクションに対して割り当てる。また、ノード３０は、下位層のノード３０を所定のトランザクションに対して他の３０とともに共有する。ただし、複数のノード３０により共有されるノード３０は、読み出し専用或いは機能の特性より書き込みも可能な共有のノードである。このように、ノード３０それぞれは、新しいトランザクションを開始する場合に、利用されていないノード３０を分散トランザクション管理部３４によって下位層で探す。そして、第１層ノードホスト３、第２層ノードホスト４および第３層ノードホスト５は、それぞれのノード３０がどのトランザクションに対して利用されているか、または利用されていないかを確認するとともに記憶する。
2007088728.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のトランザクションを所定の複数の層に分割し、分割した層ごとにそれぞれ１つ以上設けられたノードの組み合わせにより、１つ以上のトランザクションをそれぞれ実行する多層分散処理システムであって、
上位の層に属する上位ノードは、
トランザクションに対する下位の層に属する下位ノードの実行状況を、監視する監視手段を有し、
前記下位ノードは、
自己の実行状況を前記上位ノードが監視できる監視可能化手段と、
前記上位ノードへ前記監視可能化手段を介して実行状況に応じてサービスを提供する機能部と
を有する多層分散処理システム。
【請求項２】
前記上位ノードは、
前記下位ノードを監視するための第１の通信手段を有し、
前記下位ノードは、
前記上位ノードに対してサービスを提供するための第２の通信手段
を有する請求の範囲第１項に記載の多層分散処理システム。
【請求項３】
前記上位ノードは、
前記下位ノードに固有な情報、および前記監視手段を介して監視した実行状況に基づいて、前記下位ノードを特定するノード特定手段を有し、
特定された前記下位ノードは前記上位ノードにサービスを提供する
請求の範囲第１項に記載の多層分散処理システム。
【請求項４】
前記下位ノードは、
前記上位ノードの要求に応じて、前記下位ノードの前記機能部の属性および実行状況に応じて自己が特定されるための情報を送信する手段を有する
請求の範囲第３項に記載の多層分散処理システム。
【請求項５】
前記下位ノードは、
自己が特定されるための情報を記憶する記憶手段と、
前記自己が特定されるための情報を動的に更新する更新手段と
をさらに有する請求の範囲第４項に記載の多層分散処理システム。
【請求項６】
トランザクションに応じて１つ以上の前記機能部のバージョンを限定するバージョン限定手段と、
前記バージョン限定手段が限定したバージョンの前記機能部を有する前記ノードを特定するように、前記ノード特定手段を制御する制御手段と
をさらに有する請求の範囲第３項に記載の多層分散処理システム。
【請求項７】
互いにバージョンが異なる前記機能部をそれぞれ有する複数の前記ノードを同一の層に有する
請求の範囲第６項に記載の多層分散処理システム。
【請求項８】
前記ノードの利用状況を収集する手段と、特定の状況に対して、前記ノードの機能を制御する手段を持つ、管理装置を有する
請求の範囲第１項に記載の多層分散処理システム。
【請求項９】
前記管理装置は、前記ノードの利用状況に基づいて、全ての前記ノードの前記ノード特定手段を動的に更新するノード更新手段を有する
請求の範囲第８項に記載の多層分散処理システム。
【請求項１０】
前記管理装置は、前記ノードの利用状況に基づいて、動的に前記ノードを特定し、前記ノードのバージョンを更新する、バージョン更新手段を有する
請求の範囲第８項に記載の多層分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トランザクションを所定の複数の層に分割して実行する多層分散処理システムに関する。
背景技術【０００２】
トランザクションを複数の層に分割して実行する多層分散処理システムが知られている。
この種の多層分散処理システムにおいて、トランザクションの各層を２相コミットプロトコルによって処理し、個々の層ごとのＡＣＩＤ（Atomicity,  Consistency,  Isolation and Durability）を保証することにより、トランザクションの総体の原子性（Atomicity）を保証することは公知である（特許文献１参照）。【０００３】
しかしながら、上記従来例においては、１つの層の処理に他の層の処理を挿入しなければならず、各層の独立性を高めることができないという問題があった。また、１つのトランザクションの期間が長い場合、リソースを維持するための記憶装置の必要量が多くなるとともに、データの更新などに対する管理および保守が困難になってしまう。
【特許文献１】特開平１０−６９４１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、上述した背景からなされたものであり、トランザクションを分割して実行する複数層の独立性を容易に高めることができる多層分散処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
［多層分散処理システム］
上記目的を達成するために、本発明にかかる多層分散処理システムは、１つ以上のトランザクションを所定の複数の層に分割し、分割した層ごとにそれぞれ１つ以上設けられたノードの組み合わせにより、１つ以上のトランザクションをそれぞれ実行する多層分散処理システムであって、上位の層に属する上位ノードは、トランザクションに対する下位の層に属する下位ノードの実行状況を、監視する監視手段を有し、前記下位ノードは、自己の実行状況を前記上位ノードが監視できる監視可能化手段と、前記上位ノードへ前記監視可能化手段を介して実行状況に応じてサービスを提供する機能部とを有する。【０００６】
好適には、前記上位ノードは、前記下位ノードを監視するための第１の通信手段を有し、前記下位ノードは、前記上位ノードに対してサービスを提供するための第２の通信手段を有する。【０００７】
また、好適には、前記上位ノードは、前記下位ノードに固有な情報、および前記監視手段を介して監視した実行状況に基づいて、前記下位ノードを特定するノード特定手段を有し、特定された前記下位ノードは前記上位ノードにサービスを提供する。【０００８】
また、好適には、前記下位ノードは、前記上位ノードの要求に応じて、前記下位ノードの前記機能部の属性および実行状況に応じて自己が特定されるための情報を送信する手段を有する。【０００９】
また、好適には、前記下位ノードは、自己が特定されるための情報を記憶する記憶手段と、前記自己が特定されるための情報を動的に更新する更新手段とをさらに有する。【００１０】
また、好適には、トランザクションに応じて１つ以上の前記機能部のバージョンを限定するバージョン限定手段と、前記バージョン限定手段が限定したバージョンの前記機能部を有する前記ノードを特定するように、前記ノード特定手段を制御する制御手段とをさらに有する。【００１１】
また、好適には、互いにバージョンが異なる前記機能部をそれぞれ有する複数の前記ノードを同一の層に有する。【００１２】
また、好適には、前記ノードの利用状況を収集する手段と、特定の状況に対して、前記ノードの機能を制御する手段を持つ、管理装置を有する。【００１３】
また、好適には、前記管理装置は、前記ノードの利用状況に基づいて、全ての前記ノードの前記ノード特定手段を動的に更新するノード更新手段を有する。【００１４】
また、好適には、前記管理装置は、前記ノードの利用状況に基づいて、動的に前記ノードを特定し、前記ノードのバージョンを更新する、バージョン更新手段を有する。
【発明の効果】
【００１５】
本発明にかかる多層分散処理システムによれば、トランザクションを分割して実行する複数層の独立性を容易に高めることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明にかかる多層分散処理システムの構成を例示する図である。
【図２】図１に示した管理装置、第１層ノードホスト、第２層ノードホストおよび第３層ノードホストの構成を例示する図である。
【図３】コンピュータなどによって実行可能なトランザクションの構成を例示する図である。
【図４】第１層ノードホスト、第２層ノードホストおよび第３層ノードホストの構成を例示する図である。
【図５】分散トランザクション管理部の構成を示す図である。
【図６】複数のトランザクションに対するノードの割り当てを例示する図である。
【図７】管理装置の構成を示す図である。
【図８】トランザクションに対するノードの関連付けを例示する概念図である。
【図９】多層分散処理システムによるトランザクションの実行サイクルを示す図である。
【図１０】分散トランザクション管理部により管理される関係ノードリストの状態遷移図である。
【図１１】分散トランザクション管理部の実行状態を示す状態遷移図である。
【図１２】ノード割り当てフェーズにおいて、各ノードの分散トランザクション管理部それぞれが要求された１つ以上のトランザクションに対して、下位層のノードを検索する処理（Ｓ１０）を示すフローチャートである。
【図１３】ノード割り当てフェーズにおいて、各ノードの分散トランザクション管理部それぞれが要求された１つ以上のトランザクションに対して、ノードを割り当てる処理（Ｓ２０）を示すフローチャートである。
【図１４】管理装置がノードのバージョンを管理する処理（Ｓ３０）を例示するフローチャートである。
【発明を実施するための最良の形態】
【００１７】
［多層分散処理システム１］
以下、本発明の実施形態を説明する。
図１は、本発明にかかる多層分散処理システム１の構成を例示する図である。
図１に示すように、多層分散処理システム１は、例えばＴＣＰ／ＩＰを用いたネットワーク１０を介し、互いに接続された管理装置２、第１層ノードホスト３−１，３−２、第２層ノードホスト４−１，４−２、第３層ノードホスト５−１，５−２から構成されるネットワークシステムであり、１つ以上のトランザクションを例えば第１層から第３層に分割して実行するようにされている。
なお、トランザクションを機能ごとに分割する層の数は、３以上であってもよい。
また、管理装置２は、多層分散処理システム１の管理者に対して援助を行うコンポーネントであって、多層分散処理システム１におけるオプションである。
つまり、多層分散処理システム１は、管理装置２を有していなくても、１つ以上のトランザクションを分割して実行することができるようにされている。
以下、第１層ノードホスト３−１，３−２など複数ある構成部分のいずれかを特定せずに示す場合には、単に「第１層ノードホスト３」などと略記することがある。【００１８】
［ハードウエア］
図２は、図１に示した管理装置２、第１層ノードホスト３、第２層ノードホスト４および第３層ノードホスト５の構成を例示する図である。
図２に示すように、管理装置２、第１層ノードホスト３、第２層ノードホスト４および第３層ノードホスト５それぞれは、ＣＰＵ６００およびメモリ６０２などを含む本体６０、表示装置およびキーボードなどを含む入出力装置６２、通信を行う通信装置６４、および、ＣＤ装置、ＦＤ装置およびＨＤＤ装置などの記憶装置６６から構成される。
つまり、管理装置２、第１層ノードホスト３、第２層ノードホスト４および第３層ノードホスト５は、それぞれコンピュータとしての構成部分を有している。【００１９】
［トランザクションの構成例］
次に、トランザクションの構成例について説明する。
図３は、コンピュータなどによって実行可能なトランザクションＴ１００の構成を例示する図である。
図３に示すように、トランザクションＴ１００は、ファンクション層Ｔ１０２、プロセス層Ｔ１０４、サービス層Ｔ１０６、インフォメーション層Ｔ１０８、アプリケーション層Ｔ１１０およびリソース層Ｔ１１２から構成される。
トランザクションＴ１００は、例えばビジネスプロセスなどであり、複数の処理を直列化した期間の長いトランザクション（グローバルトランザクション）である。【００２０】
ファンクション層Ｔ１０２は、例えばＵＩ（ユーザインターフェイス）および管理ツールなどである。
プロセス層Ｔ１０４は、ファンクション層Ｔ１０２のファンクションを実現するビジネスプロセスのワークフローなどであり、トランザクションＴ１００を定義する。
また、プロセス層Ｔ１０４は、サービス層Ｔ１０６が提供する複数のサービスをトランザクション固有の特性にしたがって直列化し、呼び出すにより、トランザクションＴ１００を実行する。
サービス層Ｔ１０６は、サービスを提供する同時に、あるプロセスが特定なサービスをアクセスできるかどうかなどのセキュリティの維持も行う。
なお、サービス層Ｔ１０６より下の各層は、分散される。【００２１】
インフォメーション層Ｔ１０８は、トランザクションＴ１００により実行されるアプリケーション層Ｔ１１０の有する機能を所定の出力に結合して、サービス層Ｔ１０６のサービスが必要なインフォメーションを提供するミドルウェア層である。
リソース層Ｔ１１２は、例えばデータベースである。【００２２】
［トランザクションに対するノードの関連付け］
図８は、トランザクションに対するノードの関連付けを例示する概念図である。
図８に示すように、トランザクションＸは、例えば複数の層（０〜３）に分割される。
多層分散処理システム１は、トランザクションＸに対し、ノードホスト名および機能（ポート番号による）によって層ごとにノードなどのノーを特定することにより、トランザクションＸと各層のノードとの関係を確認する。
点線は読み出し専用の共有ノードとすることが出来、或いは、機能の特性より書き込みも可能な共有ノードとすることも出来る。【００２３】
［第１層ノードホスト３、第２層ノードホスト４、第３層ノードホスト５の構成］
図４は、第１層ノードホスト３、第２層ノードホスト４および第３層ノードホスト５の構成を例示する図である。
図４に示すように、第１層ノードホスト３、第２層ノードホスト４および第３層ノードホスト５は、例えば４つのノード３０−１〜３０−４をそれぞれ有し、同様の構成になっている。
ノード３０−１〜３０−４は、トランザクションの所定の層それぞれにおいて、層ごとに同等のレベルの異なる機能或いは同じ機能を実行する。
なお、第１層ノードホスト３、第２層ノードホスト４および第３層ノードホスト５は、ノード３０の数を４つに限定されず、それぞれ異なる数のノード３０を有するものであってもよい。【００２４】
ノード３０−１〜３０−４は、それぞれ値が異なるノードポート３２、分散トランザクション管理部（Distributed Transaction Manager:ＤＴＭ）３４およびファンクションノード３６から構成される。
ノードポート３２は、ノード３０−１〜３０−４のファンクションノード３６がそれぞれ有する固有の機能に対応する固有のポート番号である。【００２５】
分散トランザクション管理部３４は、ノード３０をそれぞれ管理するための情報（図５を用いて後述）を有し、結合されるべき他のノード３０のファンクションノード３６を、ノードポート３２を介してコールする。
なお、トランザクションＴ１００においては、サービス層Ｔ１０６からリソース層Ｔ１１２の処理を実行するために分散トランザクション管理部３４が用いられる。【００２６】
ファンクションノード３６は、トランザクションの所定の層それぞれにおいて、層ごとに同等のレベルの異なるサービス、または同一のサービスを実行するサービス実行部であり、割り当てインターフェイス（Ｉ／Ｆ）３６０および機能インターフェイス（Ｉ／Ｆ）３６２が実装されている。
割り当てＩ／Ｆ３６０は、他のノード３０の分散トランザクション管理部３４により、ノードポート３２を介してファンクションノード３６がメソッドによってコールされるためのインターフェイスである。
割り当てＩ／Ｆ３６０は、割り当てが必要とされる機能の要求をコールされると、ファンクションノード３６が提供可能な機能が必要とされる機能と一致する場合に、例えば真をリターンするようにされている。
また、割り当てＩ／Ｆ３６０は、ノード３０が共有可能である場合にも、例えば真をリターンするようにされている。【００２７】
機能Ｉ／Ｆ３６２は、ファンクションノード３６がサービスを入出力するためのインターフェイスである。【００２８】
［分散トランザクション管理部３４の構成］
次に、分散トランザクション管理部３４の構成について詳述する。
図５は、分散トランザクション管理部３４の構成を示す図である。図５に示すように、分散トランザクション管理部３４は、ステータスフラグ３４０、割り当て（指定）済みトランザクションＩＤ３４２、共有トランザクションＩＤリスト３４４、ノード検索区分３４６、関係ノードリスト３４８、バージョンＩＤ３５０、バージョン時間区分３５２、ノード選択アルゴリズム３５４および実行状況モニタ用アドレス３５６を有する。【００２９】
ステータスフラグ３４０は、自ノード３０が上位層のノード３０によって利用されている状況を示すフラグであり、以下の３通りの状況を示す値のいずれかを示す。
・フリー（解放）：自ノード３０は、上位層のノード３０から解放されている。
・割り当て済み  ：自ノード３０は、上位層のノード３０に利用（占有を含む）されている。
・共有          ：１つ以上のトランザクションに対し、上位層の複数のノード３０に共有されている。【００３０】
割り当て済みトランザクションＩＤ（ＡＴＩＤ）３４２は、ステータスフラグ３４０が割り当て済みである場合、自ノード３０が割り当てられているトランザクションを特定するトランザクションＩＤを記憶する構成部分である。
なお、トランザクションＩＤは、例えばプロセス層Ｔ１０４の処理を実行する第１層ノードホスト３などのノードホストアドレス（ＩＰアドレスまたはホスト名）と、ノードＩＤ（プロセスＩＤ）により構成される。【００３１】
共有トランザクションＩＤリスト（ＳＴＬ）３４４は、ステータスフラグ３４０が共有である場合、自ノード３０を共有しているトランザクションのトランザクションＩＤを共有リストとして記憶する構成部分である。【００３２】
ノード検索区分（Node Search Segmentation：ＮＳＳ）３４６は、ノードホストのいずれかを特定するアドレスと、ノード３０のポート番号との組み合わせを１つ以上含む区分リスト（図示せず）を有し、分散トランザクション管理部３４それぞれに対する情報の交換とノード３０を割り当てるための特別な通信チャネルを構成する。
例えば、ノード検索区分３４６は、区分リストを用いて下位層の利用可能なノード３０を検索する。
区分リストは、例えばトランザクションの開始および終了を宣言するノードホストのＩＰアドレスおよびノードポート３２のポート番号の組み合わせなどであってもよいし、ワイルドカードのノードホスト名のリスト、またはノードホスト名のリストなどでもよい。
例えばＩＰアドレスおよびノードポートによって、ノード検索区分を構成する場合、以下のように構成する。
１９２．１６８．０．１０〜２０  それぞれのポート１００−２００、と
１９２．１６８．０．２１〜３０  それぞれのポート１２０−２００
また、ワイルドカードのノードホスト名のリスト、或いはノードホスト名によって、ノード検索区分を構成する場合、以下のように構成する。
host1 〜 host20 それぞれのポート１１０−1２０、と
host3? 〜 host5? それぞれのポート２００−３００
ここで、「host3?」はhost30〜host39、host3a〜host3zなどを意味する。【００３３】
関係ノードリスト（Related Node List：ＲＮＬ）３４８は、自ノード３０に利用されている下位層のノード３０のノードリストを記憶する構成部分である。
ノードリストは、順序がノード３０をコミットする順序になっており、ノードホストのアドレスとノードポート３２を保持する。【００３４】
バージョンＩＤ３５０は、自ノード３０のファンクションノード３６の機能のバージョンを示すＩＤを記憶する構成部分である。【００３５】
バージョン時間区分３５２は、ファンクションノード３６の機能のバージョンをタイムスタンプに応じて区分し、自ノード３０を共有できるトランザクションを区分するための情報を記憶する構成部分である。
例えば、バージョン時間区分３５２は、トランザクションの開始および終了の時間の対を含む。
また、バージョン時間区分３５２は、トランザクションの開始および終了またはこれらのいずれかの時間が空（ｎｕｌｌ）の場合、区分に対する制限を無制限とする。【００３６】
ノード選択アルゴリズム３５４は、下位層の同一の機能を有する利用されていない複数のノード３０から、どのように１つのノード３０を選択するかを記述したアルゴリズムを記憶する構成部分である。【００３７】
実行状況モニタ用アドレス３５６は、管理装置２がノード３０の実行状況をモニタするためのアドレスを記憶する構成部分である。【００３８】
［トランザクションに対するノード３０の割り当て］
次に、トランザクションに対するノード３０の割り当てについて説明する。
図６は、複数のトランザクションに対するノード３０の割り当てを例示する図である。
なお、図６においては、第１層ノードホスト３−１，３−２、第２層ノードホスト４−１，４−２および第３層ノードホスト５−１，５−２がそれぞれノード３０を２つずつ有する場合が例示されている。【００３９】
ノード３０は、実線の矢印で示したように、下位層のノード３０を所定のトランザクションに対して割り当てる（占有する）。
また、ノード３０は、破線の矢印で示したように、下位層のノード３０を所定のトランザクションに対して他の３０とともに共有する。
ただし、複数のノード３０により共有されるノード３０は、読み出し専用或いは機能の特性より書き込みも可能な共有のノードである。
また、ノード３０は、他のノード３０との間で交換される情報に応じて共有を承認された場合に、複数のノード３０により共有されるようにされてもよい。
このように、ノード３０それぞれは、新しいトランザクションを開始する場合に、利用されていないノード３０を下位層で探し、新しいトランザクションに対して割り当てる。
そして、第１層ノードホスト３、第２層ノードホスト４および第３層ノードホスト５は、それぞれのノード３０がどのトランザクションに対して利用されているか、または利用されていないかを分散トランザクション管理部３４それぞれにより確認するとともに記憶する。【００４０】
［管理装置（Manage Assistant）２］
次に、管理装置２について詳述する。
管理装置２は、上述したように、多層分散処理システム１の管理者に対する援助を行うコンポーネントであり、以下の援助を管理者に対して行う。
−多層分散処理システム１によるトランザクションの実行を監視する
−多層分散処理システム１のパフォーマンスの改善のために、多層分散処理システム１の構成を変更する
−ファンクションノード３６の更新【００４１】
図７は、管理装置２の構成を示す図である。図７に示すように、管理者用ＵＩ部２０、実行状況モニタ２２、ノード検索区分更新部２４、ノード選択アルゴリズム更新部２６およびファンクションノード更新部２８を有する。
管理者用ＵＩ部（Administrator Console）２０は、管理者用に対するＵＩ（Use Interface）である。【００４２】
実行状況モニタ２２は、公開アドレスとポート２２０を有し、多層分散処理システム１を構成する各部の実行状況を収集し、管理者に対してレポートする。
公開アドレスとポート２２０は、第１層ノードホスト３、第２層ノードホスト４および第３層ノードホスト５それぞれの分散トランザクション管理部３４によって知られている。
つまり、分散トランザクション管理部３４それぞれが公開アドレスとポート２２０をあて先として実行状況を送信することにより、実行状況モニタ２２第１層ノードホスト３、第２層ノードホスト４および第３層ノードホスト５それぞれの実行状況を収集することができる。【００４３】
ノード検索区分更新部（Node Search Segmentation Updater）２４は、予め管理者が定義した状況に多層分散処理システム１の状況がなると、ノード３０が下位層のノード３０を検索するためのノード検索区分更新情報を全ての分散トランザクション管理部３４に対してブロードキャストする。予め管理者が定義した状況はたとえば、ある区分に、使用不可になったホスト或いは、新規追加したホストの数が設定した数をオーバーした状況などである。
ノード検索区分更新情報のブロードキャストは、多層分散処理システム１のパフォーマンスを改善するためのものであり、ノード検索区分更新情報がブロードキャストされなくても、各分散トランザクション管理部３４は、十分に広い区分構成から利用されていないノード３０を発見することができるようにされている。【００４４】
ノード選択アルゴリズム更新部（Node Choice algorithm Updater）２６は、全ての実行パッケージを保持するアルゴリズムライブラリ２６０を有し、予め管理者が定義した状況に多層分散処理システム１の状況がなると、パフォーマンスを改善するために、ノード選択アルゴリズムの実行パッケージを各分散トランザクション管理部３４に対して送信する。
ノード選択アルゴリズムは、例えばキャッシュにより、同じノード３０を利用し続けるように設定するアルゴリズムなどである。
例としては、応答時間が最も早いノードを選択するアルゴリズムについて説明する。すなわち、あるノードが管理している下位ノード数が３つあり、何らかの原因でそのうち２つが使用できなくなった場合を想定する。ノード選択アルゴリズム更新部（Node Choice algorithm Updater）２６は、当該ノードに、より簡単な同じノードを利用し続けるように設定するアルゴリズムを送信する。当該ノードは送信されたアルゴリズムを置き換えて実行する。その結果、使用できる１つの下位ノードを選択し、使用できない下位ノードはアクセスしないので、全体のパフォーマンスを改善することが出来る。
なお、ノード検索区分を更新する手段、及び、ノード選択アルゴリズムを更新する手段を含む手段をノード更新手段と呼ぶものとする。【００４５】
ファンクションノード更新部（Function Node Updater）２８は、管理者用ＵＩ部２０を介した管理者の指示などに応じて、ノード３０のファンクションノード３６を新しいバージョンのものに更新し、分散トランザクション管理部３４のバージョンＩＤ３５０を変更する。【００４６】
［多層分散処理システム１によるトランザクションの実行：ワークフロー］
次に、多層分散処理システム１によるトランザクションの実行について説明する。
図９は、多層分散処理システム１によるトランザクションの実行サイクルを示す図である。
図９に示すように、多層分散処理システム１は、ノード割り当てフェーズ（Ｐ１００）、機能実行フェーズ（Ｐ１０２）およびコミットプロセスフェーズ（Ｐ１０４）により、トランザクションを実行する。【００４７】
ノード割り当てフェーズ（Ｐ１００）において、例えば管理装置２は、第１層ノードホスト３、第２層ノードホスト４および第３層ノードホスト５などのアドレスをグループ分けする。
例えばＩＰアドレスによって、ノードホストをグループ分けする場合、以下のようにＩＰアドレスを分割する。
インフォメーション層：１９２．１６８．０．１０〜６９
アプリケーション層  ：１９２．１６８．０．７０〜１５９
リソース層          ：１９２．１６８．０．１６０〜２５０【００４８】
また、ノードホスト名によって、ノードホストをグループ分けする場合、以下のように分割する。
インフォメーション層：インフォホスト１〜インフォホスト２０
アプリケーション層  ：アプリホスト１〜アプリホスト５０
リソース層          ：リソースホスト１〜リソースホスト８０【００４９】
各ノード３０は、トランザクションに必要な機能を有する下位層のノード３０を分散トランザクション管理部３４によって検索し、下位層の所定のアドレスとポートの区分において利用されていないノード３０を選択する。【００５０】
機能実行フェーズ（Ｐ１０２）において、トランザクションは、必要なノード３０の機能が結合されることにより、実行される。【００５１】
コミットプロセスフェーズ（Ｐ１０４）において、各ノード３０は、２段階の処理を行う。
まず、ノード３０は、準備処理として、終了するトランザクションの全ての分散トランザクション管理部３４のツリーが準備の状態になったことを確認する。
次に、ノード３０それぞれにより、もう一度トランザクションをコミットし、トランザクションがフェイルした場合にはロールバックを行う。【００５２】
［分散トランザクション管理部３４の属性管理］
図１０は、分散トランザクション管理部３４により管理される関係ノードリスト３４８の状態遷移図である。
関係ノードリスト３４８は、上述したように自ノード３０に利用されている下位層のノード３０のノードリスト（ノードホストのアドレスとノードポート３２）を保持する。【００５３】
トランザクションがコミットされた後に新しいトランザクションが開始されても、分散トランザクション管理部３４は、関係ノードリスト３４８がノードリストを記憶した状態から移行しない（ａ１）。
つまり、トランザクションがコミットされても、関係ノードリスト３４８は、すぐにはクリアされない。【００５４】
分散トランザクション管理部３４は、新しいトランザクションが開始されると、アドレスを区分する前に、関係ノードリスト３４８に含まるノード３０にアクセスする。
つまり、分散トランザクション管理部３４は、新しいトランザクションに対し、まず関係ノードリスト３４８に記憶されたノード３０を検索して、下位層のノード３０を割り当てる。
関係ノードリスト３４８に含まるノード３０がアクセスされると、分散トランザクション管理部３４は、関係ノードリスト３４８がノードリストを記憶した状態から、関係ノードリスト３４８が空の状態に移行する（ノード検索：ａ２）。【００５５】
ノード３０が要求する機能に対し、下位層のノード３０が割り当てられると、ノードリストに新しいノード３０のノードホストのアドレスとノードポート３２とが追加され、関係ノードリスト３４８は、空の状態からノードリストを記憶した状態に移行する（ａ３）。【００５６】
図１１は、分散トランザクション管理部３４の実行状態を示す状態遷移図である。
分散トランザクション管理部３４は、自ノード３０がトランザクションに対して割り当てられると、解放の状態から割り当て済みの状態に移行する（ｂ１）。【００５７】
また、分散トランザクション管理部３４は、トランザクションがコミットされると、割り当て済みの状態から解放の状態に移行する（ｂ２）。【００５８】
また、分散トランザクション管理部３４は、自ノード３０がトランザクションに対して共有されると、解放の状態から共有済み状態に移行する（ｂ３）。【００５９】
また、分散トランザクション管理部３４は、共有トランザクションＩＤリスト３４４が空にされると、共有済み状態から解放の状態に移行する（ｂ４）。【００６０】
［ノード割り当てフェーズ（Ｐ１００）における検索］
図１２は、ノード割り当てフェーズ（Ｐ１００）において、各ノード３０の分散トランザクション管理部３４それぞれが要求された１つ以上のトランザクションに対して、下位層のノード３０を検索する処理（Ｓ１０）を示すフローチャートである。
図１２に示すように、ステップ１００（Ｓ１００）において、分散トランザクション管理部３４は、関係ノードリスト３４８が空であるか否かを確認し、関係ノードリスト３４８が空の場合はＳ１０６の処理に進み、関係ノードリスト３４８が空でない場合はＳ１０２の処理に進む。【００６１】
ステップ１０２（Ｓ１０２）において、分散トランザクション管理部３４は、必要な機能を有する下位層の利用されていないノード３０、または共有可能なノード３０を関係ノードリスト３４８から探す。【００６２】
ステップ１０４（Ｓ１０４）において、分散トランザクション管理部３４は、必要な機能を割り当てることができるノード３０を発見した場合にはＳ１１４の処理に進み、発見しない場合にはＳ１０６の処理に進む。【００６３】
ステップ１０６（Ｓ１０６）において、分散トランザクション管理部３４は、各ノード検索区分３４６における利用可能なノード３０の検索を開始する。【００６４】
ステップ１０８（Ｓ１０８）において、分散トランザクション管理部３４は、各ノード３０に対して実行状況を問い合わせることにより、利用可能なノード３０の検索を開始する。（実行状況の確認）【００６５】
ステップ１１０（Ｓ１１０）において、分散トランザクション管理部３４は、必要な機能を割り当てることができるノード３０を発見した場合にはＳ１１４の処理に進み、発見しない場合（フェイルした場合）にはＳ１１２の処理に進む。【００６６】
ステップ１１２（Ｓ１１２）において、分散トランザクション管理部３４は、管理装置２の実行状況モニタ２２にノード３０を発見しなかった旨（フェイル）を送信する。【００６７】
ステップ１１４（Ｓ１１４）において、分散トランザクション管理部３４は、関係ノードリスト３４８をクリアする。【００６８】
ステップ１１６（Ｓ１１６）において、分散トランザクション管理部３４は、発見したノード３０を関係ノードリスト３４８に追加する。【００６９】
［ノード割り当てフェーズ（Ｐ１００）における割り当て］
図１３は、ノード割り当てフェーズ（Ｐ１００）において、各ノード３０の分散トランザクション管理部３４それぞれが要求された１つ以上のトランザクションに対して、ノード３０を割り当てる処理（Ｓ２０）を示すフローチャートである。
図１３に示すように、ステップ２００（Ｓ２００）において、分散トランザクション管理部３４は、下位層の自ノード３０が上位層のノード３０に割り当てられているか否かを判定し、割り当てられている場合にはＳ２０６の処理に進み、解放されている場合にはＳ２０２の処理に進む。【００７０】
ステップ２０２（Ｓ２０２）において、上位層のノード３０がトランザクションに要求される機能を有するファンクションノード３６の割り当てＩ／Ｆ３６０のメソッドをコールする。【００７１】
ステップ２０４（Ｓ２０４）において、上位層のノード３０は、下位層のノード３０からのリターンが真（要求機能）であるか否かを判定し、リターンが真である場合にはＳ２０８の処理に進み、リターンが真でない場合にはＳ２０６の処理に進む。【００７２】
ステップ２０６（Ｓ２０６）において、下位層のノード３０は、機能を要求した上位層のノード３０および実行状況モニタ２２にフェイルを示す情報を送信する。【００７３】
ステップ２０８（Ｓ２０８）において、上位層のノード３０は、トランザクションによる機能のバージョンに関する要求があるか否かを判定し、要求がある場合にはＳ２１０の処理に進み、要求がない場合にはＳ２１２の処理に進む。【００７４】
ステップ２１０（Ｓ２１０）において、上位層のノード３０は、下位層の機能に対するバージョンの要求が下位層のバージョンＩＤ３５０に記憶しているバージョンＩＤと同じであるか否かを判定し、同じである場合にはＳ２１４の処理に進み、同じでない場合にはＳ２０６の処理に進む。【００７５】
ステップ２１２（Ｓ２１２）において、上位層のノード３０は、下位層のバージョン時間区分３５２に含まれるタイムスタンプを参照し、下位層の機能が共有可能なバージョンであることを示すタイムスタンプであるか否かを判定し、共有可能なバージョンが示されている場合にはＳ２１４の処理に進み、共有できないバージョンである場合にはＳ２０６の処理に進む。【００７６】
ステップ２１４（Ｓ２１４）において、上位層のノード３０は、共有可能な機能を有する下位層のノード３０の割り当てＩ／Ｆ３６０のメソッドをコールする。【００７７】
ステップ２１６（Ｓ２１６）において、上位層のノード３０は、下位層のノード３０からのリターンが真（共有可能）であるか否かを判定し、リターンが真である場合にはＳ２１８の処理に進み、リターンが真でない場合にはＳ２２０の処理に進む。【００７８】
ステップ２１８（Ｓ２１８）において、下位層のノード３０は、トランザクションＩＤを共有トランザクションＩＤリスト３４４に追加する。【００７９】
ステップ２２０（Ｓ２２０）において、下位層のノード３０は、トランザクションＩＤを割り当て済みトランザクションＩＤ３４２に記憶する。【００８０】
ステップ２２２（Ｓ２２２）において、下位層のノード３０は、機能を要求した上位層のノード３０に、利用可能なノード３０の発見をを示す情報を応答する。【００８１】
なお、上位層のノード３０が下位層のノード３０に対して機能を要求する場合、以下のような実装が推奨される。
・ＩＤによるアプローチ
−Ｊａｖａ（登録商標）環境において、クラス名またはＪａｖａＢｅａｎｓ名（登録商標）
−ＤＣＯＭ（登録商標）環境において、ＤＣＯＭ名またはＩＤ
・記述によるアプローチ
−ファンクションタイプ
・データアクセス、ビジネスロジックなど
−ファンクションサブタイプ
・データアクセスに対するテーブル名
・ビジネスロジックに対するビジネスステップ
−操作属性
・データアクセスに対するテーブルの挿入／選択／更新【００８２】
［ノード３０のバージョン管理］
次に、ノード３０のバージョン管理について詳述する。
管理者が管理者用ＵＩ部２０を介してノード３０のバージョンの更新をセットアップした場合、多層分散処理システム１は、管理装置２によってノード３０のバージョンを更新する。
管理装置２は、いくつのノード３０がどのバージョンの更新または維持を行うかを制御する。
例えば、管理装置２は、第１層ノードホスト３−１の全てのノード３０を最新のバージョンに更新する。
また、管理装置２は、例えば３つのノード３０はバージョン１を維持し、５つのノード３０はバージョン２を維持し、その他のノード３０は最新のバージョンに更新するようにしてもよいし、１０％のノード３０はバージョン１を維持し、２０％のノード３０はバージョン２を維持し、その他のノード３０は最新のバージョンに更新するようにしてもよい。【００８３】
また、管理装置２は、所定のバージョンのノード３０に対し、タイムスタンプによる区分を行う。【００８４】
図１４は、管理装置２がノード３０のバージョンを管理する処理（Ｓ３０）を例示するフローチャートである。
図１４に示すように、ステップ３００（Ｓ３００）において、管理装置２は、各層のノード３０に対して検索を開始する。【００８５】
ステップ３０２（Ｓ３０２）において、管理装置２は、各ノード３０の機能を確認する。【００８６】
ステップ３０４（Ｓ３０４）において、管理装置２は、トランザクションに対するターゲットとなるノードリストに、所定の機能を有する全てのノード３０を追加する。【００８７】
ステップ３０６（Ｓ３０６）において、管理装置２は、例えば管理者用ＵＩ部２０を介して入力される管理者の指示に応じて、所定の機能を有するノード３０の全てを最新のバージョンに更新するか否かを判定し、全てのノード３０のバージョンを更新する場合にはＳ３１０の処理に進み、所定の機能を有するノード３０のいくつかを選択してバージョンの更新を行う場合にはＳ３０８の処理に進む。【００８８】
ステップ３０８（Ｓ３０８）において、管理装置２は、例えば管理者用ＵＩ部２０を介して入力される管理者の指示に応じて、各ノード３０に対し、どのノード３０をどのバージョンにするかを示すバージョン更新プランを生成する。【００８９】
ステップ３１０（Ｓ３１０）において、管理装置２は、ノードの確認のループを開始する。
ノードの確認のループは、変数Ｎの値が１で始まり、１ずつ増加してノード数になるまで、後述するＳ３１８までの処理を個々のノード３０に対して繰り返す。【００９０】
ステップ３１２（Ｓ３１２）において、管理装置２は、ノード３０が利用されているか否かを判定し、利用されている場合にはＳ３１４の処理に進み、利用されていない場合にはＳ３１８の処理に進む。【００９１】
ステップ３１４（Ｓ３１４）において、管理装置２は、ノード３０に対し、バージョンの更新と時間区分の設定を行う。【００９２】
ステップ３１６（Ｓ３１６）において、管理装置２は、Ｓ３１４の処理でバージョンの更新と時間区分の設定を行ったノード３０をターゲットとなるノードリストから削除する。【００９３】
ステップ３１８（Ｓ３１８）において、管理装置２は、Ｓ３１０に示した条件が満たされた場合に、ノードの確認のループを終了する。【００９４】
ステップ３２０（Ｓ３２０）において、管理装置２は、ターゲットとなるノードリストが空になったか否かを判定し、空になっていない場合にはＳ３２２の処理に進み、空になっている場合には処理を終了する。【００９５】
ステップ３２２（Ｓ３２２）において、管理装置２は、後に再びＳ３０の処理を行えるように、実行状況モニタ２２のタイマの状況を設定する。【００９６】
したがって、多層分散処理システム１は、トランザクションの種類に応じて異なるバージョンのノード３０を割り当てることができ、１つのシステム内において、複数のバージョンのノード３０が異なる複数のトランザクションに対する実行を行うことができる。
【符号の説明】
【００９７】
１・・・多層分散処理システム
１０・・・ネットワーク
Ｔ１００・・・トランザクション
Ｔ１０２・・・ファンクション層
Ｔ１０４・・・プロセス層
Ｔ１０６・・・サービス層
Ｔ１０８・・・インフォメーション層
Ｔ１１０・・・アプリケーション層
Ｔ１１２・・・リソース層
２・・・管理装置
２０・・・管理者用ＵＩ部
２２・・・実行状況モニタ
２２０・・・公開アドレスとポート
２４・・・ノード検索区分更新部
２６・・・ノード選択アルゴリズム更新部
２６０・・・アルゴリズムライブラリ
２８・・・ファンクションノード更新部
３−１，３−２・・・第１層ノードホスト
３０−１〜３０−４・・・ノード
３２・・・ノードポート
３４・・・分散トランザクション管理部
３４０・・・ステータスフラグ
３４２・・・割り当て済みトランザクションＩＤ
３４４・・・共有トランザクションＩＤリスト
３４６・・・ノード検索区分
３４８・・・関係ノードリスト
３５０・・・バージョンＩＤ
３５２・・・バージョン時間区分
３５４・・・ノード選択アルゴリズム
３５６・・・実行状況モニタ用アドレス
３６・・・ファンクションノード
３６０・・・割り当てＩ／Ｆ
３６２・・・機能Ｉ／Ｆ
４−１，４−２・・・第２層ノードホスト
５−１，５−２・・・第３層ノードホスト
６０・・・本体
６００・・・ＣＰＵ
６０２・・・メモリ
６２・・・入出力装置
６４・・・通信装置
６６・・・記憶装置
【産業上の利用可能性】
【００９８】
本発明は、トランザクションを所定の複数の層に分割して実行する多層分散処理システムなどに利用することができる。
【図１】
2007088728.tif 000003
【図２】
2007088728.tif 000004
【図３】
2007088728.tif 000005
【図４】
2007088728.tif 000006
【図５】
2007088728.tif 000007
【図６】
2007088728.tif 000008
【図７】
2007088728.tif 000009
【図８】
2007088728.tif 000010
【図９】
2007088728.tif 000011
【図１０】
2007088728.tif 000012
【図１１】
2007088728.tif 000013
【図１２】
2007088728.tif 000014
【図１３】
2007088728.tif 000015
【図１４】
2007088728.tif 000016
【国際調査報告】
2007088728.tif 000017
2007088728.tif 000018
2007088728.tif 000019
2007088728.tif 000020