以下に、本願の開示するデータ割振り装置、データ割振り方法及びデータ割振りプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[システム構成]
まず、本実施例に係る検索システムについて説明する。図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バックアップの割振り決定処理を効率化することも可能になる。