JP5614182B2 - データ割振り装置、データ割振り方法及びデータ割振りプログラム - Google Patents

データ割振り装置、データ割振り方法及びデータ割振りプログラム Download PDF

Info

Publication number
JP5614182B2
JP5614182B2 JP2010197033A JP2010197033A JP5614182B2 JP 5614182 B2 JP5614182 B2 JP 5614182B2 JP 2010197033 A JP2010197033 A JP 2010197033A JP 2010197033 A JP2010197033 A JP 2010197033A JP 5614182 B2 JP5614182 B2 JP 5614182B2
Authority
JP
Japan
Prior art keywords
data
server
allocation
execution
backup
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010197033A
Other languages
English (en)
Other versions
JP2012053777A (ja
Inventor
多湖 真一郎
真一郎 多湖
達哉 浅井
達哉 浅井
稲越 宏弥
宏弥 稲越
岡本 青史
青史 岡本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010197033A priority Critical patent/JP5614182B2/ja
Publication of JP2012053777A publication Critical patent/JP2012053777A/ja
Application granted granted Critical
Publication of JP5614182B2 publication Critical patent/JP5614182B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、データ割振り装置、データ割振り方法及びデータ割振りプログラムに関する。
1つの問題を分割して複数の計算機で並列に処理させる並列分散処理が知られている。このような並列分散処理を実現するには、1つのコンピュータ(computer)に複数のプロセッサ(processor)を搭載して処理する方法と、ネットワーク(network)を通じて複数のコンピュータを結び付けて処理する方法とがある。
一例として、複数のサーバ(server)がデータを分担して処理を並列に行う場合、すなわち後者の方法を採用する場合を想定する。このとき、複数のサーバのうち一部のサーバに故障が発生したり、また、サーバの保守を行う場合には、故障や保守により稼働が停止されるサーバを分散処理を実行する対象から除外する。このように分散処理を実行するサーバの数が変化した場合でも、分散処理の実行対象とするサーバをサーバ全体から残りのサーバへ縮退した上で処理を実行する必要がある。
このため、各サーバには、自装置が処理するデータとともに、他装置が分散処理の実行対象から除外された場合に自装置が他装置の代わりに処理するデータがバックアップ(backup)として事前に割り振られる。
一例として、図19を用いて、複数のサーバのうちサーバが1つ故障した場合を想定して各サーバに割り振られるバックアップについて説明する。図19は、従来技術における第1バックアップの割り振りの一例を示す図である。図19に示す符号600は、各実行サーバ1〜Nによって他のサーバの故障の有無に関係なく処理されるメインデータを示す。また、図19に示す符号610は、サーバ1〜サーバNのうちサーバが1つ故障した場合に故障が検知されたサーバの代わりに残りのサーバによって処理される第1バックアップを示す。これらメインデータ600及び第1バックアップ610の各データに付される数字のうち、左側の数字は、正常時に処理を担当するサーバを指し、右側の数字は、縮退時に処理を担当するサーバを指す。
図19に示すように、メインデータ600は、N×(N−1)個のデータに分割された上で(N−1)個のデータがサーバ1〜サーバNのN個のサーバへそれぞれ割り振られる。例えば、サーバ1には、メインデータ(1,2)、メインデータ(1,3)、・・・、メインデータ(1,N)のN−1個のメインデータが割り振られる。このとき、サーバ1〜サーバNの全てのサーバに故障がない場合には、メインデータ(1,2)、メインデータ(1,3)、・・・、メインデータ(1,N)は、サーバ1によって処理される。なお、サーバ2〜サーバNについてもN−1個のメインデータが同様に割り振られる。
また、第1バックアップ610は、N×(N−1)個の第1バックアップが(N−1)個ずつN個のサーバへ割り振られる。例えば、サーバ1には、第1バックアップ(2,1)、第1バックアップ(3,1)、・・・、第1バックアップ(N,1)のN−1個の第1バックアップが割り振られる。このとき、サーバ1〜サーバNの全てのサーバに故障がない場合には、第1バックアップ(2,1)、第1バックアップ(3,1)、・・・、第1バックアップ(N,1)はサーバ1によって処理されることはない。なお、サーバ2〜サーバNについてもN−1個の第1バックアップが同様に割り振られる。
一例として、サーバ1〜サーバNのうちサーバ2が故障した場合を想定する。この場合には、サーバ2が処理を担当するはずであったメインデータ(2,1)、(2,3)・・・(2,N)に対応する第1バックアップ(2,1)、(2,3)・・・(2,N)がサーバ2の代わりに各サーバによって処理される。すなわち、第1バックアップ(2,1)はサーバ1によって処理される。第1バックアップ(2,3)はサーバ3によって処理される。また、第1バックアップ(2,N)はサーバNによって処理される。
このように、メインデータ600及び第1バックアップ610は、サーバ1〜サーバNへ均等に割り振られる。このため、サーバ1〜サーバNの性能が同一である場合には、縮退時における1つのサーバあたりの負荷も均等になる。
図20は、サーバが1つ故障した場合における残りのサーバの処理負荷を示す図である。図20に示す例は、図19に示したサーバ1〜サーバNのうちサーバ2が故障した場合を想定している。図20に示す網掛け部分のデータ(2,1)、(2,3)及び(2,N)は、サーバ2の故障によって他のサーバで追加して処理が実行される第1バックアップを表す。
図20に示すように、サーバ2が故障した場合には、N−1個のメインデータが各サーバで処理されるとともに、各サーバに割り振られた第1バックアップのうちサーバ2に対応する第1バックアップ(2,I)がサーバ2の代わりに各サーバにより処理される。なお、「I」は、1〜Nの自然数であるものとする。例えば、サーバ1には、N−1個のメインデータとともに第1バックアップ(2,1)が処理される。また、サーバ3には、N−1個のメインデータとともに第1バックアップ(2,3)が処理される。また、サーバNには、N−1個のメインデータとともに第1バックアップ(2,N)が処理される。このように、サーバ2を除く各サーバによってデータがN個ずつ割り振られる結果、各サーバの処理負荷は均等になる。
さらに、複数のサーバのうちサーバが1つ故障した場合に加えてサーバが2つ故障した場合も想定してバックアップを各サーバへ割り振る技術もある。図21は、従来技術における第2バックアップの割り振りの一例を示す図である。図21に示す符号700は、各実行サーバ1〜5によって他のサーバの故障の有無に関係なく処理されるメインデータを示す。また、図21に示す符号710は、サーバ1〜サーバ5のうちサーバが1つ故障した場合に故障が検知されたサーバの代わりに残りのサーバによって処理される第1バックアップを示す。また、図21に示す符号720は、サーバ1〜サーバ5のうちサーバが2つ故障した場合に故障が検知されたサーバの代わりに残りのサーバによって処理される第2バックアップを示す。これらメインデータ700、第1バックアップ710及び第2バックアップ720の各データに付される数字のうち、左側の数字は、正常時に処理を担当するサーバを指す。また、右側の数字は、正常時に処理を担当するサーバが故障した場合にその代わりに処理を担当するサーバを指す。
図21に示すように、メインデータ700は、図19の場合と同様に、N×(N−1)個、すなわちN=5であるので5×(5−1)=20個のデータに分割された上で(N−1)個、すなわち4個のデータがサーバ1〜5の5個のサーバへ割り振られる。また、図21に示すように、第1バックアップ710は、図19の場合と同様に、N×(N−1)個、すなわち20個の第1バックアップが、(N−1)個、すなわち4個ずつ、サーバ1〜サーバ5の5個のサーバへ割り振られる。
ここで、第2バックアップ720は、一例として、次のように割り振られる。すなわち、各サーバに割り振った第1バックアップのコピー(copy)がそのサーバに付与された番号の次の番号を持つサーバの第2バックアップとして割り振られる。このとき、第1バックアップのコピーの中に割り振り先のサーバの番号を含む第1バックアップは、さらに次の番号を持つサーバの第2バックアップとして割り振られる。
図21に示すように、サーバ1の第1バックアップのコピー(2,1)、(3,1)、(4,1)及び(5,1)がサーバ1の次の番号を持つサーバ2の第2バックアップとして割り振られる。このとき、第1バックアップのコピーのうち(2,1)のデータは、サーバ2の番号を含むので、サーバ2のさらに次の番号を持つサーバ3へ割り振られる。また、サーバ5の第1バックアップのコピー(1,5)は、割り振り先のサーバの番号が1であるので、サーバ1のさらに次の番号を持つサーバ2へスライドして割り振られる。このようにして、サーバ2の第2バックアップ(1,5)、(3,1)、(4,1)及び(5,1)が割り振られる。なお、サーバ2以外のサーバ1、サーバ3〜サーバ5についてもN−1個、すなわち4個の第2バックアップが同様に割り振られる。
このように、各サーバに第2バックアップを割り振っておけば、複数のサーバのうち2つのサーバが故障や保守によって分散処理の実行対象から除外された場合でも、分散処理の実行対象から除外されたサーバの分のデータを残りのサーバによって処理できる。
特開2009−48360号公報
しかしながら、上記の従来技術では、複数のサーバのうち2つのサーバが故障や保守によって分散処理の実行対象から除外された場合に、サーバ間における処理負荷のばらつきが大きくなってしまうケース(case)があるという問題がある。
図22は、サーバが2つ故障した場合における残りのサーバの処理負荷を示す図である。図22に示す例は、図21に示したサーバ1〜サーバ5のうちサーバ4及びサーバ5が故障した場合を想定している。図22に示す網掛け部分のデータ(4,1)、(4,2)及び(4,3)は、サーバ4の故障によって他のサーバで追加して処理が実行される第1バックアップを表す。また、図22に示す網掛け部分のデータ(5,1)、(5,2)及び(5,3)は、サーバ5の故障によって他のサーバで追加して処理が実行される第1バックアップを表す。また、図22に示す網掛け部分のデータ(5,4)及び(4,5)は、サーバ4及びサーバ5の故障によって他のサーバで追加して処理が実行される第2バックアップを表す。なお、図19〜図22の例では、サーバが故障により分散処理の実行対象から除外される場合を想定しているが、保守や他の要因によって分散処理の実行対象から除外される場合も同様である。
図22に示すように、サーバ4及びサーバ5が故障した場合には、4個のメインデータが各サーバで処理される。さらに、各サーバに割り振られた第1バックアップのうちサーバ4及びサーバ5に対応する第1バックアップ(J,K)及び(K,J)がサーバ4及びサーバ5の代わりに各サーバにより処理される。なお、「J」及び「K」は、1〜5の自然数であり、J≠Kであるものとする。例えば、サーバ1は、4個のメインデータを処理するとともに、第1バックアップ(4,1)及び(5,1)と第2バックアップ(5,4)及び(4,5)とをさらに処理する。また、サーバ2は、4個のメインデータを処理するとともに、第1バックアップ(4,2)及び(5,2)を処理する。また、サーバ3は、4個のメインデータを処理するとともに、第1バックアップ(4,3)及び(5,3)を処理する。
このように、サーバ4及びサーバ5が故障した場合には、サーバ1によって4つのバックアップデータが処理される一方で、サーバ2及びサーバ3によっては2つのバックアップデータしか処理されない。このため、サーバ1〜サーバ3の間で処理負荷の差はバックアップデータの2つ分となり、故障時の処理負荷がサーバ1に偏ってしまう。
なお、ここでは、複数のサーバがデータを分担して処理を並列に行う場合を例示して説明したが、1つのコンピュータに複数のプロセッサを搭載して処理する場合にも同様に生ずる問題である。
開示の技術は、上記に鑑みてなされたものであって、サーバ間における処理負荷のばらつきを抑制できるデータ割振り装置、データ割振り方法及びデータ割振りプログラムを提供することを目的とする。
本願の開示するデータ割振り装置は、所定のデータが均等に分割されたメインデータの分散処理を実行する複数の装置の数を取得する取得部を有する。前記複数の装置は、前記複数の装置のうち1つの装置が前記分散処理の実行対象から除外された場合に第1バックアップデータを処理する。さらに、前記複数の装置は、前記複数の装置のうち2つの装置が前記分散処理の実行対象から除外された場合に第2バックアップデータを処理する。前記データ割振り装置は、前記取得部によって取得された装置の数に応じて、前記第2バックアップデータの割り振りを決定する決定部を有する。前記決定部は、所定の割り振りが同一の装置へ重複しないように、前記第2バックアップデータの割り振りを決定する。前記所定の割り振りには、第1の装置が前記分散処理の実行対象から除外された場合に第2の装置に処理を実行させるデータと、前記第2の装置が前記分散処理の実行対象から除外された場合に前記第1の装置に処理を実行させるデータとが含まれる。また、前記所定の割り振りには、同一の装置に対し、前記メインデータ又は前記第1バックアップデータのいずれかと同一の前記第2バックアップデータが含まれる。
本願の開示するデータ割振り装置の一つの態様によれば、サーバ間における処理負荷のばらつきを抑制できるという効果を奏する。
図1は、実施例1に係る検索システムのシステム構成を示す図である。 図2は、実施例1における第2バックアップの割り振りの一例を示す図である。 図3は、実施例1に係る管理サーバの構成を示すブロック図である。 図4Aは、グラフモデルの作成方法を説明するための図である。 図4Bは、グラフモデルの作成方法を説明するための図である。 図4Cは、グラフモデルの作成方法を説明するための図である。 図4Dは、グラフモデルの作成方法を説明するための図である。 図5Aは、グラフモデルの作成結果の一例を示す図である。 図5Bは、グラフモデルの作成結果の一例を示す図である。 図6Aは、既に求められた選択辺集合の流用方法を説明するための図である。 図6Bは、既に求められた選択辺集合の流用方法を説明するための図である。 図6Cは、既に求められた選択辺集合の流用方法を説明するための図である。 図6Dは、既に求められた選択辺集合の流用方法を説明するための図である。 図7は、グラフモデルを用いて決定された第2バックアップの割り振りの一例を示す図である。 図8は、実施例1に係る管理サーバによって実行される全体処理の手順を示すフローチャートである。 図9は、実施例1に係る第2バックアップの割振り決定処理の手順を示すフローチャートである。 図10は、実施例1に係る故障処理の手順を示すフローチャートである。 図11は、実施例1に係る復旧処理の手順を示すフローチャートである。 図12は、応用例により決定された第2バックアップの割り振りの一例を示す図である。 図13は、応用例に係る第2バックアップの割振り決定処理の手順を示すフローチャートである。 図14Aは、ハミルトン閉路の一例を示す図である。 図14Bは、ハミルトン閉路の一例を示す図である。 図14Cは、ハミルトン閉路の一例を示す図である。 図14Dは、ハミルトン閉路の一例を示す図である。 図15Aは、ハミルトン閉路に基づく第2バックアップの割振り方法を説明するための図である。 図15Bは、ハミルトン閉路に基づく第2バックアップの割振り方法を説明するための図である。 図15Cは、ハミルトン閉路に基づく第2バックアップの割振り方法を説明するための図である。 図15Dは、ハミルトン閉路に基づく第2バックアップの割振り方法を説明するための図である。 図15Eは、ハミルトン閉路に基づく第2バックアップの割振り方法を説明するための図である。 図16は、ハミルトン閉路を用いて決定された第2バックアップの割り振りの一例を示す図である。 図17は、実施例2に係る第2バックアップの割振り決定処理の手順を示すフローチャートである。 図18は、実施例3に係るデータ割振りプログラムを実行するコンピュータの一例について説明するための図である。 図19は、従来技術における第1バックアップの割り振りの一例を示す図である。 図20は、サーバが1つ故障した場合における残りのサーバの処理負荷を示す図である。 図21は、従来技術における第2バックアップの割り振りの一例を示す図である。 図22は、サーバが2つ故障した場合における残りのサーバの処理負荷を示す図である。
以下に、本願の開示するデータ割振り装置、データ割振り方法及びデータ割振りプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[システム構成]
まず、本実施例に係る検索システムについて説明する。図1は、実施例1に係る検索システムのシステム構成を示す図である。図1に示す検索システム(system)は、クライアント30から受け付けた検索要求に応答して検索処理を複数の実行サーバ1〜Nに並列して実行させるものである。なお、図1の例では、データ割振り装置の一態様である管理サーバ10が複数の実行サーバ1〜Nによって検索処理に使用されるデータを割り振ることにより、検索処理を実行サーバ1〜Nに分散処理させる場合を想定する。
図1に示すように、検索システムには、クライアント(client)30と、管理サーバ(server)10と、実行サーバ1〜Nとが収容される。図1の例では、1つのクライアント、1つの管理サーバをそれぞれ図示したが、開示のシステムは図示の構成に限定されない。すなわち、検索システムは、任意の数のクライアントおよび管理サーバを収容できる。また、検索システムに収容される実行サーバの数は、2つの実行サーバが分散処理の実行対象から除外された場合に2つ以上の実行サーバNが検索処理を代行できる数、すなわちN≦4であればよい。
これら管理サーバ10及びクライアント30は、ネットワーク(network)20を介して相互に通信可能に接続される。なお、ネットワーク20には、有線または無線を問わず、インターネット(Internet)、LAN(Local Area Network)やVPN(Virtual Private Network)などの任意の種類の通信網を採用できる。
クライアント30は、管理サーバ10及び実行サーバ1〜Nによる検索サービス(service)の提供を受ける側のコンピュータである。かかるクライアント30の一例としては、パーソナルコンピュータ(personal computer)など固定端末の他、携帯電話機、PHS(Personal Handyphone System)やPDA(Personal Digital Assistant)などの移動体端末を適用することもできる。
このクライアント30は、利用者から入力デバイス(device)を介して検索条件を受け付ける。かかる検索条件の一例としては、文書中に含まれるキーワード(key word)や文書が作成された日付などの項目に関する条件の他、項目間の条件をAND条件とするか、あるいはOR条件とするかなどの指定が受け付けられる。そして、クライアント30は、利用者から受け付けた検索条件をネットワーク20を介して管理サーバ10へ送信することにより検索要求を行う。その後、クライアント30は、管理サーバ10から返信された検索結果を所定の表示デバイスに表示させる。
実行サーバ1〜Nは、管理サーバ10からの検索指示に基づいて検索処理を実行するコンピュータである。一例としては、実行サーバ1〜Nは、管理サーバ10から検索処理に使用するデータをロード(load)した上でメモリ(memory)に展開することにより、検索対象とするデータをアクティベート(activate)する。そして、実行サーバ1〜Nは、検索対象とするデータをアクティベートした状態で管理サーバ10から検索指示を受け付けた場合に検索指示に含まれる検索条件にしたがって検索処理を実行し、その検索結果を管理サーバ10へ応答する。なお、実行サーバ1〜Nは、各実行サーバ1〜Nの処理負荷を均等にする観点から、各実行サーバ間で性能が同一であることが好ましい。
管理サーバ10は、クライアント30に検索サービスを提供するコンピュータである。一例としては、管理サーバ10は、クライアント30から検索要求を受け付けた場合に、検索条件を含む検索指示を実行サーバ1〜実行サーバNへ通知する。これによって、アクティベートされていたデータに対する検索処理が実行サーバ1〜Nの各サーバによって実行される。その後、管理サーバ10は、実行サーバ1〜Nから応答された検索結果を統合した上で統合後の検索結果をクライアント30へ返信する。
ここで、管理サーバ10は、実行サーバ1〜Nのうち一部のサーバに故障が発生したり、また、サーバの保守を行う場合に、故障や保守により稼働が停止される実行サーバを検索処理を実行する対象から除外する。このように稼働が停止することにより検索処理を分担する実行サーバの数が変化した場合には、管理サーバ10は、検索処理の実行対象とする実行サーバをサーバ全体から残りの実行サーバへ縮退した上で検索処理を実行させる。なお、以下では、実行サーバの故障により検索処理を分担する実行サーバの数が減少したり、故障した実行サーバの復旧により検索処理を分担する実行サーバの数が増加する場合を想定して説明を行うが、保守や他の要因によって数が増減する場合も同様である。
かかる縮退処理を実現するために、管理サーバ10は、各実行サーバ1〜Nに他のサーバの故障の有無に関係なく検索処理を実行させるメインデータの他に、一部の実行サーバが故障することを想定してバックアップデータを各実行サーバ1〜Nに割り振る。
すなわち、実行サーバ1〜Nには、自装置が検索処理するメインデータとともに、他装置が故障した場合に自装置が他装置の代わりに検索処理するデータがバックアップデータ(backup data)として管理サーバ10により割り振られる。かかるバックアップデータとしては、第1バックアップ及び第2バックアップの2種類のデータが用意される。このうち、第1バックアップは、実行サーバ1〜Nのうちサーバが1つ故障した場合に故障が検知された実行サーバの代わりに残りの実行サーバによって検索処理させるデータを指す。また、第2バックアップは、実行サーバ1〜Nのうちサーバが2つ故障した場合に故障が検知された実行サーバの代わりに残りの実行サーバによって検索処理を実行させるデータを指す。
一例として、管理サーバ10は、検索対象とするデータの総体をN×(N−1)個に分割した上で分割後の(N−1)個のデータをメインデータとして実行サーバ1〜NのN個のサーバへそれぞれ割り振る。また、管理サーバ10は、分割後の(N−1)個のデータを複製した上で複製後の(N−1)個のデータを第1バックアップとして実行サーバ1〜NのN個のサーバへそれぞれ割り振る。さらに、管理サーバ10は、分割後の(N−1)個のデータを複製した上で複製後の(N−1)個のデータを第2バックアップとして実行サーバ1〜NのN個のサーバへそれぞれ割り振る。
[第2バックアップの割振りポリシー]
ここで、本実施例に係る管理サーバ10は、実行サーバ1〜Nのうち2つのサーバが故障や保守によって検索処理の実行対象から除外された場合でも、サーバ間における処理負荷のばらつきを抑制できる第2バックアップの割り振りを実現する。なお、メインデータ及び第1バックアップについては、上記の従来技術と同様の割り振りを行うことによって正常時あるいは実行サーバ1〜Nのうちサーバが1つ故障した場合における実行サーバの1台あたりの処理負荷を均等にできる。
図2は、実施例1における第2バックアップの割り振りの一例を示す図である。この図2の例では、5つの実行サーバ1〜実行サーバ5に検索処理を並列に実行させる場合を想定している。図2に示す符号200は、各実行サーバ1〜5によって他のサーバの故障の有無に関係なく処理されるメインデータを示す。また、図2に示す符号210は、実行サーバ1〜5のうちサーバが1つ故障した場合に故障が検知された実行サーバの代わりに残りの実行サーバによって処理させる第1バックアップを示す。また、図2に示す符号220は、実行サーバ1〜5のうちサーバが2つ故障した場合に故障が検知された実行サーバの代わりに残りの実行サーバによって処理させる第2バックアップを示す。これらメインデータ200、第1バックアップ210及び第2バックアップ220の各データに付される数字のうち、左側の数字は、正常時に処理を担当するサーバを指す。また、右側の数字は、正常時に処理を担当するサーバが故障した場合にその代わりに処理を担当するサーバを指す。
図2に示すように、メインデータ200は、N×(N−1)個、すなわちN=5であるので5×(5−1)=20個のデータに分割された上で(N−1)個、すなわち4個のデータがサーバ1〜5の5個のサーバへ割り振られる。また、第1バックアップ210は、N×(N−1)個、すなわち20個の第1バックアップが、(N−1)個、すなわち4個ずつ、サーバ1〜サーバ5の5個のサーバへ割り振られる。
ここで、第2バックアップは、次に例示する割振りポリシー(1)〜(3)にしたがって第2バックアップの割り振りを決定する。かかる割振りポリシー(1)として、(1)データ量を均等に割り振るという方針を採用する。さらに、割振りポリシー(2)として、メインデータ及び第1バックアップで担当させるデータを第2バックアップとして割り振らないという方針を採用する。さらに、割振りポリシー(3)として、同一の実行サーバの組をサポートする第2バックアップを同じ実行サーバに割り振らないという方針を採用する。
これを説明すると、管理サーバ10は、割振りポリシー(1)にしたがって検索対象とするメインデータ総体をN×(N−1)個に分割した上で分割後の(N−1)個のデータを第2バックアップとして実行サーバ1〜NのN個のサーバへそれぞれ割り振る。図2の例で言えば、管理サーバ10は、分散処理を行う実行サーバの数Nが5であるため、検索対象とするデータをN×(N−1)=20個に分割する。その上で、管理サーバ10は、5つの実行サーバ1〜5に対して、N×(N−1)個、すなわち20個に分割された第2バックアップを4個ずつ割り振る。このように、割振りポリシー(1)にしたがって割り振ることによって、各実行サーバで保持される第2バックアップのデータ量を均等にできる。
また、管理サーバ10は、割振りポリシー(2)にしたがって、メインデータ及び第1バックアップで担当させるデータを第2バックアップとして同じ実行サーバには割り振らない。図2の例で言えば、実行サーバ1には、メインデータ(1,2)、(1,3)、(1,4)及び(1,5)と、第1バックアップ(2,1)、(3,1)、(4,1)及び(5,1)とが割り振られる。この場合には、管理サーバ10は、第2バックアップ(1,2)、(1,3)、(1,4)、(1,5)、(2,1)、(3,1)、(4,1)及び(5,1)を実行サーバ1には割り振らない。このように、割振りポリシー(2)にしたがって割り振ることによって、実行サーバが2つ故障した場合でも自装置の故障を自装置がサポートしなければならい状態を回避することができ、その結果、耐故障性を高めることができる。
さらに、管理サーバ10は、割振りポリシー(3)にしたがって、第2バックアップ(J,K)及び(K,J)を同じ実行サーバに割り振らない。なお、「J」及び「K」は、1〜5の自然数であり、J≠Kであるものとする。図2の例で言えば、管理サーバ10は、第2バックアップ(3,5)を実行サーバ1に割り振ることを決定した場合に、実行サーバ1には第2バックアップ(5,3)を割り振らない。このように、割振りポリシー(3)にしたがって割り振ることによって、実行サーバ3及び実行サーバ5の2つサーバが故障した場合でも、第2バックアップ(3,5)の処理および第2バックアップ(5,3)の処理が実行サーバ1に偏ることを防止できる。
ここで、図2を用いて、実行サーバが2つ故障した場合における残りの実行サーバの処理負荷について説明する。図2の例では、実行サーバ1〜実行サーバ5のうち実行サーバ3及び実行サーバ5が故障した場合を想定している。図2に示す網掛け部分のデータ(3,1)、(3,2)及び(3,4)は、実行サーバ3の故障によって他の事項サーバで追加して処理が実行される第1バックアップを表す。また、図2に示す網掛け部分のデータ(5,1)、(5,2)及び(5,4)は、実行サーバ5の故障によって他の実行サーバで追加して処理が実行される第1バックアップを表す。また、図2に示す網掛け部分のデータ(3,5)及び(5,3)は、実行サーバ3及び実行サーバ5の故障によって他の実行サーバで追加して処理が実行される第2バックアップを表す。
図2に示すように、実行サーバ3及び実行サーバ5が故障した場合には、4個のメインデータが各実行サーバで処理される。さらに、各実行サーバに割り振られた第1バックアップのうち実行サーバ3及び実行サーバ5に対応する第1バックアップ(J,K)及び(K,J)が実行サーバ3及び実行サーバ5の代わりに各実行サーバにより処理される。例えば、実行サーバ1は、4個のメインデータを処理するとともに、第1バックアップ(3,1)及び(5,1)と第2バックアップ(3,5)とをさらに処理する。また、実行サーバ2は、4個のメインデータを処理するとともに、第1バックアップ(3,2)及び(5,2)と第2バックアップ(5,3)とを処理する。また、実行サーバ4は、4個のメインデータを処理するとともに、第1バックアップ(3,4)及び(5,4)を処理する。
このように、実行サーバ3及び実行サーバ5が故障した場合には、実行サーバ1及び実行サーバ2によって3つのバックアップデータが処理されるとともに、実行サーバ4によっては2つのバックアップデータが処理される。このため、実行サーバ1、実行サーバ2及び実行サーバ4の間で処理負荷の差がバックアップデータの1つ分、すなわち最小差とすることができる。
[管理サーバの構成]
次に、本実施例に係る検索システムに含まれる管理サーバの構成について説明する。図3は、実施例1に係る管理サーバの構成を示すブロック図である。図3に示す管理サーバ10は、通信I/F部11と、記憶部12と、制御部13とを有する。なお、管理サーバ10は、図3に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば入力デバイスや表示デバイス等を有するものとする。
このうち、通信I/F部11は、他の装置、例えば実行サーバ1〜Nやクライアント30との間で通信を行うためのインタフェース(interface)である。
記憶部12は、例えば、フラッシュメモリ(flash memory)などの半導体メモリ素子、または、ハードディスク(hard disk)、光ディスクなどの記憶装置である。なお、記憶部12は、上記の種類の記憶装置に限定されるものではなく、RAM(Random Access Memory)、ROM(Read Only Memory)であってもよい。
記憶部12は、制御部13で実行されるOS(Operating System)やデータ割振りプログラムなどの各種プログラムを記憶する。さらに、記憶部12は、制御部13で実行されるプログラムの実行に必要な各種のデータ、例えばシステム構成データ12aと、検索対象データ12bとを併せて記憶する。
このうち、システム構成データ12aは、検索システムの構成を示すデータである。かかるシステム構成データ12aの一態様としては、管理サーバ10や実行サーバ1〜Nの性能に関する情報の他、管理サーバ10に接続されている実行サーバの個数などが含まれる。なお、システム構成データ12aは、検索システムに実行サーバ1〜Nが追加されたり、あるいは削除されたりした場合に実行サーバの個数の増減が更新される。
また、検索対象データ12bは、検索処理の実行対象とされるデータである。かかるシステム構成データ12aの一態様としては、文書データを始めとする各種のコンテンツ(contents)が含まれる。なお、検索対象データ12bは、後述の分割部13bによって所定数のデータに分割された後に各実行サーバ1〜Nへ割り振られる原本データとして使用される。
制御部13は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部13は、図3に示すように、取得部13aと、分割部13bと、複製部13cと、割振り決定部13dと、実行制御部13eと、サーバ監視部13fとを有する。
このうち、取得部13aは、検索処理を分担する実行サーバ1〜Nの数を取得する処理部である。一例としては、取得部13aは、記憶部12に記憶されたシステム構成データ12aを読み出すことにより、管理サーバ10に接続されている実行サーバ1〜Nの数を取得する。他の一例としては、取得部13aは、各実行サーバ1〜Nに問合せを行うことにより応答が得られた実行サーバの数を計測する。更なる一例としては、取得部13aは、システム構成データ12aに相当するデータを保持する図示しない外部装置に問い合わせることにより、管理サーバ10に接続されている実行サーバ1〜Nの数を取得する。
分割部13bは、取得部13aによって取得された実行サーバ1〜Nの数に応じて、検索対象データ12bを分割する処理部である。かかる分割の一態様として、分割部13bは、記憶部12に記憶された検索対象データ12bをN×(N−1)個に分割する。例えば、実行サーバの数Nが5である場合には、分割部13bは、検索対象データ12bをN×(N−1)個、すなわち5×(5−1)=20個のデータに分割する。
複製部13cは、分割部13bによって分割されたデータを複製する処理部である。かかる複製の一態様として、複製部13cは、メインデータ、第1バックアップ及び第2バックアップの3組のデータを実行サーバ1〜Nに割り振るために、分割後のN×(N−1)個のデータを用いて2組分のN×(N−1)個のデータをさらに複製する。これによって、実行サーバ1〜Nに割り振られるN×(N−1)個のデータが3組準備されることになる。
割振り決定部13dは、メインデータ、第1バックアップ及び第2バックアップの割り振りを決定する処理部である。なお、ここでは、割振り決定部13dがメインデータ、第1バックアップ及び第2バックアップの全ての割り振りを決定する場合を説明するが、全部または一部の割り振りの決定を外部記憶装置または外部装置から取得することとしてもかまわない。
これを説明すると、割振り決定部13dは、メインデータ、第1バックアップ及び第2バックアップのうち、メインデータ及び第1バックアップの割り振りを図2に示した方法と同様で決定する。すなわち、割振り決定部13dは、分割部13bによって分割されたN×(N−1)個のデータをメインデータとして実行サーバ1〜NのN個のサーバへそれぞれ均等に(N−1)個ずつ割り振る。また、割振り決定部13dは、複製部13cによって複製されたN×(N−1)個のデータを第1バックアップとして実行サーバ1〜NのN個のサーバへそれぞれ均等に(N−1)個ずつ割り振る。
また、割振り決定部13dは、上記の割振りポリシー(1)〜(3)にしたがって作成されるグラフモデルに基づいて第2バックアップの割り振りを決定する。ここで言う「グラフモデル」とは、実行サーバ1〜Nを点で表すとともに第2バックアップを辺で表して作成されるグラフを指す。
ここで、第2バックアップの割振り決定に関するアルゴリズム(algorithm)について説明する。まず、割振り決定部13dは、各々の実行サーバ1〜Nに対応させた点を正多角形の頂点の位置にそれぞれ配置する。その上で、割振り決定部13dは、割振り対象とする実行サーバに対応する点以外の点を始点とし、割振りポリシー(1)〜(3)を満たすように定義された辺選択ポリシー(イ)、(ロ)及び(ハ)にしたがって2点を結ぶ線分、すなわち辺を選択する。このような辺の選択を繰り返すことによって、割振り決定部13dは、グラフモデルを作成する。そして、割振り決定部13dは、グラフモデルを作成することによって得られた辺に対応するデータを割振り対象とする実行サーバの第2バックアップとして決定する。
かかる辺選択ポリシー(イ)として、割振り対象とする実行サーバに対応する点を含む辺を選択しないという方針を採用する。この辺選択ポリシー(イ)を採用することによって、実行サーバが2つ故障した場合でも自装置の故障を自装置がサポートしなければならい状態を回避し、耐故障性を高める。また、辺選択ポリシー(ロ)として、既に選択が終わった選択辺とは逆向きの辺、すなわち2点の組合せが同一であるとともに始点及び終点が逆となる有向線分を選択しないという方針を採用する。この辺選択ポリシー(ロ)を採用することによって、実行サーバJ及び実行サーバKの2つサーバが故障した場合でも、第2バックアップ(J,K)の処理および第2バックアップ(K,J)の処理が1つの実行サーバに偏ることを防止する。さらに、選択ポリシー(ハ)として、既に選択が終わった選択辺の集合および排除辺の集合に含まれない点を選択するという方針を採用する。この辺選択ポリシー(ハ)を採用する理由は、1つの点に対して得た選択辺の集合を正多角形の重心を中心にして回転することにより、他の点に対する選択辺の集合を求める際に既に求めた選択辺の集合を流用するためである。
図4A〜図4Dは、グラフモデルの作成方法を説明するための図である。図5A及び図5Bは、グラフモデルの作成結果の一例を示す図である。これら図4A〜図4D、図5A及び図5Bの例では、分散処理を行う実行サーバの数Nが5つである場合を想定している。図4A〜図4D、図5A及び図5Bに示す丸表記の「点」は、実行サーバ1〜実行サーバ5を示す。図4A〜図4D、図5A及び図5Bに示す点1の網掛けは、割振り対象とする実行サーバとして選択された点であることを示す。図4A〜図4D、図5A及び図5Bに示す実線は、辺選択ポリシーにしたがって選択された選択辺を指す。図4A〜図4D、図5A及び図5Bに示す点線は、正多角形の重心を中心にして選択辺を回転することにより得られる排除辺を指す。
まず、割振り決定部13dは、図4Aに示すように、各々の実行サーバ1〜Nに対応させた点を正5角形の頂点の位置にそれぞれ配置する。そして、割振り決定部13dは、第2バックアップの割振り対象とする実行サーバに対応する点を1つ選択する。ここでは、図4Aの例にしたがって実行サーバ1に対応する点が選択されたものとして説明を進めるが、他の実行サーバ2〜5に対応する点を選択してもよい。その後、割振り決定部13dは、辺選択ポリシー(イ)、(ロ)及び(ハ)にしたがって2点を結ぶ辺を1つ選択する。ここでは、図4Aの例にしたがって第2バックアップ(2,3)に対応する辺(2,3)が選択されたものとして説明を進めるが、辺選択ポリシーに反する辺でなければ任意の辺を選択できる。そして、割振り決定部13dは、このようにして選択した選択辺(2,3)を図示しない作業用メモリに選択辺集合として登録する。
続いて、割振り決定部13dは、辺(2,3)を選択した後に、辺(2,3)を正5角形の重心を中心にして回転させることにより得られた排除辺を図示しない作業用メモリに排除辺集合として登録する。図4Bに示すように、辺(2,3)を右回りに回転させた場合には、辺(3,4)、辺(4,5)、辺(5,1)及び辺(1,2)が排除辺として得られ、これらの排除辺が排除辺集合として登録される。このようにして、割振り決定部13dは、割振り対象として選択された点に対する辺の選択の余地がなくなり、有向完全グラフが完成するまで、辺の選択、選択辺集合への選択辺の追加、排除辺集合への排除辺の追加を繰り返し行う。なお、図4Bに示す例では、有向完全グラフが作成されていないので、さらなる辺の選択を実行する。
そして、割振り決定部13dは、辺選択ポリシー(イ)、(ロ)及び(ハ)にしたがって2点を結ぶ辺をさらに1つ選択する。ここでは、図4Cの例にしたがって第2バックアップ(5,2)に対応する辺(5,2)を選択したものとする。続いて、割振り決定部13dは、このようにして選択した選択辺(5,2)を図示しない作業用メモリに選択辺集合として登録する。その後、割振り決定部13dは、選択辺(5,2)を正5角形の重心を中心にして回転させることにより得られた排除辺を図示しない作業用メモリに排除辺集合として登録する。図4Cに示すように、辺(5,2)を右回りに回転させた場合には、辺(1,3)、辺(2,4)、辺(3,5)及び辺(4,1)が排除辺として得られ、これらの排除辺が排除辺集合として登録される。なお、図4Cに示す例では、有向完全グラフが作成されていないので、さらなる辺の選択を実行する。
続いて、割振り決定部13dは、辺選択ポリシー(イ)、(ロ)及び(ハ)にしたがって2点を結ぶ辺をさらに1つ選択する。ここでは、図4Dの例にしたがって第2バックアップ(5,4)に対応する辺(5,4)を選択したものとする。そして、割振り決定部13dは、このようにして選択した選択辺(5,4)を図示しない作業用メモリに選択辺集合として登録する。その後、割振り決定部13dは、選択辺(5,4)を正5角形の重心を中心にして回転させることにより得られた排除辺を図示しない作業用メモリに排除辺集合として登録する。図4Dに示すように、辺(5,4)を右回りに回転させた場合には、辺(1,5)、辺(2,1)、辺(3,2)及び辺(4,3)が排除辺として得られ、これらの排除辺が排除辺集合として登録される。なお、図4Dに示す例では、有向完全グラフが作成されていないので、さらなる辺の選択を実行する。
そして、割振り決定部13dは、辺選択ポリシー(イ)、(ロ)及び(ハ)にしたがって2点を結ぶ辺をさらに1つ選択する。ここでは、図5Aの例にしたがって第2バックアップ(5,3)に対応する辺(5,3)を選択したものとする。続いて、割振り決定部13dは、このようにして選択した選択辺(5,3)を図示しない作業用メモリに選択辺集合として登録する。その後、割振り決定部13dは、選択辺(5,3)を正5角形の重心を中心にして回転させることにより得られた排除辺を図示しない作業用メモリに排除辺集合として登録する。図5Aに示すように、辺(5,3)を右回りに回転させた場合には、辺(1,4)、辺(2,5)、辺(3,1)及び辺(4,2)が排除辺として得られ、これらの排除辺が排除辺集合として登録される。
このようにして割振り対象とする実行サーバ1の有向完全グラフが完成すると、図5Bに示す選択辺集合、すなわち辺(2,3)、辺(5,2)、辺(5,4)及び辺(5,3)が得られる。この場合には、割振り決定部13dは、辺(2,3)、辺(5,2)、辺(5,4)及び辺(5,3)に対応する第2バックアップ(2,3)、(5,2)、(5,4)及び(5,3)を実行サーバ1に割り振ることを決定する。
そして、割振り決定部13dは、実行サーバに割り振る第2バックアップが1つ決定した場合に、既に求められた選択辺集合を流用して、他の実行サーバに対する第2バックアップの割り振りを決定する。
図6A〜図6Dは、既に求められた選択辺集合の流用方法を説明するための図である。図6A〜図6Dに示す黒点の網掛けは、既に求められた選択辺集合が求められた点を指す。図6A〜図6Dに示す斜線のハッチングは、既に求められた選択辺集合を用いて新たに選択辺集合を求める点を指す。図6A〜図6Dに示す実線は、回転前の選択辺集合を指す。図6A〜図6Dに示す一点鎖線は、回転後の選択辺集合を指す。
図6Aに示すように、割振り決定部13dは、正5角形の重心を中心にして、最初に選択した点1が次の頂点である点2と一致するまで、最初に選択した点1の選択辺集合、すなわち実線の集合を回転させる。このようにして点1の選択辺集合を回転させると、一点鎖線の集合(1,5)、(1,4)、(1,3)及び(3,4)が得られる。このようにして、回転後に得られる選択辺集合が最初に選択した点1の選択辺集合と同じものが得られるまで、選択辺集合の回転を繰り返す。図6Aに示す例では、回転後の選択辺集合が最初の選択辺集合と一致しない。このため、割振り決定部13dは、次の頂点である点2を新たに選択したものとし、回転後の選択辺集合(1,5)、(1,4)、(1,3)及び(3,4)を関連付ける。そして、割振り決定部13dは、選択辺集合(1,5)、(1,4)、(1,3)及び(3,4)を新たに選択した点2に対応する実行サーバ2の第2バックアップとして振り分けることを決定する。
続いて、割振り決定部13dは、図6Bに示すように、正5角形の重心を中心にして、前回に選択した点2が次の頂点である点3と一致するまで、前回に選択した点2の選択辺集合、すなわち実線の集合を回転させる。このようにして点2の選択辺集合を回転させると、一点鎖線の集合(2,1)、(2,5)、(2,4)及び(4,5)が得られる。図6Bに示す例では、回転後の選択辺集合が最初の選択辺集合と一致しない。このため、割振り決定部13dは、次の頂点である点3を新たに選択したものとし、回転後の選択辺集合(2,1)、(2,5)、(2,4)及び(4,5)を関連付ける。そして、割振り決定部13dは、選択辺集合(2,1)、(2,5)、(2,4)及び(4,5)を新たに選択した点3に対応する実行サーバ3の第2バックアップとして振り分けることを決定する。
そして、割振り決定部13dは、図6Cに示すように、正5角形の重心を中心にして、前回に選択した点3が次の頂点である点4と一致するまで、前回に選択した点3の選択辺集合、すなわち実線の集合を回転させる。このようにして点3の選択辺集合を回転させると、一点鎖線の集合(3,2)、(3,1)、(3,5)及び(5,1)が得られる。図6Cに示す例では、回転後の選択辺集合が最初の選択辺集合と一致しない。このため、割振り決定部13dは、次の頂点である点4を新たに選択したものとし、回転後の選択辺集合(3,2)、(3,1)、(3,5)及び(5,1)を関連付ける。そして、割振り決定部13dは、選択辺集合(3,2)、(3,1)、(3,5)及び(5,1)を新たに選択した点4に対応する実行サーバ4の第2バックアップとして振り分けることを決定する。
続いて、割振り決定部13dは、図6Dに示すように、正5角形の重心を中心にして、前回に選択した点4が次の頂点である点5と一致するまで、前回に選択した点4の選択辺集合、すなわち実線の集合を回転させる。このようにして点4の選択辺集合を回転させると、一点鎖線の集合(4,3)、(4,2)、(4,1)及び(1,2)が得られる。図6Dに示す例では、回転後の選択辺集合が最初の選択辺集合と一致しない。このため、割振り決定部13dは、次の頂点である点5を新たに選択したものとし、回転後の選択辺集合(4,3)、(4,2)、(4,1)及び(1,2)を関連付ける。そして、割振り決定部13dは、選択辺集合(4,3)、(4,2)、(4,1)及び(1,2)を新たに選択した点5に対応する実行サーバ5の第2バックアップとして振り分けることを決定する。
その後、割振り決定部13dは、正5角形の重心を中心にして、前回に選択した点5が次の頂点である点1と一致するまで、前回に選択した点5の選択辺集合、すなわち実線の集合を回転させる。このようにして点5の選択辺集合を回転させると、一点鎖線の集合(2,3)、(5,2)、(5,4)及び(5,3)が得られる。この場合には、割振り決定部13dは、回転後の選択辺集合が最初の選択辺集合と一致するので、第2バックアップの割り振りを終了する。
このようにして割り振りが決定された各実行サーバ1〜5の第2バックアップは図7に示すような割り振りとなる。図7は、グラフモデルを用いて決定された第2バックアップの割り振りの一例を示す図である。図7に示すように、割振り決定部13dは、メインデータ300及び第1バックアップ310については上記の従来技術の場合と同様に割り振る。一方、割振り決定部13dは、第2バックアップ320については辺集合ポリシーにしたがって生成されるグラフモデルに基づいて割り振る。それゆえ、割振り決定部13dは、図7に示すように、各実行サーバで保持される第2バックアップのデータ量が均等になるように割り振ることができる。さらに、割振り決定部13dは、図7に示すように、実行サーバが2つ故障した場合でも自装置の故障を自装置がサポートしなければならい状態を回避するように第2バックアップを割り振ることができる。さらに、割振り決定部13dは、図7に示すように、実行サーバJ及びKの2つサーバが故障した場合でも、第2バックアップ(J,K)の処理および第2バックアップ(K,J)の処理が1つの実行サーバに偏ることがないように割り振ることができる。
図3の説明に戻り、実行制御部13eは、実行サーバ1〜Nによってなされる検索処理の実行制御を行う処理部である。かかる実行制御の一態様として、実行制御部13eは、メインデータ、第1バックアップまたは第2バックアップに関するアクティベートまたはディアクティベートを実行するように実行サーバ1〜Nへ指示する。
一例として、実行制御部13eは、割振り決定部13dによってメインデータ、第1バックアップ及び第2バックアップの割り振りが決定または再決定された場合に、メインデータ、第1バックアップ及び第2バックアップを各実行サーバ1〜Nへ送信する。その上で、実行制御部13eは、メインデータのアクティベートを実行サーバ1〜Nへ指示することにより、各実行サーバ1〜Nのメモリ上にメインデータを展開させる。このように、実行制御部13eは、各実行サーバ1〜Nへ検索指示を行う前の段階でメインデータをロードしたり、メインデータをメモリへ展開したりという準備を事前に実行させる。
他の一例として、実行制御部13eは、サーバ監視部13fによって実行サーバ1〜Nのいずれかのサーバの故障が検知された場合に、次のような処理を実行する。すなわち、実行制御部13eは、故障が検知された実行サーバによって検索処理が実行される予定であったデータに対応するバックアップデータを残りの実行サーバにアクティベートさせる。なお、以下では、サーバ監視部13fによって故障が検知された実行サーバのことを「故障サーバ」と呼ぶ。
このとき、故障が検知された実行サーバが1つである場合には、実行制御部13eは、故障が検知されていない残りの実行サーバに故障サーバの番号Jを通知する。そして、実行制御部13eは、第1バックアップ(J,i)をアクティベートするように故障サーバJを除く実行サーバiへ指示する。ここで言う「i」は、1〜Nの自然数のうち任意の数を指す。これによって、故障サーバJの代わりに残りの実行サーバiに第1バックアップを検索処理させる準備を実行させる。
また、故障が検知された実行サーバが2つである場合には、実行制御部13eは、故障が検知されていない残りの実行サーバに故障サーバの番号J及び番号Kを通知する。そして、実行制御部13eは、第1バックアップ(J,i)及び(K,i)をアクティベートするように故障サーバJ及びKを除く実行サーバiへ指示する。さらに、実行制御部13eは、第2バックアップ(J,K)または(K,J)をアクティベートするように故障サーバJ及びKを除く実行サーバiへ指示する。これによって、故障サーバJ及びKの代わりに残りの実行サーバiに第1バックアップ及び第2バックアップを検索処理させる準備を実行させる。
更なる一例として、実行制御部13eは、サーバ監視部13fによって故障サーバの復旧が検知された場合に、次のような処理を実行する。すなわち、実行制御部13eは、故障からの復旧が検知されたサーバの代わりに残りの実行サーバに実行させる予定であったバックアップデータを残りの実行サーバにディアクティベートさせる。なお、以下では、サーバ監視部13fによって故障からの復旧が検知された実行サーバのことを「復旧サーバ」と呼ぶ。
このとき、故障からの復旧が検知された実行サーバが2つである場合には、実行制御部13eは、それまでに故障せずに残っていた実行サーバに復旧サーバの番号J及び番号Kを通知する。そして、実行制御部13eは、第1バックアップ(J,i)及び(K,i)をディアクティベートするように復旧サーバJ及びKを除く実行サーバiへ指示する。さらに、実行制御部13eは、第2バックアップ(J,K)または(K,J)をディアクティベートするように復旧サーバJ及びKを除く実行サーバiへ指示する。これによって、復旧サーバJ及びKの代わりに残りの実行サーバiに第1バックアップ及び第2バックアップを検索処理させようとしていた準備を解除させる。
また、故障からの復旧が検知された実行サーバが1つであり、かつ故障サーバが2つである状態から故障サーバが1つになった場合には、実行制御部13eは、次のような処理を実行する。すなわち、実行制御部13eは、それまでに故障せずに残っていた実行サーバに故障サーバの番号Jと復旧サーバの番号Kとを通知する。そして、実行制御部13eは、第1バックアップ(K,i)をディアクティベートするように故障サーバJ及び復旧サーバKを除く実行サーバiへ指示する。さらに、実行制御部13eは、第2バックアップ(J,K)または(K,J)をディアクティベートするように故障サーバJ及び復旧サーバKを除く実行サーバiへ指示する。これによって、復旧サーバKの代わりに残りの実行サーバiに第1バックアップ及び第2バックアップを検索処理させようとしていた準備を解除させる。
また、故障からの復旧が検知された実行サーバが1つであり、かつ故障サーバが1つである状態から故障サーバがゼロになった場合には、実行制御部13eは、次のような処理を実行する。すなわち、実行制御部13eは、それまでに故障せずに残っていた実行サーバに復旧サーバの番号Jを通知する。そして、実行制御部13eは、第1バックアップ(J,i)をディアクティベートするように復旧サーバJを除く実行サーバiへ指示する。
実行制御の他の一態様として、実行制御部13eは、クライアント30から検索要求を受け付けた場合に、検索条件を含む検索指示を各実行サーバ1〜Nへ行うことにより、各実行サーバ1〜Nでアクティベート中のデータに対して検索処理を実行させる。
サーバ監視部13fは、実行サーバ1〜Nの稼働状態を監視する処理部である。一例としては、サーバ監視部13fは、実行サーバ1〜Nとの間で稼働状態を確認するための通信を任意のタイミング、例えば一定周期や規定時刻などに行う。この結果、サーバ監視部13fは、通信の応答が得られなかった実行サーバがある場合に、その実行サーバを故障サーバとして検知する。また、サーバ監視部13fは、通信の応答が得られた実行サーバの中に故障サーバがある場合に、その故障サーバを復旧サーバとして検知する。
[処理の流れ]
次に、本実施例に係る検索システムにおける処理の流れを説明する。なお、ここでは、管理サーバ10によって実行される(1)全体処理について説明してから、全体処理の中のサブフローとして実行される(2)第2バックアップの割振り決定処理、(3)故障処理、(4)復旧処理を説明する。
(1)全体処理
図8は、実施例1に係る管理サーバによって実行される全体処理の手順を示すフローチャートである。この全体処理は、検索システムのシステム構成、すなわち管理サーバ10に接続されている実行サーバの数が変更された場合に処理が起動される。
図8に示すように、分割部13bは、取得部13aによって取得された管理サーバ10に接続中の実行サーバ1〜Nの数に応じて、検索対象データ12bをN×(N−1)個に分割する。そして、複製部13cは、分割後のN×(N−1)個のデータを用いて2組分のN×(N−1)個のデータをさらに複製する(ステップS101)。
続いて、割振り決定部13dは、メインデータの割り振りを決定し(ステップS102)、さらに、第1バックアップの割り振りを決定する(ステップS103)。そして、割振り決定部13dは、一例として、グラフモデルに基づく第2バックアップの割振り決定処理によって第2バックアップの割り振りを決定する(ステップS104)。
その後、実行制御部13eは、割振り決定部13dによって決定されたメインデータ、第1バックアップ及び第2バックアップの割り振りにしたがってメインデータ、第1バックアップ及び第2バックアップを各実行サーバ1〜Nへ送信する(ステップS105)。その上で、実行制御部13eは、メインデータのアクティベートを実行サーバ1〜Nへ指示する(ステップS106)。
そして、サーバ監視部13fによって実行サーバの故障が検知された場合(ステップS107肯定)には、実行制御部13eは、故障サーバのバックアップデータをアクティベートする故障処理を実行する(ステップS108)。なお、故障処理が終了した後には、ステップS107へ移行する。
また、サーバ監視部13fによって故障サーバの復旧が検知された場合(ステップS109肯定)には、実行制御部13eは、復旧サーバのバックアップデータをディアクティベートする復旧処理を実行する(ステップS110)。なお、復旧処理が終了した後には、ステップS107へ移行する。
また、クライアント30から検索要求を受け付けた場合(ステップS111肯定)には、実行制御部13eは、検索条件を含む検索指示を実行サーバ1〜Nへ行うことにより(ステップS112)、実行サーバ1〜Nでアクティベート中のデータを検索処理させる。なお、実行サーバ1〜Nに検索指示を行った後には、ステップ107へ移行する。
このようにして、割振り決定部13dによってメインデータ、第1バックアップ及び第2バックアップの割り振りが決定された後には、ステップS107〜ステップS112までの処理が繰り返し実行される。
なお、図8に示したフローチャートでは、ステップS101〜ステップS104の順に処理を実行する場合を図示したが、これらの処理順序は図示のものに限定されない。すなわち、ステップS101〜ステップS104の処理は任意の順序に変更できる。
(2)第2バックアップの割振り決定処理
図9は、実施例1に係る第2バックアップの割振り決定処理の手順を示すフローチャートである。この割振り決定処理は、図8に示したステップS104に対応する処理であり、一例として、ステップS103が終了した後に実行される。
図9に示すように、割振り決定部13dは、各々の実行サーバ1〜Nに対応させた点を正多角形の頂点の位置にそれぞれ配置する(ステップS201)。そして、割振り決定部13dは、第2バックアップの割振り対象とする実行サーバに対応する点を1つ選択する(ステップS202)。
このとき、割振り決定部13dは、割振り対象の実行サーバとして選択した点の除く全ての点に関し、選択辺集合及び排除辺集合として登録された辺以外に選択できる辺が存在するか否か、すなわち有向完全グラフが完成したか否かを判定する(ステップS203)。ここで言う「有向完全グラフ」は、有向線分によって形成されるものであり、選択辺集合に登録された選択辺の逆方向の辺は辺選択ポリシー(ロ)の規定により選択が禁止されているものとする。なお、第2バックアップの割振り対象とする実行サーバに対応する点を選択した時点では、選択辺集合及び排除辺集合に1つも辺が登録されておらず、有向完全グラフは完成していないので、そのままステップS204へ移行する。
続いて、割振り決定部13dは、辺選択ポリシー(イ)、(ロ)及び(ハ)にしたがって2点を結ぶ辺を1つ選択する(ステップS204)。そして、割振り決定部13dは、このようにして選択した選択辺を図示しない作業用メモリに選択辺集合として登録する(ステップS205)。
続いて、割振り決定部13dは、選択辺を正多角形の重心を中心にして回転させることにより得られた排除辺を図示しない作業用メモリに排除辺集合として登録する(ステップS206)。その後、割振り決定部13dは、有向完全グラフが完成するまで(ステップS203否定)、ステップS204〜ステップS206までの処理を繰り返し実行する。
そして、有向完全グラフが完成すると(ステップS203肯定)、割振り決定部13dは、次のような決定を下す。すなわち、割振り決定部13dは、ステップS202で選択した点に対応する実行サーバにステップS204〜ステップS206の処理で得た選択辺集合に対応する第2バックアップを割り振ることを決定する(ステップS207)。
続いて、割振り決定部13dは、正多角形の重心を中心にして、最初に選択した点が次の頂点である点と一致するまで、最初に選択した点の選択辺集合を回転させる(ステップS208)。そして、割振り決定部13dは、回転後に得られた選択辺集合が最初に選択した点の選択辺集合と同じものが得られたか否かを判定する(ステップS209)。なお、最初の回転では、回転後の選択辺集合が最初の選択辺集合と一致しないので、そのままステップS210へ移行する。
そして、回転後に得られた選択辺集合が最初に選択した点の選択辺集合と同じものではない場合(ステップS209否定)には、割振り決定部13dは、次の頂点である点を新たに選択したものとし、回転後の選択辺集合を関連付ける(ステップS210)。続いて、割振り決定部13dは、選択辺集合を新たに選択した点に対応する実行サーバの第2バックアップとして振り分けることを決定する(ステップS207)。
これに続いて、割振り決定部13dは、正多角形の重心を中心にして、前回に選択した点が次の頂点である点と一致するまで、前回に選択した点の選択辺集合を回転させる(ステップS208)。その後、回転後に得られた選択辺集合が最初に選択した点の選択辺集合と同じものとなるまで(ステップS209否定)、ステップS210、ステップS207、ステップS208の処理を繰り返し行う。
そして、回転後に得られた選択辺集合が最初に選択した点の選択辺集合と同じものとなった場合(ステップS209肯定)には、割振り決定部13dは、第2バックアップの割り振りを終了する。
(3)故障処理
図10は、実施例1に係る故障処理の手順を示すフローチャートである。この故障処理は、図8に示したステップS108に対応する処理であり、サーバ監視部13fによって実行サーバの故障が検知された場合に処理が起動する。
図10に示すように、故障が検知された実行サーバが1つである場合(ステップS301否定)には、実行制御部13eは、故障が検知されていない残りの実行サーバに故障サーバの番号Jを通知する(ステップS302)。
そして、実行制御部13eは、第1バックアップ(J,i)をアクティベートするように故障サーバJを除く実行サーバiへ指示し(ステップS303)、処理を終了する。これによって、故障サーバJの代わりに残りの実行サーバiに第1バックアップを検索処理させる準備を実行させる。
また、故障が検知された実行サーバが2つである場合(ステップS301肯定)には、実行制御部13eは、故障が検知されていない残りの実行サーバに故障サーバの番号J及び番号Kを通知する(ステップS304)。
そして、実行制御部13eは、第1バックアップ(J,i)及び(K,i)をアクティベートするように故障サーバJ及びKを除く実行サーバiへ指示する(ステップS305)。さらに、実行制御部13eは、第2バックアップ(J,K)または(K,J)をアクティベートするように故障サーバJ及びKを除く実行サーバiへ指示し(ステップS306)、処理を終了する。これによって、故障サーバJ及びKの代わりに残りの実行サーバiに第1バックアップ及び第2バックアップを検索処理させる準備を実行させる。
(4)復旧処理
図11は、実施例1に係る復旧処理の手順を示すフローチャートである。この復旧処理は、図8に示したステップS110に対応する処理であり、サーバ監視部13fによって故障サーバの復旧が検知された場合に処理が起動する。
図11に示すように、故障からの復旧が検知された実行サーバが2つである場合(ステップS401肯定)には、実行制御部13eは、それまでに故障せずに残っていた実行サーバに復旧サーバの番号J及び番号Kを通知する(ステップS402)。
そして、実行制御部13eは、第1バックアップ(J,i)及び(K,i)をディアクティベートするように復旧サーバJ及びKを除く実行サーバiへ指示する(ステップS403)。さらに、実行制御部13eは、第2バックアップ(J,K)または(K,J)をディアクティベートするように復旧サーバJ及びKを除く実行サーバiへ指示し(ステップS404)、処理を終了する。
また、故障からの復旧が検知された実行サーバが1つであり(ステップS401否定)、かつ故障サーバが1つである状態から故障サーバがゼロになった場合(ステップS405否定)には、実行制御部13eは、次のような処理を実行する。すなわち、実行制御部13eは、それまでに故障せずに残っていた実行サーバに復旧サーバの番号Jを通知する(ステップS406)。そして、実行制御部13eは、第1バックアップ(J,i)をディアクティベートするように復旧サーバJを除く実行サーバiへ指示し(ステップS407)、処理を終了する。
また、故障からの復旧が検知された実行サーバが1つであり(ステップS401否定)、かつ故障サーバが2つである状態から故障サーバが1つになった場合(ステップS405肯定)には、実行制御部13eは、次のような処理を実行する。すなわち、実行制御部13eは、それまでに故障せずに残っていた実行サーバに故障サーバの番号Jと復旧サーバの番号Kとを通知する(ステップS408)。
そして、実行制御部13eは、第1バックアップ(K,i)をディアクティベートするように故障サーバJ及び復旧サーバKを除く実行サーバiへ指示する(ステップS409)。さらに、実行制御部13eは、第2バックアップ(J,K)または(K,J)をディアクティベートするように故障サーバJ及び復旧サーバKを除く実行サーバiへ指示し(ステップS410)、処理を終了する。
[実施例1の効果]
上述してきたように、本実施例に係る管理サーバ10は、2つの実行サーバの故障に備えて実行サーバ1〜Nへ第2バックアップを割り振る場合に、次のような割り振りを実行する。すなわち、本実施例に係る管理サーバ10は、実行サーバJの故障時に実行サーバKが処理するデータと実行サーバKの故障時にサーバJが処理するデータが重ならないよう割り振る。
つまり、本実施例に係る管理サーバ10は、上記の割振りポリシー(3)にしたがって、第2バックアップ(J,K)及び(K,J)を同じ実行サーバに割り振らない。このような割振りポリシー(3)にしたがって割り振ることによって、実行サーバJ及びKの2つサーバが故障した場合でも、第2バックアップ(J,K)の処理および第2バックアップ(K,J)の処理が1つの実行サーバに偏ることを防止できる。したがって、本実施例に係る管理サーバ10によれば、実行サーバ間の作業差を最小限にできる結果、サーバ間における処理負荷のばらつきを抑制することが可能になる。
ここで、本実施例および従来技術で処理負荷が最高となる実行サーバ間の負荷増加割合を比較する。すなわち、正常時には、本実施例および従来技術のいずれにおいても、各実行サーバ1〜NによってN−1個のデータブロックが処理されることになる。また、故障サーバが1つである場合には、本実施例および従来技術のいずれにおいても、故障サーバ以外の残りの実行サーバiによってN個のデータブロックが処理されることになる。
しかしながら、故障サーバが2つである場合には、本実施例および従来技術のいずれの方式を採用するかによって負荷の増加割合が異なる。すなわち、本実施例の方式の場合には、故障サーバ以外の残りの実行サーバのうち処理負荷が最高となる実行サーバではN+2個のデータブロックが処理される。一方、従来技術の方式の場合には、故障サーバ以外の残りの実行サーバのうち処理負荷が最高となる実行サーバではN+3個のデータブロックが処理される。
このため、実行サーバの数がN=5個であるとしたとき、本実施例の方式では、故障サーバが2つである場合の負荷増加割合が175%となるのに対し、従来技術の方式では、故障サーバが2つである場合の負荷増加割合が200%となる。また、実行サーバの数がN=6個であるとしたとき、本実施例の方式では、故障サーバが2つである場合の負荷増加割合が130%となるのに対し、従来技術の方式では、故障サーバが2つである場合の負荷増加割合が140%となる。さらに、実行サーバの数がN=7個であるとしたとき、本実施例の方式では、故障サーバが2つである場合の負荷増加割合が115%となるのに対し、従来技術の方式では、故障サーバが2つである場合の負荷増加割合が120%となる。このように、実行サーバの数にかかわらず、本実施例の方式の方が従来技術の方式に比べて負荷増加割合が低いことがわかる。
また、本実施例に係る管理サーバ10は、上記の辺選択ポリシー(イ)〜(ハ)にしたがって作成されるグラフモデルに基づいて第2バックアップの割り振りを決定する。それゆえ、本実施例に係る管理サーバ10によれば、割振りポリシー(1)〜(3)をコンピュータの情報処理としてアルゴリズムを規定することが可能になる。
[実施例1の応用例]
ところで、上記の実施例1では、グラフモデルに基づいて第2バックアップの割り振りを決定する場合に、割振り対象の実行サーバとして選択した点を対象に複数の辺の中から辺を割振り決定部13dに選択させる場合を説明した。この場合には、複数の辺の中から複数の辺の中から辺選択ポリシー(イ)〜(ハ)にしたがって任意の辺を選択できる一方で、選択辺集合および排除辺集合を参照する必要がある。
そこで、本応用例では、複数の辺のいずれの辺を選択するかを予め定義しておき、定義にしたがって選択辺集合および排除辺集合を参照せずに辺を選択する場合について説明する。なお、本応用例では、割振り決定部13d以外の機能部については上記の実施例1と同様の機能を有するので、その説明は省略する。
これを説明すると、割振り決定部13dは、辺の始点とする実行サーバの番号を「最小のサーバ番号」と定めるとともに、辺の終点とする実行サーバの番号を「最小のサーバ番号+1」と定める。さらに、割振り決定部13dは、第2バックアップの割振り対象とする実行サーバの番号を最大のサーバ番号、すなわちNと定める。
一例として、分散処理を行う実行サーバの数Nが6つである場合を想定する。この場合には、割振り決定部13dは、辺の始点とする実行サーバの番号を「1」と定めるとともに、辺の終点とする実行サーバの番号を「2」と定める。さらに、割振り決定部13dは、第2バックアップの割振り対象とする実行サーバの番号を「6」と定める。
このように、辺の始点および終点とする実行サーバの番号を可及的に小さくするのは、分散処理を行う実行サーバの数Nが少ない場合でも適用可能とするためである。すなわち、実行サーバが2つ故障した場合でも実行サーバで分散処理を実行させるには4つの実行サーバが必要となるが、この際に辺の始点を「4」、「5」と設定した場合には実行サーバが5つ以上設けられている場合にしか適用できなくなるからである。
そして、割振り決定部13dは、現在の辺の終点が最大のサーバ番号、すなわちNであるか否かを判定する。このとき、辺の始点、辺の終点および割振り対象とする実行サーバの番号を定めた時点では、辺の終点「最小のサーバ番号+1」≠最大のサーバ番号「N」であるので、そのまま次の処理に移行する。
ここで、現在の辺の終点がNではない場合には、割振り決定部13dは、現在の(辺の始点,辺の終点)に対応するデータを図示しない作業用メモリへ割振りデータ集合として登録する。そして、割振り決定部13dは、現在の辺の終点を1つインクリメントする。例えば、本例の場合には、辺の始点が「1」、辺の終点が「2」であるので、割振り決定部13dは、辺(1,2)に対応するデータを割振りデータ集合へ登録することになる。そして、割振り決定部13dは、現在の辺の終点「2」を1つインクリメントし、辺の終点を「3」とする。
そして、割振り決定部13dは、現在の辺の終点が最大のサーバ番号、すなわちNになるまで、先に説明した割振りデータ集合への登録、辺の終点のインクリメントを繰り返し実行する。例えば、本例の場合には、最大のサーバ番号Nは「6」であるため、割振り決定部13dは、辺の終点が「6」にインクリメントされるまで、割振りデータ集合への登録、辺の終点のインクリメントを繰り返す。すなわち、割振り決定部13dは、辺の終点が「6」までインクリメントして、辺(1,3)、(1,4)及び(1,5)に対応するデータを割振りデータ集合へ登録する。この時点で割振りデータ集合には、辺(1,2)、(1,3)、(1,4)及び(1,5)が登録されることになる。
その後、現在の辺の終点がNになった場合には、割振り決定部13dは、辺(最小のサーバ番号+2,最小のサーバ番号+1)を割振りデータ集合へ追加する。このような割振りデータ集合への追加を行うのは、割振り対象とする実行サーバの番号Nを割り振るのを避けるとともに、既に割振りデータ集合へ追加した辺の逆向きの辺を追加するのを避けるためである。すなわち、割振り対象とする実行サーバへ(N−1)個の第2バックアップを割り振るには、辺の終点をインクリメントしただけでは1つ足りない。そして、インクリメントの延長として辺(1,6)を追加した場合には、割振り対象とする実行サーバ6の番号を含むため、辺選択ポリシー(イ)に反してしまう。また、既に割振りデータ集合へ追加した辺の逆向きの辺、例えば(2,1)を追加した場合には、辺選択ポリシー(ロ)に反してしまう。よって、本例では、分散処理を行う実行サーバの数Nが少ない場合でも適用可能とするため、一例として、辺(最小のサーバ番号+2,最小のサーバ番号+1)を割振りデータ集合へ追加し、割振りデータ集合を(N−1)個とする。
そして、割振り決定部13dは、割振りデータ集合として登録されている辺に対応するデータを割振り対象とする実行サーバの第2バックアップとして割り振ることを決定する。例えば、本例の場合には、辺(1,2)、(1,3)、(1,4)及び(1,5)に加え、辺(最小のサーバ番号+2,最小のサーバ番号+1)、すなわち辺(3,2)が実行サーバ6の第2バックアップとして割り振られる。
続いて、割振り決定部13dは、割振り対象とする実行サーバの番号をインクリメントする。なお、ここでは、インクリメント後のサーバ番号がN+1になる場合には、最小のサーバ番号である「1」を算出結果とする。そして、割振り決定部13dは、割振りデータ集合に含まれる全ての要素の(辺の始点,辺の終点)を1つずつインクリメントする。
例えば、本例の場合には、割振り対象とする実行サーバの番号が「6」=Nであり、そのままインクリメントするとN+1となるので、割振り決定部13dは、インクリメントの結果を「1」とし、割振り対象とする実行サーバの番号を「1」とする。そして、割振り決定部13dは、全ての割振りデータ集合(1,2)、(1,3)、(1,4)、(1,5)及び(3,2)の辺の始点及び終点を1つずつインクリメントとし、次の結果を算出する。すなわち、割振り決定部13dは、割振りデータ集合(2,3)、(2,4)、(2,5)、(2,6)及び(4,3)を算出する。
このように、割振りデータ集合に含まれる全ての要素の(辺の始点,辺の終点)を1つずつインクリメントする計算は、上記の実施例1で説明した「正多角形の重心を中心にして選択辺集合を次の頂点となる点まで回転させる処理」に相当する。これによって、割り振り対象とする実行サーバについて割振りデータ集合を各個に求める場合に比べて処理を簡略化する。
その後、割振り決定部13dは、割振り対象とする実行サーバの番号がN−1になるまで、上記の処理を繰り返す。すなわち、割振り決定部13dは、上記の割振り対象とする実行サーバへの割振りデータ集合の割り振り、割振り対象とする実行サーバの番号のインクリメント、さらには、割振りデータ集合の全ての要素に対するインクリメントを繰り返す。
例えば、本例の場合には、サーバ番号のN−1は「5=(6−1)」であるため、割振り決定部13dは、割振り対象とする実行サーバの番号が「5」にインクリメントされるまで、次のような処理を繰り返す。例えば、割振り対象の実行サーバの番号が「1」にインクリメントされた場合には、実行サーバ6の割振りデータ集合が1つずつインクリメントされた辺(2,3)、(2,4)、(2,5)、(2,6)及び(4,3)が実行サーバ1の割振りデータ集合とされる。また、割振り対象の実行サーバの番号が「2」にインクリメントされた場合には、実行サーバ1の割振りデータ集合が1つずつインクリメントされた辺(3,4)、(3,5)、(3,6)、(3,1)及び(5,4)が実行サーバ2の割振りデータ集合とされる。また、割振り対象の実行サーバの番号が「3」にインクリメントされた場合には、実行サーバ2の割振りデータ集合が1つずつインクリメントされた辺(4,5)、(4,6)、(4,1)、(4,2)及び(6,5)が実行サーバ3の割振りデータ集合とされる。また、割振り対象の実行サーバの番号が「4」にインクリメントされた場合には、実行サーバ3の割振りデータ集合が1つずつインクリメントされた辺(5,6)、(5,1)、(5,2)、(5,3)及び(1,6)が実行サーバ4の割振りデータ集合とされる。また、割振り対象の実行サーバの番号が「5」にインクリメントされた場合には、実行サーバ4の割振りデータ集合が1つずつインクリメントされた辺(6,1)、(6,2)、(6,3)、(6,4)及び(2,1)が実行サーバ5の割振りデータ集合とされる。
そして、割振り決定部13dは、割振り対象とする実行サーバの番号がN−1になると、第2バックアップの割り振りを終了する。なお、本応用例では、実行サーバの番号が連番である場合を想定するが、連番でない場合にも割振り対象とする実行サーバの番号をインクリメントするに際して実行サーバ間の番号の差に応じてインクリメントする数を調節することにより同様に適用できる。
このようにして割り振りが決定された各実行サーバ1〜6の第2バックアップは図12に示すような割り振りとなる。図12は、応用例により決定された第2バックアップの割り振りの一例を示す図である。図12に示すように、割振り決定部13dは、メインデータ400及び第1バックアップ410については上記の従来技術の場合と同様に割り振る。一方、割振り決定部13dは、第2バックアップ420については予め定めた辺選択の定義にしたがって辺選択を固定的に行って生成されるグラフモデルに基づいて割り振る。それゆえ、割振り決定部13dは、図12に示すように、各実行サーバで保持される第2バックアップのデータ量が均等になるように割り振ることができる。さらに、割振り決定部13dは、図12に示すように、実行サーバが2つ故障した場合でも自装置の故障を自装置がサポートしなければならい状態を回避するように第2バックアップを割り振ることができる。さらに、割振り決定部13dは、図12に示すように、実行サーバJ及びKの2つサーバが故障した場合でも、第2バックアップ(J,K)の処理および第2バックアップ(K,J)の処理が1つの実行サーバに偏ることがないように割り振ることができる。
[応用例の処理の流れ]
次に、本応用例に係る第2バックアップの割振り決定処理について説明する。図13は、応用例に係る第2バックアップの割振り決定処理の手順を示すフローチャートである。この割振り決定処理は、上記の実施例1と同様に、図8に示したステップS104に対応する処理であり、一例として、ステップS103が終了した後に実行される。
図13に示すように、割振り決定部13dは、辺の始点とする実行サーバの番号を「最小のサーバ番号」と定める(ステップS501)。そして、辺の終点とする実行サーバの番号を「最小のサーバ番号+1」と定める(ステップS502)。さらに、割振り決定部13dは、第2バックアップの割振り対象とする実行サーバの番号を最大のサーバ番号、すなわちNと定める(ステップS503)。
そして、割振り決定部13dは、現在の辺の終点が最大のサーバ番号、すなわちNであるか否かを判定する(ステップS504)。このとき、辺の始点、辺の終点および割振り対象とする実行サーバの番号を定めた時点では、辺の終点「最小のサーバ番号+1」≠最大のサーバ番号「N」であるので(ステップS504否定)、そのままステップS505に移行する。
続いて、割振り決定部13dは、現在の(辺の始点,辺の終点)に対応するデータを図示しない作業用メモリへ割振りデータ集合として登録する(ステップS505)。そして、割振り決定部13dは、現在の辺の終点を1つインクリメントする(ステップS506)。
そして、割振り決定部13dは、現在の辺の終点が最大のサーバ番号、すなわちNになるまで(ステップS504否定)、上記のステップS505及びステップS506の処理を繰り返し実行する。
その後、現在の辺の終点がNになった場合には、割振り決定部13dは、辺(最小のサーバ番号+2,最小のサーバ番号+1)を割振りデータ集合へ追加する(ステップS507)。
続いて、割振り決定部13dは、割振りデータ集合として登録されている辺に対応するデータを割振り対象とする実行サーバの第2バックアップとして割り振ることを決定する(ステップS508)。その後、割振り決定部13dは、割振り対象とする実行サーバの番号をインクリメントする(ステップS509)。そして、割振り決定部13dは、割振りデータ集合に含まれる全ての要素の(辺の始点,辺の終点)を1つずつインクリメントする(ステップS510)。
そして、割振り決定部13dは、割振り対象とする実行サーバの番号がN−1になるまで(ステップS511否定)、上記のステップS508〜ステップS510の処理を繰り返し実行する。その後、割振り対象とする実行サーバの番号がN−1になると(ステップS511肯定)、第2バックアップの割り振りを終了する。
[応用例の効果]
このように、本応用例に係る管理サーバ10では、選択辺集合および排除辺集合を参照せずに辺を決定する。このため、本応用例に係る管理サーバ10では、グラフモデルの生成過程を簡略化することができる。それゆえ、本応用例に係る管理サーバ10によれば、上記の実施例1と同様に、サーバ間における処理負荷のばらつきを抑制することに加えて、第2バックアップの割振り決定処理を効率化することも可能になる。
さて、上記の実施例1では、辺選択ポリシー(イ)〜(ハ)にしたがって作成されるグラフモデルに基づいて第2バックアップの割り振りを決定する場合を説明したが、開示の装置はこれに限定されるものではなく、グラフ生成に他の理論を適用することもできる。
そこで、実施例2では、他の一態様として、ハミルトン閉路に基づいて第2バックアップの割り振りを決定する場合について説明する。なお、本実施例では、割振り決定部13d以外の機能部については上記の実施例1と同様の機能を有するため、その説明は省略する。また、本実施例では、上記の実施例1の管理サーバ及び割振り決定部と区別する観点から、管理サーバの符号を「50」とし、割振り決定部の符号を「51」として以下の説明を行う。
本実施例に係る管理サーバ50は、N点を含んでなる有向完全グラフが辺を共有しないN−1個の閉路を持つというハミルトン閉路の性質を利用してグラフを生成する。すなわち、本実施例に係る管理サーバ50は、N−1個のハミルトン閉路の一部を割振り対象とする実行サーバに対応する点を含まないようにそれぞれ抽出することで、辺選択ポリシー(イ)〜(ハ)を満たすグラフを生成する。
これを説明すると、割振り決定部51は、各実行サーバ1〜Nに対応する点を含んでなる辺を共有しないN−1個のハミルトン閉路を作成する。例えば、実行サーバの数Nを「5」とした場合には、図14A〜図14Dに示す4つのハミルトン閉路が得られる。図14A〜図14Dは、ハミルトン閉路の一例を示す図である。図14Aに示すハミルトン閉路は、辺(1,2)、(2,3)、(3,5)、(5,4)及び(4,1)を含んでなる。図14Bに示すハミルトン閉路は、辺(1,5)、(5,2)、(2,4)、(4,3)及び(3,1)を含んでなる。図14Cに示すハミルトン閉路は、辺(1,3)、(3,4)、(4,2)、(2,5)及び(5,1)を含んでなる。図14Dに示すハミルトン閉路は、辺(1,4)、(4,5)、(5,3)、(3,2)及び(2,1)を含んでなる。
続いて、割振り決定部51は、実行サーバ1〜Nに対応する点のうち未選択の点を第2バックアップの割振り対象として1つ選択する。そして、割振り決定部51は、各ハミルトン閉路のうち、割振り対象として選択した点を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバの第2バックアップとして割り振る。このようにして、割振り決定部51は、全ての実行サーバ1〜Nに第2バックアップを割り振るまで、未選択の点の選択、さらには、第2バックアップの割り振りを繰り返し実行する。
図15A〜図15Eは、ハミルトン閉路に基づく第2バックアップの割振り方法を説明するための図である。図15A〜図15Eの例では、割振り対象とする点として実行サーバ1〜5に対応する点が選択された場合に各ハミルトン閉路からの辺選択方法をそれぞれ示す。図15A〜図15Eに示す点の網掛けは、割振り対象とする点として選択された点を示す。
図15Aに示すように、割振り対象とする点として実行サーバ1に対応する点が選択された場合には、割振り決定部51は、次のような処理を行う。すなわち、割振り決定部51は、図14A〜図14Dに示したハミルトン閉路のうち、点1を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバ1の第2バックアップとして割り振る。例えば、割振り決定部51は、図14Aに示したハミルトン閉路のうち、点1を始点とする辺(1,2)の次の辺(2,3)を実行サーバ1の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Bに示したハミルトン閉路のうち、点1を始点とする辺(1,5)の次の辺(5,2)を実行サーバ1の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Cに示したハミルトン閉路のうち、点1を始点とする辺(1,3)の次の辺(3,4)を実行サーバ1の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Dに示したハミルトン閉路のうち、点1を始点とする辺(1,4)の次の辺(4,5)を実行サーバ1の第2バックアップとして割り振ることを決定する。このようにして、実行サーバ1の第2バックアップとして、辺(2,3)、(5,2)、(3,4)及び(4,5)に対応するデータが割り振られる。
図15Bに示すように、割振り対象とする点として実行サーバ2に対応する点が選択された場合には、割振り決定部51は、次のような処理を行う。すなわち、割振り決定部51は、図14A〜図14Dに示したハミルトン閉路のうち、点2を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバ2の第2バックアップとして割り振る。例えば、割振り決定部51は、図14Aに示したハミルトン閉路のうち、点2を始点とする辺(2,3)の次の辺(3,5)を実行サーバ2の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Bに示したハミルトン閉路のうち、点2を始点とする辺(2,4)の次の辺(4,3)を実行サーバ2の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Cに示したハミルトン閉路のうち、点2を始点とする辺(2,5)の次の辺(5,1)を実行サーバ2の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Dに示したハミルトン閉路のうち、点2を始点とする辺(2,1)の次の辺(1,4)を実行サーバ2の第2バックアップとして割り振ることを決定する。このようにして、実行サーバ2の第2バックアップとして、辺(3,5)、(4,3)、(5,1)及び(1,4)に対応するデータが割り振られる。
図15Cに示すように、割振り対象とする点として実行サーバ3に対応する点が選択された場合には、割振り決定部51は、次のような処理を行う。すなわち、割振り決定部51は、図14A〜図14Dに示したハミルトン閉路のうち、点3を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバ3の第2バックアップとして割り振る。例えば、割振り決定部51は、図14Aに示したハミルトン閉路のうち、点3を始点とする辺(3,5)の次の辺(5,4)を実行サーバ3の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Bに示したハミルトン閉路のうち、点3を始点とする辺(3,1)の次の辺(1,5)を実行サーバ3の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Cに示したハミルトン閉路のうち、点3を始点とする辺(3,4)の次の辺(4,2)を実行サーバ3の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Dに示したハミルトン閉路のうち、点3を始点とする辺(3,2)の次の辺(2,1)を実行サーバ3の第2バックアップとして割り振ることを決定する。このようにして、実行サーバ3の第2バックアップとして、辺(5,4)、(1,5)、(4,2)及び(2,1)に対応するデータが割り振られる。
図15Dに示すように、割振り対象とする点として実行サーバ4に対応する点が選択された場合には、割振り決定部51は、次のような処理を行う。すなわち、割振り決定部51は、図14A〜図14Dに示したハミルトン閉路のうち、点4を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバの第2バックアップとして割り振る。例えば、割振り決定部51は、図14Aに示したハミルトン閉路のうち、点4を始点とする辺(4,1)の次の辺(1,2)を実行サーバ4の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Bに示したハミルトン閉路のうち、点4を始点とする辺(4,3)の次の辺(3,1)を実行サーバ4の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Cに示したハミルトン閉路のうち、点4を始点とする辺(4,2)の次の辺(2,5)を実行サーバ4の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Dに示したハミルトン閉路のうち、点4を始点とする辺(4,5)の次の辺(5,3)を実行サーバ4の第2バックアップとして割り振ることを決定する。このようにして、実行サーバ4の第2バックアップとして、辺(1,2)、(3,1)、(2,5)及び(5,3)に対応するデータが割り振られる。
図15Eに示すように、割振り対象とする点として実行サーバ5に対応する点が選択された場合には、割振り決定部51は、次のような処理を行う。すなわち、割振り決定部51は、図14A〜図14Dに示したハミルトン閉路のうち、点5を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバの第2バックアップとして割り振る。例えば、割振り決定部51は、図14Aに示したハミルトン閉路のうち、点5を始点とする辺(5,4)の次の辺(4,1)を実行サーバ5の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Bに示したハミルトン閉路のうち、点5を始点とする辺(5,2)の次の辺(2,4)を実行サーバ5の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Cに示したハミルトン閉路のうち、点5を始点とする辺(5,1)の次の辺(1,3)を実行サーバ5の第2バックアップとして割り振ることを決定する。さらに、割振り決定部51は、図14Dに示したハミルトン閉路のうち、点5を始点とする辺(5,3)の次の辺(3,2)を実行サーバ5の第2バックアップとして割り振ることを決定する。このようにして、実行サーバ5の第2バックアップとして、辺(4,1)、(2,4)、(1,3)及び(3,2)に対応するデータが割り振られる。
このように、割振り決定部51は、全ての実行サーバ1〜Nに第2バックアップを割り振ると、第2バックアップの割り振りを終了する。このようにして割り振りが決定された各実行サーバ1〜5の第2バックアップは図16に示すような割り振りとなる。図16は、ハミルトン閉路を用いて決定された第2バックアップの割り振りの一例を示す図である。図16に示すように、割振り決定部51は、メインデータ500及び第1バックアップ510については上記の従来技術の場合と同様に割り振る。一方、割振り決定部51は、第2バックアップ520についてはハミルトン閉路に基づいて生成されるグラフに基づいて割り振る。それゆえ、割振り決定部51は、図16に示すように、各実行サーバで保持される第2バックアップのデータ量が均等になるように割り振ることができる。さらに、割振り決定部51は、図16に示すように、実行サーバが2つ故障した場合でも自装置の故障を自装置がサポートしなければならい状態を回避するように第2バックアップを割り振ることができる。さらに、割振り決定部51は、図16に示すように、実行サーバJ及びKの2つサーバが故障した場合でも、第2バックアップ(J,K)の処理および第2バックアップ(K,J)の処理が1つの実行サーバに偏ることがないように割り振ることができる。
[第2バックアップの割振り決定処理]
続いて、本実施例に係る第2バックアップの割振り決定処理について説明する。図17は、実施例2に係る第2バックアップの割振り決定処理の手順を示すフローチャートである。この割振り決定処理は、上記の実施例1と同様に、図8に示したステップS104に対応する処理であり、一例として、ステップS103が終了した後に実行される。
図17に示すように、割振り決定部51は、各実行サーバ1〜Nに対応する点を含んでなる辺を共有しないN−1個のハミルトン閉路を作成する(ステップS601)。続いて、割振り決定部51は、実行サーバ1〜Nに対応する点のうち未選択の点を第2バックアップの割振り対象として1つ選択する(ステップS602)。
ここで、割振り決定部51は、各ハミルトン閉路のうち、割振り対象として選択した点を始点とする辺の次の辺に対応するデータを割振り対象の実行サーバの第2バックアップとして割り振る(ステップS603)。
その後、全ての実行サーバ1〜Nに第2バックアップを割り振るまで(ステップS604否定)、上記のステップS602〜ステップS603の処理を繰り返し実行する。そして、全ての実行サーバ1〜Nに第2バックアップを割り振ると(ステップS604肯定)、第2バックアップの割り振りを終了する。
[実施例2の効果]
上述してきたように、本実施例に係る管理サーバ50は、ハミルトン閉路に基づいて第2バックアップの割り振りを決定する。このため、本実施例に係る管理サーバ50では、N−1個のハミルトン閉路の一部を割振り対象とする実行サーバに対応する点を含まないようにそれぞれ抽出することで、辺選択ポリシー(イ)〜(ハ)を満たすグラフを生成する。それゆえ、本実施例に係る管理サーバ50によれば、上記の実施例1と同様に、実行サーバ間の作業差を最小限にできる結果、サーバ間における処理負荷のばらつきを抑制することが可能になる。
さらに、本実施例に係る管理サーバ50は、選択辺集合および排除辺集合を参照せずに辺を決定する。このため、本実施例に係る管理サーバ50では、グラフモデルの生成過程を簡略化することができる。それゆえ、本実施例に係る管理サーバ50によれば、第2バックアップの割振り決定処理を効率化することも可能になる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
[適用範囲]
例えば、上記の実施例1及び実施例2では、検索システムに適用する場合を説明したが、開示の装置の適用範囲はこれに限定されない。すなわち、検索処理以外の他の処理、例えば集計処理などを分散処理させる場合にも同様に適用できる。
また、上記の実施例1及び実施例2では、複数の実行サーバ1〜Nが接続される管理サーバ10が取得部13a、分割部13b、複製部13c、割振り決定部13d、実行制御部13e及びサーバ監視部13fのデータ割振り機能を有する場合を説明した。しかしながら、開示の装置は、管理サーバ10として第2バックアップの割振り決定を行う実装形態に限定されない。例えば、管理サーバ10を設けずに実行サーバ1〜Nをリングネットワークとして構成し、各実行サーバ1〜Nにデータ割振り機能を持たせるようにしてもかまわない。また、必ずしも全ての実行サーバ1〜Nにデータ割振り機能を持たせる必要はない。例えば、複数の実行サーバ1〜Nのうち少なくとも1つの実行サーバをマスタノードとしてデータ割振り機能を持たせ、他の実行サーバをスレーブノードして構成するようにしてもよい。
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、取得部13a、分割部13b、複製部13c、割振り決定部13d、実行制御部13e又はサーバ監視部13fを管理サーバ10の外部装置としてネットワーク経由で接続するようにしてもよい。また、取得部13a、分割部13b、複製部13c、割振り決定部13d、実行制御部13e又はサーバ監視部13fを別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記の管理サーバ10の機能を実現するようにしてもよい。
[データ割振りプログラム]
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図18を用いて、上記の実施例と同様の機能を有するデータ割振りプログラムを実行するコンピュータの一例について説明する。なお、図18は、実施例3に係るデータ割振りプログラムを実行するコンピュータの一例について説明するための図である。
図18に示すように、実施例3におけるコンピュータ100は、操作部110aと、マイク110bと、スピーカ110cと、ディスプレイ120と、通信部130とを有する。さらに、このコンピュータ100は、CPU150と、ROM160と、HDD(Hard Disk Drive)170と、RAM(Random Access Memory)180と有する。これら110〜180の各部はバス140を介して接続される。
ROM160には、上記の実施例1で示した取得部13aと、分割部13bと、複製部13cと、割振り決定部13dと、実行制御部13eと、サーバ監視部13fと同様の機能を発揮する制御プログラムが予め記憶される。つまり、ROM160には、図18に示すように、取得プログラム160aと、分割プログラム160bと、複製プログラム160cと、割振り決定プログラム160dと、サーバ監視プログラム160eと、実行制御プログラム160fとが記憶される。これらのプログラム160a〜160fについては、図3に示した管理サーバの各構成要素と同様、適宜統合又は分離しても良い。なお、RAM160に格納される各データは、常に全てのデータがRAM160に格納される必要はなく、処理に必要なデータのみがRAM160に格納されれば良い。
そして、CPU150が、これらのプログラム160a〜160fをROM160から読み出して実行する。これによって、CPU150は、図18に示すように、各プログラム160a〜160fについては、取得プロセス150a、分割プロセス150b及び複製プロセス150cとして機能するようになる。さらに、CPU150は、割振り決定プロセス150d、サーバ監視プロセス150e及び実行制御プロセス150fとして機能するようになる。これらプロセス150a〜150fは、図3に示した取得部13aと、分割部13bと、複製部13cと、割振り決定部13dと、実行制御部13eと、サーバ監視部13fとにそれぞれ対応する。なお、CPU150上で仮想的に実現される各処理部は、常に全ての処理部がCPU150上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
そして、HDD170には、システム構成データ170aと、検索対象データ170bとが設けられる。なお、これらシステム構成データ170a及び検索対象データ170bは、図3に示したシステム構成データ12a及び検索対象データ12bに対応する。
そして、CPU150は、システム構成データ170a及び検索対象データ170bを読み出してRAM180に格納する。さらに、CPU150は、RAM180に格納されたシステム構成データ180aと、検索対象データ180bとを用いて、データ割振りプログラムを実行する。
なお、上記したデータ割振りプログラムについては、必ずしも最初からHDD170やROM160に記憶させておく必要はない。例えば、コンピュータ100に挿入されるフレキシブルディスク、いわゆるFD、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ100がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ100に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ100がこれらから各プログラムを取得して実行するようにしてもよい。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)所定のデータが均等に分割されたデータの分散処理を実行する複数の装置であり、かつ前記複数の装置のうち1つの装置が前記分散処理の実行対象から除外された場合に第1バックアップデータを処理し、前記複数の装置のうち2つの装置が前記分散処理の実行対象から除外された場合に第2バックアップデータを処理する前記複数の装置の数を取得する取得部と、
前記取得部によって取得された装置の数に応じて、第1の装置が前記分散処理の実行対象から除外された場合に第2の装置に処理を実行させるデータと、前記第2の装置が前記分散処理の実行対象から除外された場合に前記第1の装置に処理を実行させるデータとの割り振りが同一の装置へ重複しないように、前記第2バックアップデータの割り振りを決定する決定部と
を有することを特徴とするデータ割振り装置。
(付記2)前記決定部は、
各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で割振り対象とする装置に対応する点以外の点を始点とし、2点の組合せが同一であるとともに始点及び終点が逆となる有向線分を含まないように2点を結ぶ線分が装置ごとに同数作成されるグラフモデルに基づいて、前記第2バックアップデータの割り振りを決定することを特徴とする付記1に記載のデータ割振り装置。
(付記3)前記決定部は、
各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で各点を1度ずつ通るように線分が作成されたハミルトン閉路に基づいて、前記第2バックアップデータの割り振りを決定することを特徴とする付記1に記載のデータ割振り装置。
(付記4)コンピュータが、
所定のデータが均等に分割されたデータの分散処理を実行する複数の装置であり、かつ前記複数の装置のうち1つの装置が前記分散処理の実行対象から除外された場合に第1バックアップデータを処理し、前記複数の装置のうち2つの装置が前記分散処理の実行対象から除外された場合に第2バックアップデータを処理する前記複数の装置の数を取得し、 前記装置の数に応じて、第1の装置が前記分散処理の実行対象から除外された場合に第2の装置に処理を実行させるデータと、前記第2の装置が前記分散処理の実行対象から除外された場合に前記第1の装置に処理を実行させるデータとの割り振りが同一の装置へ重複しないように、前記第2バックアップデータの割り振りを決定する
処理を実行することを特徴とするデータ割振り方法。
(付記5)各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で割振り対象とする装置に対応する点以外の点を始点とし、2点の組合せが同一であるとともに始点及び終点が逆となる有向線分を含まないように2点を結ぶ線分が装置ごとに同数作成されるグラフモデルに基づいて、前記第2バックアップデータの割り振りを決定する処理を実行することを特徴とする付記4に記載のデータ割振り方法。
(付記6)各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で各点を1度ずつ通るように線分が作成されたハミルトン閉路に基づいて、前記第2バックアップデータの割り振りを決定する処理を実行することを特徴とする付記4に記載のデータ割振り方法。
(付記7)コンピュータに、
所定のデータが均等に分割されたデータの分散処理を実行する複数の装置であり、かつ前記複数の装置のうち1つの装置が前記分散処理の実行対象から除外された場合に第1バックアップデータを処理し、前記複数の装置のうち2つの装置が前記分散処理の実行対象から除外された場合に第2バックアップデータを処理する前記複数の装置の数を取得し、 前記装置の数に応じて、第1の装置が前記分散処理の実行対象から除外された場合に第2の装置に処理を実行させるデータと、前記第2の装置が前記分散処理の実行対象から除外された場合に前記第1の装置に処理を実行させるデータとの割り振りが同一の装置へ重複しないように、前記第2バックアップデータの割り振りを決定する
処理を実行させることを特徴とするデータ割振りプログラム。
(付記8)各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で割振り対象とする装置に対応する点以外の点を始点とし、2点の組合せが同一であるとともに始点及び終点が逆となる有向線分を含まないように2点を結ぶ線分が装置ごとに同数作成されるグラフモデルに基づいて、前記第2バックアップデータの割り振りを決定する処理を実行させることを特徴とする付記7に記載のデータ割振りプログラム。
(付記9)各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で各点を1度ずつ通るように線分が作成されたハミルトン閉路に基づいて、前記第2バックアップデータの割り振りを決定する処理を実行させることを特徴とする付記7に記載のデータ割振りプログラム。
1,2,3,N 実行サーバ
10 管理サーバ
11 通信I/F部
12 記憶部
12a システム構成データ
12b 検索対象データ
13 制御部
13a 取得部
13b 分割部
13c 複製部
13d 割振り決定部
13e 実行制御部
13f サーバ監視部
20 ネットワーク
30 クライアント

