(57)【要約】  本発明は、モデル化されたアプリケーションの分散動作制御実行のための方法、システム及びコンピュータプログラムプロダクトに関する。本発明の実施形態は様々なピアツーピア機能性と共に中央データ収納部の相互動作を容易にする。これにより、中央データ格納部及びピアツーピアメッセージングの両方の利点を利用する環境において分散アプリケーションを実行することができる。分散ソフトウエアアプリケーションの実行の間に中央データ格納部のリード−オンリ部を用いて様々な処理システムに動作制御を与えることができる。よって、本発明の実施形態はモデル−ベースのアプリケーション用の分散した非集中型ランタイムを形成するノードのポリシ駆動の集合体を形成するために用いることができる。集中化したポリシに応じ、ピアツーピアファブリックを介してアプリケーションを実行する連携したノードの集合体を利用することは、分散アプリケーションランタイムを大スケールでの分散及び非集中化に適応させることを可能にする。
2010525488.tif 000002
【特許請求の範囲】
【請求項１】
分散ソフトウエアアプリケーションを実行するためのシステム（１００）であって、
分散ソフトウエアアプリケーションを実行するための分散ロジックを設定可能にする複数の処理システム（１０４、１０５、１０６）であって、前記分散ソフトウエアアプリケーションは、前記複数の処理システムを介して分散される、システムと、
前記分散ロジックに接続され、前記分散ロジック間で共有されるデータ格納部（１０１）と、を備え、
前記データ格納部は、
分散ソフトウエアアプリケーションを実行するとき前記分散ロジックの動作を指示するリード−オンリデータ（１０２）と、
分散ソフトウエアアプリケーションを実行するとき分散ソフトウエアアプリケーションデータを格納及び共有するために前記複数の処理システムで用いられるリード−ライトデータ（１０３）と、
前記分散ロジックに接続され、前記分散ロジック間で共有されるメッセージインフラストラクチャ（１０８）と、を含み、
処理システム間でメッセージを交換するメッセージインフラストラクチャ（１０８）は、
分散ソフトウエアアプリケーションを実行するときに用いられる処理システムで設定可能な分散ロジック（１０４Ｌ、１０５Ｌ、１０６Ｌ）の存在を発見し、
処理システムを連係させて分散ソフトウエアアプリケーションを実行しているときリード−オンリデータにおいて指示された動作を実行する
ことを特徴とするシステム。
【請求項２】
前記複数の処理システムは、モデル−ベースのアプリケーションのための分散した非集中型のランタイムを形成することを特徴とする請求項１記載のシステム。
【請求項３】
前記複数の処理システムの各々は、処理システムの動作を監視するコントローラを含むことを特徴とする請求項１記載のシステム。
【請求項４】
前記リード−オンリデータは、処理システムが分散アプリケーションを実行するときに従うべきポリシを備えることを特徴とする請求項１記載のシステム。
【請求項５】
前記分散ロジックによる実行のために設定された１以上のモデル−ベースのソフトウエアアプリケーションを表す第２のリード−オンリデータを更に備えることを特徴とする請求項１記載のシステム。
【請求項６】
前記リード−ライトデータは、分散アプリケーションのアプリケーション状態を表すために用いられるデータを含み、前記アプリケーション状態は、設定した、展開した及び動作している、の中から選択されることを特徴とする請求項１記載のシステム。
【請求項７】
前記リード−ライトデータは、前記リード−オンリデータに示された指示した動作とのコンプライアンスを定めるために用いられるランタイムメトリックスを備えることを特徴とする請求項１記載のシステム。
【請求項８】
前記メッセージインフラストラクチャは分散パブリッシュ／サブスクライブインフラストラクチャであることを特徴とする請求項１記載のシステム。
【請求項９】
前記メッセージインフラストラクチャはピアツーピアメッセージングインフラストラクチャであることを特徴とする請求項１記載のシステム。
【請求項１０】
グループ自身に亘って分散されたモデル−ベースのソフトウエアアプリケーションを実行する分散ランタイムの分散ロジックを集合的に表す連携した実行サービス（２０４、２０５、２０６）のグループと、
１以上のモデル−ベースのソフトウエアアプリケーション（２１１４）を格納し、モデル−ベースのソフトウエアアプリケーションを実行するとき前記分散ランタイムの動作を指示するポリシを格納するリード−オンリ部（２０２）と、アプリケーション状態及びアプリケーションオペレーショナルデータを維持するように実行サービスによって使用可能なリード−ライト部（２０３）とを有する共通データリポジトリ（２０１）と、
実行サービスが相互に発見し、連携的に通信してモデル−ベースのソフトウエアアプリケーションを実行するために用いるサービスバス（２０８）と、
を含む分散処理システム（２００）において、モデル−ベースのソフトウエアアプリケーションを実行する方法であって、
命令（２２１）を受信して前記共通データリポジトリの前記リード−オンリ部に格納されたモデル−ベースのソフトウエアアプリケーションを実行する前記分散ランタイムの実行サービスの動作と、
前記サービスバスを介して前記分散ランタイムの他の実行サービスを発見する（２２２）前記実行サービスの動作と、
共に連携してグループ化して前記モデル−ベースのソフトウエアアプリケーションを実行する分散ロジックを提供する前記実行サービス及び前記他の実行サービスの動作と、
前記共通データリポジトリの前記リード−オンリ部に格納された前記ポリシに応じて前記モデル−ベースのソフトウエアアプリケーションを実行するために前記サービスバスを介して連係する実行サービスのグループの動作と、を備え、
その実行サービスのグループの動作は、
前記共通データリポジトリの前記リード−ライト部を用いて前記モデル−ベースのソフトウエアアプリケーションの状態（２１３）を反映する動作と、
前記共通データリポジトリの前記リード−ライト部を用いて前記モデル−ベースのソフトウエアアプリケーションに対応するオペレーショナルデータ（２１４）を反映する動作と、を含むことを特徴とする方法。
【請求項１１】
前記サービスバスを介して前記分散ランタイムの他の実行サービスを発見する前記実行サービスの動作は、前記実行サービスがピアツーピアファブリックを介して前記分散ランタイムの前記他の実行サービスを発見することを特徴とする請求項１０記載の方法。
【請求項１２】
前記共通データリポジトリの前記リード−オンリ部に格納されたポリシに応じて前記モデル−ベースのソフトウエアアプリケーションを実行するために前記サービスバスを介して連係する実行サービスのグループの動作は、前記ポリシとのコンプライアンスのために前記実行サービスの動作を監視する各実行サービスのコントローラの動作を備えることを特徴とする請求項１０記載の方法。
【請求項１３】
前記共通データリポジトリの前記データオンリ部に格納されたポリシに応じて前記モデル−ベースのソフトウエアアプリケーションを実行するために前記サービスバスを介して連係する実行サービスのグループの動作は、中央リポジトリに格納されたポリシに応じて前記モデル−ベースのソフトウエアアプリケーションを実行するためにピアツーピアインフラストラクチャを介して連係する実行サービスのグループの動作を含むことを特徴とする請求項１０記載の方法。
【請求項１４】
前記共通データリポジトリの前記リード−オンリ部に格納されたポリシに応じて前記モデル−ベースのソフトウエアアプリケーションを実行するために前記サービスバスを介して連係する実行サービスのグループの動作は、１以上の他の実行サービスにおける分散アプリケーションの実行に否定的に影響する実行サービスにおけるローカル動作を抑制するために前記ポリシを利用することを含むことを特徴とする請求項１０記載の方法。
【請求項１５】
前記共通データリポジトリの前記リード−ライト部を用いて前記モデル−ベースのソフトウエアアプリケーションに対応するオペレーショナルデータを反映する動作は、前記共通データリポジトリの前記リード−ライト部を用いて実行サービスが前記ポリシに応じているか否かを判別するために評価されるランタイムメトリックスを維持することを含むことを特徴とする請求項１０記載の方法。
【請求項１６】
グループ自身に亘って分散されたモデル−ベースのソフトウエアアプリケーションを実行する分散ランタイムの分散ロジックを集合的に表す連携した実行サービス（２０４、２０５、２０６）のグループと、
１以上のモデル−ベースのソフトウエアアプリケーション（２１１４）を格納し、モデル−ベースのソフトウエアアプリケーションを実行するとき前記分散ランタイムの動作を指示するポリシを格納するリード−オンリ部（２０２）と、アプリケーション状態及びアプリケーションオペレーショナルデータを維持するように実行サービスによって使用可能なリード−ライト部（２０３）とを有する共通データリポジトリ（２０１）と、
実行サービスが互いに発見し、連携的に通信してモデル−ベースのソフトウエアアプリケーションを実行するために用いるサービスバス（２０８）と、
を含む分散処理システム（２００）において使用されるコンピュータプログラムプロダクトであって、
モデル−ベースのソフトウエアアプリケーションを実行する方法を実装する前記コンピュータプログラムプロダクトは、実行時に前記分散処理システムの実行サービスに前記方法を実行させるコンピュータ実行可能命令を格納した１以上のコンピュータ可読媒体を含み、
前記方法は、
命令（２２１）を受信して前記共通データリポジトリの前記リード−オンリ部に格納されたモデル−ベースのソフトウエアアプリケーションを実行し、
前記サービスバスを介して前記分散ランタイムの他の実行サービスを発見し（２２２）、
前記他の実行サービスと共に連携してグループ化して前記モデル−ベースのソフトウエアアプリケーションを実行する分散ロジックを提供し、
前記共通データリポジトリの前記リード−オンリ部に格納された前記ポリシに応じて前記モデル−ベースのソフトウエアアプリケーションを実行するために前記サービスバスを介して連係し、その連係は、
前記共通データリポジトリの前記リード−ライト部を用いて前記モデル−ベースのソフトウエアアプリケーションの状態（２１３）を反映し、
前記共通データリポジトリの前記リード−ライト部を用いて前記モデル−ベースのソフトウエアアプリケーションに対応するオペレーショナルデータ（２１４）を反映することを含むことを特徴とするコンピュータプログラムプロダクト。
【請求項１７】
前記モデル−ベースのソフトウエアアプリケーションを実行するために、実行時に実行サービスに前記サービスバスを介して連係させる前記コンピュータ実行可能命令は、ポリシとのコンプライアンスのために実行時に前記実行サービスの動作を監視するコンピュータ実行可能命令を含むことを特徴とする請求項１６記載のコンピュータプログラムプロダクト。
【請求項１８】
前記モデル−ベースのソフトウエアアプリケーションを実行するために、実行時に実行サービスに前記サービスバスを介して連係させる前記コンピュータ実行可能命令は、実行時に実行サービスに、前記中央リポジトリに格納されたポリシに応じて前記モデル−ベースのソフトウエアアプリケーションを実行するためにピアツーピアインフラストラクチャを介して連係させるコンピュータ実行可能命令を含むことを特徴とする請求項１６記載のコンピュータプログラムプロダクト。
【請求項１９】
前記モデル−ベースのソフトウエアアプリケーションを実行するために、実行時に実行サービスに前記サービスバスを介して連係させる前記コンピュータ実行可能命令は、実行時に実行サービスに、１以上の他の実行サービスにおける分散アプリケーションの実行に否定的に影響する実行サービスにおけるローカル動作を抑制するために前記ポリシを利用させるコンピュータ実行可能命令を含むことを特徴とする請求項１６記載のコンピュータプログラムプロダクト。
【請求項２０】
前記モデル−ベースのソフトウエアアプリケーションに対応するオペレーショナルデータを反映させるために、実行時に実行サービスに前記共通データリポジトリの前記データライト部を利用させる前記コンピュータ実行可能命令は、実行サービスが前記ポリシに応じているか否かを判別するために評価されるランタイムメトリックスを維持するために、実行時に実行サービスに、前記共通データリポジトリの前記データライト部を利用させるコンピュータ実行可能命令を含むことを特徴とする請求項１６記載のコンピュータプログラムプロダクト。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータシステム及び関係技術は社会の多くの状況に影響を与えている。確かに、情報を処理するためのコンピュータの能力は我々が生活及び仕事をする方法を変化させている。コンピュータシステムの出現前は手作業で行われた多くのタスク（例えば、ワードプロセッシング、スケジューリング、アカウンティング等）をコンピュータシステムは現在一般に行っている。最近では、コンピュータシステムは互いに、そして他の電子機器と接続され、コンピュータシステム及び電子機器が電子データを転送できる有線及び無線のコンピュータネットワークを形成している。これにより、多くのコンピューティングタスクのパフォーマンスが多数の異なるコンピュータシステム及び／又は多数の異なるコンピューティングコンポーネントに亘って分散される。
【０００２】
コンピュータシステムに互いにインターラクションを行わせるために様々な異なるネットワークアーキテクチャを利用することができる。ネットワークアーキテクチャは、ネットワークアーキテクチャのコンピュータシステム間に存在する機能的な関係に応じて、ある程度まで分類することができる。例えば、ネットワークアーキテクチャは、クライアント−サーバアーキテクチャ、ピアツーピア等に分類することができる。
【０００３】
クライアント−サーバアーキテクチャは、異なるコンピュータシステム間のクライアントの機能とサーバの機能とを分ける。異なるクライアント−サーバアーキテクチャの目的は、変化したり、及び／又は様々な方法に適用される場合がある。しかしながら、一般に、クライアント−サーバアーキテクチャ内のコンピュータシステム間の関係は、全てのクライアント−サーバアーキテクチャにおいて非常に類似している。一般的に、複数のクライアントコンピュータシステムは、サーバコンピュータシステム（又は一部の環境ではサーバファーム）にリクエスト（例えば、データ用）を送信するように設定される。サーバコンピュータシステム（又はサーバファーム）は、リクエストを受信して処理し（例えば、リクエストされたデータにアクセスする）、適切なレスポンス（例えば、リクエストされたデータ）をクライアントに送り返す。
【０００４】
１つのクライアント−サーバの一般的な関係は、ワールドワイドウェブ（ＷＷＷ）である。ウェブサーバ（サーバ）は、インターネットを介してウェブブラウザ（クライアント）からリクエスト可能なコンテンツ（例えば、ウェブページ）へのアクセスを維持し制御する。
【０００５】
クライアント−サーバアーキテクチャは、主としてセントラルロケーションにデータが格納されていることにより多くの理由で有利である。例えば、データはセントラルロケーションに格納されているので、データについての安全確保及びアクセス制御を容易に実現することができる。更に、クライアントとサーバとの間の機能の明確な違いがあるので、サーバとの干渉オペレーションなしにクライアントのアップグレードを容易に行うことができ、その逆も同じである。
【０００６】
残念ながら、クライアント−サーバアーキテクチャには不利な点もある。第１の不利な点は、セントラルロケーションに格納されているデータに起因するロバスト性の欠如である。すなわち、サーバが機能しないならば、クライアントのリクエストを満たす方法がない。受信したリクエストの数が多くサーバリソースに過剰な負荷がかかるとき、サーバはトラフィック混雑の影響を受ける。更に、多くの環境でサーバを確立するためのリソースは、通常、大部分のホームコンピュータシステムのリソースを越えており、それにより多数のユーザはサーバを創設することが阻まれている。
【０００７】
ピアツーピアのネットワークアーキテクチャは、サーバ及びクライアントの概念を持っていない。ピアツーピアネットワークの各コンピュータシステムは対等なピアノードとみなされる。よって、ピアツーピアネットワークのアーキテクチャは、少数のサーバに（又は単一のサーバでさえ）リソースが集中することとは対照的に、ネットワーク内の全てのコンピュータシステムのコンピューティングパワー及びバンド幅に頼っている。ピアツーピアのネットワークアーキテクチャは、コンピュータシステムを互いに接続して、例えば、ファイルを共有したり、又はリアルタイムでデータを交換したりする等のアドホック(ad hoc)ネットワークを形成することに度々用いられる。
【０００８】
ピアツーピアのネットワークアーキテクチャは、主としてコンピュータシステム間でリソースが共有されていることにより多くの理由で有利である。例えば、新たなコンピュータシステムがピアツーピアネットワークに加わるとき、加わるコンピュータのリソースがピアツーピアネットワーク内の他のコンピュータシステムによって利用可能となるので、ネットワークのリソース容量が増加される。それに比べて、クライアント−サーバネットワークにおけるリソース容量は、新しいクライアントがサーバにリクエストを送信する場合でも増加しない。更に、リソースはコンピュータシステムの間で共有されるので、ピアツーピアネットワークはクライアント−サーバネットワークよりも一般的に強固である。すなわち、１つのコンピュータシステムがデータへのアクセスを失敗したとしても、１以上の他のコンピュータシステムがその同じデータにアクセスする可能性がある。
【０００９】
しかしながら、ピアツーピアネットワークには様々な不利な点が存在する。各コンピュータシステムが対等とみなされるので、１つのコンピュータシステムが他のコンピュータシステムの、例えば、アクセス制御又は他のセキュリティ対策を実行する等の動作を制御することは難しい。この中央制御の欠如により、ピアツーピアネットワークは、クライアント−サーバネットワークよりも悪意の攻撃（例えば、ポイゾニング攻撃、汚染攻撃、ＤｏＳ攻撃、スパムニング等）に対して弱くなっている。
【００１０】
更に、コンピュータシステムがピアツーピアネットワークに加わったり離れるときに実質的な制約がない。そのため、リクエスト可能なデータに対するロバスト性を維持するために、データの同じ部分がコンピュータシステムから何度もネットワーク（例えば、インターネット）を介してコンピュータシステムに転送される場合がある。例えば、コンピュータシステムがピアツーピアネットワークを離れるとき、リクエスト可能なデータは利用可能なままなので、そのコンピュータシステムはリクエスト可能なデータを他のコンピュータシステムに転送できる。従って、コンピュータシステムがピアツーピアネットワークを離れる度に、データの一部が残りのコンピュータシステムに（もしかすると２度、３度等）転送される。
【００１１】
企業向けのソフトウェアは、通常、クライアント−サーバネットワークのアーキテクチャで利用するために開発されている（よって、クライアント−サーバアーキテクチャ固有の問題に弱い）。企業向けのソフトウェアは、例えば、アカウンティング、セールス等のビジネス手順を自動化するためにしばしば用いられる専用の（proprietary）ソフトウェアである。従って、企業向けソフトウェアを開発する会社は、一般に、彼らの社内環境で使用するために制御されるべき企業向けソフトウェアを望んでいる。企業向けのソフトウェアは非常に複雑であり、意図された動作環境以外での使用には十分に適していない。よって、企業向けのソフトウェアは、しばしばウェブベースの環境における動作が妨げられ、それによりワールドワイドウェブ（ＷＷＷ）のシンプリシティ及びダイナミズムの利点も得られない。
【００１２】
やや逆説的に言えば、ウェブベースのアプリケーションは、インターネット全体を単一の（しかし制御されていない）データセンタとして見ることができ、ＷＷＷの至る所にロケーションからデータに容易にアクセスすることができる。アクセスしたデータに基づいて、ウェブベースのアプリケーションを容易にリミックスすることができ、開発者が要望する変化を容易にするための新しいセッティングを実行することができる。しかしながら、データは、潜在的で制御されていない様々なロケーションにアクセスでき、及びそのロケーションからアクセスされるので、早急に開発され、リミックスされたウェブベースのアプリケーションは（ピアツーピアアーキテクチャ特有の問題にある程度まで影響を受け）、関連するセキュリティ及び信頼性がしばしば望ましくない低いレベルにある。
【発明の概要】
【課題を解決するための手段】
【００１３】
本発明は、モデル化されたアプリケーションの分散動作の制御を実行するための方法、システム及びコンピュータプログラムプロダクトに関する。本発明の実施例は、分散ソフトウエアアプリケーションを実行するシステムを含んでいる。システムは複数の処理システムを含んでいる。分散ソフトウエアアプリケーションを実行するための設定可能な分散ロジックは、複数の処理システムに亘って分散される。
【００１４】
格納されたデータは分散ロジックに接続され、分散ロジック間で共有される。データ格納部はリード−オンリデータとリード−ライトデータとを含んでいる。リード−オンリデータは分散ソフトウエアアプリケーションの実行時に分散ロジックの動作を指示する。分散ソフトウエアアプリケーションの実行時に、複数の処理システムはリード−ライトデータを使用して分散ソフトウエアアプリケーションデータを格納及び共有する。
【００１５】
メッセージインフラストラクチャは分散ロジックに接続され、分散ロジック間で共有される。メッセージインフラストラクチャは、処理システム中でメッセージを交換するように設定され、ａ）分散ソフトウエアアプリケーションの実行中に用いる処理システムで設定可能な分散ロジックの存在を発見し、ｂ）処理システムを連係させて分散ソフトウエアアプリケーションを実行しているときリード−オンリデータにおいて指示された動作を実行する。
【００１６】
いくつかの実施形態においては、分散処理システムはモデル−ベースの分散ソフトウエアアプリケーションを実行する。分散処理システムは、分散アプリケーションルーチンを集合的に表す連携した（cooperative）実行サービスのグループを含む。分散ルーチンの実行サービスは、命令を受信して共通データリポジトリのリード−オンリ部に格納されたモデル−ベースのソフトウエアアプリケーションを実行する。実行サービスは、サービスバスとして識別される特定の種類のメッセージングインフラストラクチャを介して分散ルーチンの他の実行サービスを発見する。サービスバスは実行サービスが互いに信号を送る状態にする。実行サービス及び他の実行サービスは、連携して共に集まり、モデル−ベースのソフトウエアアプリケーションを実行するための分散ロジックを提供する。
【００１７】
実行サービスのグループはサービスバスを介して連係し、共通のデータリポジトリのリード−オンリ部に格納されたポリシに応じてモデル−ベースのソフトウエアアプリケーションを実行する。モデル−ベースのソフトウエアアプリケーションの実行は、ａ）共通データリポジトリのリード−ライト部を用いてモデル−ベースのソフトウエアアプリケーションの状態を反映し、ｂ）共通データリポジトリのリード−ライト部を用いてモデル−ベースのソフトウエアアプリケーションに対応するオペレーショナルデータを反映する。
【００１８】
この概要は以下に詳細な説明で更に説明される簡単なフォームにおいてコンセプトの選択を導くために与えられる。この概要は請求項の構成の重要な特徴又は主たる特徴を認識することを意図しておらず、請求項の構成の範囲を決定する際の助けとして用いられることを意図していない。
【００１９】
本発明の追加の特徴及び利点は以下に続く詳細な説明に記載され、一部にその説明から自明であり、又は発明の慣行によって学習されても良い。本発明の特徴及び利点は請求項に特に指摘された手段及び組み合わせによって実現及び取得されても良い。本発明のそれら及び他の特徴は次の詳細な説明及び請求項から更に十分に明確になり、又は以降に記載されたように発明の慣行によって学習されても良い。
【００２０】
本発明の上記及びその他の利点及び特徴を得ることができる方法を説明するために、短く上記した本発明の更なる特定の説明は添付図面に示された実施形態について与えられる。それらの図面は本発明の一般的な実施形態だけを示し、よって、その範囲の限定であることを考慮されるべきでないことを理解し、本発明は添付図面を使用して追加の特異性及び詳細について説明される。
【図面の簡単な説明】
【００２１】
【図１】モデル化されたアプリケーションの分散動作制御実行を容易にするコンピュータアーキテクチャの例を示す図である。
【図２】動作実行ポリシに応じて分散実行ロジックでアプリケーションを実行することを容易にするコンピュータアーキテクチャの例を示す図である。
【図３】動作実行ポリシに応じて分散実行ロジックでアプリケーションを実行する方法のフローチャートを示す図である。
【発明を実施するための形態】
【００２２】
本発明はモデル化されたアプリケーションの分散動作制御実行のための方法、システム及びコンピュータプログラムプロダクトに関する。本発明の実施形態は分散ソフトウエアアプリケーションを実行するように設定されたシステムを含んでいる。そのシステムは複数の処理システムを含んでいる。分散ソフトウエアアプリケーションを実行する設定可能な分散ロジックはその複数の処理システムに亘って分散される。
【００２３】
格納されたデータは分散ロジックに接続され、分散ロジック間で共有される。データ格納部はリード−オンリデータとリード−ライトデータを含んでいる。リード−オンリデータは分散ソフトウエアアプリケーションが実行するとき分散ロジックの動作を指示する。分散ソフトウエアアプリケーションを実行するとき複数の処理システムはリード−ライトデータを使用して分散ソフトウエアアプリケーションデータを格納及び共有する。
【００２４】
メッセージインフラストラクチャは分散ロジックに接続され、分散ロジック間で共有される。メッセージインフラストラクチャは、処理システム中でメッセージを交換するように設定され、ａ）分散ソフトウエアアプリケーションの実行時に用いる処理システムで設定可能な分散ロジックの存在を発見し、ｂ）処理システムを連係させて分散ソフトウエアアプリケーションの実行時にリード−オンリデータにおいて指示された動作を実行する。
【００２５】
いくつかの実施形態においては、分散処理システムはモデル−ベースの分散ソフトウエアアプリケーションを実行する。分散処理システムは、分散アプリケーションルーチンを集合的に表す連携した実行サービスのグループを含む。分散ルーチンの実行サービスは、命令を受信して共通データリポジトリのリード−オンリ部に格納されたモデル−ベースのソフトウエアアプリケーションを実行する。実行サービスは、サービスバスとして識別される特定の種類のメッセージングインフラストラクチャを介して分散ルーチンの他の実行サービスを発見する。サービスバスは実行サービスが互いに信号を送る状態にする。実行サービス及び他の実行サービスは、連携して共に集まり、モデル−ベースのソフトウエアアプリケーションを実行するための分散ロジックを提供する。
【００２６】
実行サービスのグループは、サービスバスを介して連係し、共通のデータリポジトリのリード−オンリ部に格納されたポリシに応じてモデル−ベースのソフトウエアアプリケーションを実行する。モデル−ベースのソフトウエアアプリケーションの実行は、ａ）共通データリポジトリのリード−ライト部を用いてモデル−ベースのソフトウエアアプリケーションの状態を反映し、ｂ）共通データリポジトリのリード−ライト部を用いてモデル−ベースのソフトウエアアプリケーションに対応するオペレーショナルデータを反映する。
【００２７】
本発明の実施形態は、以下により詳細に説明されるようにコンピュータハードウエアを含む特定の目的又は一般的な目的のコンピュータを備える。本発明の範囲内の実施形態はコンピュータ実行可能な格納された命令又はデータ構造を担う又は有するコンピュータ可読記憶媒体を含む。そのようなコンピュータ可読記憶媒体は一般的な目的又は特定の目的のコンピュータによってアクセスできる利用可能な媒体である。例として、限定されないが、コンピュータ可読記憶媒体は、ＲＡＭ，ＲＯＭ，ＥＥＰＲＯＭ，ＣＤ−ＲＯＭ又は他の光学ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置等の物理的（又は記録可能なタイプ）コンピュータ可読記憶媒体、又はコンピュータ実行可能命令又はデータ構造の形で所望のプログラムコード手段を格納するために用いることができ、かつ一般的な目的又は特定の目的のコンピュータによってアクセスできる他の媒体を備える。
【００２８】
この詳細な説明において、及びそれに続く特許請求の範囲において、「ネットワーク」はコンピュータシステム及び／又はモジュール間で電子データの輸送を可能にする１以上のデータリンクとして定義される。情報がネットワーク又は他の通信接続（有線、無線又は有線又は無線の組み合わせのいずれか）を介してコンピュータに転送又は提供されるとき、そのコンピュータはコンピュータ可読媒体としてその接続を適切に見なす。よって、例として及び限定されないが、コンピュータ可読媒体は、コンピュータ実行可能な命令又はデータ構造の形で所望のプログラムコード手段を担う又は格納するために用いることができ、かつ一般的な目的又は特定の目的のコンピュータによってアクセスできるネットワーク又はデータリンクを備える。
【００２９】
コンピュータ実行可能命令は、例えば、一般的な目的のコンピュータ、特定の目的のコンピュータ又は特定の目的の処理装置に所定の機能又は機能グループを実行させる命令及びデータを備える。コンピュータ実行可能命令は例えば、アセンブリ言語又はソースコード等の２進化、中間フォーマット命令である。構成要件は構成上の特徴及び／又は方法論的な動作に特有の言葉で説明されているが、特許請求の範囲に定義された構成要件は上記の特徴又は動作に必ずしも限定されないことが理解されるべきである。むしろ、上記の特徴及び動作は請求項を実行する一例の形態として記載されている。
【００３０】
本発明がパーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベース又はプログラマブルコンシューマーエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、モバイルテレフォン、ＰＤＡ、ページャ等の多数種類のコンピュータシステム構成を有するネットワークコンピューティング環境で使用できることをこの分野の当業者には十分に理解され得る。また、本発明はネットワークを介して（有線のデータリンク、無線のデータリンク又は有線及び無線のデータリンクの組み合わせのいずれかによって）リンクされているローカル及びリモートコンピュータシステムが共にタスクを行う分散システム環境で使用できる。分散システム環境では、プログラムモジュールをローカル及びリモートメモリ記憶装置両方に配置することができる。
【００３１】
図１はモデル化されたアプリケーションの分散動作制御実行を容易にするコンピュータアーキテクチャ１００を例示している。コンピュータアーキテクチャ１００はデータ格納部１０１、処理システム１０４，１０５，１０６及びメッセージインフラストラクチャ１０８を示している。示されたコンポーネントの各々は、例えば、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（ワイドエリアネットワーク）及びインターネット等のネットワークを介して互いに接続されている。よって、データ格納部１０１、処理システム１０４，１０５，１０６及びメッセージインフラストラクチャ１０８は他の接続されたコンポーネントと共にネットワークを介してメッセージ関連データ及び交換メッセージ関連データ（例えば、インターネットプロトコル（ＩＰ）データグラム及びＩＰデータグラムを用いる、トランスミッションコントロールプロトコル（ＴＣＰ）、ハイパテキストトランスファプロトコル（ＨＴＴＰ）、シンプルメールトランスファプロトコル（ＳＭＴＰ）等の他のより高い層のプロトコル）を作成することができる。
【００３２】
処理システム１０４、１０５、１０６は各々ロジック１０４Ｌ、１０５Ｌ、１０６Ｌを含んでいる。ロジック１０４Ｌ、１０５Ｌ、１０６Ｌは集合して分散ロジック１０７を表している。分散ロジック１０７は処理システム１０４、１０５、１０６に分散されている分散ソフトウエアアプリケーションを実行するために設定可能である。
【００３３】
データ格納部１０１は分散ロジック１０７に接続され、分散ロジック１０７間で共有されている。示されたように、データ格納部１０１は、リード−オンリデータ１０２とリード−ライトデータ１０３とを含んでいる。リード−オンリデータ１０２はデータ格納部１０１に初期に書き込まれ（ライトワンス）、そして初期書き込み後、読み出しされるだけのデータである。リード−オンリデータは、分散ソフトウエアアプリケーションを実行するとき分散ロジック１０７の動作を指示することができる。処理システム１０４、１０５、１０６は（含んでいるロジック１０４Ｌ、１０５Ｌ、１０６Ｌと共に）、分散ソフトウエアアプリケーションを実行するときリード−ライトデータ１０３を用いて分散ソフトウエアアプリケーションを格納及び共有することができる。
【００３４】
処理システム１０４の左及び処理システム１０６の右の連続の３つのピリオド（省略符号）は、他の処理システムをコンピュータアーキテクチャ１００に含むことができることを表している。それらの他の処理システムはロジックを分散ロジック１０７に与えることができる。
【００３５】
メッセージインフラストラクチャ１０８は分散ロジック１０７に接続され、分散ロジック１０７間で共有される。メッセージインフラストラクチャ１０８は処理システム１０４、１０５、１０６間でメッセージを交換するように設定される。分散アプリケーションを実行するときに用いる処理システム１０４、１０５、１０６でメッセージインフラストラクチャ１０８を用いて、例えば、ロジック１０４Ｌ、１０５Ｌ、１０６Ｌ等の設定可能な分散ロジックの存在を発見することができる。また、分散アプリケーションを実行するとき、リード−オンリデータ１０２で指示される動作を実行するようにメッセージインフラストラクチャ１０８を用いて処理システム１０４、１０５、１０６を連係させることができる。いくつかの実施形態では、メッセージインフラストラクチャ１０８はピアツーピアディスカバリ及びメッセージング（シグナリング）インフラストラクチャである。
【００３６】
よって、本発明の実施形態は様々なピアツーピア機能性と共に中央データ収納部の相互動作を容易にする。これにより、中央データ格納部及びピアツーピアメッセージング両方の利点を利用する環境において分散アプリケーションを実行することができる。分散ソフトウエアアプリケーションの実行の間に中央データ格納部のリード−オンリ部を用いて様々な処理システムに動作制御を与えることができる。
【００３７】
図２は動作実行ポリシに応じて分散実行ロジックでアプリケーションを実行することを容易にするコンピュータアーキテクチャ２００を例示している。コンピュータアーキテクチャ２００はリポジトリ２０１、実行サービス２０４、２０５、２０６及びサービスバス２０８を示している。示したコンポーネントの各々は例えば、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（ワイドエリアネットワーク）及びインターネット等のネットワークを介して互いに接続されている。よって、リポジトリ２０１、実行サービス２０４、２０５、２０６及びサービスバス２０８は他の接続されたコンポーネントと共にネットワークを介してメッセージ関連データ及び交換メッセージ関連データ（例えば、インターネットプロトコル（ＩＰ）データグラム及びトランスミッションコントロールプロトコル（ＴＣＰ）、ハイパテキストトランスファプロトコル（ＨＴＴＰ）、シンプルメールトランスファプロトコル（ＳＭＴＰ）等のＩＰデータグラムを用いる、他のより高い層のプロトコル）を作成することができる。
【００３８】
実行サービス２０４、２０５、２０６はネットワークの各所に配置することができる。実行サービス２０４，２０５，２０６は分散アプリケーションを実行及び管理することに関与する。実行サービス２０４の左及び実行サービス２０６の右の連続の３つのピリオド（省略符号）は、他の実行サービスをコンピュータアーキテクチャ２００に含むことができることを表している。
【００３９】
リポジトリ２０１はリード−オンリ（又はライトワンス）データ２０２とリード−ライトデータ２０３とを含んでいる。リード−オンリデータ２０２はアプリケーションモデル２１１とポリシ２１２とを更に含んでいる。アプリケーションモデル２１１及びポリシ２１２は、例えば、実行サービス２０４、２０５、２０６等の実行サービス間で共有される。ポリシ２１２は実行サービスの集合的動作を定義する宣言ステートメントである。例えば、ポリシは実行サービスから送信可能な１秒当たりの最大メッセージ数（例えば、２０）を定義することができる。
【００４０】
よって、コンピュータアーキテクチャ２００の各実行サービスはポリシ２１２を解釈して対応する。実行サービスでは、ポリシ２１２に定義されるようにローカル動作にいくらかの自由度が確保されている。例えば、実行サービスでは、例えば処理の再起動等のローカルエラーリカバリを行うことが可能である。しかしながら、例えば、ディスク障害等の他の更なる重大及び／又は複雑なエラーは、適切なリカバリ（例えば、アプリケーションコンポーネントの再展開）のために多数の実行サービスに影響を与える。よって、それらの他の更なる重大及び／又は複雑なエラーからのリカバリは、多数の実行サービスの集合的動作を含むことができる。よって、各実行サービスでは、それらの更なる重大及び／又は複雑なエラーに対するリカバリを始めることが禁止されている。
【００４１】
アプリケーションモデル２１１は、分散アプリケーションを実行するために実行サービスの集合体によって消費されるアプリケーションモデルを含んでいる。例えば、アプリケーションモデルは実行サービスの集合体によって動作及び管理される宣言プログラムである。
【００４２】
リード−ライトデータ２０３は、アプリケーションステート２１３とオペレーショナルデータ２１４とを更に含んでいる。アプリケーションステート２１３は、例えば、設定した、展開した、動作している等の分散アプリケーション（例えば、アプリケーションモデル２１１からのアプリケーションモデル）の状態を反映することができる。オペレーショナルデータ２１４は、ポリシ２１２とのコンプライアンスを定めるために用いられる、例えば、ランタイムメトリクス等の情報を含むことができる。例えば、オペレーショナルデータ２１４は、実行サービスが秒当たりに送信するメッセージの数の表示を含むことができる。実行サービスは、分散アプリケーションのランタイム動作に基づいてオペレーショナルデータ２１４にオペレーショナルデータを書き込むことができる。
【００４３】
実行サービスは、サービスバス２０８（例えば、分散パブリッシュ／サブスクライブインフラストラクチャ等のピアツーピアファブリック）を用いて互いに発見し、連携した動作を実行することができる。サービスバス２０８は、トランシティブに連合したネームスペースサービス（互いに連合することを実行サービスに可能にするサービス）と、メッセージバスとを含む。例えば、サービスバス２０８を介した通信によって実行サービス２０４、２０５、２０６はクラスタを集合的に形成することができ、（例えば、アプリケーションモデル２１１に含まれた）分散アプリケーションのモデルに示されるようにウェブサイトのホストを務める。
【００４４】
１つの実行サービスの突発的な故障が起きたとき他の連携的動作を実行することができる。１以上の正常な「ブディ(buddy)」実行サービスがサービスバス２０８を介して信号を送り、他の実行サービスを引き継ぎのために（例えば、投票（vote）を介して）選択してエラーから回復する。
【００４５】
示されたように、実行サービス２０４、２０５、２０６は各々コントローラ２０４Ｃ、２０５Ｃ、２０６Ｃを含んでいる。一般に、コントローラはポリシ（例えば、ポリシ２１２）を解釈し、実行サービス間の連携的動作を実行する。例えば、コントローラは「ブディ」実行サービスに注意することを実行し、例えば、動作中の分散アプリケーションの一部に含まれるローカルサービス（例えば、ＩＩＳ（インターネットインフォメーションサービス）又はＳＱＬサーバ）を中断することの試み等の否定的なローカル動作を抑制することを実行する。
【００４６】
よって、本発明の実施形態は全ての実行サービスがポリシ及びアプリケーションモデルについて同じビューを有し、他の実行サービスを発見して信号を送ることができる環境を含んでいる。よって、例えば、コンピュータアーキテクチャ２００等の環境において実行サービスの集合グループ（又はその全て）を動作させるために、１つの実行サービスとインターラクションを行うことができる。
【００４７】
図３は、動作実行ポリシに応じて分散実行ロジックでアプリケーションを実行する方法３００のフローチャートの例を示している。その方法３００は、コンピュータアーキテクチャ２００におけるコンポーネント及びデータについて記述されている。
【００４８】
方法３００は、共通のデータリポジトリのリード−オンリ部に格納されたモデル−ベースのソフトウエアアプリケーションを実行するために命令を受信する、分散ランタイムの実行サービスの動作を含んでいる（動作３０１）。例えば、実行サービス２０４は実行命令２１１を受信してアプリケーション２１１Ａを実行することができる。
【００４９】
方法３００は、サービスバスを介して分散ランタイムの他の実行サービスを発見する実行サービスの動作を含んでいる（動作３０２）。例えば、実行サービス２０４は、サービスバス２０８を介してメッセージエクスチェンジ２２２、２２３によって実行サービス２０５、２０６を各々発見することができる。
【００５０】
方法３００は、モデル−ベースのソフトウエアアプリケーションを実行する分散ロジックを与えるため、共に連携して（cooperatively）グループ化する実行サービスおよび他の実行サービスの動作を含んでいる（動作３０３）。例えば、実行サービス２０４と実行サービス２０５、２０６とは、アプリケーション２１１Ａを実行する分散ロジックを与えるために、（例えば、ポリシ２１２に応じて）共に連携してグループ化することができる。
【００５１】
方法３００は、共通のデータリポジトリのリード−オンリ部に格納されたポリシに応じてモデル−ベースのソフトウエアアプリケーションを実行するためにサービスバスを介して連係する実行サービスのグループの動作を含んでいる（動作３０４）。例えば、実行サービス２０４、２０５、２０６のグループは、ポリシ２１２に応じてアプリケーション２１１Ａを実行するためにサービスバス２０８を介して連係することができる。
【００５２】
ポリシに応じてモデル−ベースのソフトウエアアプリケーションを実行するために、サービスバスを介した連係は、共通のデータリポジトリのリード−ライト部を用いてモデル−ベースのソフトウエアアプリケーションの状態を反映する動作を含んでいる（動作３０５）。例えば、実行サービス２０４、２０５、２０６はアプリケーション２１１の状態（例えば、設定した、展開した、動作している等）を反映するためにアプリケーション状態２１３にデータを書き込み、アプリケーション状態２１３からデータを読み出すことができる。
【００５３】
ポリシに応じてモデル−ベースのソフトウエアアプリケーションを実行するために、サービスバスを介した連係は、共通のデータリポジトリのリード−ライト部を用いてモデル−ベースのソフトウエアアプリケーションに対応するオペレーショナルデータを反映する動作を含んでいる（動作３０６）。例えば、実行サービス２０４、２０５、２０６はアプリケーション２１１に対応するランタイムメトリックス（例えば、平均応答時間、秒当たりのメッセージ等）を反映するためにオペレーショナルデータ２１４にデータを書き込み、オペレーショナルデータ２１４からデータを読み出すことができる。ポリシ２１２とのコンプライアンスを定めるためにランタイムメトリックスを用いることができる。
【００５４】
よって、本発明の実施形態は、モデル−ベースのアプリケーション用の分散した非集中型ランタイムを形成するノードのポリシ駆動の集合体を形成するために用いることができる。各ノードのコントローラはポリシを実行し他のノードと連係することができる。集中化したポリシに従い、ピアツーピアファブリックを介してアプリケーションを実行する連携したノードの集合体を利用することは、分散アプリケーションランタイムを大スケールでの分散及び非集中化に適応させることを可能にする。例えば、大スケールのＷＡＮ又はインターネットでさえデータセンタとして見ることができる。
【００５５】
本発明はその精神又は本質的な特性から離れることなく他の特定の形に具現化されても良い。説明した実施形態は説明の全ての箇所だけにおいて制限なく考慮されるべきである。よって、本発明の範囲は上記の説明よりむしろ請求項によって示される。請求項と同等の意味及び範囲内に入る全ての変更は本発明の範囲内に包含されるべきである。
【図１】
2010525488.tif 000003
【図２】
2010525488.tif 000004
【図３】
2010525488.tif 000005
【国際調査報告】
2010525488.tif 000006
2010525488.tif 000007