(57)【要約】【課題】マルチパスレプリケーションにおいて、更新中のデータへのクライアントからの読み込みリクエストに対する応答遅延を短縮すること。【解決手段】候補選択部１１７が更新中のデータについてベリファイ要求を送信する候補を配置情報記憶部１１４、距離情報記憶部１１５及び経路情報記憶部１１６を参照して選択する。そして、候補選択部１１７が選択した候補から、送り先選択部１１８が、ベリファイ要求を送信する送り先を選択し、ベリファイ要求処理部１１９が、送り先にベリファイ要求を送信する。そして、ベリファイ要求でバージョンが分かった場合に、リクエスト処理部１２１が、ベリファイ要求で分かったバージョンのデータをクライアントに返す。【選択図】図２
2014186382.tif 000002
【特許請求の範囲】
【請求項１】
同一のデータを複数の情報処理装置が記憶し、前記複数の情報処理装置のうち第１のクライアント装置からデータの更新要求を受信する情報処理装置である第１の情報処理装置と前記更新要求が最終的に送信される情報処理装置である第２の情報処理装置との間で他の情報処理装置を経由する複数の経路を用いて前記更新要求が送信される情報処理システムにおいて、
第３の情報処理装置は、
第２のクライアント装置から前記データの読み込み要求を受信する受信部と、
前記受信部が読み込み要求を受信したデータが、前記更新要求により更新中であるかを判定する判定部と、
前記データが更新中であると前記判定部が判定した場合、前記複数の情報処理装置のうち前記第１の情報処理装置と前記第２の情報処理装置とを除いた他の情報処理装置のいずれかから前記データが更新中であるかを問合わせる情報処理装置を選択する選択部と、
前記選択部が選択した前記情報処理装置に問合わせを行う問合せ部と、
選択された前記情報処理装置からの問合わせの結果に基づいて、更新前のデータ又は更新後のデータを第２のクライアント装置に応答する応答部と
を有することを特徴とする情報処理システム。
【請求項２】
前記選択部は、第２の情報処理装置と通信する場合より第４の情報処理装置と通信する場合の遅延時間が短く、かつ、第１の情報処理装置が前記更新要求を送信した時間からの経過時間と第４の情報処理装置と通信する場合の遅延時間との和が第１の情報処理装置から第４の情報処理装置への前記更新要求の伝播時間より小さい場合に、第４の情報処理装置を前記問合先として選択することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記選択部は、第４の情報処理装置が複数ある場合には、通信する際の遅延時間が最も小さい情報処理装置を前記問合先として選択することを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記選択部は、通信する際の遅延時間が最も小さい情報処理装置が複数ある場合には、第１の情報処理装置からの前記更新要求の伝播時間が最も長い情報処理装置を前記問合先として選択することを特徴とする請求項３に記載の情報処理システム。
【請求項５】
同一のデータを複数の情報処理装置が記憶し、前記複数の情報処理装置のうち第１のクライアント装置からデータの更新要求を受信する情報処理装置である第１の情報処理装置と前記更新要求が最終的に送信される情報処理装置である第２の情報処理装置との間で他の情報処理装置を経由する複数の経路を用いて前記更新要求が送信される情報処理システムで情報処理装置を制御する制御プログラムにおいて、
第３の情報処理装置を制御する制御プログラムが、
第２のクライアント装置から前記データの読み込み要求を受信し、
前記読み込み要求を受信したデータが、前記更新要求により更新中であるかを判定し、
前記データが更新中であると判定した場合、前記複数の情報処理装置のうち前記第１の情報処理装置と前記第２の情報処理装置とを除いた他の情報処理装置のいずれかから前記データが更新中であるかを問合わせる情報処理装置を選択し、
選択した情報処理装置に問合わせを行い、
選択された情報処理装置からの問合わせの結果に基づいて、更新前のデータ又は更新後のデータを第２のクライアント装置に応答することを特徴とする情報処理装置を制御する制御プログラム。
【請求項６】
同一のデータを複数の情報処理装置が記憶し、前記複数の情報処理装置のうち第１のクライアント装置からデータの更新要求を受信する情報処理装置である第１の情報処理装置と前記更新要求が最終的に送信される情報処理装置である第２の情報処理装置との間で他の情報処理装置を経由する複数の経路を用いて前記更新要求が送信される情報処理システムの制御方法において、
第３の情報処理装置が、
第２のクライアント装置から前記データの読み込み要求を受信し、
前記読み込み要求を受信したデータが、前記更新要求により更新中であるかを判定し、
前記データが更新中であると判定した場合に、前記情報処理装置のうち前記第１の情報処理装置と前記第２の情報処理装置とを除いた他の情報処理装置のいずれかから前記データが更新中であるかを問合わせる情報処理装置を選択し、
選択した前記情報処理装置に問合わせを行い、
選択された前記情報処理装置からの問合わせの結果に基づいて、更新前のデータ又は更新後のデータを第２のクライアント装置に応答することを特徴とする情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置を制御する制御プログラム及び情報処理システムの制御方法に関する。
【背景技術】
【０００２】
従来、分散ＫＶＳ（Key Value Store）に代表されるＮｏＳＱＬなど、複数のノード間でデータが多重化されて記憶される情報処理システムにおいては、データの書き込みがあった場合のレプリカの更新方式として、マルチパスレプリケーションがある。
【０００３】
ここで、ノードとは、ＣＰＵ（Central Processing Unit）、メモリ、ディスク装置などを備えた情報処理装置であり、ノード間はネットワークで相互に接続される。また、レプリカとは、データの複製である。また、情報処理システムは、分散ストレージシステムとして機能し、情報処理システムにおいて、各ノードはデータを分散して記憶するストレージ装置として機能する。
【０００４】
図１２Ａ及び図１２Ｂは、マルチパスレプリケーションを説明するための図である。図１２Ａに示すように、情報処理システム９０は、データセンターＸと、データセンターＹとを有する。データセンターＸは、第１のレプリカ（１stレプリカ）を記憶するノード９１〜第４のレプリカ（４thレプリカ）を記憶するノード９４を有し、データセンターＹは、第５のレプリカ（５thレプリカ）を記憶するノード９５を有する。なお、図では、第１のレプリカを記憶するノードを単に「１stレプリカ」と記載する。他のレプリカを記憶するノードについても同様である。
【０００５】
クライアント８１が第１のレプリカを記憶するノード９１にデータの書き込みを行うと、ノード９１は、第２のレプリカ（２ndレプリカ）を記憶するノード９２、第３のレプリカ（３rdレプリカ）を記憶するノード９３、ノード９４に更新要求（update要求）を送る。そして、ノード９２とノード９３とノード９４は、更新要求をノード９５に送る。
【０００６】
すなわち、情報処理システム９０は、クライアント８１から第１のレプリカに書き込みがあると、第１→第２→第５と、第１→第３→第５と、第１→第４→第５との３つの経路、すなわちマルチパスで並列して更新要求を送る。
【０００７】
そして、終点にあたるノード９５に全経路から更新要求が届くと、図１２Ｂに示すように、３つの経路で逆に更新済要求（updated要求）が送られる。すなわち、第５→第２→第１と、第５→第３→第１と、第５→第４→第１との３つの経路で更新済要求が送られる。そして、各ノードは、更新済要求を受け取った段階で、更新要求に含まれる新しいデータにレプリカを更新する。
【０００８】
マルチパスレプリケーションの特徴として、データの一貫性を保つ仕組みが含まれている点がある。ここで、データの一貫性とは、どのレプリカにアクセスしても常に同じデータが見えることである。データの一貫性が問題となるのは、図１３のような場合である。
【０００９】
図１３は、第１→第２→第５と、第１→第３→第５の２経路では終点まで更新要求が届いたが、残りの第１→第４→第５の１経路ではまだ終点まで更新要求が届いていない時にクライアント８２からノード９２にデータの読み込みリクエストが届いた場合を示す。この場合、ノード９２は、クライアント８２に対して、更新要求に含まれる新しいデータか、更新されるまでの古いデータの２通りを返すことができる。データの一貫性とは、このような場合にクライアント８２が他のノードにアクセスしたとしても、他のノードは常に同じデータを返す、ということである。
【００１０】
例えば、図１３において、第５のレプリカを記憶するノード９５が新しいデータを返すならば第２のレプリカを記憶するノード９２も新しいデータを返す。また、第５のレプリカを記憶するノード９５が古いデータを返すならば、第２のレプリカを記憶するノード９２も古いデータを返す。このようなデータの一貫性を保証するレプリカの更新方式は強一貫性（Strong Consistency）である、と言われる。
【００１１】
マルチパスレプリケーションでは、バージョン機能を用いてデータの一貫性を実現している（例えば、非特許文献１参照。）。図１３は、バージョン機能を用いてデータの一貫性を保つ場合を示している。第２のレプリカを記憶するノード９２のようにクライアント８２に返すデータの候補が複数あるノードは、終点にあたるノード９５に対してバージョン要求（version要求）を送り、どのデータをクライアント８２に返すべきかを決めてもらう。
【００１２】
バージョン要求を受け取った終点のノード９５は、全経路から更新要求を受け取ってレプリカの更新が既に終わったかどうかを判断する。例えば、図１３のような場合では、終点のノード９５は第１→第４→第５の１経路から更新要求を受け取っていないため、まだレプリカの更新はされておらず、第２のレプリカを記憶するノード９２には古いデータを返すよう返答を行う。マルチパスレプリケーションでは終点のノード９５が一番初めにデータの更新を行うため、終点のバージョンを基準にすることでデータの一貫性が保たれる。
【００１３】
なお、複数の複製ノードを有するシステムにおいて、クライアントからの要求を複製ノードに仲介するノードが、複製ノードから取得したデータがどの程度最近のデータであるかを示す尺度を返答する技術が開示されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２０００−２４２６２０号公報
【非特許文献】
【００１５】
【非特許文献１】Jeff Terrace and Michael J. Freedman,”Object Storage on CRAQ:High-throughput chain replication for read-mostly workloads”, Proc. USENIX Annual Technical Conference (USENIX'09), San Diego, CA, June 2009.
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、図１３のように、ノード９２が、別のデータセンターにある終点ノードにバージョン要求を送ると、バージョン要求を送っている間、データ読み込みリクエストに対して返答できず、レスポンス時間がのびてしまう、という問題がある。
【００１７】
一般に、レプリカを配置する場合は天災地変が発生した場合においてもデータの普及を可能にするディザスタリカバリ（Disaster Recovery）を考慮して数個のレプリカは遠距離の別データセンターに置かれる場合が多い。例えば、データセンターＸは東京にあるストレージシステムの基幹データセンター、データセンターＹはサンフランシスコにあるディザスタリカバリ用の遠距離データセンター、という運用がしばしばみられる。また、レプリカを増やすことでデータの読み込みリクエストを多くのノードで分散させて処理することができるため、読み込み性能を上げることができる。
【００１８】
図１３に示すシステムは、これらの状況に対応するためのものであり、図１３に示すシステムにおいては、なるべく遠距離のデータセンターにバージョン要求を送らない仕組みが必要である。
【００１９】
本発明は、１つの側面では、更新中のデータへの読み出しリクエストに対する応答時間の短縮を図ることを目的とする。
【課題を解決するための手段】
【００２０】
本願の開示する情報処理システムは、１つの態様において、同一のデータを複数の情報処理装置が記憶し、前記複数の情報処理装置のうち第１のクライアント装置からデータの更新要求を受信する情報処理装置である第１の情報処理装置を有する。また、情報処理システムは、前記更新要求が最終的に送信される情報処理装置である第２の情報処理装置を有し、第１の情報処理装置と第２の情報処理装置との間で他の情報処理装置を経由する複数の経路を用いて前記更新要求を送信する。そして、第３の情報処理装置は、第２のクライアント装置から前記データの読み込み要求を受信する受信部と、前記受信部が読み込み要求を受信したデータが、前記更新要求により更新中であるかを判定する判定部とを有する。また、第３の情報処理装置は、前記データが更新中であると前記判定部が判定した場合、前記複数の情報処理装置のうち前記第１の情報処理装置と前記第２の情報処理装置とを除いた他の情報処理装置のいずれかから前記データが更新中であるかを問合わせる情報処理装置を選択する選択部を有する。また、第３の情報処理装置は、前記選択部が選択した前記情報処理装置に問合わせを行う問合せ部と、選択された前記情報処理装置からの問合わせの結果に基づいて、更新前のデータ又は更新後のデータを第２のクライアント装置に応答する応答部とを有する。
【発明の効果】
【００２１】
１実施態様によれば、更新中のデータへの読み出しリクエストに対する応答時間を短縮することができる。
【図面の簡単な説明】
【００２２】
【図１Ａ】図１Ａは、実施例に係る情報処理システムによるデータ読み込み処理を説明するための図である。
【図１Ｂ】図１Ｂは、ベリファイ要求を異なるデータセンターにあるノードに送る情報処理システムの一例を示す図である。
【図２】図２は、実施例に係る情報処理装置の機能構成を示すブロック図である。
【図３】図３は、配置情報記憶部の一例を示す図である。
【図４】図４は、レプリカ配置の一例を示す図である。
【図５】図５は、距離情報記憶部の一例を示す図である。
【図６】図６は、経路情報記憶部の一例を示す図である。
【図７】図７は、候補選択部による候補選びの一例を示す図である。
【図８】図８は、送り先選択部による送り先選びの一例を示す図である。
【図９】図９は、データの読み込みリクエストに対して情報処理装置が行う処理のフローを示すフローチャートである。
【図１０】図１０は、ベリファイ要求に対する処理のフローを示すフローチャートである。
【図１１】図１１は、実施例に係る情報処理装置のハードウェア構成を示す図である。
【図１２Ａ】図１２Ａは、マルチパスレプリケーションを説明するための図（Ａ）である。
【図１２Ｂ】図１２Ｂは、マルチパスレプリケーションを説明するための図（Ｂ）である。
【図１３】図１３は、バージョン機能を説明するための図である。
【発明を実施するための形態】
【００２３】
以下に、本願の開示する情報処理システム、情報処理装置を制御する制御プログラム及び情報処理システムの制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００２４】
まず、実施例に係る情報処理システムによるデータ読み込み処理について説明する。図１Ａは、実施例に係る情報処理システムによるデータ読み込み処理を説明するための図である。図１Ａに示すように、情報処理システム１０は、データセンターＡと、データセンターＢとを有する。データセンターＡは、第１のレプリカを記憶するノード１〜第４のレプリカを記憶するノード４を有し、データセンターＢは、第５のレプリカを記憶するノード５を有する。
【００２５】
クライアント１１がノード１にデータの書き込みを行うと、ノード１は、第２のレプリカを記憶するノード２、第３のレプリカを記憶するノード３に更新要求を送る。そして、ノード３は、ノード４に更新要求を送り、ノード２とノード４は、更新要求をノード５に送る。
【００２６】
すなわち、情報処理システム１０は、クライアント１１から第１のレプリカに書き込みがあると、第１→第２→第５と、第１→第３→第４→第５の２つの経路、すなわちマルチパスで並列して更新要求を送る。
【００２７】
ここで、ノード３が故障すると、第１→第２→第５の経路で更新要求が送信されるが、第１→第３→第４→第５の経路では更新要求は送信されず、ノード４には更新要求が送信されない。
【００２８】
この状態で、クライアント１２からノード２に更新中のデータの読み込みリクエストがあると、ノード２は、ノード５にバージョン要求を送るとともに、ノード４にベリファイ要求（verify要求）を送る。ここで、ベリファイ要求とは、更新要求が届いているか否かを確認する要求である。ノード４は、ベリファイ要求に対して、更新要求が届いていないことをノード２に応答する。したがって、ノード２は、終点ノードであるノード５に更新要求がノード４経由では届いていないことがわかる。そこで、ノード２は、古いデータをクライアント１２に返す。
【００２９】
ここで、ノード５とノード４を比較すると、ノード５がノード２と異なるデータセンターＢにあるのに対して、ノード４はノード２と同じデータセンターＡにある。このため、データセンターＡとデータセンターＢの距離が長い場合には、ノード２は、ノード５からバージョン要求に対する応答を得るより、ノード４からベリファイ要求に対する応答を早く得ることができる。したがって、ノード２は、クライアント１２に早く応答することができる。
【００３０】
このように、情報処理システム１０は、ベリファイ要求を用いて、更新中のデータに対する読み込みリクエストに早く応答することができる。なお、ここでは、ノード２とノード４が同じデータセンターにある場合について説明したが、ノード２は、異なるデータセンターにあるノードにベリファイ要求を送ることもできる。
【００３１】
図１Ｂは、ベリファイ要求を異なるデータセンターにあるノードに送る情報処理システムの一例を示す図である。図１Ｂに示すように、情報処理システム１０ａは、データセンターＣを有し、ノード４がデータセンターＡではなくデータセンターＣにあることを除いて、情報処理システム１０と同様にノード１〜５でマルチレプリケーションを行う。また、データセンターＣは、データセンターＢよりもデータセンターＡに近い。
【００３２】
ノード２は、更新中のデータに対してクライアント１２から読み込みリクエストを受信すると、異なるデータセンターＣにあるノード４にベリファイ要求を送る。データセンターＣはデータセンターＢよりもノード２に近いため、ノード２はノード５からバージョン要求に対する応答を得るより早くノード４からベリファイ要求に対する応答を得ることができる。
【００３３】
このように、ノード２は、バージョン要求の送信先のノードがあるデータセンターよりも近いデータセンターにあるノードにベリファイ要求を送ることによって、クライアント１２に早く応答することができる。
【００３４】
次に、実施例に係る情報処理装置の機能構成について説明する。図２は、実施例に係る情報処理装置の機能構成を示すブロック図である。図２に示すように、情報処理装置１００は、リクエスト受信部１１１と、リクエスト保持部１１２と、更新状態判定部１１３と、配置情報記憶部１１４と、距離情報記憶部１１５とを有する。また、情報処理装置１００は、経路情報記憶部１１６と、候補選択部１１７と、送り先選択部１１８と、ベリファイ要求処理部１１９と、バージョン要求処理部１２０と、リクエスト処理部１２１とを有する。なお、情報処理装置１００は、図１Ａ及び図１Ｂに示したノードに対応する。
【００３５】
リクエスト受信部１１１は、ネットワークを介してクライアントからデータのアクセスリクエストを受信する。リクエスト保持部１１２は、クライアントからの書き込みリクエストによりデータが更新中である場合に、書き込みリクエストを書き込みデータとともに保持する。
【００３６】
更新状態判定部１１３は、リクエスト受信部１１１が受信したアクセスリクエストの対象となるデータが更新中であるか否かをリクエスト保持部１１２を参照して判定する。更新状態判定部１１３は、データが更新中である場合には、アクセスリクエストを候補選択部１１７に渡し、データが更新中でない場合には、アクセスリクエストをリクエスト処理部１２１に渡す。
【００３７】
配置情報記憶部１１４は、レプリカの配置すなわちレプリカを記憶するノードがどのデータセンターにあるかを示す情報を記憶する。図３は、配置情報記憶部１１４の一例を示す図であり、図４は、レプリカ配置の一例を示す図である。
【００３８】
図４に示すように、第１のレプリカを記憶するノード１はデータセンターＡにあり、第２のレプリカを記憶するノード２と、第３のレプリカを記憶するノード３と、第４のレプリカを記憶するノード４は、データセンターＢにある。また、第５のレプリカを記憶するノード５はデータセンターＣにあり、第６のレプリカを記憶するノード６と、第７のレプリカを記憶するノード７は、データセンターＤにあり、第８のレプリカを記憶するノード８はデータセンターＥにある。
【００３９】
そして、クライアント１１からの書き込みリクエストをノード１が受信すると、ノード１は、ノード２とノード３とノード４に更新要求を送信する。そして、ノード２はノード５に更新要求を送信し、ノード３はノード６に更新要求を送信し、ノード４はノード７に更新要求を送信する。そして、ノード５とノード６とノード７は、ノード８に更新要求を送信する。
【００４０】
図３は、図４に示すレプリカ配置について、配置情報記憶部１１４が記憶する情報を示す。図３に示すように、配置情報記憶部１１４は、レプリカ毎に対応するデータセンターの情報を記憶する。例えば、配置情報記憶部１１４は、第１のレプリカに対応するデータセンターがＡであることを示す情報を記憶する。
【００４１】
距離情報記憶部１１５は、ノード間の通信による遅延時間を記憶する。図５は、距離情報記憶部１１５の一例を示す図である。図５は、図４に示すレプリカ配置について、距離情報記憶部１１５が記憶する情報を示す。
【００４２】
図５に示すように、距離情報記憶部１１５は、レプリカ毎に他のレプリカとの通信による遅延時間を記憶する。ここで、レプリカとノードは１対１に対応することから、距離情報記憶部１１５は、ノード毎に他のノードとの通信による遅延時間を記憶する。図５において、時間の単位はミリ秒（ｍｓ）である。例えば、第１のレプリカを記憶するノード１と第２のレプリカを記憶するノード２との間の通信による遅延時間は１００ミリ秒である。
【００４３】
経路情報記憶部１１６は、マルチパスレプリケーションにおける経路の情報を記憶する。図６は、経路情報記憶部１１６の一例を示す図である。図６は、図４に示すレプリカ配置及びマルチパスレプリケーションについて、経路情報記憶部１１６が記憶する情報を示す。
【００４４】
図６に示すように、経路情報記憶部１１６は、経路毎に経路を形成する始点のノード、２番目のノード、３番目のノード、終点のノードを記憶する。例えば、経路1は、始点ノードが第１のレプリカを記憶するノード１であり、２番目のノードが第２のレプリカを記憶するノード２であり、３番目のノードが第５のレプリカを記憶するノード５であり、終点ノードが第８のレプリカを記憶するノード８である。
【００４５】
候補選択部１１７は、配置情報記憶部１１４、距離情報記憶部１１５及び経路情報記憶部１１６を参照してベリファイ要求を送信するノードの候補を選択する。候補選択部１１７は、アクセスリクエストが到着したノードをＡとし、Ａ及び始点ノードを除く任意のノードをＢとすると、以下の２つの条件を満たすノードを候補として選択する。
【００４６】
第１の条件は、（ＡからＢまでの通信遅延時間）＜（ＡからＡに最も近い終点ノードまでの通信遅延時間）である。Ａに最も近い終点ノードとは、バージョン要求を送るノードであり、バージョン要求の通信遅延時間より通信遅延時間が大きいノードは、バージョン要求の処理の方が早く終了するため、候補とならない。例えば、終点ノードは、第１の条件を満たさないため、候補とならない。
【００４７】
第２の条件は、（始点ノードからＡまでの更新要求伝播時間）＋（Ａが更新要求を送信してからの経過時間）＋（ＡからＢまでの通信遅延時間）＜（始点ノードからＢまでの更新要求伝播時間）である。ここで、（始点ノードからＡまでの更新要求伝播時間）＋（Ａが更新要求を送信してからの経過時間）＝（始点ノードが更新要求を送信してからの経過時間）であるので、第２の条件は、（始点ノードが更新要求を送信してからの経過時間）＋（ＡからＢまでの通信遅延時間）＜（始点ノードからＢまでの更新要求伝播時間）である。すなわち、Ｂにベリファイ要求が届くまでに、更新要求がまだＢに届いていないことが候補となる第２の条件である。
【００４８】
図７は、候補選択部１１７による候補選びの一例を示す図である。図７に示すように、始点レプリカを記憶するノード３１、第１のレプリカを記憶するノード１、第２のレプリカを記憶するノード２及び第３のレプリカを記憶するノード３はデータセンターＡにあり、終点レプリカを記憶するノード３２はデータセンターＢにある。
【００４９】
また、ノード３１→ノード１→ノード２→ノード３→ノード３２の経路で更新要求が伝播され、データセンター間の通信遅延時間は一律１００ミリ秒であり、データセンター内の通信遅延時間は一律１ミリ秒であるとする。そして、ノード１は、時刻Ｓで更新要求を送信し、時刻Ｓ＋０．５ミリ秒にクライアント１１から読み込みリクエストを受信したとする。
【００５０】
ノード２は、（ノード１からノード２までの通信遅延時間＝１ミリ秒）＜（ノード１からノード１に最も近い終点ノード３２までの通信遅延時間＝１００ミリ秒）であるので、第１の条件を満たす。しかしながら、（ノード３１からノード１までの更新要求伝播時間）＋（ノード１が更新要求を送信してからの経過時間）＋（ノード１からノード２までの通信遅延時間）＝１ミリ秒＋０．５ミリ秒＋１ミリ秒＝２．５ミリ秒である。一方、（ノード３１からノード２までの更新要求伝播時間＝２ミリ秒）であるので、ノード２は、第２の条件を満たさない。
【００５１】
ノード３は、（ノード１からノード３までの通信遅延時間＝１ミリ秒）＜（ノード１からノード１に最も近い終点ノード３２までの通信遅延時間＝１００ミリ秒）であるので、第１の条件を満たす。また、（ノード３１からノード１までの更新要求伝播時間）＋（ノード１が更新要求を送信してからの経過時間）＋（ノード１からノード３までの通信遅延時間）＝１ミリ秒＋０．５ミリ秒＋１ミリ秒＝２．５ミリ秒である。一方、（ノード３１からノード３までの更新要求伝播時間＝３ミリ秒）であるので、ノード３は、第２の条件も満たし、ベリファイ要求送信先の候補となる。
【００５２】
図２に戻って、送り先選択部１１８は、配置情報記憶部１１４、距離情報記憶部１１５及び経路情報記憶部１１６を参照し、候補選択部１１７が選択した複数の候補の中からベリファイ要求送信先を選択する。
【００５３】
具体的には、送り先選択部１１８は、ベリファイ要求送信先の候補を、アクセスリクエストが到着したノードからの通信遅延時間が短い順にソートし、ソートにより先頭となった候補をベリファイ要求送信先として選択する。また、送り先選択部１１８は、アクセスリクエストが到着したノードからの通信遅延時間が同じである複数のノードについては、更新要求が届く時間が長い順にソートする。
【００５４】
すなわち、送り先選択部１１８は、アクセスリクエストが到着したノードをＡとすると、Ａから見て、候補Ｂまでの通信遅延時間が候補Ｃまでの通信遅延時間より短ければ、候補Ｂが候補Ｃより前になるようにソートする。また、通信遅延時間が同じ場合には、送り先選択部１１８は、始点ノードからの更新要求の伝播時間が長いノードが前になるようにソートする。
【００５５】
図８は、送り先選択部１１８による送り先選びの一例を示す図である。図８において、アクセスリクエストが到着したノードをＡとし、候補選択部１１７により３つの候補Ｄ1〜Ｄ3が選択されたとする。
【００５６】
候補Ｄ1は、Ａからの通信遅延時間が２ミリ秒であり、始点ノードからの更新要求の伝播時間は５ミリ秒である。候補Ｄ2は、Ａからの通信遅延時間が２ミリ秒であり、始点ノードからの更新要求の伝播時間は３ミリ秒である。候補Ｄ3は、Ａからの通信遅延時間が１ミリ秒であり、始点ノードからの更新要求の伝播時間は３ミリ秒である。
【００５７】
送り先選択部１１８は、Ａからの通信遅延時間が１ミリ秒である候補Ｄ3を先頭とし、Ａからの通信遅延時間が同じである候補Ｄ1と候補Ｄ2については、始点ノードからの更新要求の伝播時間が長い候補Ｄ1が候補Ｄ2の前になるようにソートする。そして、送り先選択部１１８は、先頭の候補Ｄ3をベリファイ要求送信先として選択する。
【００５８】
図２に戻って、ベリファイ要求処理部１１９は、送り先選択部１１８が選択した候補にベリファイ要求を送信し、送信先からの応答を受け取ってリクエスト処理部１２１に渡す。また、ベリファイ要求処理部１１９は、他のノードから受信したベリファイ要求の処理を行う。具体的には、ベリファイ要求処理部１１９は、ベリファイ要求を受け取ったデータが更新中である場合には、バージョンは不明であると要求元に応答し、更新中でない場合には、記憶するデータのバージョンを要求元に応答する。
【００５９】
バージョン要求処理部１２０は、最も近い終点ノードにバージョン要求を送信し、送信先からの応答を受け取ってリクエスト処理部１２１に渡す。また、バージョン要求処理部１２０は、他のノードから受信したバージョン要求の処理を行う。
【００６０】
リクエスト処理部１２１は、更新状態判定部１１３による判定結果、ベリファイ要求に対する応答及びバージョン要求に対する応答に基づいてクライアントに送信するデータのバージョンを決定し、データをクライアントに送信する。
【００６１】
すなわち、リクエスト処理部１２１は、アクセスリクエストがあったデータが更新中でない場合には、記憶するデータをクライアントに送信する。また、リクエスト処理部１２１は、アクセスリクエストがあったデータが更新中の場合には、ベリファイ要求に対する応答としてバージョンを受け取ると、そのバージョンのデータをクライアントに送信する。また、リクエスト処理部１２１は、アクセスリクエストがあったデータが更新中で、ベリファイ要求の送信先がないとき又はベリファイ要求に対する応答が不明であるときは、バージョン要求に対する応答で受け取ったバージョンのデータをクライアントに送信する。
【００６２】
次に、データの読み込みリクエストに対して情報処理装置１００が行う処理のフローについて説明する。図９は、データの読み込みリクエストに対して情報処理装置１００が行う処理のフローを示すフローチャートである。図９に示すように、情報処理装置１００は、処理を停止する停止条件があるか否かを判定し（ステップＳ１）、停止条件がある場合には、処理を終了する。ここで、停止条件は、例えば情報処理システム１０の保守などでシステム管理者によって設定される。
【００６３】
一方、停止条件がない場合には、情報処理装置１００は、データにアクセスがあったか否かを判定し（ステップＳ２）、データにアクセスがあると、更新状態判定部１１３が、アクセスのあったデータは更新中であるか否かを判定する（ステップＳ３）。その結果、アクセスのあったデータは更新中でない場合には、リクエスト処理部１２１が、現在のデータをクライアントに返し（ステップＳ４）、ステップＳ１に制御が戻る。
【００６４】
一方、アクセスのあったデータは更新中である場合には、候補選択部１１７が、ベリファイ要求を送れるノードの候補を選択する（ステップＳ５）。そして、候補選択部１１７は、候補が０個であるか否かを判定し（ステップＳ６）、候補が０個である場合には、バージョン要求処理部１２０が、終点ノードにバージョン要求を送る（ステップＳ７）。そして、バージョン要求処理部１２０がバージョン要求に対する応答として受け取ったバージョンに基づいて、リクエスト処理部１２１が終点ノードのバージョンと同じデータをクライアントに返し（ステップＳ８）、ステップＳ１に制御が戻る。
【００６５】
一方、候補が０個でない場合には、送り先選択部１１８がベリファイ要求の送り先を選択し（ステップＳ９）、バージョン要求処理部１２０が終点ノードにバージョン要求を送るとともに、ベリファイ要求処理部１１９がベリファイ要求を送り先選択部１１８により選択された送り先に送る（ステップＳ１０）。
【００６６】
そして、リクエスト処理部１２１は、ベリファイ要求でバージョンが分かったか否かを判定し（ステップＳ１１）、バージョンが分からない場合には、終点ノードのバージョンと同じデータをクライアントに返す（ステップＳ８）。一方、バージョンが分かった場合には、リクエスト処理部１２１は、ベリファイ要求で分かったバージョンのデータをクライアントに返し（ステップＳ１２）、ステップＳ１に制御が戻る。
【００６７】
このように、ベリファイ要求でバージョンが分かった場合に、リクエスト処理部１２１は、ベリファイ要求で分かったバージョンのデータをクライアントに返すことで、バージョン要求に対する応答を待つことなくクライアントに応答することができる。
【００６８】
次に、ベリファイ要求に対する処理のフローについて説明する。図１０は、ベリファイ要求に対する処理のフローを示すフローチャートである。図１０に示すように、情報処理装置１００は、処理を停止する停止条件があるか否かを判定し（ステップＳ２１）、停止条件がある場合には、処理を終了する。
【００６９】
一方、停止条件がない場合には、ベリファイ要求処理部１１９は、データのベリファイ要求が届いたか否かを判定し（ステップＳ２２）、届いた場合には、ベリファイ要求が届いたデータは更新中であるか否かを判定する（ステップＳ２３）。
【００７０】
その結果、ベリファイ要求処理部１１９は、更新中である場合には、データのバージョンは分からないと返答し（ステップＳ２４）、更新中でない場合には、データのバージョンを返す（ステップＳ２５）。そして、ステップＳ２１に制御が戻る。
【００７１】
上述してきたように、実施例では、候補選択部１１７が更新中のデータについてベリファイ要求を送信する候補を配置情報記憶部１１４、距離情報記憶部１１５及び経路情報記憶部１１６を参照して選択する。そして、候補選択部１１７が選択した候補から、送り先選択部１１８が、ベリファイ要求を送信する送り先を選択し、ベリファイ要求処理部１１９が、送り先にベリファイ要求を送信する。そして、ベリファイ要求でバージョンが分かった場合に、リクエスト処理部１２１が、ベリファイ要求で分かったバージョンのデータをクライアントに返す。したがって、情報処理システム１０は、更新中のデータに対する読み込みリクエストに対して、バージョン機能を用いるよりも高速に応答することができる。
【００７２】
また、実施例では、候補選択部１１７は、ベリファイ要求が届くまでに、更新要求がまだ届いていない情報処理装置をベリファイ要求の送信先の候補として選択する。したがって、情報処理システム１０は、更新中のデータに対する読み込みリクエストに対して、バージョン機能を用いるよりも高速に応答することを確実に行うことができる。
【００７３】
また、実施例では、送り先選択部１１８は、ベリファイ要求の送信先の複数の候補の中から、通信遅延時間が最も短い情報処理装置をベリファイ要求の送信先として選択する。したがって、更新中のデータに対する読み込みリクエストを受信した情報処理装置は、最も応答が早く得られる情報処理装置にベリファイ要求を送信することができる。
【００７４】
また、実施例では、送り先選択部１１８は、ベリファイ要求の送信先の複数の候補の中に、通信遅延時間が最も短い情報処理装置が複数ある場合に、マルチパスレプリケーションの経路において更新要求が最も遅く届く情報処理装置を送信先として選択する。したがって、更新中のデータに対する読み込みリクエストを受信した情報処理装置は、データの更新が行われていないと推定される情報処理装置にベリファイ要求を送信することができる。
【００７５】
また、実施例では、情報処理装置について説明したが、情報処理装置が有する機能構成をソフトウェアによって実現することで、同様の機能を有し情報処理装置を制御する制御プログラムを得ることができる。そこで、制御プログラムを実行する情報処理装置のハードウェア構成について説明する。
【００７６】
図１１は、実施例に係る情報処理装置のハードウェア構成を示す図である。図１１に示すように、情報処理装置２００は、メインメモリ２１０と、ＣＰＵ（Central Processing Unit）２２０と、ＬＡＮ（Local Area Network）インタフェース２３０とを有する。また、情報処理装置２００は、ＨＤＤ（Hard Disk Drive）２４０と、スーパーＩＯ（Input Output）２５０と、ＤＶＩ（Digital Visual Interface）２６０と、ＯＤＤ（Optical Disk Drive）２７０とを有する。
【００７７】
メインメモリ２１０は、プログラムやプログラムの実行途中結果などを記憶するメモリである。ＣＰＵ２２０は、メインメモリ２１０からプログラムを読み出して実行する中央処理装置である。ＣＰＵ２２０は、メモリコントローラを有するチップセットを含む。
【００７８】
ＬＡＮインタフェース２３０は、情報処理装置２００をＬＡＮ経由で他の情報処理装置に接続するためのインタフェースである。ＨＤＤ２４０は、プログラムやデータを格納するディスク装置であり、スーパーＩＯ２５０は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。ＤＶＩ２６０は、液晶表示装置を接続するインタフェースであり、ＯＤＤ２７０は、ＤＶＤの読み書きを行う装置である。
【００７９】
ＬＡＮインタフェース２３０は、ＰＣＩエクスプレスによりＣＰＵ２２０に接続され、ＨＤＤ２４０及びＯＤＤ２７０は、ＳＡＴＡ（Serial Advanced Technology Attachment）によりＣＰＵ２２０に接続される。スーパーＩＯ２５０は、ＬＰＣ（Low Pin Count）によりＣＰＵ２２０に接続される。
【００８０】
そして、情報処理装置２００において実行される制御プログラムは、ＤＶＤに記憶され、ＯＤＤ２７０によってＤＶＤから読み出されて情報処理装置２００にインストールされる。あるいは、制御プログラムは、ＬＡＮインタフェース２３０を介して接続された他の情報処理システムのデータベースなどに記憶され、これらのデータベースから読み出されて情報処理装置２００にインストールされる。そして、インストールされた制御プログラムは、ＨＤＤ２４０に記憶され、メインメモリ２１０に読み出されてＣＰＵ２２０によって実行される。
【符号の説明】
【００８１】
１，２，３，４，５，６，７，８    ノード
１０，１０ａ    情報処理システム
１１，１２    クライアント
３１    始点ノード
３２    終点ノード
８１，８２    クライアント
９０    情報処理システム
９１，９２，９３，９４，９５    ノード
１００    情報処理装置
１１１    リクエスト受信部
１１２    リクエスト保持部
１１３    更新状態判定部
１１４    配置情報記憶部
１１５    距離情報記憶部
１１６    経路情報記憶部
１１７    候補選択部
１１８    送り先選択部
１１９    ベリファイ要求処理部
１２０    バージョン要求処理部
１２１    リクエスト処理部
２００    情報処理装置
２１０    メインメモリ
２２０    ＣＰＵ
２３０    ＬＡＮインタフェース
２４０    ＨＤＤ
２５０    スーパーＩＯ
２６０    ＤＶＩ
２７０    ＯＤＤ
【図１Ａ】
2014186382.tif 000003
【図１Ｂ】
2014186382.tif 000004
【図２】
2014186382.tif 000005
【図３】
2014186382.tif 000006
【図４】
2014186382.tif 000007
【図５】
2014186382.tif 000008
【図６】
2014186382.tif 000009
【図７】
2014186382.tif 000010
【図８】
2014186382.tif 000011
【図９】
2014186382.tif 000012
【図１０】
2014186382.tif 000013
【図１１】
2014186382.tif 000014
【図１２Ａ】
2014186382.tif 000015
【図１２Ｂ】
2014186382.tif 000016
【図１３】
2014186382.tif 000017