Claims (5)

  1. 所定のデータが均等に分割されたメインデータの分散処理を実行する複数の装置であり、かつ前記複数の装置のうち1つの装置が前記分散処理の実行対象から除外された場合に第1バックアップデータを処理し、前記複数の装置のうち2つの装置が前記分散処理の実行対象から除外された場合に第2バックアップデータを処理する前記複数の装置の数を取得する取得部と、
    前記取得部によって取得された装置の数に応じて、第1の装置が前記分散処理の実行対象から除外された場合に第2の装置に処理を実行させるデータと、前記第2の装置が前記分散処理の実行対象から除外された場合に前記第1の装置に処理を実行させるデータとの割り振りが同一の装置へ重複せず、かつ、同一の装置に対し、前記メインデータ又は前記第1バックアップデータのいずれかと同一の前記第2バックアップデータを割り振りしないように、前記第2バックアップデータの割り振りを決定する決定部と
    を有することを特徴とするデータ割振り装置。
  2. 前記決定部は、
    各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で割振り対象とする装置に対応する点以外の点を始点とし、2点の組合せが同一であるとともに始点及び終点が逆となる有向線分を含まないように2点を結ぶ線分を含むグラフモデルを用いて、各線分の始点と対応する装置が前記分散処理の実行対象から除外される際に、当該線分の終点と対応する装置が処理を実行するデータを前記第2バックアップデータとして前記割振り対象とする装置に割り振ることを特徴とする請求項1に記載のデータ割振り装置。
  3. 前記決定部は、
    各々の装置に対応させた点を多角形の頂点の位置にそれぞれ配置した上で各点を1度ずつ通るように線分が作成されたハミルトン閉路から、割振り対象となる装置に対応する点を始点とする線分に続く線分を選択し、選択した線分の始点に対応する装置が前記分散処理の実行対象から除外される際に、当該線分の終点と対応する装置が処理を実行するデータを前記第2バックアップデータとして前記割振り対象となる装置に割り振ることを特徴とする請求項1に記載のデータ割振り装置。
  4. コンピュータが、
    所定のデータが均等に分割されたメインデータの分散処理を実行する複数の装置であり、かつ前記複数の装置のうち1つの装置が前記分散処理の実行対象から除外された場合に第1バックアップデータを処理し、前記複数の装置のうち2つの装置が前記分散処理の実行対象から除外された場合に第2バックアップデータを処理する前記複数の装置の数を取得し、 前記装置の数に応じて、第1の装置が前記分散処理の実行対象から除外された場合に第2の装置に処理を実行させるデータと、前記第2の装置が前記分散処理の実行対象から除外された場合に前記第1の装置に処理を実行させるデータとの割り振りが同一の装置へ重複せず、かつ、同一の装置に対し、前記メインデータ又は前記第1バックアップデータのいずれかと同一の前記第2バックアップデータを割り振りしないように、前記第2バックアップデータの割り振りを決定する
    処理を実行することを特徴とするデータ割振り方法。
  5. コンピュータに、
    所定のデータが均等に分割されたメインデータの分散処理を実行する複数の装置であり、かつ前記複数の装置のうち1つの装置が前記分散処理の実行対象から除外された場合に第1バックアップデータを処理し、前記複数の装置のうち2つの装置が前記分散処理の実行対象から除外された場合に第2バックアップデータを処理する前記複数の装置の数を取得し、前記装置の数に応じて、第1の装置が前記分散処理の実行対象から除外された場合に第2の装置に処理を実行させるデータと、前記第2の装置が前記分散処理の実行対象から除外された場合に前記第1の装置に処理を実行させるデータとの割り振りが同一の装置へ重複せず、かつ、同一の装置に対し、前記メインデータ又は前記第1バックアップデータのいずれかと同一の前記第2バックアップデータを割り振りしないように、前記第2バックアップデータの割り振りを決定する
    処理を実行させることを特徴とするデータ割振りプログラム。
