(実施の形態1)
以下、本発明に係わる実施の形態1について図面を参照しながら説明する。
本実施の形態におけるWebサービスシステムは、下記(a),(b)に示される特徴を備える。
(a)複数のコンポーネントを利用してWebサービスを提供するアプリケーションサーバと、物理ネットワークを介してアプリケーションサーバと接続されており複数のコンポーネントが分散されて配置されている複数のノードとを備えるWebサービスシステムであって、複数のノードの各々は、(a1)自ノードに配置されている1以上のコンポーネントと、他ノードに配置されている1以上のコンポーネントとの間で形成された論理ネットワークのリンクを示すリンク情報が登録されているリンクデータベースと、(a2)Webサービスで利用されている所定のコンポーネントと同一の機能を有するコンポーネントの探索についてアプリケーションサーバから要求されると、リンクデータベースに登録されているリンク情報に基づいて、論理ネットワークを形成する1以上のコンポーネントを探索し、所定のコンポーネントの代わりとして最適なコンポーネントを選出する代替コンポーネント探索処理部とを備える。
(b)複数のノードの各々は、(b1)自ノードに配置されている1以上のコンポーネントの中で、Webサービスで利用されているコンポーネントを実行する実行処理部と、(b2)実行処理部で実行されているコンポーネントの処理能力を計測し、計測して得られた結果を使用して、コンポーネントの実行によって得られる効用の指標となる効用情報を生成する効用情報生成処理部とを備え、(b3)複数のノードの中で、最適なコンポーネントを探索するノードを探索代理ノードとし、所定のコンポーネントと同一の機能を有するコンポーネントが配置されているノードを探索対象ノードとした場合において、探索代理ノードにおける代替コンポーネント探索処理部は、探索対象ノードにおける効用情報生成処理部で生成された効用情報に基づいて、効用が最も高いコンポーネントを最適なコンポーネントとして選出する。
以上の点を踏まえて本実施の形態におけるWebサービスシステムについて説明する。
<概要>
まず、本実施の形態におけるWebサービスシステムの概要について説明する。
図1は、本実施の形態におけるWebサービスシステムの概要を示す図である。図1に示されるように、Webサービスシステム100は、下記の条件(1),(2)の下で分散されて管理されている効用情報を利用して代替コンポーネントを探索する。
(1)同一の機能を有する複数のコンポーネントの間でオーバレイネットワークが構築される。
ここで、コンポーネントとは、インターフェースを有するソフトウェア部品である。オーバレイネットワークとは、物理ネットワークにおけるリンクを利用して仮想的なリンクを形成した論理ネットワークである。
(2)オーバレイネットワークにおいて隣接するコンポーネント同士でコンポーネントに関する効用情報が交換される。ただし、オーバレイネットワーク上でリンクが形成されているコンポーネント間でのみ効用情報が交換される。
ここで、効用情報とは、代替コンポーネントが配置されているノードの処理能力、そのノードに対するネットワーク上における遅延、そのコンポーネントを使用しているアプリケーションサーバの数などによって、0から1の間で変動する値(以下、「効用値」と呼称する。)を含む情報である。ノードとは、ハードウェアなどのように、コンピュータシステムの物理的なリソースである。
また、以下、Webサービスとは、XML(eXtensible Markup Language)やHTTP(Hyper Text Transfer Protocol)などを使用して、URI(Uniform Resource Identifier)によって特定されるコンポーネントを組み合わせて構成されるアプリケーションサービスとする。
なお、ノード101〜105、アプリケーションサーバ106、ユーザ端末107などは、物理ネットワークを介して相互に接続され、TCP/IP(Transmission Control Protocol/Internet Protocol)、UDP/IP(User Datagram Protocol/Internet Protocol)などの通信プロトコルに基づいて、パケット単位でデータが送受信される。
なお、代替コンポーネントの探索において、サービスの再開までの時間と、再開後のサービスの質とを考慮することが重要である。ここでは、後者の指標となる値として効用値を使用する。
また、サービス再開までの時間は、代替コンポーネントを発見するまでの時間と、発見した代替コンポーネントに利用することを通知するメッセージのRTT(Round Trip Time)とを加算した値とする。
さらに、効用値と、サービス再開までの時間とは、トレードオフの関係にある。これは、次の点からも窺える。例えば、高い効用のコンポーネント、すなわち、効用値が1に近いコンポーネントを代替コンポーネントとして利用するには、複数のコンポーネントの効用値を取得して比較する必要がある。しかし、複数のコンポーネントの効用値を取得して比較するためには、探索に時間がかかり、サービスの再開までの時間が増大する。
<代替コンポーネント探索手法>
次に、本実施の形態におけるWebサービスシステムにおいて利用される代替コンポーネントの探索手法について説明する。
なお、アプリケーションサーバは、1以上のコンポーネントを利用してWebサービスを提供しているとする。また、あらかじめ、Webサービスに利用されているコンポーネントからは、コンポーネントに対する探索代理ノードのアドレスが伝達されている。アプリケーションサーバに備わるデータベースには、コンポーネントから伝達された探索代理ノードのアドレスが登録されている。
ここで、探索代理ノードとは、Webサービスで利用されているコンポーネントに対してオーバレイネットワークにおいて隣接する1以上のコンポーネントの中でリンク数が最多のコンポーネントが配置されているノードである。
アプリケーションサーバは、サービスを提供するにあたって利用しているコンポーネントのいずれかにおいて障害が発生した場合は、サービスの提供を停止する。データベースに登録されている複数のアドレスに基づいて、障害が発生したコンポーネントに対する探索代理ノードを特定する。特定した探索代理ノードに、障害が発生したコンポーネントと同一の機能を有するコンポーネントを探索させる探索要求を送信する。
探索代理ノードは、アプリケーションサーバから送信された探索要求に基づいて、探索代理ノードに配置されている1以上のコンポーネントの中から、障害が発生したコンポーネントと同一の機能を有するコンポーネントを特定する。特定したコンポーネントに隣接するコンポーネントを、オーバレイネットワークを形成する複数のコンポーネントの中から選出する。選出したコンポーネント(以下、「探索対象コンポーネント」と呼称する。)が配置されているノード(以下、「探索対象ノード」と呼称する。)に、探索対象コンポーネントの効用値やアドレスなどに関する情報を照会する効用情報照会要求を送信する。このとき、複数のコンポーネントが選出された場合は、複数の探索対象ノードに対して効用情報照会要求が個別に送信される。
探索対象ノードは、探索代理ノードから送信された効用情報照会要求に基づいて、探索対象ノードで管理されている情報の中から、探索対象コンポーネントの効用値やアドレスなどに関する情報を特定する。特定した情報を、効用情報照会要求に対する応答として探索代理ノードに送信する。
探索代理ノードは、探索対象ノードから送信された情報に基づいて、1以上の探索対象コンポーネントの中から、障害が発生したコンポーネントの代替として最適なコンポーネントとして効用値が1に近いコンポーネントを選択する。選択したコンポーネントが特定されるコンポーネント情報を、探索要求に対する応答としてアプリケーションサーバに送信する。
アプリケーションサーバは、探索代理ノードから送信されたコンポーネント情報に基づいて、障害が発生したコンポーネントから、コンポーネント情報によって特定されるコンポーネントに切り替えてWebサービスの提供を再開する。
<利用時>
例えば、図2に示されるように、アプリケーションサーバ106は、コンポーネントb1,c4,e3を利用するWebサービスを提供している。なお、各コンポーネントからは、オーバレイネットワークにおいて各コンポーネントに隣接する1以上のコンポーネントの中でリンク数が最多のコンポーネントが配置されているノードのアドレスが探索代理ノードのアドレスとして伝達されている。アプリケーションサーバ106に備わるデータベースには、各コンポーネントから伝達された探索代理ノードのアドレスが登録されている。
ここでは、一例として、コンポーネントb1からは、コンポーネントb3が配置されているノード103のアドレスが伝達されている。データベースには、コンポーネントb1に対する探索代理ノードのアドレスとしてノード103のアドレスが登録されている。コンポーネントc4からは、コンポーネントc5が配置されているノード105のアドレスが伝達されている。データベースには、コンポーネントc4に対する探索代理ノードのアドレスとしてノード105のアドレスが登録されている。コンポーネントe3からは、コンポーネントe5が配置されているノード105のアドレスが伝達されている。データベースには、コンポーネントe3に対する探索代理ノードのアドレスとしてノード105のアドレスが登録されている。
<障害時>
次に、図3に示されるように、アプリケーションサーバ106は、コンポーネントc4に障害が発生した場合は、コンポーネントc4を利用するWebサービスの提供を停止する。
<探索時>
このとき、図4に示されるように、アプリケーションサーバ106は、データベースに登録されているアドレスに基づいて、コンポーネントc4に対する探索代理ノードとしてノード105を特定する。特定したノード105に、コンポーネントc4の代替コンポーネントとして最適なコンポーネントを探索させる要求を送信する。
これに伴い、ノード105は、オーバレイネットワークを形成する複数のコンポーネントの中で、コンポーネントc4と同一の機能を有するコンポーネントc5に隣接するコンポーネントc2,c3を選出する。選出したコンポーネントc2,c3の効用情報を、選出したコンポーネントc2,c3が配置されているノード102,103から個別に取得する。個別に取得した2つの効用情報に基づいて、最も効用の高いコンポーネント、すなわち、効用値が1に近いコンポーネントとしてコンポーネントc2を選択する。
<再開時>
そして、図5に示されるように、ノード105は、要求に対する応答として、選択したコンポーネントc2が特定されるコンポーネント情報をアプリケーションサーバ106に送信する。
アプリケーションサーバ106は、ノード105から送信されたコンポーネント情報に基づいて、障害が発生したコンポーネントc4の代替としてコンポーネントc2を利用してWebサービスの提供を再開する。
<オーバレイネットワーク構築手法>
次に、本実施の形態におけるWebサービスシステムにおいて利用されるオーバレイネットワークの構築手法について説明する。
上記で説明した代替コンポーネントの探索手法は、オーバレイネットワークのトポロジによって、性能が大きく左右される。
例えば、探索代理ノードが効用の高いコンポーネントを探索するためには、より多くのコンポーネントとリンクを形成することが望ましい。しかし、リンク数の増加にともない管理しなければならない効用情報も増加する。このため、大規模ネットワークにおいて、管理負荷の観点から、各ノードに配置されている1以上のコンポーネントのリンク数の総和に上限を設けることが望ましい。また、一般的に、1つのノードには、1以上のコンポーネントが配置されている。
そこで、各コンポーネント間の負荷分散を図りながら、効率的に探索することが実現できるトポロジの作成が望まれる。このため、ここでは、下記の仕様が満たされるように、オーバレイネットワークが構築される。
具体的には、オーバレイネットワークにおいて、ノードiに配置されているコンポーネントaiのリンク数をdiaとしたとき、ノードiの総リンク数diに対して、下記の式(1)で示される制限を設ける。ここで、constはノードの処理能力などで決定される定数である。しかし、ここでは、話を簡潔にするために、全ノードで一定の値とする。
(1)di=dia+dib+dic+・・・≦const
また、各コンポーネントについては、オーバレイネットワークにおいて、少なくとも2本のリンクが形成されているとする。これは、1本のリンクしか形成されていない場合において、リンク先のコンポーネントに障害が発生すると、リンク元のコンポーネントがオーバレイネットワークにおいて孤立する。探索時に、探索対象コンポーネントでありながら、探索対象コンポーネントの効用値やアドレスなどに関する情報が照会されなくなるためである。
また、探索に要する時間や物理ネットワーク上に流れるトラヒック量は、物理ネットワークのノード間のホップ数と関連があると考えられる。従って、オーバレイネットワークを構築するにあたって、物理ネットワークにおいてホップ数が小さいノードに配置された1以上のコンポーネントとの間で順次リンクを形成することを試みる。
そして、リンク形成時に、ノードの総リンク数の上限に達した場合は、ノードに配置されているコンポーネントのいずれかのリンクを削除する。これにより、ノードに配置されている1以上のコンポーネントの間で、公平性が維持される。ここで、公平性とは、代替コンポーネントの探索時に、いずれのコンポーネントにおいても、同程度に、代替コンポーネントを発見することができることとする。
<構築手法の手順>
次に、上記の仕様が満たすオーバレイネットワークの構築手法の手順について説明する。
図6、図7は、本実施の形態におけるオーバレイネットワークの構築手法の手順を示す図である。図6に示されるように、ここでは、一例として、新たにコンポーネントaiがノードiに配置されたとする。この場合において、まず、コンポーネントのリンク数の下限としてLLN(Least Link Number)を設定する。ノードiの総リンク数diの上限としてMLN(Max Link Number)を設定する。ノードiにコンポーネントaが配置されることで、ノードiに配置されているコンポーネントの平均リンク数の期待値E(dia)を下記の式(2)に基づいて算出する。
(2)E(dia)=di/(ノードiに配置されているコンポーネント数)
次に、ノードiの総リンク数diがMLN以上でない限り(S101:No)、オーバレイネットワークを構成する複数のコンポーネントのいずれかと新たなリンクを形成することが試みられる。このとき、下記の手順(1)〜(3)でリンク先のコンポーネントが選出される(S102)。
(1)オーバレイネットワークを構成する複数のコンポーネントの中で、コンポーネントaiと同一の機能を有するコンポーネントを選出する。
(2)手順1で選出したコンポーネントの中で、コンポーネントaiとリンクが形成されていないコンポーネントを選出する。
(3)手順2で選出したコンポーネントの中で、オーバレイネットワークを形成する物理ネットワークにおいてノードiに最隣接するノードに配置されているコンポーネントを選出する。
ここでは、一例として、ノードiに隣接するノードjに配置されているコンポーネントajがリンク先のコンポーネントとして選出されたとする。
次に、ノードjの総リンク数djがノードjに設定されたMLN以上である場合は(S103:Yes)、ノードjに配置されている1以上のコンポーネントのいずれかのリンクを1本削除する(S104)。このとき、図7に示されるように、下記の手順(1)〜(3)で削除対象となるリンクを選出し(S111,S112)、選出したリンクを削除する(S113)。
(1)ノードjに配置されている1以上のコンポーネントの中で、リンク数が最多のコンポーネントを選出する(S111)。
(2)選出したリンク元のコンポーネントとリンクを形成する1以上のコンポーネントの中で、リンク数が最多のコンポーネントを選出する(S112)。
(3)ノードjに配置されている1以上のコンポーネントによって形成されている1以上のリンクの中で、手順1で選出したコンポーネントと、手順2で選出したコンポーネントとによって形成されているリンクを削除する(S113)。
例えば、手順1において、ノードjに配置されている1以上のコンポーネントの中で、リンク数が最多のコンポーネントとしてコンポーネントbjが選出されたとする。手順2において、コンポーネントbjとリンクを形成する1以上のコンポーネントの中で、リンク数が最多のコンポーネントとしてコンポーネントbkが選出されたとする。この場合において、コンポーネントbjとコンポーネントbkとによって形成されているリンクolb(j,k)が手順3において選出される。
そして、コンポーネントaiとコンポーネントajとの間でリンクを形成する(S105)。
ただし、リンクolb(j,k)を削除することによって、コンポーネントbkのリンク数dkbがLNNより小さくなる場合は、削除対象となるリンクは、リンクolb(j,k)を除いて再選出される。
なお、削除対象となるリンクが存在しない場合は、コンポーネントaiは、コンポーネントajとリンクを形成することを断念する。コンポーネントaiとリンクが形成されていないコンポーネントの中から、コンポーネントajを除く。
また、ノードiの総リンク数diがMLN以上になり(S101:Yes)、コンポーネントaiのリンク数diaが期待値E(dia)より小さい場合は(S106:No)、上記(1)〜(3)の手順と同様に、下記の手順(1)〜(3)で削除対象となるリンクを選出し、選出したリンクを削除する(S107)。これによって、コンポーネントaiは、新たなリンクを形成することができる。
(1)ノードiに配置されている1以上のコンポーネントの中で、リンク数が最多のコンポーネントを選出する(S111)。
(2)選出したリンク元のコンポーネントとリンクを形成する1以上のコンポーネントの中で、リンク数が最多のコンポーネントを選出する(S112)。
(3)ノードiに配置されている1以上のコンポーネントによって形成されている1以上のリンクの中で、手順1で選出したコンポーネントと、手順2で選出したコンポーネントとによって形成されているリンクを削除する(S113)。
具体的には、図8に示されるように、新たにコンポーネントb4がノード104に配置されたとする。この場合において、図9に示されるように、コンポーネントb4は、オーバレイネットワークを形成する物理ネットワークにおいて隣接するノードnに配置された1以上のコンポーネントから、リンクolb(4,n)を形成することを試みる。このとき、コンポーネントb5とリンクを形成するにあたり、ノード105の総リンク数d5がノード105に設定されたMLN以上になる。そこで、図10に示されるように、ノード105に配置されているコンポーネントの中でリンク数が1番多いコンポーネントb5を選択する。さらに、コンポーネントb5とリンクを形成しているコンポーネントの中で、リンク数が1番多いコンポーネントb1を選択する。コンポーネントb5とコンポーネントb1とのリンクolb(1,5)を削除してから、コンポーネントb4とコンポーネントb5とのリンクolb(4,5)を追加する。
なお、ノード104の総リンク数d4がノード104に設定されたMLN以上でないので、他のコンポーネントとリンクを形成することを続ける。このようにして、図11に示されるように、新たなオーバレイネットワークのトポロジが形成される。
<構成>
次に、本実施の形態におけるWebサービスシステムの構成について説明する。
図12は、本実施の形態におけるWebサービスシステムの構成を示す図である。図12に示されるように、ここでは、一例として、Webサービスシステム100は、ノード101〜105、アプリケーションサーバ106などを備える。
ノード101〜105の各ノードは、各ノードに配置されている複数のコンポーネントの各機能を、物理ネットワークを介して、例えば、アプリケーションサーバ106などのような他のノードに提供するコンピュータシステムである。ここでは、一例として、ノード101には、コンポーネントa1,b1,c1が配置されている。ノード102には、コンポーネントa2,c2,d2が配置されている。ノード103には、b3,c3,e3が配置されている。ノード104には、コンポーネントa4,c4,d4が配置されている。ノード105には、コンポーネントc5,d5,e5が配置されている。
なお、コンポーネントa1,a2,a4の各コンポーネントは、同一の機能を有するコンポーネントである。コンポーネントb1,b3の各コンポーネントは、同一の機能を有するコンポーネントである。コンポーネントc1,c2,c3,c4の各コンポーネントは、同一の機能を有するコンポーネントである。コンポーネントd2,d4,d5の各コンポーネントは、同一の機能を有するコンポーネントである。
アプリケーションサーバ106は、コンポーネントb1,c4,e3の各機能を組み合わせたWebサービスを、物理ネットワークを介して、例えば、ユーザ端末107などのような他のノードに提供するコンピュータシステムである。
また、アプリケーションサーバ106は、Webサービスで利用されているコンポーネント(以下、「使用コンポーネント」と呼称する。)が利用できなくなったときは、使用コンポーネントの代わりとなるコンポーネント(以下、「代替コンポーネント」と呼称する。)を、オーバレイネットワークに分散されて配置されている複数のコンポーネントの中から探索する。
<ノード>
次に、本実施の形態におけるノード101〜105の構成について説明する。なお、ノード101〜105については、構成が同一であり、ここでは、ノード101についてのみ説明し、ノード102〜105については、説明を省略する。
図13は、本実施の形態におけるノード101の構成を示す図である。図13に示されるように、ノード101は、コンポーネント保持部111、コンポーネントデータベース112、ノードデータベース113、リンクデータベース114、自ノード効用情報記憶部115、他ノード効用情報記憶部116、コンポーネント実行処理部120、効用情報生成処理部130、代替コンポーネント探索処理部140、効用情報伝達処理部150などを備える。
なお、コンポーネント実行処理部120、代替コンポーネント探索処理部140、効用情報伝達処理部150などは、CORBA、DCOM、SOAPなどの分散オブジェクト技術を利用してコンピュータシステム上に実現されているとしてもよいし、これら以外の分散オブジェクト技術を利用してコンピュータシステム上に実現されているとしてもよい。ここでは、一例として、SOAPを利用してコンピュータシステム上に実現されているとする。
<コンポーネント保持部111>
コンポーネント保持部111は、自ノードに配置されている1以上のコンポーネントを保持している。
<コンポーネントデータベース112>
コンポーネントデータベース112には、自ノードに配置されているコンポーネントに関するコンポーネント情報が登録されている。
図14は、コンポーネントデータベース112で管理されているコンポーネント情報のデータ構造を示す図である。図14に示されるように、ここでは、一例として、コンポーネントデータベース112には、コンポーネント識別情報(フィールドF111)、ノード識別情報(実行ノード)(フィールドF112)、ノード識別情報(探索代理ノード)(フィールドF113)などが含まれるコンポーネント情報(レコードR111)が登録されている(テーブルT111)。
コンポーネント識別情報(フィールドF111)は、例えば、コンポーネント名のように、オーバレイネットワークを構成する1以上のコンポーネントの中でコンポーネントが識別される情報である。
ノード識別情報(実行ノード)(フィールドF112)は、コンポーネント識別情報によって特定されるコンポーネントが実行されたノードが識別される情報である。
ノード識別情報(探索代理ノード)(フィールドF113)は、コンポーネント識別情報によって特定されるコンポーネントと同一の機能を有するコンポーネントを探索するノードが識別される情報である。
<ノードデータベース113>
ノードデータベース113には、自ノードに隣接する他ノードに関するノード情報が登録されている。
図15は、ノードデータベース113で管理されているノード情報のデータ構造を示す図である。図15に示されるように、ここでは、一例として、ノードデータベース113には、ノード識別情報(フィールドF121)、ホップ数(フィールドF122)、RTT(フィールドF123)などが含まれるノード情報(レコードR121)が登録されている(テーブルT121)。
ノード識別情報(フィールドF121)は、例えば、ホスト名、IPアドレスのように、物理ネットワークを構成する1以上のノード中で各ノードが識別される情報である。
ホップ数(フィールドF122)は、自ノードから、ノード識別情報によって特定されるノードまでの間に経由するルータなどの数である。
RTT(フィールドF123)は、自ノードと、ノード識別情報によって特定されるノードとの間における往復伝送時間である。
<リンクデータベース114>
リンクデータベース114には、自ノードに配置されているコンポーネント(以下、「リンク元コンポーネント」と呼称する。)と、他ノードに配置されているコンポーネント(以下、「リンク先コンポーネント」と呼称する。)との間で形成されているリンクに関するリンク情報が登録されている。
図16は、リンクデータベース114で管理されているリンク情報のデータ構造を示す図である。図16に示されるように、ここでは、一例として、リンクデータベース114には、リンク元情報(フィールドF131)、リンク先情報(フィールドF132)などが含まれるリンク情報(レコードR131)が登録されている(テーブルT131)。
リンク元情報(フィールドF131)には、リンク元のコンポーネント識別情報、リンク元のノード識別情報などが含まれる。リンク先情報(フィールドF132)には、リンク先のコンポーネント識別情報、リンク先のノード識別情報などが含まれる。
なお、本実施の形態では、あらかじめ、コンピュータシステムを使用して、上記のオーバレイネットワークの構築手法に基づいたシミュレーションを実行する。実行して得られた結果に基づいて生成されたリンク情報が、リンクデータベース114に登録されているとする。
<自ノード効用情報記憶部115>
自ノード効用情報記憶部115は、自ノードで実行されたコンポーネントごとに効用情報を記憶する。
図17は、本実施の形態における自ノード効用情報記憶部115に記憶されている効用情報のデータ構造を示す図である。図17に示されるように、自ノード効用情報記憶部115は、自ノードで実行されたコンポーネントごとに効用情報(レコードR141)を記憶する(テーブルT141)。効用情報(レコードR141)には、自ノードで実行されたコンポーネントのコンポーネント識別情報(フィールドF141)、そのコンポーネントの効用値(フィールドF142)などが含まれる。
<他ノード効用情報記憶部116>
他ノード効用情報記憶部116は、他ノードで実行されたコンポーネントごとに効用情報を記憶する。
図18は、本実施の形態における他ノード効用情報記憶部116に記憶されている効用情報のデータ構造を示す図である。図18に示されるように、他ノード効用情報記憶部116は、他ノードで実行されたコンポーネントごとに効用情報(レコードR151)を記憶する(テーブルT151)。効用情報(レコードR151)には、他ノードで実行されたコンポーネントのコンポーネント識別情報(フィールドF151)、そのコンポーネントの効用値(フィールドF152)などが含まれる。
<詳細構成>
図19は、本実施の形態におけるノード101の詳細な構成を示す図である。図19に示されるように、ノード101は、下記の構成要素などを備える。
<コンポーネント実行処理部120>
コンポーネント実行処理部120は、コンポーネント実行部121、実行要求受信部122、実行応答送信部123などを備える。
<コンポーネント実行部121>
コンポーネント実行部121は、実行要求受信部122からコンポーネント識別情報を受け取る。受け取ったコンポーネント識別情報によって特定されるコンポーネントをコンポーネント保持部111から読み出す。読み出したコンポーネントを実行する。実行して得られた実行結果を実行応答送信部123に渡す。
<実行要求受信部122>
実行要求受信部122は、アプリケーションサーバ106などの送信元から送信された実行要求メッセージを受信する。受信した実行要求メッセージの送信元が特定されるノード識別情報を実行応答送信部123に渡す。受信した実行要求メッセージを解析する。解析した実行要求メッセージから、実行対象となるコンポーネントが特定されるコンポーネント識別情報を抽出する。抽出したコンポーネント識別情報をコンポーネント実行部121に渡す。
<実行応答送信部123>
実行応答送信部123は、実行要求受信部122からノード識別情報を受け取る。コンポーネント実行部121から実行結果を受け取る。受け取った実行結果を含む応答メッセージ(以下、「実行応答メッセージ」と呼称する。)を生成する。生成した実行応答メッセージを、受け取ったノード識別情報によって特定される送信先に送信する。
<効用情報生成処理部130>
効用情報生成処理部130は、計測部131、効用情報生成部132などを備える。
<計測部131>
計測部131は、コンポーネント実行部121でコンポーネントが実行されると、そのコンポーネントの実行に伴うパフォーマンスを計測する。そのコンポーネントが識別されるコンポーネント識別情報と、計測して得られた計測結果とを効用情報生成部132に渡す。
<効用情報生成部132>
効用情報生成部132は、計測部131からコンポーネント識別情報と計測結果とを受け取る。受け取った計測結果を使用して効用値を算出する。算出して得られた効用値を、受け取ったコンポーネント識別情報と対応付けて、受け取ったコンポーネント識別情報と、算出して得られた効用値とを含む効用情報を生成する。生成した効用情報を自ノード効用情報記憶部115に書き込む。
<代替コンポーネント探索処理部140>
代替コンポーネント探索処理部140は、代替コンポーネント探索部141、探索対象選出部142、効用情報書込部143、探索要求受信部144、探索応答送信部145、効用情報照会要求送信部146、効用情報照会応答受信部147などを備える。
<代替コンポーネント探索部141>
代替コンポーネント探索部141は、探索要求受信部144からコンポーネント識別情報を受け取る。受け取ったコンポーネント識別情報を探索対象選出部142に渡す。探索対象選出部142から選出終了通知を受け取る。1以上のコンポーネントにおいて効用値の高いコンポーネントが識別されるコンポーネント識別情報を、他ノード効用情報記憶部116に記憶されている複数の効用情報の中から選出する。選出したコンポーネント識別情報によって特定されるコンポーネント情報を、コンポーネントデータベース112に登録されている1以上のコンポーネント情報の中から選択する。選択したコンポーネント情報を探索応答送信部145に渡す。
<探索対象選出部142>
探索対象選出部142は、代替コンポーネント探索部141からコンポーネント識別情報を受け取る。受け取ったコンポーネント識別情報によって特定されるコンポーネントと同一の機能を有するコンポーネントのコンポーネント情報を、コンポーネントデータベース112に登録されている1以上のコンポーネント情報の中から選出する。選出したコンポーネント情報をリンク元情報に含むリンク情報を、リンクデータベース114に登録されている1以上のリンク情報の中から全て選出する。選出した1以上のリンク情報の各々に対して、下記の処理(1)を実行する。
(1)探索対象選出部142は、リンク情報のリンク先情報に含まれるノード識別情報とコンポーネント識別情報とを効用情報照会要求送信部146に渡す。
探索対象選出部142は、選出した1以上のリンク情報の全てに対して、上記の処理(1)を実行すると、選出終了通知を代替コンポーネント探索部141に渡す。
なお、探索対象選出部142は、所定の時間間隔で、リンクデータベース114に登録されている1以上のリンク情報の各々に対して、上記の処理(1)を実行し、他ノードと効用情報を定期的に遣り取りするとしてもよい。また、この場合において、代替コンポーネント探索部141からコンポーネント識別情報を受け取ると、上記(1)までの処理を省略して、即時に、選出終了通知を代替コンポーネント探索部141に渡すとしてもよい。
<効用情報書込部143>
効用情報書込部143は、効用情報照会応答受信部147から効用情報を受け取る。受け取った効用情報を他ノード効用情報記憶部116に書き込む。
<探索要求受信部144>
探索要求受信部144は、アプリケーションサーバ106などの送信元から送信された探索要求メッセージを受信する。受信した探索要求メッセージの送信元が特定されるノード識別情報を探索応答送信部145に渡す。受信した探索要求メッセージを解析する。解析した探索要求メッセージから、探索対象となるコンポーネントが特定されるコンポーネント識別情報を抽出する。抽出したコンポーネント識別情報を代替コンポーネント探索部141に渡す。
<探索応答送信部145>
探索応答送信部145は、探索要求受信部144からノード識別情報を受け取る。代替コンポーネント探索部141からコンポーネント情報を受け取る。受け取ったコンポーネント情報を含む応答メッセージ(以下、「探索応答メッセージ」と呼称する。)を生成する。生成した探索応答メッセージを、受け取ったノード識別情報によって特定される送信先に送信する。
<効用情報照会要求送信部146>
効用情報照会要求送信部146は、探索対象選出部142からノード識別情報とコンポーネント識別情報とを受け取る。受け取ったコンポーネント識別情報を含む要求メッセージ(以下、「効用情報照会要求メッセージ」と呼称する。)を生成する。生成した効用情報照会要求メッセージを、受け取ったノード識別情報によって特定される送信先に送信する。
<効用情報照会応答受信部147>
効用情報照会応答受信部147は、効用情報照会要求送信部146から送信された効用情報照会要求メッセージに対する応答メッセージ(以下、「効用情報照会応答メッセージ」と呼称する。)を受信する。受信した効用情報照会応答メッセージを解析する。解析した効用情報照会応答メッセージから、取得された効用情報を抽出する。抽出した効用情報を効用情報書込部143に渡す。
<効用情報伝達処理部150>
効用情報伝達処理部150は、効用情報読出部151、効用情報照会要求受信部152、効用情報照会応答送信部153などを備える。
<効用情報読出部151>
効用情報読出部151は、効用情報照会要求受信部152からコンポーネント識別情報を受け取る。受け取ったコンポーネント識別情報によって特定される効用情報を、自ノード効用情報記憶部115から読み出す。読み出した効用情報を効用情報照会応答送信部153に渡す。
<効用情報照会要求受信部152>
効用情報照会要求受信部152は、他ノードなどの送信元から送信された効用情報照会要求メッセージを受信する。受信した効用情報照会要求メッセージの送信元が特定されるノード識別情報を効用情報照会応答送信部153に渡す。受信した効用情報照会要求メッセージを解析する。解析した効用情報照会要求メッセージから、取得対象となる効用情報が特定されるコンポーネント識別情報を抽出する。抽出したコンポーネント識別情報を効用情報読出部151に渡す。
<効用情報照会応答送信部153>
効用情報照会応答送信部153は、効用情報照会要求受信部152からノード識別情報を受け取る。効用情報取得部から効用情報を受け取る。受け取った効用情報を含む効用情報照会応答メッセージを生成する。生成した効用情報照会応答メッセージを、受け取ったノード識別情報によって特定される送信先に送信する。
<アプリケーションサーバ>
次に、本実施の形態におけるアプリケーションサーバ106の構成について説明する。
図20は、本実施の形態におけるアプリケーションサーバ106の構成を示す図である。図20に示されるように、アプリケーションサーバ106は、実行対象コンポーネントデータベース161、実行結果記憶部162、サービス処理部170、探索処理部180などを備える。
<実行対象コンポーネントデータベース161>
実行対象コンポーネントデータベース161は、実行対象となるコンポーネントのコンポーネント情報が登録されている。
図21は、実行対象コンポーネントデータベース161で管理されているコンポーネント情報のデータ構造を示す図である。図21に示されるように、コンポーネントデータベース112で登録されているコンポーネント情報と同様のデータ構造である。
コンポーネント識別情報(フィールドF161)は、実行対象となるコンポーネントが識別されるコンポーネント識別情報である。
ノード識別情報(実行ノード)(フィールドF162)は、コンポーネント識別情報によって特定されるコンポーネントを実行するノードが識別されるノード識別情報である。
ノード識別情報(探索代理ノード)(フィールドF163)は、コンポーネント識別情報によって特定されるコンポーネントと同一の機能を有するコンポーネントを探索するノードが識別されるノード識別情報である。
<実行結果記憶部162>
実行結果記憶部162は、実行されたコンポーネントごとに実行結果情報を記憶する。
<サービス処理部170>
図20に戻り、サービス処理部170は、実行対象選出部171、実行結果書込部172、サービス要求受信部173、サービス応答送信部174、実行要求送信部175、実行応答受信部176などを備える。
<実行対象選出部171>
実行対象選出部171は、サービス要求受信部173から1以上のコンポーネント識別情報を受け取る。受け取った1以上のコンポーネント識別情報の各々に対して、下記の処理(1)を実行する。
(1)実行対象選出部171は、受け取ったコンポーネント識別情報によって特定されるノード識別情報を、コンポーネントデータベース112に登録されている1以上のコンポーネント情報の中から選出する。受け取ったコンポーネント識別情報と、選出したノード識別情報とを実行要求送信部175に渡す。
実行対象選出部171は、受け取った1以上のコンポーネント識別情報の全てに対して、上記(1)の処理を実行すると、応答通知と、受け取った1以上のコンポーネント識別情報とをサービス応答送信部174に渡す。
なお、実行対象選出部171は、実行応答受信部176から、エラー通知とコンポーネント識別情報とを受け取ると、上記の処理を停止し、停止通知をサービス応答送信部174に渡す。さらに、探索通知と、エラー通知と一緒に受け取ったコンポーネント識別情報とを探索要求送信部182に渡す。そして、コンポーネント情報登録部181から探索完了通知を受け取ると、再開通知をサービス応答送信部174に渡し、上記の処理を再開する。
<実行結果書込部172>
実行結果書込部172は、実行応答受信部176から実行結果情報を受け取る。受け取った実行結果情報を実行結果記憶部162に書き込む。
<サービス要求受信部173>
サービス要求受信部173は、ユーザ端末107などの送信元から送信されたサービス要求メッセージを受信する。受信したサービス要求メッセージの送信元が特定されるノード識別情報をサービス応答送信部174に渡す。受信したサービス要求メッセージを解析する。解析したサービス要求メッセージから、実行対象となる1以上のコンポーネントを特定する。特定した1以上のコンポーネントが個別に識別される1以上のコンポーネント識別情報を実行対象選出部171に渡す。
<サービス応答送信部174>
サービス応答送信部174は、サービス要求受信部173からノード識別情報を受け取る。実行対象選出部171から、応答通知と、1以上のコンポーネント識別情報とを受け取る。受け取った1以上のコンポーネント識別情報によって特定される1以上の実行結果を実行結果記憶部162から読み出す。読み出した1以上の実行結果を含む応答メッセージ(以下、「サービス応答メッセージ」と呼称する。)を生成する。生成したサービス応答メッセージを、受け取ったノード識別情報によって特定される送信先に送信する。
なお、サービス応答送信部174は、実行対象選出部171から停止通知を受け取ると、実行対象選出部171から再開通知を受け取るまで、サービスが停止していることを通知するメッセージをサービス応答メッセージとして生成する。生成したサービス応答メッセージを送信する。
<実行要求送信部175>
実行要求送信部175は、実行対象選出部171からノード識別情報とコンポーネント識別情報とを受け取る。受け取ったコンポーネント識別情報を含む要求メッセージ(以下、「実行要求メッセージ」と呼称する。)を生成する。生成した実行要求メッセージを、受け取ったノード識別情報によって特定される送信先に送信する。
<実行応答受信部176>
実行応答受信部176は、実行要求送信部175から送信された実行要求メッセージに対する応答メッセージ(以下、「実行応答メッセージ」と呼称する。)を受信する。受信した実行応答メッセージを解析する。解析した実行応答メッセージから、実行されたコンポーネントに対する実行結果情報を抽出する。抽出した実行結果情報を実行結果書込部172に渡す。
なお、実行応答受信部176は、実行応答メッセージがエラーメッセージである場合は、エラー通知と、特定したコンポーネントが識別されるコンポーネント識別情報とを実行対象選出部171に渡す。
<探索処理部180>
探索処理部180は、コンポーネント情報登録部181、探索要求送信部182、探索応答受信部183などを備える。
<コンポーネント情報登録部181>
コンポーネント情報登録部181は、探索応答受信部183からコンポーネント情報を受け取る。受け取ったコンポーネント情報を実行対象コンポーネントデータベース161に登録する。探索完了通知を実行対象選出部171に渡す。
なお、図21に示されるように、ここでは、一例として、実行対象コンポーネントデータベース161には、コンポーネントc4の代替コンポーネントを探索する前は、コンポーネントc4のコンポーネント情報が登録されているとする(T161)。この場合において、コンポーネントc4の代替コンポーネントとしてコンポーネントc2が選出されると、コンポーネント情報登録部181は、コンポーネントc2のコンポーネント情報を受け取る。コンポーネントc4のコンポーネント情報の代わりに、受け取ったコンポーネントc2のコンポーネント情報を、実行対象コンポーネントデータベース161に登録する(T162)。
<探索要求送信部182>
探索要求送信部182は、実行対象選出部171からノード識別情報とコンポーネント識別情報とを受け取る。受け取ったコンポーネント識別情報を含む要求メッセージ(以下、「探索要求メッセージ」と呼称する。)を生成する。生成した探索要求メッセージを、受け取ったノード識別情報によって特定される送信先に送信する。
<探索応答受信部183>
探索応答受信部183は、探索要求送信部182から送信された探索要求メッセージに対する応答メッセージ(以下、「探索応答メッセージ」と呼称する。)を受信する。受信した探索応答メッセージを解析する。解析した探索応答メッセージから、代替コンポーネントに関するコンポーネント情報を抽出する。抽出したコンポーネント情報をコンポーネント情報登録部181に渡す。
<動作>
次に、本実施の形態におけるWebサービスシステムにおいて代替コンポーネント探索時における処理について説明する。
<利用時>
図22は、本実施の形態におけるWebサービスシステムにおいてWebサービスの利用時におけるシーケンスを示す図である。図22に示されるように、ユーザ端末107は、アプリケーションサーバ106で提供されているWebサービスの利用に関するサービス要求をアプリケーションサーバ106に送信する(S121)。
ここでは、アプリケーションサーバ106で提供されているWebサービスに、コンポーネントb1、コンポーネントc4、コンポーネントe4が利用されているとする。この場合において、アプリケーションサーバ106は、ユーザ端末107からサービス要求を受信すると、下記の処理(1)〜(3)を個別に実行する。
(1)アプリケーションサーバ106は、コンポーネントb1が配置されているノード101に、コンポーネントb1の実行を要求する実行要求メッセージを送信する(S122)。これに対して、ノード101は、コンポーネントb1の実行を要求する実行要求メッセージをアプリケーションサーバ106から受信すると、コンポーネントb1を実行し、コンポーネントb1の実行結果を含む実行応答メッセージをアプリケーションサーバ106に送信する(S125)。アプリケーションサーバ106は、コンポーネントb1の実行結果を含む実行応答メッセージをノード101から受信する。
(2)アプリケーションサーバ106は、コンポーネントc4が配置されているノード104に、コンポーネントc4の実行を要求する実行要求メッセージを送信する(S123)。これに対して、ノード104は、コンポーネントc4の実行を要求する実行要求メッセージをアプリケーションサーバ106から受信すると、コンポーネントc4を実行し、コンポーネントc4の実行結果を含む実行応答メッセージをアプリケーションサーバ106に送信する(S126)。アプリケーションサーバ106は、コンポーネントc4の実行結果を含む実行応答メッセージをノード104から受信する。
(3)アプリケーションサーバ106は、コンポーネントe3が配置されているノード103に、コンポーネントe3の実行を要求する実行要求メッセージを送信する(S124)。これに対して、ノード103は、コンポーネントe3の実行を要求する実行要求メッセージをアプリケーションサーバ106から受信すると、コンポーネントe3を実行し、コンポーネントe3の実行結果を含む実行応答メッセージをアプリケーションサーバ106に送信する(S127)。アプリケーションサーバ106は、コンポーネントe3の実行結果を含む実行応答メッセージをノード103から受信する。
そして、アプリケーションサーバ106は、コンポーネントb1の実行結果、コンポーネントc4の実行結果、コンポーネントe3の実行結果を利用して生成したサービス応答メッセージをユーザ端末107に送信する(S128)。
ユーザ端末107は、アプリケーションサーバ106から送信されたサービス応答メッセージを受信する。
<探索時>
図23は、本実施の形態におけるWebサービスシステムにおいて代替コンポーネントの探索時におけるシーケンスを示す図である。図23に示されるように、アプリケーションサーバ106は、Webサービスで利用されている1以上のコンポーネントのいずれかが利用できなくなった場合は、サービスを停止する。
ここでは、コンポーネントc4が利用できなくなったとする。この場合において、アプリケーションサーバ106は、コンポーネントc4と対応付けられているノード105に、コンポーネントc4の代替コンポーネントの探索を要求する探索要求メッセージを送信する(S131)。これに対して、ノード105は、アプリケーションサーバ106から探索要求メッセージを受信すると、コンポーネントc4と同一の機能を有するコンポーネントc5とオーバレイネットワークにおいてリンクされているコンポーネントc2とコンポーネントc3との中から、コンポーネントc4の代替コンポーネントとして最適なコンポーネントを選択する。このとき、下記の処理(1),(2)を個別に実行する。
(1)ノード105は、コンポーネントc4と同一の機能を有するコンポーネントc2が配置されているノード102に、コンポーネントc2の効用情報を照会する照会要求メッセージを送信する(S132)。これに対して、ノード102は、コンポーネントc2の効用情報を照会する照会要求メッセージを受信すると、コンポーネントc2の効用情報を含む取得応答メッセージをノード105に送信する(S134)。ノード105は、コンポーネントc2の効用情報を含む取得応答メッセージを受信する。
(2)ノード105は、コンポーネントc4と同一の機能を有するコンポーネントc3が配置されているノード103に、コンポーネントc3の効用情報を照会する照会要求メッセージを送信する(S133)。これに対して、ノード103は、コンポーネントc3の効用情報を照会する照会要求メッセージを受信すると、コンポーネントc3の効用情報を含む取得応答メッセージをノード105に送信する(S135)。ノード105は、コンポーネントc3の効用情報を含む取得応答メッセージを受信する。
そして、ノード105は、コンポーネントc2の効用情報と、コンポーネントc3の効用情報とに基づいて、コンポーネントc2とコンポーネントc3との中から、効用値の高いコンポーネントc2を、コンポーネントc4の代替コンポーネントとして選択する。コンポーネントc2の識別情報を含む探索応答メッセージを送信する(S136)。
アプリケーションサーバ106は、ノード105からコンポーネントc2の識別情報を含む探索応答メッセージを受信すると、コンポーネントc4の代わりに、コンポーネントc2を利用して、サービスを再開する。
<再開時>
図24は、本実施の形態におけるWebサービスシステムにおいてWebサービスの再開時におけるシーケンスを示す図である。図24に示されるように、ユーザ端末107は、アプリケーションサーバ106で提供されているWebサービスの利用に関するサービス要求をアプリケーションサーバ106に送信する(S141)。
ここでは、アプリケーションサーバ106で提供されているWebサービスに、コンポーネントb1、コンポーネントe4が利用されているとする。また、コンポーネントc4の代わりに、コンポーネントc2が利用されているとする。この場合において、アプリケーションサーバ106は、ユーザ端末107からサービス要求を受信すると、下記の処理(1)〜(3)を個別に実行する。
(1)アプリケーションサーバ106は、コンポーネントb1が配置されているノード101に、コンポーネントb1の実行を要求する実行要求メッセージを送信する(S142)。これに対して、ノード101は、コンポーネントb1の実行を要求する実行要求メッセージをアプリケーションサーバ106から受信すると、コンポーネントb1を実行し、コンポーネントb1の実行結果を含む実行応答メッセージをアプリケーションサーバ106に送信する(S145)。アプリケーションサーバ106は、コンポーネントb1の実行結果を含む実行応答メッセージをノード101から受信する。
(2)アプリケーションサーバ106は、コンポーネントc2が配置されているノード102に、コンポーネントc2の実行を要求する実行要求メッセージを送信する(S143)。これに対して、ノード102は、コンポーネントc2の実行を要求する実行要求メッセージをアプリケーションサーバ106から受信すると、コンポーネントc2を実行し、コンポーネントc2の実行結果を含む実行応答メッセージをアプリケーションサーバ106に送信する(S146)。アプリケーションサーバ106は、コンポーネントc2の実行結果を含む実行応答メッセージをノード102から受信する。
(3)アプリケーションサーバ106は、コンポーネントe3が配置されているノード103に、コンポーネントe3の実行を要求する実行要求メッセージを送信する(S144)。これに対して、ノード103は、コンポーネントe3の実行を要求する実行要求メッセージをアプリケーションサーバ106から受信すると、コンポーネントe3を実行し、コンポーネントe3の実行結果を含む実行応答メッセージをアプリケーションサーバ106に送信する(S147)。アプリケーションサーバ106は、コンポーネントe3の実行結果を含む実行応答メッセージをノード103から受信する。
そして、アプリケーションサーバ106は、コンポーネントb1の実行結果、コンポーネントc2の実行結果、コンポーネントe3の実行結果を利用して生成したサービス応答メッセージをユーザ端末107に送信する(S148)。
ユーザ端末107は、アプリケーションサーバ106から送信されたサービス応答メッセージを受信する。
<まとめ>
以上、本実施の形態におけるWebサービスシステム100によれば、Webサービスで使用している1以上のコンポーネントのいずれかが使用できなくなっても、代わりのコンポーネントを即時に発見することができ、早期にWebサービスを再開することができる。このとき、探索代理ノードは、オーバレイネットワークを構成するコンポーネントを探索し、使用できなくなったコンポーネントと同一の機能を有するコンポーネントの効用情報に基づいて、効用の高いコンポーネントを選出する。これによって、即時に、使用できなくなったコンポーネントの代わりとなるコンポーネントを効率的に選出することができる。また、選出したコンポーネントのコンポーネント情報をアプリケーションサーバ106に通知することによって、アプリケーションサーバ106は、使用できなくなったコンポーネントの代わりとして最適なコンポーネントを特定することができ、早期にWebサービスを再開することができる。
(実施の形態2)
以下、本発明に係わる実施の形態2について図面を参照しながら説明する。
<概要>
本実施の形態におけるWebサービスシステムは、下記(c)に示される特徴を備える。
(c)複数のノードの各々は、自ノードに配置されている第1のコンポーネントと、他ノードに配置されている1以上のコンポーネントの中で第1のコンポーネントと同一の機能を有する第2のコンポーネントとの間で論理ネットワークを形成し、形成した論理ネットワークのリンクを示すリンク情報をリンクデータベースに登録するオーバレイネットワーク構築処理部を備える。
以上の点を踏まえて本実施の形態におけるWebサービスシステムについて説明する。なお、実施の形態1におけるWebサービスシステムと同一の構成要素については、同一の参照符号を付して説明を省略する。
<構成>
まず、本実施の形態におけるWebサービスシステムの構成について説明する。
本実施の形態におけるWebサービスシステムは、実施の形態1におけるWebサービスシステム100と比べて、新たにオーバレイネットワークを構築する機能がノード101〜105に備わる点が異なる。ここでは、新たにオーバレイネットワークを構築する機能がノード101に備わった場合を例にして、本実施の形態におけるノードについてのみ説明する。
次に、本実施の形態におけるノードの構成について説明する。
図25は、本実施の形態におけるノードの構成を示す図である。図25に示されるように、ノード201は、実施の形態1におけるノード101と比べて、オーバレイネットワーク構築処理部210を新たに備える点が異なる。
なお、オーバレイネットワーク構築処理部210は、CORBA、DCOM、SOAPなどの分散オブジェクト技術を利用してコンピュータシステム上に実現されているとしてもよいし、これら以外の分散オブジェクト技術を利用してコンピュータシステム上に実現されているとしてもよい。ここでは、一例として、SOAPを利用してコンピュータシステム上に実現されているとする。
<オーバレイネットワーク構築処理部>
図26は、本実施の形態におけるノードの詳細な構成を示す図である。図26に示されるように、オーバレイネットワーク構築処理部210は、MLN保持部211、LLN保持部212、リンク数情報記憶部213、リンク数順位記憶部214、ネットワーク距離順位記憶部215、期待値算出部216、オーバレイネットワーク構築部217などを備える。
さらに、オーバレイネットワーク構築処理部210は、削除対象選出部231、削除対象リンク元選出部232、リンク元コンポーネント選出部233、削除対象リンク先選出部234などを備える。
さらに、オーバレイネットワーク構築処理部210は、リンク元削除部241、リンク先削除部242、リンク削除確定部243、リンク削除要求送信部244、リンク削除応答受信部245、リンク削除要求受信部246、リンク削除応答送信部247などを備える。
さらに、オーバレイネットワーク構築処理部210は、追加対象選出部251、追加対象リンク先選出部252、リンク先ノード選出部253などを備える。
さらに、オーバレイネットワーク構築処理部210は、リンク元追加部261、リンク先追加部262、リンク追加確定部263、リンク追加要求送信部264、リンク追加応答受信部265、リンク追加要求受信部266、リンク追加応答送信部267などを備える。
さらに、オーバレイネットワーク構築処理部210は、リンク数情報読出部271、リンク数情報書込部272、リンク数情報照会要求送信部273、リンク数情報照会応答受信部274、リンク数情報照会要求受信部275、リンク数情報照会応答送信部276などを備える。
<MLN保持部211>
MLN保持部211は、自ノードに配置されている1以上のコンポーネントの総リンク数の最大値となるMLNを保持する。
<LLN保持部212>
LLN保持部212は、自ノードに配置されている1以上のコンポーネントの各リンク数の最小値となるLLNを保持する。
<リンク数情報記憶部213>
リンク数情報記憶部213は、リンク先ごとにリンク数情報を個別に記憶する。
<リンク数順位記憶部214>
リンク数順位記憶部214は、自ノードに配置されている1以上のコンポーネントをリンク数が多い順に並べたときの順位が特定されるリンク数順位情報を記憶する。
<ネットワーク距離順位記憶部215>
ネットワーク距離順位記憶部215は、ネットワークを構成する1以上の他ノードを自ノードから近い順に並べたときの順位が特定されるネットワーク距離順位情報を記憶する。
<期待値算出部216>
期待値算出部216は、自ノードに配置されているコンポーネントの平均リンク数の期待値を算出する。
<オーバレイネットワーク構築部217>
オーバレイネットワーク構築部217は、ノードに新たにコンポーネントが配置されると、ネットワーク距離順位情報を「1番近い」が示される値に設定する。リンク数順位情報を「1番多い」が示される値に設定する。下記のリンク形成処理を実行する。
オーバレイネットワーク構築部217は、MLN保持部211で保持されているMLNと、リンクデータベース114に登録されている1以上のリンク情報とに基づいて、ノードの総リンク数がMLN以上であるか否かを判定する。判定した結果に応じて、下記の処理(1),(2)のいずれかを実行する。
(1)ノードの総リンク数がMLN以上である場合は、オーバレイネットワーク構築部217は、ノードに新たに配置されたコンポーネントが特定されるコンポーネント識別情報を削除対象選出部231に渡す。削除対象選出部231から削除対象リンク情報を受け取る。受け取った削除対象リンク情報に応じて、下記の処理(1a),(1b)のいずれかを実行する。
(1a)受け取った削除対象リンク情報がヌル情報である場合、すなわち、削除対象となるリンクが存在しない場合は、リンク形成処理を終了する。
(1b)受け取った削除対象リンク情報がヌル情報でない場合、すなわち、削除対象となるリンクが存在する場合は、オーバレイネットワーク構築部217は、受け取った削除対象リンク情報をリンク元削除部241に渡す。リンク元削除部241から削除失敗通知を受け取ると、リンク形成処理を終了する。リンク元削除部241から削除成功通知を受け取ると、リンク形成処理を再度実行する。
(2)ノードの総リンク数がMLN以上でない場合は、オーバレイネットワーク構築部217は、ノードに新たに配置されたコンポーネントが特定されるコンポーネント識別情報を追加対象選出部251に渡す。追加対象選出部251から追加対象リンク情報を受け取る。受け取った追加対象リンク情報に応じて、下記の処理(2a),(2b)のいずれかを実行する。
(2a)受け取った追加対象リンク情報がヌル情報である場合、すなわち、追加対象となるリンクが存在しない場合は、リンク形成処理を終了する。
(2b)受け取った追加対象リンク情報がヌル情報でない場合、すなわち、追加対象となるリンクが存在する場合は、オーバレイネットワーク構築部217は、受け取った追加対象リンク情報をリンク元追加部261に渡す。リンク元追加部261から追加失敗通知を受け取ると、リンク形成処理を終了する。リンク元追加部261から追加成功通知を受け取ると、リンク形成処理を再度実行する。
<削除対象選出部231>
削除対象選出部231は、オーバレイネットワーク構築部217からコンポーネント識別情報を受け取る。受け取ったコンポーネント識別情報がリンク元情報に含まれるリンク情報を、リンクデータベース114に登録されている1以上のリンク情報の中から全て選出する。選出した1以上のリンク情報と、期待値算出部216で算出された期待値とに基づいて、受け取ったコンポーネント識別情報によって特定されるコンポーネントのリンク数が期待値以上であるか否かを判定する。判定した結果、リンク数が期待値以上である場合は、ヌル情報を削除対象リンク情報としてオーバレイネットワーク構築部217に渡す。一方、期待値以上でない場合は、下記の削除対象リンク選出処理を実行する。
削除対象選出部231は、自ノードが特定されるノード識別情報を削除対象リンク元選出部232に渡す。削除対象リンク元選出部232からリンク元情報を受け取る。受け取ったコンポーネント識別情報を削除対象リンク先選出部234に渡す。削除対象リンク先選出部234からリンク先情報を受け取る。受け取ったリンク元情報と、受け取ったリンク先情報とを含むリンク情報を生成する。受け取ったリンク元情報に応じて、下記の処理(1),(2)のいずれかを実行する。
(1)受け取ったリンク元情報がヌル情報である場合、すなわち、リンク元が存在しない場合は、削除対象選出部231は、リンク数順位情報を「1番多い」が示される値に設定する。ヌル情報を削除対象リンク情報としてオーバレイネットワーク構築部217に渡す。
(2)受け取ったリンク元情報がヌル情報でない場合、すなわち、リンク元が存在する場合は、削除対象選出部231は、リンク数順位情報を「次に多い」が示される値に設定する。受け取ったリンク先情報に応じて、下記の処理(2a),(2b)のいずれかを実行する。
(2a)受け取ったリンク先情報がヌル情報である場合、すなわち、リンク先が存在しない場合は、削除対象選出部231は、上記の削除対象リンク選出処理から再度実行する。
(2b)受け取ったリンク先情報がヌル情報でない場合、すなわち、リンク先が存在する場合は、削除対象選出部231は、生成したリンク情報を削除対象リンク情報としてオーバレイネットワーク構築部217に渡す。
なお、削除対象選出部231は、リンク先追加部262からコンポーネント識別情報を受け取ると、上記の処理と同様の処理を実行して、削除対象リンク情報をリンク先追加部262に渡す。
<削除対象リンク元選出部232>
削除対象リンク元選出部232は、削除対象選出部231からノード識別情報を受け取る。選出通知をリンク元コンポーネント選出部233に渡す。リンク元コンポーネント選出部233からコンポーネント識別情報を受け取る。受け取ったコンポーネント識別情報がヌル情報である場合は、ヌル情報をリンク元情報として削除対象選出部231に渡す。一方、受け取ったコンポーネント識別情報がヌル情報でない場合は、受け取ったコンポーネント識別情報と、受け取ったノード識別情報とを含むリンク元情報を生成する。生成したリンク元情報を削除対象選出部231に渡す。
<リンク元コンポーネント選出部233>
リンク元コンポーネント選出部233は、削除対象リンク元選出部232から選出通知を受け取る。リンクデータベース114に登録されている1以上のリンク情報に基づいて、リンク元における各コンポーネントのリンク数を算出する。算出して得られた結果に基づいて、リンク数順位記憶部214に記憶されているリンク数順位情報によって特定される順位のコンポーネントを特定する。特定したコンポーネントが識別されるコンポーネント識別情報を削除対象リンク元選出部232に渡す。
<削除対象リンク先選出部234>
削除対象リンク先選出部234は、削除対象選出部231からコンポーネント識別情報を受け取る。受け取ったコンポーネント識別情報がリンク元情報に含まれるリンク情報を、リンクデータベース114に登録されている1以上のリンク情報の中から全て選出する。選出した1以上のリンク情報の各々に対して、下記の処理(1)を実行する。
(1)削除対象リンク先選出部234は、選出したリンク情報のリンク先情報に含まれるノード識別情報とコンポーネント識別情報とをリンク数情報照会要求送信部273に渡す。
削除対象リンク先選出部234は、選出した1以上のリンク情報の全てに対して、上記(1)の処理を実行し、リンク数情報記憶部213にリンク数情報が存在する場合は、リンク数情報記憶部213に記憶されている1以上のリンク数情報に基づいて、選出した1以上のリンク情報によって特定される1以上のリンク先の中から、リンク数が最多のリンク先を選出する。選出したリンク先が特定されるリンク先情報を削除対象選出部231に渡す。
一方、削除対象リンク先選出部234は、リンク数情報記憶部213にリンク数情報が存在しない場合は、ヌル情報をリンク先情報として削除対象選出部231に渡す。
<リンク元削除部241>
リンク元削除部241は、オーバレイネットワーク構築部217から削除対象リンク情報を受け取る。受け取った削除対象リンク情報のリンク先情報に含まれるノード識別情報と、受け取った削除対象リンク情報とをリンク削除要求送信部244に渡す。リンク削除応答受信部245から削除確定リンク情報を受け取る。受け取った削除確定リンク情報に応じて、下記の処理(1),(2)のいずれかを実行する。
(1)受け取った削除確定リンク情報がヌル情報である場合、すなわち、削除対象となるリンクが存在しない場合は、リンク元削除部241は、削除失敗通知をオーバレイネットワーク構築部217に渡す。
(2)受け取った削除確定リンク情報がヌル情報でない場合、すなわち、削除対象となるリンクが存在する場合は、リンク元削除部241は、受け取った削除確定リンク情報を、リンクデータベース114に登録されている1以上のリンク情報から削除する。削除成功通知をオーバレイネットワーク構築部217に渡す。
なお、リンク元削除部241は、リンク先追加部262かた削除対象リンク情報を受け取ると、上記の処理と同様の処理を実行して、削除失敗通知および削除成功通知のいずれかをリンク先追加部262に渡す。
<リンク先削除部242>
リンク先削除部242は、リンク削除要求受信部246から削除対象リンク情報を受け取る。受け取った削除対象リンク情報をリンク削除確定部243に渡す。リンク削除確定部243から削除確定リンク情報を受け取る。受け取った削除確定リンク情報がヌル情報である場合は、受け取った削除確定リンク情報をリンク削除応答送信部247に渡す。一方、受け取った削除確定リンク情報がヌル情報でない場合は、受け取った削除確定リンク情報のリンク先情報に含まれるコンポーネント識別情報に基づいて、リンク先のノードに配置されている1以上のコンポーネントの中から、リンク元のコンポーネントと同一の機能を有するリンク先のコンポーネントを特定する。LLN保持部212で保持されているLLNと、リンクデータベース114に登録されている1以上のリンク情報とに基づいて、特定したリンク先のコンポーネントのリンク数がLLN以下であるか否かを判定する。判定した結果に応じて、下記の処理(1),(2)のいずれかを実行する。
(1)特定したリンク先のコンポーネントのリンク数がLLN以下である場合は、リンク先削除部242は、ヌル情報を削除確定リンク情報としてリンク削除応答送信部247に渡す。
(2)特定したリンク先のコンポーネントのリンク数がLLN以下でない場合は、リンク先削除部242は、受け取った削除確定リンク情報を、リンクデータベース114に登録されている1以上のリンク情報から削除する。受け取った削除確定リンク情報をリンク削除応答送信部247に渡す。
<リンク削除確定部243>
リンク削除確定部243は、リンク先削除部242から削除対象リンク情報を受け取る。受け取った削除対象リンク情報のリンク元情報に含まれるコンポーネント識別情報によって特定されるコンポーネントと同一の機能を有するコンポーネントのコンポーネント情報を、コンポーネントデータベース112に登録されている1以上のコンポーネント情報の中から選出する。選出したコンポーネント情報に応じて、下記の処理(1),(2)のいずれかを実行する。
(1)選出したコンポーネント情報がヌル情報である場合は、リンク削除確定部243は、ヌル情報を削除確定リンク情報としてリンク先削除部242に渡す。
(2)選出したコンポーネント情報がヌル情報でない場合は、リンク削除確定部243は、選出したコンポーネント情報におけるコンポーネント識別情報とノード識別情報(実行ノード)とを含むリンク先情報を生成する。受け取った削除対象リンク情報に含まれるリンク元情報と、生成したリンク先情報とを含むリンク情報を生成する。生成したリンク情報を削除確定リンク情報としてリンク先削除部242に渡す。
<リンク削除要求送信部244>
リンク削除要求送信部244は、リンク元削除部241からノード識別情報と削除対象リンク情報とを受け取る。受け取った削除対象リンク情報を含む要求メッセージ(以下、「リンク削除要求メッセージ」と呼称する。)を生成する。生成したリンク削除要求メッセージを、受け取ったノード識別情報によって特定される送信先に送信する。
<リンク削除応答受信部245>
リンク削除応答受信部245は、リンク削除要求送信部244から送信されたリンク削除要求メッセージに対する応答メッセージ(以下、「リンク削除応答メッセージ」と呼称する。)を受信する。受信したリンク削除応答メッセージを解析する。解析したリンク削除応答メッセージから削除確定リンク情報を抽出する。抽出した削除確定リンク情報をリンク元削除部241に渡す。
<リンク削除要求受信部246>
リンク削除要求受信部246は、他ノードのような送信元からリンク削除要求メッセージを受信する。受信したリンク削除要求メッセージの送信元が特定されるノード識別情報をリンク削除応答送信部247に渡す。受信したリンク削除要求メッセージを解析する。解析したリンク削除要求メッセージから削除対象リンク情報を抽出する。抽出した削除対象リンク情報をリンク先削除部242に渡す。
<リンク削除応答送信部247>
リンク削除応答送信部247は、リンク削除要求受信部246からノード識別情報を受け取る。リンク先削除部242から削除確定リンク情報を受け取る。受け取った削除確定リンク情報を含むリンク削除応答メッセージを生成する。生成したリンク削除応答メッセージを、受け取ったノード識別情報によって特定される送信先に送信する。
<追加対象選出部251>
追加対象選出部251は、オーバレイネットワーク構築部217からコンポーネント識別情報を受け取る。受け取ったコンポーネント識別情報と、自ノードが特定されるノード識別情報とを含むリンク元情報を生成する。受け取ったコンポーネント識別情報を追加対象リンク先選出部252に渡す。追加対象リンク先選出部252からリンク先情報を受け取る。生成したリンク元情報と、受け取ったリンク先情報とを含むリンク情報を生成する。受け取ったリンク先情報に応じて、下記の処理(1),(2)のいずれかを実行する。
(1)受け取ったリンク先情報がヌル情報である場合、すなわち、リンク先が存在しない場合は、追加対象選出部251は、ネットワーク距離順位情報を「1番近い」が示される値に設定する。ヌル情報を追加対象リンク情報としてオーバレイネットワーク構築部217に渡す。
(2)受け取ったリンク先情報がヌル情報でない場合、すなわち、リンク先が存在する場合は、追加対象選出部251は、ネットワーク距離順位情報を「次に近い」が示される値に設定する。生成したリンク情報を追加対象リンク情報としてオーバレイネットワーク構築部217に渡す。
<追加対象リンク先選出部252>
追加対象リンク先選出部252は、追加対象選出部251からコンポーネント識別情報を受け取る。選出通知をリンク先ノード選出部253に渡す。リンク先ノード選出部253からノード識別情報を受け取る。受け取ったノード識別情報がヌル情報である場合は、ヌル情報をリンク先情報として追加対象選出部251に渡す。
一方、受け取ったノード識別情報がヌル情報でない場合は、追加対象リンク先選出部252は、受け取ったコンポーネント識別情報をリンク先のコンポーネント識別情報として設定する。設定したリンク先のコンポーネント識別情報と、受け取ったノード識別情報とを含むリンク先情報を生成する。生成したリンク先情報を追加対象選出部251に渡す。
<リンク先ノード選出部253>
リンク先ノード選出部253は、追加対象リンク先選出部252から選出通知を受け取る。ノードデータベース113に登録されている1以上のノード情報に基づいて、リンク先における各ノードのネットワーク距離を算出する。算出して得られた結果に基づいて、ネットワーク距離順位記憶部215に記憶されているネットワーク距離順位情報によって特定される順位のノードを特定する。特定したノードが識別されるノード識別情報を追加対象リンク先選出部252に渡す。
なお、ここでは、話を簡潔にするために、ノード情報のRTTをネットワーク距離とする。RTTの値が大きければ、ネットワーク距離も長いとし、RTTの値が小さければ、ネットワーク距離も短いとする。
<リンク元追加部261>
リンク元追加部261は、オーバレイネットワーク構築部217から追加対象リンク情報を受け取る。受け取った追加対象リンク情報のリンク先情報に含まれるノード識別情報と、受け取った追加対象リンク情報とをリンク追加要求送信部264に渡す。リンク追加応答受信部265から追加確定リンク情報を受け取る。受け取った追加確定リンク情報に応じて、下記の処理(1),(2)のいずれかを実行する。
(1)受け取った追加確定リンク情報がヌル情報である場合、すなわち、追加対象となるリンクが存在しない場合は、リンク元追加部261は、追加失敗通知をオーバレイネットワーク構築部217に渡す。
(2)受け取った追加確定リンク情報がヌル情報でない場合、すなわち、追加対象となるリンクが存在する場合は、リンク元追加部261は、受け取った追加確定リンク情報を、リンクデータベース114に登録されている1以上のリンク情報に追加する。追加成功通知をオーバレイネットワーク構築部217に渡す。
<リンク先追加部262>
リンク先追加部262は、リンク追加要求受信部266から追加対象リンク情報を受け取る。受け取った追加対象リンク情報をリンク追加確定部263に渡す。リンク追加確定部263から追加確定リンク情報を受け取る。受け取った追加確定リンク情報がヌル情報である場合は、受け取った追加確定リンク情報をリンク追加応答送信部267に渡す。一方、受け取った追加確定リンク情報がヌル情報でない場合は、MLN保持部211で保持されているMLNと、リンクデータベース114に登録されている1以上のリンク情報とに基づいて、ノードの総リンク数がMLN以上であるか否かを判定する。判定した結果に応じて、下記の処理(1),(2)のいずれかを実行する。
(1)ノードの総リンク数がMLN以上である場合は、リンク先追加部262は、受け取った追加確定リンク情報のリンク先情報に含まれるコンポーネント識別情報を削除対象選出部231に渡す。削除対象選出部231から削除対象リンク情報を受け取る。受け取った削除対象リンク情報に応じて、下記の処理(1a),(1b)のいずれかを実行する。
(1a)受け取った削除対象リンク情報がヌル情報である場合は、リンク先追加部262は、ヌル情報を追加確定リンク情報としてリンク追加応答送信部267に渡す。
(1b)受け取った削除対象リンク情報がヌル情報でない場合は、リンク先追加部262は、受け取った削除対象リンク情報をリンク元削除部241に渡す。リンク元削除部241から削除失敗通知を受け取ると、ヌル情報を追加確定リンク情報としてリンク追加応答送信部267に渡す。リンク元削除部241から削除成功通知を受け取ると、受け取った追加確定リンク情報を、リンクデータベース114に登録されている1以上のリンク情報に追加する。受け取った追加確定リンク情報をリンク追加応答送信部267に渡す。
(2)ノードの総リンク数がMLN以上でない場合は、リンク先追加部262は、受け取った追加確定リンク情報を、リンクデータベース114に登録されている1以上のリンク情報に追加する。受け取った追加確定リンク情報をリンク追加応答送信部267に渡す。
<リンク追加確定部263>
リンク追加確定部263は、リンク先追加部262から追加対象リンク情報を受け取る。受け取った追加対象リンク情報のリンク元情報に含まれるコンポーネント識別情報によって特定されるコンポーネントと同一の機能を有するコンポーネントのコンポーネント情報を、コンポーネントデータベース112に登録されている1以上のコンポーネント情報の中から選出する。選出したコンポーネント情報に応じて、下記の処理(1),(2)のいずれかを実行する。
(1)選出したコンポーネント情報がヌル情報である場合は、リンク追加確定部263は、ヌル情報を追加確定リンク情報としてリンク先追加部262に渡す。
(2)選出したコンポーネント情報がヌル情報でない場合は、リンク追加確定部263は、選出したコンポーネント情報におけるコンポーネント識別情報とノード識別情報(実行ノード)とを含むリンク先情報を生成する。受け取った追加対象リンク情報に含まれるリンク元情報と、生成したリンク先情報とを含むリンク情報を生成する。生成したリンク情報を追加確定リンク情報としてリンク先追加部262に渡す。
<リンク追加要求送信部264>
リンク追加要求送信部264は、リンク元追加部261からノード識別情報と追加対象リンク情報とを受け取る。受け取った追加対象リンク情報を含む要求メッセージ(以下、「リンク追加要求メッセージ」と呼称する。)を生成する。生成したリンク追加要求メッセージを、受け取った追加対象リンク情報のリンク先情報に含まれるノード識別情報によって特定される送信先に送信する。
<リンク追加応答受信部265>
リンク追加応答受信部265は、リンク追加要求送信部264から送信されたリンク追加要求メッセージに対する応答メッセージ(以下、「リンク追加応答メッセージ」と呼称する。)を受信する。受信したリンク追加応答メッセージを解析する。解析したリンク追加応答メッセージから追加確定リンク情報を抽出する。抽出した追加確定リンク情報をリンク元追加部261に渡す。
<リンク追加要求受信部266>
リンク追加要求受信部266は、他ノードのような送信元からリンク追加要求メッセージを受信する。受信したリンク追加要求メッセージの送信元が特定されるノード識別情報をリンク追加応答送信部267に渡す。受信したリンク追加要求メッセージを解析する。解析したリンク追加要求メッセージから追加対象リンク情報を抽出する。抽出した追加対象リンク情報をリンク先追加部262に渡す。
<リンク追加応答送信部267>
リンク追加応答送信部267は、リンク追加要求受信部266からノード識別情報を受け取る。リンク先追加部262から追加確定リンク情報を受け取る。受け取った追加確定リンク情報を含むリンク追加応答メッセージを生成する。生成したリンク追加応答メッセージを、受け取ったノード識別情報によって特定される送信先に送信する。
<リンク数情報読出部271>
リンク数情報読出部271は、リンク数情報照会要求受信部275からコンポーネント識別情報を受け取る。コンポーネントデータベース112に登録されている1以上のコンポーネント情報に基づいて、自ノードに配置されている1以上のコンポーネントの中から、受け取ったコンポーネント識別情報によって特定されるコンポーネントと同一の機能を有するコンポーネントを特定する。リンクデータベース114に登録されている1以上のリンク情報に基づいて、特定したコンポーネントのリンク数を算出する。算出したコンポーネントが識別されるコンポーネント識別情報と、自ノードが特定されるノード識別情報と、特定したリンク数とを含むリンク数情報を生成する。生成したリンク数情報をリンク数情報照会応答送信部276に渡す。
<リンク数情報書込部272>
リンク数情報書込部272は、リンク数情報照会応答受信部274からリンク数情報を受け取る。受け取ったリンク数情報をリンク数情報記憶部213に書き込む。
<リンク数情報照会要求送信部273>
リンク数情報照会要求送信部273は、削除対象リンク先選出部234からノード識別情報とコンポーネント識別情報とを受け取る。受け取ったコンポーネント識別情報を含む要求メッセージ(以下、「リンク数照会要求メッセージ」と呼称する。)を生成する。生成したリンク数照会要求メッセージを、受け取ったノード識別情報によって特定される送信先に送信する。
<リンク数情報照会応答受信部274>
リンク数情報照会応答受信部274は、リンク数情報照会要求送信部273から送信されたリンク数照会要求メッセージに対する応答メッセージ(以下、「リンク数照会応答メッセージ」と呼称する。)を受信する。受信したリンク数照会応答メッセージを解析する。解析したリンク数照会応答メッセージからリンク数情報を抽出する。抽出したリンク数情報をリンク数情報書込部272に渡す。
<リンク数情報照会要求受信部275>
リンク数情報照会要求受信部275は、他ノードのような送信元からリンク数照会要求メッセージを受信する。受信したリンク数照会要求メッセージの送信元が特定されるノード識別情報をリンク数情報照会応答送信部276に渡す。受信したリンク数照会要求メッセージを解析する。解析したリンク数照会要求メッセージからコンポーネント識別情報を抽出する。抽出したコンポーネント識別情報をリンク数情報読出部271に渡す。
<リンク数情報照会応答送信部276>
リンク数情報照会応答送信部276は、リンク数情報照会要求受信部275からノード識別情報を受け取る。リンク数情報読出部271からリンク数情報を受け取る。受け取ったリンク数情報を含むリンク数照会応答メッセージを生成する。生成したリンク数照会応答メッセージを、受け取ったノード識別情報によって特定される送信先に送信する。
<動作>
次に、本実施の形態におけるWebサービスシステムの動作について説明する。
<オーバレイネットワーク構築処理>
図27は、本実施の形態におけるオーバレイネットワーク構築処理を示す図である。図27に示されるように、オーバレイネットワーク構築部217は、ノードに新たにコンポーネントが配置されると(S201:Yes)、ネットワーク距離順位情報を「1番近い」が示される値に設定する(S202)。リンク数順位情報を「1番多い」が示される値に設定する(S203)。下記のリンク形成処理(S204)〜(S212)を実行する。
オーバレイネットワーク構築部217は、MLN保持部211で保持されているMLNと、リンクデータベース114に登録されている1以上のリンク情報とに基づいて、ノードの総リンク数がMLN以上であるか否かを判定する。判定した結果に応じて、下記の処理(1),(2)のいずれかを実行する(S204)。
(1)ノードの総リンク数がMLN以上である場合は(S204:Yes)、オーバレイネットワーク構築部217は、ノードに新たに配置されたコンポーネントが特定されるコンポーネント識別情報を削除対象選出部231に渡し、削除対象選出処理を実行する(S205)。削除対象選出部231から削除対象リンク情報を受け取る。受け取った削除対象リンク情報に応じて、下記の処理(1a),(1b)のいずれかを実行する(S206)。
(1a)受け取った削除対象リンク情報がヌル情報である場合、すなわち、削除対象となるリンクが存在しない場合は(S206:Yes)、リンク形成処理を終了する。
(1b)受け取った削除対象リンク情報がヌル情報でない場合、すなわち、削除対象となるリンクが存在する場合は(S206:No)、オーバレイネットワーク構築部217は、受け取った削除対象リンク情報をリンク元削除部241に渡し、リンク元削除処理を実行する(S207)。リンク元削除部241から削除失敗通知を受け取ると(S208:Yes)、リンク形成処理を終了する。リンク元削除部241から削除成功通知を受け取ると(S208:No)、リンク形成処理を再度実行する(S204)。
(2)ノードの総リンク数がMLN以上でない場合は(S204:No)、オーバレイネットワーク構築部217は、ノードに新たに配置されたコンポーネントが特定されるコンポーネント識別情報を追加対象選出部251に渡し、追加対象選出処理を実行する(S209)。追加対象選出部251から追加対象リンク情報を受け取る。受け取った追加対象リンク情報に応じて、下記の処理(2a),(2b)のいずれかを実行する(S210)。
(2a)受け取った追加対象リンク情報がヌル情報である場合、すなわち、追加対象となるリンクが存在しない場合は(S210:Yes)、リンク形成処理を終了する。
(2b)受け取った追加対象リンク情報がヌル情報でない場合、すなわち、追加対象となるリンクが存在する場合は(S210:No)、オーバレイネットワーク構築部217は、受け取った追加対象リンク情報をリンク元追加部261に渡し、リンク元追加処理を実行する(S211)。リンク元追加部261から追加失敗通知を受け取ると(S212:Yes)、リンク形成処理を終了する。リンク元追加部261から追加成功通知を受け取ると(S212:No)、リンク形成処理を再度実行する(S204)。
<削除対象選出処理>
次に、本実施の形態におけるリンク元のノードで実行される削除対象選出処理について説明する。
図28は、本実施の形態におけるリンク元のノードで実行される削除対象選出処理を示す図である。図28に示されるように、削除対象選出部231は、オーバレイネットワーク構築部217からコンポーネント識別情報を受け取る。受け取ったコンポーネント識別情報がリンク元情報に含まれるリンク情報を、リンクデータベース114に登録されている1以上のリンク情報の中から全て選出する(S221)。選出した1以上のリンク情報と、期待値算出部216で算出された期待値とに基づいて、受け取ったコンポーネント識別情報によって特定されるコンポーネントのリンク数が期待値以上であるか否かを判定する(S222)。判定した結果、リンク数が期待値以上である場合は(S222:Yes)、ヌル情報を削除対象リンク情報としてオーバレイネットワーク構築部217に渡す(S223)。一方、期待値以上でない場合は(S222:No)、下記の削除対象リンク選出処理(S224)〜(S231)を実行する。
削除対象選出部231は、自ノードが特定されるノード識別情報を削除対象リンク元選出部232に渡し、削除対象となるリンク元を選出する(S224)。削除対象リンク元選出部232からリンク元情報を受け取る。受け取ったコンポーネント識別情報を削除対象リンク先選出部234に渡し、削除対象となるリンク先を選出する(S225)。削除対象リンク先選出部234からリンク先情報を受け取る。受け取ったリンク元情報と、受け取ったリンク先情報とを含むリンク情報を生成する(S226)。受け取ったリンク元情報に応じて、下記の処理(1),(2)のいずれかを実行する(S227)。
(1)受け取ったリンク元情報がヌル情報である場合、すなわち、リンク元が存在しない場合は(S227:Yes)、削除対象選出部231は、リンク数順位情報を「1番多い」が示される値に設定する(S228)。ヌル情報を削除対象リンク情報としてオーバレイネットワーク構築部217に渡す(S223)。
(2)受け取ったリンク元情報がヌル情報でない場合、すなわち、リンク元が存在する場合は(S227:No)、削除対象選出部231は、リンク数順位情報を「次に多い」が示される値に設定する(S229)。受け取ったリンク先情報に応じて、下記の処理(2a),(2b)のいずれかを実行する(S230)。
(2a)受け取ったリンク先情報がヌル情報である場合、すなわち、リンク先が存在しない場合は(S230:Yes)、削除対象選出部231は、上記の削除対象リンク選出処理から再度実行する(S224)。
(2b)受け取ったリンク先情報がヌル情報でない場合、すなわち、リンク先が存在する場合は(S230:No)、削除対象選出部231は、生成したリンク情報を削除対象リンク情報としてオーバレイネットワーク構築部217に渡す(S231)。
<リンク元削除処理>
次に、本実施の形態におけるリンク元のノードで実行されるリンク元削除処理について説明する。
図29は、本実施の形態におけるリンク元のノードで実行されるリンク元削除処理を示す図である。図29に示されるように、リンク元削除部241は、オーバレイネットワーク構築部217から削除対象リンク情報を受け取る。受け取った削除対象リンク情報をリンク削除要求送信部244に渡し、削除対象となるリンク先のノードにリンク先削除処理を実行させる(S241)。リンク削除応答受信部245から削除確定リンク情報を受け取る。受け取った削除確定リンク情報に応じて、下記の処理(1),(2)のいずれかを実行する(S242)。
(1)受け取った削除確定リンク情報がヌル情報である場合、すなわち、削除対象となるリンクが存在しない場合は(S242:Yes)、リンク元削除部241は、削除失敗通知をオーバレイネットワーク構築部217に渡す(S243)。
(2)受け取った削除確定リンク情報がヌル情報でない場合、すなわち、削除対象となるリンクが存在する場合は(S242:No)、リンク元削除部241は、受け取った削除確定リンク情報を、リンクデータベース114に登録されている1以上のリンク情報から削除する(S244)。削除成功通知をオーバレイネットワーク構築部217に渡す(S245)。
<リンク先削除処理>
次に、本実施の形態におけるリンク先のノードで実行されるリンク先削除処理について説明する。
図30は、本実施の形態におけるリンク先のノードで実行されるリンク先削除処理を示す図である。図30に示されるように、リンク先削除部242は、リンク削除要求受信部246から削除対象リンク情報を受け取る。受け取った削除対象リンク情報をリンク削除確定部243に渡し、削除対象となるリンクを確定する(S251)。リンク削除確定部243から削除確定リンク情報を受け取る。受け取った削除確定リンク情報がヌル情報である場合は(S252:Yes)、受け取った削除確定リンク情報をリンク削除応答送信部247に渡す(S253)。一方、受け取った削除確定リンク情報がヌル情報でない場合は(S252:No)、受け取った削除確定リンク情報のリンク先情報に含まれるコンポーネント識別情報に基づいて、リンク先のノードに配置されている1以上のコンポーネントの中から、リンク元のコンポーネントと同一の機能を有するリンク先のコンポーネントを特定する(S254)。LLN保持部212で保持されているLLNと、リンクデータベース114に登録されている1以上のリンク情報とに基づいて、特定したリンク先のコンポーネントのリンク数がLLN以下であるか否かを判定する。判定した結果に応じて、下記の処理(1),(2)のいずれかを実行する(S255)。
(1)特定したリンク先のコンポーネントのリンク数がLLN以下である場合は(S255:Yes)、リンク先削除部242は、ヌル情報を削除確定リンク情報としてリンク削除応答送信部247に渡す(S253)。
(2)特定したリンク先のコンポーネントのリンク数がLLN以下でない場合は(S255:No)、リンク先削除部242は、受け取った削除確定リンク情報を、リンクデータベース114に登録されている1以上のリンク情報から削除する(S256)。受け取った削除確定リンク情報をリンク削除応答送信部247に渡す(S257)。
<追加対象選出処理>
次に、本実施の形態におけるリンク元のノードで実行される追加対象選出処理について説明する。
図31は、本実施の形態におけるリンク元のノードで実行される追加対象選出処理を示す図である。図31に示されるように、追加対象選出部251は、オーバレイネットワーク構築部217からコンポーネント識別情報を受け取る。受け取ったコンポーネント識別情報と、自ノードが特定されるノード識別情報とを含むリンク元情報を生成し、追加対象となるリンク元を設定する(S261)。受け取ったコンポーネント識別情報を追加対象リンク先選出部252に渡し、追加対象となるリンク先を選出する(S262)。追加対象リンク先選出部252からリンク先情報を受け取る。生成したリンク元情報と、受け取ったリンク先情報とを含むリンク情報を生成する(S263)。受け取ったリンク先情報に応じて、下記の処理(1),(2)のいずれかを実行する(S264)。
(1)受け取ったリンク先情報がヌル情報である場合、すなわち、リンク先が存在しない場合は(S264:Yes)、追加対象選出部251は、ネットワーク距離順位情報を「1番近い」が示される値に設定する(S265)。ヌル情報を追加対象リンク情報としてオーバレイネットワーク構築部217に渡す(S266)。
(2)受け取ったリンク先情報がヌル情報でない場合、すなわち、リンク先が存在する場合は(S264:No)、追加対象選出部251は、ネットワーク距離順位情報を「次に近い」が示される値に設定する(S267)。生成したリンク情報を追加対象リンク情報としてオーバレイネットワーク構築部217に渡す(S268)。
<リンク元追加処理>
次に、本実施の形態におけるリンク元のノードで実行されるリンク元追加処理について説明する。
図32は、本実施の形態におけるリンク元のノードで実行されるリンク元追加処理を示す図である。図32に示されるように、リンク元追加部261は、オーバレイネットワーク構築部217から追加対象リンク情報を受け取る。受け取った追加対象リンク情報をリンク追加要求送信部264に渡し、追加対象となるリンク先のノードにリンク先追加処理を実行させる(S281)。リンク追加応答受信部265から追加確定リンク情報を受け取る。受け取った追加確定リンク情報に応じて、下記の処理(1),(2)のいずれかを実行する(S282)。
(1)受け取った追加確定リンク情報がヌル情報である場合、すなわち、追加対象となるリンクが存在しない場合は(S282:Yes)、追加失敗通知をオーバレイネットワーク構築部217に渡す(S283)。
(2)受け取った追加確定リンク情報がヌル情報でない場合、すなわち、追加対象となるリンクが存在する場合は(S282:No)、受け取った追加確定リンク情報を、リンクデータベース114に登録されている1以上のリンク情報に追加する(S284)。追加成功通知をオーバレイネットワーク構築部217に渡す(S285)。
<リンク先追加処理>
次に、本実施の形態におけるリンク先のノードで実行されるリンク先追加処理について説明する。
図33は、本実施の形態におけるリンク先のノードで実行されるリンク先追加処理を示す図である。図33に示されるように、リンク先追加部262は、リンク追加要求受信部266から追加対象リンク情報を受け取る。受け取った追加対象リンク情報をリンク追加確定部263に渡し、追加対象となるリンクを確定する(S291)。リンク追加確定部263から追加確定リンク情報を受け取る。受け取った追加確定リンク情報がヌル情報である場合、すなわち、追加対象となるリンクが存在しない場合は(S292:Yes)、ヌル情報を追加確定リンク情報としてリンク追加応答送信部267に渡す(S293)。一方、受け取った追加確定リンク情報がヌル情報でない場合、すなわち、追加対象となるリンクが存在する場合は(S292:No)、MLN保持部211で保持されているMLNと、リンクデータベース114に登録されている1以上のリンク情報とに基づいて、ノードの総リンク数がMLN以上であるか否かを判定する。判定した結果に応じて、下記の処理(1),(2)のいずれかを実行する(S294)。
(1)ノードの総リンク数がMLN以上である場合は(S294:Yes)、リンク先追加部262は、受け取った追加確定リンク情報のリンク先情報に含まれるコンポーネント識別情報を削除対象選出部231に渡し、削除対象選出処理を実行する(S295)。削除対象選出部231から削除対象リンク情報を受け取る。受け取った削除対象リンク情報に応じて、下記の処理(1a),(1b)のいずれかを実行する(S296)。
(1a)受け取った削除対象リンク情報がヌル情報である場合、すなわち、削除対象となるリンクが存在しない場合は(S296:Yes)、リンク先追加部262は、ヌル情報を追加確定リンク情報としてリンク追加応答送信部267に渡す(S293)。
(1b)受け取った削除対象リンク情報がヌル情報でない場合、すなわち、削除対象となるリンクが存在する場合は(S296:No)、リンク先追加部262は、受け取った削除対象リンク情報をリンク元削除部241に渡し、リンク元削除処理を実行する(S297)。リンク元削除部241から削除失敗通知を受け取ると(S298:Yes)、ヌル情報を追加確定リンク情報としてリンク追加応答送信部267に渡す(S293)。リンク元削除部241から削除成功通知を受け取ると(S298:No)、受け取った追加確定リンク情報を、リンクデータベース114に登録されている1以上のリンク情報に追加する(S299)。受け取った追加確定リンク情報をリンク追加応答送信部267に渡す(S300)。
(2)ノードの総リンク数がMLN以上でない場合は(S294:No)、リンク先追加部262は、受け取った追加確定リンク情報を、リンクデータベース114に登録されている1以上のリンク情報に追加する(S299)。受け取った追加確定リンク情報をリンク追加応答送信部267に渡す(S300)。
<シーケンス>
次に、本実施の形態におけるオーバレイネットワークの構築時におけるノード間のシーケンスについて説明する。ここでは、一例として、図8〜図11に示されるように、新たにコンポーネントb4がノード4に配置された場合について、ノード間の相互作用について説明する。
なお、物理ネットワークにおいて、ノード4から近い順で、ノード1、ノード2、ノード5、ノード3が配置されているものとする。
図34〜図36は、本実施の形態におけるオーバレイネットワークの構築時におけるノード間のシーケンスを示す図である。図34に示されるように、この場合において、ノード104は、リンク追加処理時に、下記の処理(1)〜(4)を実行する。
(1)ノード104は、コンポーネントb1が配置されているノード101に、コンポーネントb4とコンポーネントb1との間でリンクを形成することを要求するリンク追加要求メッセージを送信する(S311)。これに対して、ノード101は、リンク追加要求メッセージをノード104から受信すると、リンク先追加処理を実行する。実行した結果、ノード101に設定された総リンク数の上限値を上回らないことから、コンポーネントb4とコンポーネントb1との間でリンクを形成したことが示されるリンク追加応答メッセージをノード104に送信する(S312)。ノード104は、リンク追加応答メッセージをノード101から受信する。
(2)ノード104は、コンポーネントb2が配置されているノード102に、コンポーネントb4とコンポーネントb2との間でリンクを形成することを要求するリンク追加要求メッセージを送信する(S313)。これに対して、ノード102は、リンク追加要求メッセージをノード104から受信すると、リンク先追加処理を実行する。実行した結果、ノード102に設定された総リンク数の上限値を上回らないことから、コンポーネントb4とコンポーネントb2との間でリンクを形成したことが示されるリンク追加応答メッセージをノード104に送信する(S314)。ノード104は、リンク追加応答メッセージをノード102から受信する。
(3)ノード104は、コンポーネントb5が配置されているノード105に、コンポーネントb4とコンポーネントb5との間でリンクを形成することを要求するリンク追加要求メッセージを送信する(S315)。これに対して、ノード105は、リンク追加要求メッセージをノード104から受信すると、リンク先追加処理を実行する。実行した結果、ノード105に設定された総リンク数の上限値を上回ることから、他のリンクを削除することを試みる。
このとき、図35に示されるように、ノード105は、削除対象選出処理時に、下記の処理(3a)〜(3c)を個別に実行する。
(3a)ノード105は、コンポーネントb1が配置されているノード101に、コンポーネントb1のリンク数の照会を要求するリンク数情報照会要求メッセージを送信する(S321)。これに対して、ノード101は、リンク数情報照会要求メッセージをノード105から受信すると、コンポーネントb1のリンク数を算出し、算出したリンク数(4本)を含むリンク数情報照会応答メッセージをノード105に送信する(S324)。ノード105は、リンク数情報照会応答メッセージをノード101から受信する。
(3b)ノード105は、コンポーネントb2が配置されているノード102に、コンポーネントb2のリンク数の照会を要求するリンク数情報照会要求メッセージを送信する(S322)。これに対して、ノード102は、リンク数情報照会要求メッセージをノード105から受信すると、コンポーネントb2のリンク数を算出し、算出したリンク数(3本)を含むリンク数情報照会応答メッセージをノード105に送信する(S325)。ノード105は、リンク数情報照会応答メッセージをノード102から受信する。
(3c)ノード105は、コンポーネントb3が配置されているノード103に、コンポーネントb3のリンク数の照会を要求するリンク数情報照会要求メッセージを送信する(S323)。これに対して、ノード103は、リンク数情報照会要求メッセージをノード105から受信すると、コンポーネントb3のリンク数を算出し、算出したリンク数(2本)を含むリンク数情報照会応答メッセージをノード105に送信する(S326)。ノード105は、リンク数情報照会応答メッセージをノード103から受信する。
そして、ノード105は、コンポーネントb1のリンク数(4本)、コンポーネントb2のリンク数(3本)、コンポーネントb3のリンク数(2本)をリンク数情報記憶部213にリンク先ごとに記憶する。削除対象としてリンク数が1番多いコンポーネントb1を選出する。
さらに、図36に示されるように、ノード105は、コンポーネントb1が配置されているノード101に、コンポーネントb5とコンポーネントb1との間で形成されたリンクを削除することを要求するリンク削除要求メッセージを送信する(S331)。これに対して、ノード101は、リンク削除要求メッセージをノード105から受信すると、リンク先削除処理を実行する。実行した結果、ノード101に設定されたリンク数の下限値を下回らないことから、コンポーネントb5とコンポーネントb1との間で形成されたリンクを削除したことを示すリンク削除応答メッセージをノード105に送信する(S332)。ノード105は、リンク削除応答メッセージを101から受信する。
これに伴い、ノード105は、ノード105に設定された総リンク数の上限値を上回らないことから、コンポーネントb4とコンポーネントb5との間でリンクを形成したことが示されるリンク追加応答メッセージをノード104に送信する(S316)。ノード104は、リンク追加応答メッセージをノード105から受信する。
(4)ノード104は、コンポーネントb3が配置されているノード103に、コンポーネントb1とコンポーネントb3との間でリンクを形成することを要求するリンク追加要求メッセージを送信する(S317)。これに対して、ノード103は、リンク追加要求メッセージをノード104から受信すると、リンク先追加処理を実行する。実行した結果、ノード103に設定された総リンク数の上限値を上回らないことから、コンポーネントb4とコンポーネントb3との間でリンクを形成したことが示されるリンク追加応答メッセージをノード104に送信する(S318)。ノード104は、リンク追加応答メッセージをノード103から受信する。
<まとめ>
以上、本実施の形態におけるWebサービスシステムによれば、コンポーネントが追加されたり、削除されたりしても、各ノードが連携して動的にオーバレイネットワークを構築することができる。また、自律分散処理を基本とするため、単一故障点が存在せず、複数の障害に対する耐性を有している。
(その他)
なお、ノード101、またはノード201などは、CPU(Central Processing Unit)、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、ネットワークアダプタなどを備えるとしてもよい。さらに、HDDなどに、ノード101、またはノード201などを制御するプログラム(以下、「ノード制御プログラム」と呼称する。)がインストールされており、ノード制御プログラムが実行されることによって、ノード101、またはノード201などの各機能が実現されるとしてもよい。
なお、ノード101、またはノード201などは、デジタルビデオカメラ、デジタルレコーダ、デジタルテレビ、ゲーム機、ホームサーバ、IP電話機、携帯電話機などのような組み込みシステムとしてもよい。
また、ノード101、またはノード201などは、複数のコンピュータシステムによって構成されているとしてもよい。この場合において、CORBA、DCOM、SOAPなどに基づいて、複数のコンピュータシステムに分散されたノード101、またはノード201などの各機能間でメッセージ通信が行われるとしてもよい。
また、ノード101、またはノード201などは、Webサーバとデータベースサーバとから構成されているとしてもよい。この場合において、少なくともコンポーネント実行処理部120、効用情報生成処理部130、代替コンポーネント探索処理部140、効用情報伝達処理部150、オーバレイネットワーク構築処理部210などがWebサーバにおいて実現されるとしてもよい。また、コンポーネントデータベース112、ノードデータベース113、リンクデータベース114などがデータベースサーバにおいて実現されるとしてもよい。さらに、WebサーバからデータベースサーバへのアクセスにODBC(Open DataBase Connectivity)やJDBC(Java(登録商標) DataBase Connectivity)などを用いるとしてもよい。
また、RFC(Request for Comments)2246において規定されているTLS(Transport Layer Security)に基づいて、ノード101、またはノード201などと各アプリケーションサーバ間とでセキュリティ通信が行われるとしてもよい。また、XML暗号化(http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/)に基づいて、データを暗号化し、暗号化したデータを送受信することで、セキュリティ通信が行われるとしてもよい。
なお、アプリケーションサーバ106は、CPU、RAM、ROM、HDD、ネットワークアダプタなどを備えるとしてもよい。さらに、HDDなどに、アプリケーションサーバ106を制御するプログラム(以下、「アプリケーションサーバ制御プログラム」と呼称する。)がインストールされており、アプリケーションサーバ制御プログラムが実行されることによって、アプリケーションサーバ106の各機能が実現されるとしてもよい。
なお、アプリケーションサーバ106は、デジタルビデオカメラ、デジタルレコーダ、デジタルテレビ、ゲーム機、ホームサーバ、IP電話機、携帯電話機などのような組み込みシステムとしてもよい。
また、アプリケーションサーバ106は、複数のコンピュータシステムによって構成されているとしてもよい。この場合において、CORBA、DCOM、SOAPなどに基づいて、複数のコンピュータシステムに分散されたアプリケーションサーバ106の各機能間でメッセージ通信が行われるとしてもよい。
また、アプリケーションサーバ106は、Webサーバとデータベースサーバとから構成されているとしてもよい。この場合において、少なくともサービス処理部170、探索処理部180などがWebサーバにおいて実現されるとしてもよい。また、実行対象コンポーネントデータベース161がデータベースサーバにおいて実現されるとしてもよい。さらに、WEbサーバからデータベースサーバへのアクセスにODBCやJDBCなどを用いるとしてもよい。
また、RFC2246において規定されているTLS(Transport Layer Security)に基づいて、アプリケーションサーバ106と各ユーザ端末間とでセキュリティ通信が行われるとしてもよい。また、XML暗号化(http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/)に基づいて、データを暗号化し、暗号化したデータを送受信することで、セキュリティ通信が行われるとしてもよい。
なお、ノード制御プログラムやアプリケーションサーバ制御プログラムは、コンピュータシステム、組み込みシステムなどのようなハードウェアシステムに読み取り可能な記録媒体に記録されているとしてもよい。さらに、記録媒体を介して他のハードウェアシステムに読み出されて実行されるとしてもよい。これによって、ノード101、またはノード201などの各機能やアプリケーションサーバ106の各機能を他のハードウェアシステムに実現することができる。ここで、コンピュータシステム読み取り可能な記録媒体として、光学記録媒体(例えば、CD−ROMなど。)、磁気記録媒体(例えば、ハードディスクなど。)、光磁気記録媒体(例えば、MOなど。)、半導体メモリ(例えば、メモリカードなど。)などがある。
また、ノード制御プログラムやアプリケーションサーバ制御プログラムは、インターネット、ローカルエリアネットワークなどのようなネットワークに接続されているハードウェアシステムに保持されているとしてもよい。さらに、ネットワークを介して他のハードウェアシステムにダウンロードされて実行されるとしてもよい。これによって、ノード101、またはノード201の各機能やアプリケーションサーバ106の各機能を他のハードウェアシステムに実現することができる。ここで、ネットワークとして、地上放送網、衛星放送網、PLC(Power Line Communication)、移動電話網、有線通信網(例えば、IEEE802.3など。)、無線通信網(例えば、IEEE802.11など。)がある。
(付録1)
以下、Webサービスと分散Webサービスとについての説明を補足する。なお、Webサービスには、主に、XML、SOAP(Simple Object Access Protocol)、WSDL(Web Services Description Language)、UDDI(Universal Description,Discovery,and Integration)のような要素技術が存在する。しかし、これらの要素技術については、広く知れ渡っていることから、ここでは、説明を省略する。
<Webサービス>
Webサービスとは、URI(Uniform Resource Identifier)で識別でき、インターフェースとバインディングとがXML(eXtensible Markup Language)で定義されて記述されているソフトウェアシステムである。インターネットプロトコルによって伝送されるXMLベースのメッセージを利用することによって、他のソフトウェアシステムとの間で相互通信することができるソフトウェアシステムである。また、SOA(Service Oriented Architecture)を実現する重要な技術の1つでもある。
Webサービスでは、サービスの提供者がサービスディレクトリにサービスを登録して公開する。そして、サービスの利用者がサービスを受けるときに、アプリケーションサーバがサービスディレクトリを検索し、サービスの場所を取得し、サービスを提供しているサーバに接続する。これに対して、従来のInternetを利用したサービスでは、サービスの利用者がWebブラウザなどを使用してサービスを探索し、探索したサービスを利用する。
SOAとは、ハードウェアやOS、言語に依存せず、共通のインターフェースを介して、自由に、連携したり利用したりすることができるシステムの構造を既定するソフトウェアアーキテクチャのことである。
SOAでは、情報システム全体をサービスの集まりとしてとらえる。
SOAを実現する従来の方法として、OMG(Object Management Group)のCORBA(Common Object Request Broker Architecture)やMicrosoftのDCOM(Distributed Component Object Model)が挙げられる。これらの方法では、コンポーネントが密結合しているので、交換や改良が困難である。
これに対して、Webサービスでは、アーキテクチャが疎結合であるので、コンポーネント同士が、互いに連携しても、互いに依存することが少なく、それぞれのコンポーネントの交換や改良が容易であり、変化に対して順応性が高い。さらに、既存のサービスをコンポーネントとして利用することができ、コンポーネントを組み合わせてサービスを構築することも可能である。このため、従来のように自身でサービスを一から構築する必要がなく、サービスを構築するために掛かる費用を削減することができる。また、既存のWebサービスよりも、さらに、高度なサービスを構築することも容易である。
<分散Webサービス>
一方、分散Webサービスとは、正式に定義されているものではない。そこで、ここでは、特に、コンポーネントが1種につき1つであるものをWebサービスとし、コンポーネント1種につき複数の複製コンポーネントが存在するものを分散Webサービスとする。
Webサービスでは、同一機能を有するコンポーネントが存在しない。このため、同一のコンポーネントを利用するサービスの提供者が増加することで、コンポーネントにかかる負荷が増大する。コンポーネントを利用したサービスの処理速度の低下などにより、サービスの利用者の満足度が低下する。
これに対して、分散Webサービスでは、コンポーネントを複製して分散配置しているので、同一の機能を有するコンポーネントが複数存在する。それらのコンポーネントを利用してサービスを提供することで、1つのコンポーネントにかかる負荷を分散することができる。そのため、特定機能のコンポーネントを利用したサービスを提供する時でも、サービスの処理速度の低下を抑えることができ、サービスの利用者に対して満足のいくサービスを提供することができる。
Webサービスでは、あるコンポーネントに障害が発生すると、複数のアプリケーションサーバが当該コンポーネントを利用したサービスの提供を停止してしまう。
これに対して、分散Webサービスでは、障害が発生したコンポーネントと同一の機能を有するコンポーネントが存在する。このため、分散されて配置されている複数のコンポーネントの中で同一の機能を有するコンポーネントを代替コンポーネントとして探し出し、その代替コンポーネントにコンポーネントを瞬時に切り替えることでサービスを再開することが望まれる。
(付録2)
以下、背景技術で説明した代替コンポーネント探索についての説明を補足する。
<代替コンポーネント探索>
分散Webサービスでは、Webサービスで使用されているコンポーネントが使用できなくなったときに、代替となるコンポーネントを発見し、その代替コンポーネントを使用してサービスの提供を続けることが可能である。しかし、その探索手法については、規定されていない。そこで、ここでは、探索手法に関してリアクティブな探索手法とプロアクティブな探索手法について説明する。
<リアクティブな探索手法>
リアクティブな探索手法とは、コンポーネントに障害が発生してから代替となるコンポーネントを探索する手法である。
リアクティブな探索手法では、あらかじめ代替コンポーネントの位置情報を保持していない。このため、障害発生時における代替コンポーネントの探索には、フラッディングを使用する。フラッディングは、同一メッセージを順次複製してネットワーク全体に伝達する手法である。このため、効用の高い代替コンポーネントを確実に発見することが可能である。しかし、メッセージ数が増加するため、ネットワークへの負荷が大きくなる。従って、リアクティブな探索手法では、障害が発生するまでは、メッセージのやり取りを行わないので、ネットワークに負荷をかけない。しかし、障害が発生すると、フラッディングによる多数の探索メッセージの交換を行うことで、ネットワークへの負荷が短期間で増大する。また、障害が発生してから探索を開始するため、代替コンポーネントを発見するまでに時間がかかる。
フラッディングによる代替コンポーネントの探索手法には、大きく分けて2つの手法が考えられる。1つ目は、First−Replyであり、2つ目は、Best−Replyである。
<First−Reply>
First−Replyとは、障害が発生したコンポーネントと同一機能を有する複数のコンポーネントの中で、最初に発見したコンポーネントを代替コンポーネントとする手法である。
First−Replyでは、最初に発見した代替候補であるコンポーネントを利用するため、探索自体はすぐに終了し、探索時間を短縮することができる。サービス再開までの遅延は短くて済む。しかし、最初に発見された代替コンポーネントよりも効用の高いコンポーネントがネットワーク上に存在する場合でも、それを選択することができない。また、効用の低いコンポーネントは、他のアプリケーションサーバに使用されている可能性があり、最悪の場合は、新たに当該コンポーネントを利用するアプリケーションサーバがそのコンポーネントを使用することで過負荷によりサービスを受けられなくなる可能性がある。
<Best Reply>
Best−Replyとは、障害が発生したコンポーネントと同一機能を有する複数のコンポーネントの中で、一定時間内に返答があって効用の高いコンポーネントを代替コンポーネントとする手法である。
Best−Replyでは、フラッディングにより代替コンポーネントの候補を探索していき、アプリケーションサーバに一定時間内に返答のあった代替候補コンポーネントの中から効用が高いコンポーネントを選択することで効用の高いコンポーネントを利用できる手法である。ここでは、全てのノードに代替コンポーネント候補があるかどうか調べられるように十分な時間代替候補コンポーネントからの返答を待つものとする。また、返答を待つ時間(返答待機時間)が長すぎると最初に得た代替候補コンポーネントの効用の情報が返答してから返答待機時間の間に別のアプリケーションサーバが、そのコンポーネントを利用することで変化する可能性があり、情報の信頼性が低下するという短所も持っている。このため、大規模なネットワークにおいて全ての代替候補コンポーネントからの返答を待つというのは適しておらず、どこに代替候補コンポーネントがあるか解らないときに返答待機時間の設定することも困難である。しかし、返答待機時間をメッセージの生存時間とすることで探索終了時にネットワーク上に探索メッセージが残ることはない。
<プロアクティブな代替コンポーネント探索手法>
プロアクティブな探索手法とは、障害が発生する前にどのコンポーネントを使用するか決定しておく手法である。プロアクティブな探索手法では、あらかじめ代替コンポーネントの位置情報や効用情報をデータベース上に保持する。また、常にメッセージの交換を行うことにより情報を更新し、情報の信頼性の低下を抑えている。
プロアクティブな探索手法では、障害発生時に即座に最適な代替となるコンポーネントの探索が可能である。しかし、常にメッセージの交換を行っているので、ネットワークに定常的な負荷を与えることになる。
なお、データベース管理の手法としては、全てのデータを1箇所のデータベースで一括管理する統合データベース管理と、全てのデータを分散配置された複数のデータベースで分割して管理する分散データベース管理とが考えられる。
<統合データベース管理>
統合データベース管理とは、全てのコンポーネントの位置や効用等の情報を1箇所のデータベースにおいて一括管理する手法である。この手法を用いることでデータベースにアクセスすれば即座に最適なデータベースの位置情報を取得することができる。
しかし、統合データベースでは、大規模なネットワークにおいては、管理する情報の量が膨大になる。また、動的に変化する情報をリアルタイムに把握するには多数の制御メッセージを頻繁に交換する必要があり、ネットワーク上のトラヒックが増大する。このため、大規模なネットワークにおいて、動的な情報を常に把握しておくことは困難である。また、全ての情報をデータベースで一括管理しているため、データベースへの問い合わせが集中することで、データベースが過負荷になり、情報の提供が不可能になる可能性がある。このような場合において、統合データベース管理では、代替コンポーネントの探索が不可能になる。さらに、障害が発生したコンポーネントを利用していたアプリケーションサーバは、サービスを停止しなければならなくなる。
<分散データベース管理>
分散データベース管理とは、統合データベースで管理されていた情報を複数の場所に分散配置された複数のデータベースに分割して管理する手法である。
分散データベース管理では、全てのデータを管理しているわけではない。このため、統合データベースと比較して必ずしも最適な代替コンポーネントの情報が得られるとは限らない。しかし、統合データベースにおいて存在したデータベースの障害に対する脆弱性を緩和することができ、周辺のネットワークのトラヒックの増加を抑えることができる。また、分散データベース管理では、各ノードが全ての代替コンポーネントの情報を保持する必要がないため、統合データベース管理に比べて、制御メッセージの削減が可能となる。ただし、分散データベース管理ではデータベースの場所とそのデータベースに管理させる情報の種類や数が重要な要素になる。このため、それらの要素を適切に決定することで、探索に要する時間を短縮し、代替コンポーネントを効率よく探索することが可能となると考えられる。