JP2010197033A 2010-09-02 2010-09-02 データ割振り装置、データ割振り方法及びデータ割振りプログラム Expired - Fee Related JP5614182B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010197033A JP5614182B2 (ja) 2010-09-02 2010-09-02 データ割振り装置、データ割振り方法及びデータ割振りプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010197033A JP5614182B2 (ja) 2010-09-02 2010-09-02 データ割振り装置、データ割振り方法及びデータ割振りプログラム

Publications (2)

Publication Number Publication Date
JP2012053777A JP2012053777A (ja) 2012-03-15
JP5614182B2 true JP5614182B2 (ja) 2014-10-29

Family

ID=45906990

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010197033A Expired - Fee Related JP5614182B2 (ja) 2010-09-02 2010-09-02 データ割振り装置、データ割振り方法及びデータ割振りプログラム

Country Status (1)

Country Link
JP (1) JP5614182B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5713412B2 (ja) * 2013-01-31 2015-05-07 株式会社日立製作所 管理装置、管理システム、および管理方法
JP6256461B2 (ja) * 2013-02-15 2018-01-10 日本電気株式会社 情報処理装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3003440B2 (ja) * 1993-01-19 2000-01-31 株式会社日立製作所 負荷分散制御方法および分散処理システム
EP0854423A1 (en) * 1997-01-20 1998-07-22 TELEFONAKTIEBOLAGET L M ERICSSON (publ) Data partitioning and duplication in a distributed data processing system
JP2001005846A (ja) * 1999-06-21 2001-01-12 Hitachi Ltd 巡回系列スケジューリング方法
JP2001202346A (ja) * 2000-01-19 2001-07-27 Yamaguchi Technology Licensing Organization Ltd 計算機の分散処理システム
JP5158074B2 (ja) * 2007-03-20 2013-03-06 富士通株式会社 ストレージ管理プログラム、ストレージ管理方法、ストレージ管理装置およびストレージシステム

Also Published As

Publication number Publication date
JP2012053777A (ja) 2012-03-15

Similar Documents

Publication Publication Date Title
CN111183625B (zh) 用于在区块链网络中删除节点的系统和方法
US9904599B2 (en) Method, device, and system for data reconstruction
US10154086B1 (en) Distributed consumer cloud storage system
JP6491210B2 (ja) 分散データグリッドにおいて永続性パーティションリカバリをサポートするためのシステムおよび方法
JP5514041B2 (ja) 識別子割当て方法及びプログラム
Ailijiang et al. WPaxos: Wide area network flexible consensus
US20140108532A1 (en) System and method for supporting guaranteed multi-point delivery in a distributed data grid
EP3513296B1 (en) Hierarchical fault tolerance in system storage
US8843581B2 (en) Live object pattern for use with a distributed cache
US8010648B2 (en) Replica placement in a distributed storage system
US20180052900A1 (en) Generating database sequences in a replicated database environment
US10970256B2 (en) Reconciler for a distributed storage system
CN110413694A (zh) 元数据管理方法及相关装置
JP5614182B2 (ja) データ割振り装置、データ割振り方法及びデータ割振りプログラム
EP3120496A1 (en) Availability-estimate based configuration generation
CN109587185B (zh) 云存储系统和云存储系统中的对象处理方法
US11023324B2 (en) Harmonization of failure domains in a distributed system
US11188258B2 (en) Distributed storage system
JP5890452B2 (ja) クラスタシステムのサーバ装置およびそのプログラム
US10140182B2 (en) Modifying allocation of storage resources in a dispersed storage network
US9734017B2 (en) Methods for dynamically determining and readjusting failover targets and devices thereof
Chiola An empirical study of data redundancy for high availability in large overlay networks
JP6127005B2 (ja) クラスタシステムのサーバ装置およびプログラム
JP2023151189A (ja) ストレージシステム及びその制御方法
JP2021149133A (ja) クラスタリングシステム、クラスタリングシステムの運用方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140225

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140423

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140812

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140825

R150 Certificate of patent or registration of utility model

Ref document number: 5614182

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees