JP2013025453A - 分散システム、負荷分散方法、および、プログラム - Google Patents

分散システム、負荷分散方法、および、プログラム Download PDF

Info

Publication number
JP2013025453A
JP2013025453A JP2011157799A JP2011157799A JP2013025453A JP 2013025453 A JP2013025453 A JP 2013025453A JP 2011157799 A JP2011157799 A JP 2011157799A JP 2011157799 A JP2011157799 A JP 2011157799A JP 2013025453 A JP2013025453 A JP 2013025453A
Authority
JP
Japan
Prior art keywords
area
server
group
areas
servers
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.)
Withdrawn
Application number
JP2011157799A
Other languages
English (en)
Inventor
Takahiro Ida
恭弘 飯田
Kazuki Oikawa
一樹 及川
Hiroyuki Uchiyama
寛之 内山
Miyoshi Hanaki
三良 花木
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2011157799A priority Critical patent/JP2013025453A/ja
Publication of JP2013025453A publication Critical patent/JP2013025453A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】エリア分割に伴うエリアサーバの負荷の低減を図る。
【解決手段】本発明の分散システムは、ネットワークを介して接続された複数のエリアサーバを備え、データ群を分割した複数のエリアを複数のエリアサーバが分散して管理する分散システムであって、複数のエリアサーバの各々は、管理しているエリアのサイズが所定値以上となると、エリアを二つのエリアに分割するエリア分割部と、所定のイベントを契機として、自サーバで管理しているエリアの数である自サーバ管理エリア数を他のエリアサーバに通知する通信部と、自サーバ管理エリア数、および、他のエリアサーバから通知された、他のエリアサーバで管理されているエリアの数である他サーバ管理エリア数に基づき自サーバへのエリアの偏りの程度を求め、求めた偏りの程度が所定の閾値以上であれば、管理しているエリアの一部を、他のエリアサーバに再配置するエリア再配置部と、を有する。
【選択図】図1

Description

本発明は、データを複数のサーバで分散して管理する分散システム、負荷分散方法、および、プログラムに関する。
大量のデータを蓄積管理するための技術として、ネットワークを介して接続された複数のサーバを用いてデータを分散管理する分散型キーバリューストア技術が注目されている。分散型キーバリューストア技術を適用してデータを蓄積管理するシステムにおいては、データの格納先のサーバを自動的に選択して負荷を分散させたり、サーバを増設することでシステムをスケールアウトさせたりすることができる。なお、以下では、分散型キーバリュー技術を適用してデータを蓄積管理するシステムを分散システムと称する。
分散システムとしては、1つのKey(RowKey)と1つのValue(データ)とをペアとして管理する単純なものがある。また、より高度な機能を備えた分散システムとしては、RowKey、データの内容などに応じたカラム名、データの作成日時などを示すタイプスタンプなどの複数の属性を連結した複合的なKeyとそのKeyに一意に対応するValueとをペアで管理するものや、サーバの故障を検知すると、そのサーバで管理されていたデータを他のサーバに再配置するリカバリ機能を有するものがある。以下では、1つのKeyと1つのValueとのペアをRowと称する。
上述したような、高度な機能を備えた分散システムとしては、例えば、Google社のBigTable(非特許文献1参照)、オープンソースソフトウェアのHBase、Hypertableなどが知られている。これらの分散システムにより、例えば、Web上の大量のコンテンツの蓄積管理が行われることで、各コンテンツに対応するインデクスを作成し、世界中のWebコンテンツを検索することが可能となる。このように、分散システムは、大量のデータを扱い、かつ、多数のユーザを対象としたサービスを提供するための基盤として利用されている。
以下では、分散システムの概要について説明する。
分散システムは、クライアント端末(以下、クライアントと称する)と複数のサーバとを備える。
クライアントは、ユーザからのデータの参照、更新などのデータ処理の要求を受け付けると、そのデータを格納するサーバを探索、特定し、要求に応じたデータ処理を行い、処理結果をユーザに返却する。
複数のサーバの各々は、複数のRowからなるTableをいくつかのRowのまとまりを単位として分割した複数のArea(エリア)を分散して管理する。以下では、Areaを管理するサーバをArea Server(エリアサーバ)と称する。分散システムにおいては、複数のArea Serverが、Areaを分散して管理することで、負荷を分散させることができる。
なお、分散システムにおけるArea Serverの各々は、Google社のGoogle File SystemやオープンソースソフトウェアのHadoop HDFSなどのネットワークを介して接続されており、ネットワーク上の自身のIPアドレスをフォルダ名としたフォルダを持ち、このフォルダ配下に、各々が管理するAreaを永続化して管理する。
Area Serverは、データの追加などによりRow数が増加し、Areaのサイズが増加して、所定の閾値に達すると、そのAreaを2つのエリアに分割する。
図23は、Area Serverにより行われるArea分割を示す図である。
図23においては、Area Serverは、(Key,Value)がそれぞれ、(Row1Col1TS1,Val111),(Row1Col1TS2,Val112),(Row1Col1TS3,Val113),(Row1Col2TS1,Val121)である4つのRowからなり、サイズが100MByteであるArea3を管理しているとする(状態1)。なお、「Row1」はRowKeyを示し、「Col1」および「Col2」はカラム名を示し、「TS」はタイムスタンプを示す。
データの追加などによりArea3のRow数が増加したとする。図23においては、(Key,Value)がそれぞれ、(Row1Col2TS2,Val122),(Row1Col2TS3,Val123),(Row2Col1TS1,Val211),(Row2Col1TS2,Val212)である4つのRowが追加され、Area3のサイズが200MByteになったとする(状態2)。
状態2において、Area3のサイズが所定の閾値に達したとすると、Area Serverは、Area3を2つのArea(Area3AおよびArea3B)に分割する(状態3)。ここで、Area Serverは、Rowを最小単位とし、Area3AとArea3Bとのサイズができるだけ等しくなるようにRowKeyを基としてRowを選択してArea分割を行う。つまり、Area Serverは、RowKeyが同じRowが複数のAreaに分けて格納されることがないようにArea3を分割する。その結果、図23に示すように、RowKeyが「Row1」であり、(Key,Value)がそれぞれ、(Row1Col1TS1,Val111),(Row1Col1TS2,Val112),(Row1Col1TS3,Val113),(Row1Col2TS1,Val121)(Row1Col2TS2,Val122),(Row1Col2TS3,Val123)であるRowがArea3Aに格納され、RowKeyが「Row2」であり、(Key,Value)がそれぞれ、(Row2Col1TS1,Val211),(Row2Col1TS2,Val212)であるRowがArea3Bに格納されるように、Area3が分割される(状態3)。なお、分散システムおけるサーバとしては、エリアサーバのほかに、Master Server(マスターサーバ)がある。Master Serverの詳細については後述する。
分散システムにおいて管理されるTableには、Root Table、Meta Table、User Tableの3種類がある。Meta TableおよびUser Tableは、Area単位で分割管理される。Meta TableおよびUser Tableを分割して得られるAreaをそれぞれ、Meta AreaおよびUser Areaと称する。
User Tableは、データを管理するためのTableであり、各RowにはKeyとValue(データ)とのペアが格納される。Meta Tableは、User Areaを管理するArea Serverのロケーションを管理するためのTableであり、各RowのValueとして、User Areaのロケーション(IPアドレスなど)が格納される。また、Root Tableは、Meta Areaのロケーションを管理するためのTableであり、各RowのValueとして、Meta Areaを管理するArea Serverのロケーション(IPアドレスなど)が格納される。
次に、分散システムにおけるデータ参照時およびデータ更新時の処理の流れについて説明する。
クライアントは、データを参照する旨の要求を受け付けると、そのデータに対応するKeyを検索キーとしてサーバ上にあるRoot Tableを参照してMeta Areaを探索し、次にMeta Areaを参照して所望のデータを格納するAreaを管理するArea Serverを特定して、そのArea Serverで管理されているUser Area から所望のデータを取得する。データ更新についても同様に、クライアントは、更新対象のデータに対応するKeyを検索キーとして、Root Table、Meta Area、User Areaと辿り、更新対象のデータの更新処理を行う。
次に、Area分割時の処理の流れについて、図24を参照して説明する。
図24に示すように、分散システム2は、Master Server20と、Area Server30(Area Server30−1〜30−6)と、を備える。なお、図24においては、クライアントについては記載を省略する。
Area Server30−1〜30−6はそれぞれ、Area3を管理する。図24においては、Area Server30−1〜30−3は、7つのAreaを管理し、Area Server30−4は、8つのAreaを管理し、Area Server30−5は、9つのAreaを管理し、Area Server30−6は、5つのAreaを管理しているものとする。
ここで、Area Server30−2が管理する1つのArea3のサイズが所定の閾値に達したとする。Area Server30−2は、そのArea3を2つのArea(Area3AおよびArea3B)に分割し、Area分割を行った旨をMaster Server20に報告する。
Master Server20は、各Area Server30が管理するAreaの数を管理する。また、Master Server20は、Area Server30−2からArea分割を行った旨の報告を受けると、管理しているAreaの数が最も少ないArea Server30−6にAreaの再配置を要求する。Area Server30−6からAreaの再配置を許諾する旨が報告されると、Master Server20は、Area Server30−2にArea Server30−6がAreaの再配置先である旨を通知する。
Area Server30−2は、Master Server20から通知を受けると、Area3AおよびArea3Bのうちの一方、例えば、Area3BをArea Server30−6に再配置する。
Area分割、Area再配置が行われると、Meta Tableの更新(Areaを管理するArea Serverのロケーションの現行の状態への変更)が行われる。
Meta Table更新時の処理の流れについて、図25を参照して説明する。
図25は、Area Server30−2で管理されているArea3(User Area)がArea3AおよびArea3Bに分割され、Area3BがArea Server30−6に再配置された場合のMeta Table更新時の処理の流れを示す図である。なお、図25においては、Area Server30−3がMeta Tableを管理しているものとする。また、図25においては、Area3に含まれるRowのKey範囲はRow1Col1TS1〜Row2Col1TS2であり、RowのKey範囲がRow1Col1TS1〜Row1Col2TS3のArea3Aと、RowのKey範囲がRow2Col1TS1〜Row2Col1TS2であるArea3Bと、に分割されたものとする。また、図25においては、Area Server30−2のIPアドレスは、10.0.0.2であり、Area Server30−6のIPアドレスは、10.0.0.6であるとする。
Area3の分割前においては、Area Server30−3は、Meta Tableに、Area3に含まれるRowのKey範囲(Row1Col1TS1〜Row2Col1TS2)とArea3を管理するArea Serverのロケーション(Location)としてArea Server30−2のIPアドレス(10.0.0.2)とを対応させて記憶している(状態1)。
Area3の分割が行われると、Area Server30−3は、Meta Tableを更新する。具体的には、Area3Aに含まれるRowのKey範囲(Row1Col1TS1〜Row1Col2TS3)とArea3Aを管理するArea Serverのロケーション(Location)としてArea Server30−2のIPアドレス(10.0.0.2)とを対応させて記憶するとともに、Area3Bに含まれるRowのKey範囲(Row2Col1TS1〜Row2Col1TS2)をMeta Tableに追加する(状態2)。すなわち、Area Server30−3は、Area毎にエントリを作成する。
次に、Area Server30−3は、Master Server20によりArea Server30−6がArea3Bの再配置先として決定されると、Area3Bに含まれるRowのKey範囲(Row2Col1TS1〜Row2Col1TS2)と再配置先の候補のロケーション(ReqLocation)としてArea Server30−6のIPアドレス(10.0.0.6)とを対応させて記憶する(状態3)。
次に、Area Server30−3は、Area3BのArea Server30−6への再配置が行われると、Area3Bに含まれるRowのKey範囲(Row2Col1TS1〜Row2Col1TS2)とArea3Bを管理するArea Serverのロケーション(Location)としてArea Server30−6のIPアドレス(10.0.0.6)とを対応させて記憶する(状態4)。
F. Chang, J. Dean, S. Ghemawat, W. C. Hsieh, D. A. Wallarch, M. Burrows, T. Chandra, A. Fikes, and r. E. Gruber, "Bigtable: A Distributed Storage System for Structured Data," CM Transactions on Computer Systems (TOCS) Vol. 26, No. 2, Article 4, Pub. date: June 2008 .
上述した分散システムにおいては、Area分割が行われるたびに、即時に、図25に示すMeta Table(Meta Area)の更新が行われる。そのため、Meta Areaを管理するArea Serverへのアクセスが非常に多くなって負荷が高まる。特に、分散システムへのデータの初期投入時には、Area分割が頻発するため、Meta Areaの更新が頻繁に行われ、Meta Areaを管理するArea Serverが高まる。
また、一般に、分散システムにおいては、Area数は100,000以上のオーダになる。そのため、上述したように、Area毎にMeta Tableにおいて1エントリを作成すると、Meta Tableのサイズが大きくなり、Meta Table(Meta Area)を管理するArea Serverの負荷が高まる。
Meta Areaを管理するArea Serverの負荷が高まると、そのMeta Areaを介してアクセスするUser Areaに対するデータの参照、更新のレスポンス、あるいは、そのMeta Areaを管理するArea Serverで管理されているUser Areaに対するデータの参照、更新のレスポンスが悪化するという問題がある。
本発明の目的は、Area Serverの負荷を分散し、レスポンス低下の抑制を図ることができる分散システム、負荷分散方法、および、プログラムを提供することにある。
上記目的を達成するために本発明の第1の分散システムは、
ネットワークを介して接続された複数のエリアサーバを備え、データ群を分割した複数のエリアを前記複数のエリアサーバが分散して管理する分散システムであって、
前記複数のエリアサーバの各々は、
管理しているエリアのサイズが所定値以上となると、該エリアを二つのエリアに分割するエリア分割部と、
所定のイベントを契機として、自サーバで管理しているエリアの数である自サーバ管理エリア数を他の前記エリアサーバに通知する通信部と、
前記自サーバ管理エリア数、および、前記他のエリアサーバから通知された、該他のエリアサーバで管理されているエリアの数である他サーバ管理エリア数に基づき自サーバへのエリアの偏りの程度を求め、該求めた偏りの程度が所定の閾値以上であれば、前記管理しているエリアの一部を、前記他のエリアサーバに再配置するエリア再配置部と、を有する。
上記目的を達成するために本発明の第2の分散システムは、
マスターサーバと、ネットワークを介して接続された複数のエリアサーバと、を備え、データ群を分割した複数のエリアを前記複数のエリアサーバが分散して管理する分散システムであって、
前記データ群は、キーと該キーに対応する値とを対応つけた複数のロウから構成され、
前記マスターサーバは、
前記データ群を構成する複数のロウのキーを所定の順にソートした後に前記キーの範囲を前記エリアサーバの数に応じて分割し、該分割したキーの範囲の各々を前記複数のエリアサーバ各々の前記ネットワーク上におけるアドレスの順に前記複数のエリアサーバの各々に割り当て、前記キーの範囲を割り当てた前記エリアサーバに前記キーの範囲のロウを含むエリアを管理させる制御部と、
前記複数のエリアサーバの各々に割り当てた前記キーの範囲を記憶する記憶部と、を有し、
前記通知部は、前記ネットワーク上におけるアドレスの順が前後のエリアサーバである隣接エリアサーバに前記自サーバ管理エリア数を通知し、
前記エリア再配置部は、前記キーのソート順が保持されるようにエリアを再配置する。
上記目的を達成するために本発明の負荷分散方法は、
データ群を分割した複数のエリアを、分散して管理する複数のエリアサーバの各々に適用される負荷分散方法であって、
管理しているエリアのサイズが所定値以上となると、該エリアを二つのエリアに分割し、
所定のイベントを契機として、自サーバで管理しているエリアの数である自サーバ管理エリア数を他の前記エリアサーバに通知し、
前記自サーバ管理エリア数、および、前記他のエリアサーバから通知された、該他のエリアサーバで管理されているエリアの数である他サーバ管理エリア数に基づき自サーバへのエリアの偏りの程度を求め、該求めた偏りの程度が所定値以上であれば、前記管理しているエリアの一部を前記他のエリアサーバに再配置する。
上記目的を達成するために本発明のプログラムは、
データ群を分割した複数のエリアを、分散して管理する複数のエリアサーバの各々に、
管理しているエリアのサイズが所定値以上となると、該エリアを二つのエリアに分割する処理と、
所定のイベントを契機として、自サーバで管理しているエリアの数である自サーバ管理エリア数を他の前記エリアサーバに通知する処理と、
前記自サーバ管理エリア数、および、前記他のエリアサーバから通知された、該他のエリアサーバで管理されているエリアの数である他サーバ管理エリア数に基づき自サーバへのエリアの偏りの程度を求め、該求めた偏りの程度が所定値以上であれば、前記管理しているエリアの一部を前記他のエリアサーバに再配置する処理と、を実行させる。
本発明によれば、Area分割に伴うArea Serverへの負荷を低減し、レスポンス低下の抑制を図ることができる。
本発明の一実施形態の分散システムの構成を示す図である。 図1に示すMaster Serverの構成を示す図である。 図2に示すMaster Serverが記憶するGroupリストの構成の一例を示す図である。 図1に示すArea Serverの構成を示す図である。 図4に示すArea Serverが記憶するAreaリストの構成の一例を示す図である。 図4に示すメモリ領域304の構成の一例を示す図である。 図4に示すメモリ領域304の構成の他の一例を示す図である。 図4に示すメモリ領域305の構成の一例を示す図である。 図1に示すGroup Serverの構成を示す図である。 図9に示すGroup Serverが記憶するArea Serverリストの構成の一例を示す図である。 図9に示すメモリ領域401の構成の一例を示す図である。 図9に示すメモリ領域401の構成の他の一例を示す図である。 図1に示す分散システムにおけるグループ内でのArea再配置時の動作を示す図である。 図1に示す分散システムにおけるグループ間でのArea再配置時の動作を示す図である。 図1に示す分散システムにおけるArea Server起動時のMaster Serverの動作を示すシーケンス図である。 図1に示す分散システムにおけるデータ参照時のクライアントの動作を示すシーケンス図である。 図16に示すクライアントが発行するAPIの一例を示す図である。 図1に示す分散システムにおけるデータ更新時のクライアントの動作を示すシーケンス図である。 図18に示すクライアントが発行するAPIの一例を示す図である。 図1に示す分散システムにおけるArea分割時のArea Serverの動作を示すシーケンス図である。 図1に示す分散システムにおけるArea再配置時のArea Serverの動作を示すシーケンス図である。 図1に示す分散システムにおけるGroup Serverの再決定時のMaster Serverの動作を示すシーケンス図である。 関連する分散システムにおけるArea分割を説明するための図である。 関連する分散システムにおけるArea再配置を説明するための図である。 関連する分散システムにおける問題点を説明するための図である。
以下に、本発明を実施するための形態について図面を参照して説明する。
図1は、本発明の一実施形態の分散システムの概要を示す図である。なお、図1において、図24と同様の構成については同じ符号を付し、説明を省略する。
図1に示す分散システム1は、クライアント10と、Master Server20と、Area Server30−1〜30−9と、を備える。クライアント10、Master Server20、および、Area Server30−1〜30−9は、ネットワークを介して接続されている。
クライアント10は、ユーザからのデータの参照、更新などのデータ処理の要求を受け付けると、そのデータを格納するArea Serverを探索、特定する、ロケーション解決を行い、要求に応じたデータ処理を行って、処理結果をユーザに返却する。
Master Server20は、Area Server30−1〜30−9を、各Area ServerのIPアドレスの順に、それぞれが複数のArea Serverからなるグループにグループ分けを行う。なお、図1においては、Area Server30−1のIPアドレスは、10.0.0.1であり、Area Server30−2のIPアドレスは、10.0.0.2であり、Area Server30−3のIPアドレスは、10.0.0.3であり、Area Server30−4のIPアドレスは、10.0.0.4であり、Area Server30−5のIPアドレスは、10.0.0.5であり、Area Server30−6のIPアドレスは、10.0.0.6であり、Area Server30−7のIPアドレスは、10.0.0.7であり、Area Server30−8のIPアドレスは、10.0.0.8であり、Area Server30−9のIPアドレスは、10.0.0.9であるとする。Master Server20は、例えば、Area Server30−1〜30−3をGroup1に、Area Server30−4〜30−6をGroup2に、Area Server30−7〜30−9をGroup3にグループ分けを行う。
また、Master Server20は、グループ毎に、グループに属するArea Serverのうち、1つのArea ServerをGroup Server(グループサーバ)に任命する。図1においては、Master Server20は、Group1についてはArea Server30−2を、Group2についてはArea Server30−5を、Group3についてはArea Server30−8を、Group Serverに任命したものとする。
また、Master Server20は、分散システム1において管理されるUser TableおよびMeta Tableに含まれる複数のRowを各RowのKey(RowKey)に応じて昇順にソートし、その複数のRowのKey範囲をグループ数でほぼ等分となるように分割する。図1においては、Key範囲がKey1〜Key300であるとすると、グループ数は3であるため、Master Server20は、Key範囲を、Key1〜Key100と、Key101〜Key200と、Key201〜Key300とに分割する。
さらに、Master Server20は、Group Serverに任命したArea Server(以下、Group Serverと称する)のIPアドレスの順に、グループ間でKey範囲の連続性が保持されるように、各グループのGroup Serverに担当のKey範囲を割り当て、割り当てたKey範囲および同じグループに属するArea Serverを通知する。具体的には、Master Server20は、Group Server30−2,30−5,30−8のうち、最も上位(IPアドレスが最も小さい)のGroup Server30−2に、担当のKey範囲がKey1〜Key100であり、同じグループ(Group1)に属するArea ServerがArea Server30−1,30−3である旨を通知する。また、Master Server20は、Group Server30−2の次に上位のGroup Server30−5に、担当のKey範囲がKey101〜Key200であり、同じグループ(Group2)に属するArea ServerがArea Server30−4,30−6である旨を通知する。また、Master Server20は、Group Server30−5の次に上位のGroup Server30−8に、担当のKey範囲がKey201〜Key300であり、同じグループ(Group3)に属するArea ServerがArea Server30−7,30−9である旨を通知する。また、Master Server20は、各グループのGroup Serverの担当のKey範囲とそのGroup ServerのIPアドレスとを対応させたGroupリストを記憶する。
なお、本実施形態においては、説明の便宜上、IPアドレスの小さいServerを上位とし、IPアドレスの大きいServerを下位として説明する。
Group Server30−2は、担当のKey範囲(Key1〜Key100)および同じグループ(Group1)に属するArea Server(Area Server30−1,30−3)が通知されると、通知されたRowのKey範囲を、Group1に属するArea Serverの数でほぼ等分となるように分割する。図1においては、担当のKey範囲がKey1〜Key100であり、Group1に属するArea Serverの数は3であるため、Group Server30−2は、Key範囲を、Key1〜Key30と、Key31〜Key60と、Key61〜Key100と、に分割する。
さらに、Group Server30−2は、Group1に属するArea ServerのIPアドレスの順に、管理するAreaに含まれるRowのKey範囲の連続性が各Area Server間で保持されるように、各Area ServerにAreaを管理させる。具体的には、Group Server30−2は、Group1に属するArea Serverのうち、最も上位(IPアドレスが最も小さい)のArea Server30−1に、Key範囲がKey1〜Key30であるRowを含むAreaを管理させる。また、Group Server30−2は、自身がArea Server30−1の次に上位のArea Serverであるため、Key範囲がKey31〜Key60であるRowを含むAreaを管理する。また、Group Server30−2は、自身の次に上位のArea Server30−3に、Key範囲がKey61〜Key100であるRowを含むAreaを管理させる。また、Group Server30−2は、Group1に属する各Area Serverが管理するAreaに含まれるRowのKey範囲とそのArea ServerのIPアドレスとを対応させたArea Serverリストを記憶する。
また、Group Server30−2は、Group1に属する全てのArea Serverで管理されているAreaの数の合計(自グループ管理エリア数)を、Group Server30−2の次にIPアドレスが小さい(1つ上位の)Group ServerおよびGroup Server30−2の次にIPアドレスが大きい(1つ下位の)Group Server、すなわち、IPアドレスがGroup Server30−2の前後のGroup Serverに通知する。また、Group Server30−2は、IPアドレスが前後のGroup Serverから、そのGroup Serverが属するグループの全てのArea Serverで管理されているAreaの数の合計(他グループ管理エリア数)の通知を受ける。なお、図1においては、Group Server30−2の上位のGroup Serverは存在しない。この場合、Group Server30−2は、自身の1つ下位のGroup Server30−5にのみ、自グループ管理エリア数を通知するとともに、Group Server30−5からのみ他グループ管理エリア数の通知を受ける。Group Server30−2は、自グループ管理エリア数およびIPアドレスが前後のGroup Serverから通知された他グループ管理エリア数を記憶する。
また、Group Server30−2は、記憶している自グループ管理エリア数および他グループ管理エリア数に基づき、Group1へのAreaの偏りの程度を求め、求めた偏りの程度が所定の閾値を超えている場合には、他グループ管理エリア数の通知を受けたGroup Serverが属するグループのArea Serverに、Group1に属するArea Serverで管理されているAreaの再配置を行う。
Group Server30−5、Group Server30−8については、Group Server30−2と比較して、属するグループが異なるだけなので、説明を省略する。
Area Server30−1は、Key範囲がKey1〜Key30であるRowを含むArea3を記憶する。また、Area Server30−1は、データの追加などにより管理しているAreaのRow数が増加し、そのAreaのサイズが所定の閾値に達すると、そのAreaの分割を行う。
また、Area Server30−1は、自身が管理するAreaの数(自サーバ管理エリア数)を、Group1に属し、自身の次にIPアドレスが小さい(1つ上位の)Area Serverおよび自身の次にIPアドレスが大きい(1つ下位の)Area Server、すなわち、IPアドレスが自身の前後のArea Serverに通知する。また、Area Server30−1は、IPアドレスが自身の前後のArea Serverから、そのArea Serverで管理されているAreaの数(他サーバ管理エリア数)の通知を受ける。なお、図1においては、Area Server30−1の上位のArea Serverは存在しない。この場合、Area Server30−1は、自身の1つ下位のArea Server30−2にのみ、自グループ管理エリア数を通知するとともに、Area Server30−2からのみ他グループ管理エリア数の通知を受ける。Area Server30−1は、自エリア管理エリア数およびIPアドレスが前後のArea Serverから通知された他サーバ管理エリア数を記憶する。
また、Area Server30−1は、記憶している自サーバ管理エリア数および他サーバ管理エリア数に基づき、自身へのAreaの偏りの程度を求め、求めた偏りの程度が所定の閾値を超えている場合には、他サーバ管理エリア数の通知を受けたArea Serverに、自身が管理するAreaの再配置を行う。
なお、Area Server30−2〜30−9については、Area Server30−1と比較して、管理するAreaに含まれるRowのKey範囲が異なるだけなので、説明を省略する。
図1に示す分散システム1において、Key20を指定したデータ処理の要求がクライアント10に入力されたとする。クライアント10は、Master Server20にアクセスし、Master Server20で記憶されているGroupリストを参照して、Key20を担当範囲とするGroup Server30−2のIPアドレスを取得する。
次に、クライアント10は、Group Server30−2にアクセスし、Group Server30−2で記憶されているArea Serverリストを参照して、Key20のRowを含むAreaを管理するArea Server30−1のIPアドレスを取得する。次に、クライアント10は、Area Server30−1にアクセスして、Key20に対応するデータを取得し、データ処理を行う。
なお、クライアント10が、一度データを取得したArea Serverのロケーションを記憶するキャッシュ(Cache)機能を有しており、Key20に対応するデータを既に取得したことがある場合には、Master Server20、Group Server30−2への問い合わせを行わず、直接、Area Server30−1にアクセスしてデータ処理を行うことも可能である。
次に、Master Server20、Area Server30−1〜30−9、および、Group Server30−2,30−5,30−8の構成について説明する。なお、以下では、Area Server30−1〜30−9を区別しない場合には、Area Server30Aと称し、Group Server30−2,30−5,30−8を区別しない場合には、Group Server30Gと称する。また、クライアント10の構成は当業者にとってよく知られており、また、本発明と直接関係しないので、説明を省略する。
まず、Master Server20の構成について、図2を参照して説明する。
図2に示すMaster Server20は、通信部201と、Disk領域202と、制御部203と、を有する。
通信部201は、ネットワークを介して、クライアント10および各Area Server30Aと通信を行う。
Disk領域202は、プロパティファイルおよびGroupリストなどが記憶される記憶領域である。プロパティファイルには、各Area Server30Aのロケーション(IPアドレス)の一覧、Group数、各Group Server30Gの担当のKey範囲の初期値などが含まれる。
図3は、Groupリストの構成を示す図である。
図3に示すように、Groupリストとして、Group Server30Gのロケーション(IPアドレス)と、そのGroup Server30Gが担当するKey範囲のうち最も小さいKeyであるStartRowKeyと、そのGroup Server30Gが担当するKey範囲のうち最も大きいKeyであるStopRowKeyと、が対応付けて記憶される。したがって、図3においては、例えば、IPアドレスが10.0.0.2であるGroup Server30−2の担当のKey範囲が、Key1〜Key100であることを示す。なお、データの追加が行われる場合には、StrartKey<そのデータ(Value)とペアのKey≦StopKeyとなるKey範囲に対応付けられたGroup Server30Gが担当となる。
再び、図2を参照すると、制御部203は、稼働中のArea Server30Aのロケーション(IPアドレス)のリストを記憶するメモリ領域204を有する。また、制御部203は、稼働中のArea Server30AのIPアドレスの順に、IPアドレスが前後する複数のArea Server30Aを1つのグループとしてグループ分けを行うとともに、グループ毎に1つのArea Server30AをGroup Serverに任命する。ここで、制御部203は、同じグループに属するArea Server30Aのうち、ロケーションが中間のArea Server30AをGroup Server30Gに任命する。同じグループに属するArea Server30Aのうち、ロケーションが最上位、あるいは、最下位(IPアドレスが最小あるいは最大)のArea Server30AをGroup Server30Gに任命すると、Group間でのArea再配置の際に、一時的にそのArea Server30Aの負荷が高くなる可能性がある。そこで、ロケーションが中間のArea Server30AをGroup Server30Gに任命することで、Group間でのArea再配置の際にも、特定のArea Server30Aの負荷が高くなることを防ぐことができる。なお、制御部203は、同じグループに属するArea Server30Aのうち、ロケーションが中間のArea Server30Aが複数ある場合には、ランダムに、あるいは、所定の規則(IPアドレスの小さいほう、IPアドレスの大きいほうなど)に従い、1つのArea Server30AをGroup Server30Gに任命する。
また、制御部203は、グループ毎に、担当のKey範囲を決定し、各グループのGroup Server30Gのロケーションと、そのGroup Server30Gの担当のKey範囲のStartRowKeyおよびStopRowKeyと、をDisk領域202のGroupリストに書き込む。また、制御部203は、各グループのGroup Server30Gに、担当のKey範囲およびそのグループに属するArea Serverを通信部301を介して通知する。
次に、Area Server30Aの構成について、図4を参照して説明する。
図4に示すArea Server30Aは、通信部301と、Disk領域302と、制御部303と、を有する。また、制御部303は、メモリ領域304と、メモリ領域305と、Area分割部306と、Area再配置部307と、を有する。
通信部301は、ネットワークを介して、クライアント10、Master Server20、および、他のArea Server30Aと通信を行う。
Disk領域302は、プロパティファイルおよびAreaリストが記憶される記憶領域である。プロパティファイルには、Area Server30Aが管理するAreaの数を他のArea Server30Aに通知する通知頻度、Area Server30AへのAreaの偏りの程度の閾値、および、Area再配置を行うと判定する、Areaの偏りの程度が閾値を越えた状態の持続時間(偏り持続時間)が含まれる。
図5は、Areaリストの構成を示す図である。なお、図5は、Key範囲がKey1〜Key30であるRowを含むAreaを管理するArea Server30−1のDisk領域302に記憶されるAreaリストの構成を示す図である。
図5に示すように、Areaリストとして、AreaのArea名と、そのAreaに含まれるRowのKey範囲のうち最も小さいKeyであるStartRowKeyと、そのAreaに含まれるRowのKey範囲のうち最も大きいKeyであるStopRowKeyと、が対応付けて記憶される。Areaリストにおいては、各AreaのArea名は、そのAreaに含まれるRowのKey範囲で昇順にソート済みである。そのため、2分探索などにより高速な探索が可能な状態となっている。
データの追加が行われる場合には、そのデータをValueとするRowの格納先は、StartKey<そのRowのKey≦StopKeyとなるAreaが選択される。ここで、Keyの大小は、辞書順の大小で比較される。したがって、例えば、Keyが、"Key10abc"(>"Key10")であるRow、あるいは、Keyが、"Key15"であるRowは、Area2に格納される。
再び、図4を参照すると、制御部303は、所定のイベントを契機として、通信部301を介して、Area Server30Aで管理されているAreaの数(自サーバ管理エリア数)を、Area Server30Aと同じグループに属し、Area Server30Aの次にIPアドレスが小さい(1つ上位の)Area Server30AおよびArea Server30Aの次にIPアドレスが小さい(1つ下位の)Area Server30A、すなわち、IPアドレスがArea Server30Aの前後のArea Server30Aに通知する。なお、制御部303は、プロパティファイルに記憶されている通知頻度で、あるいは、IPアドレスが前後のArea Server30Aで管理されているAreaの数(他サーバ管理エリア数)が通知された際の応答として、自サーバ管理エリア数を通知する。
制御部303は、自サーバ管理エリア数およびIPアドレスがArea Server30Aの前後のArea Server30Aから通知された他サーバ管理エリア数を記憶する。
さらに、制御部303は、自サーバ管理エリア数およびIPアドレスが前後のArea Server30Aから通知された他サーバ管理エリア数に基づき、その他サーバ管理エリア数の通知を受けたArea Server30Aに対するArea Server30AへのAreaの偏りの程度を求め、その偏りの程度が閾値を超えている場合には、その他サーバ管理エリア数の通知を受けたArea Server30AにAreaの再配置を行う。
以下、制御部303の各ブロックについて説明する。
メモリ領域304には、自サーバ管理エリア数、および、Area Server30Aと同じグループに属し、IPアドレスがArea Server30Aの前後のArea Server30Aから通知された他サーバ管理エリア数が記憶される。
図6は、メモリ領域304の構成を示す図である。なお、図6は、Area Server30−2のメモリ領域304の構成を示す図である。
図6に示すように、メモリ領域304においては、Area Server30−2の次にIPアドレスが小さい(1つ上位の)Area Server30−1(IPアドレス:10.0.0.1)から通知された、Area Server30−1が管理するAreaの数と、Area Server30−1に対するArea Server30−2へのAreaの偏りの程度がプロパティファイルに記憶されている閾値以上となった状態の持続時間と、Area Server30−2が現在管理しているAreaの数と、Area Server30−2が前回通知したAreaの数と、Area Server30−2の次にIPアドレスが大きい(1つ下位の)Area Server30−3(IPアドレス:10.0.0.3)から通知された、Area Server30−3が管理するAreaの数と、Area Server30−3に対するArea Server30−2へのAreaの偏りの程度がプロパティファイルに記憶されている閾値以上となった状態の持続時間と、が記憶される。
なお、例えば、Group1内には、Area Server30−1よりも上位のArea Serverは存在しない。この場合、Area Server30−1のメモリ領域304においては、図7に示すように、上位のArea Serverから通知されたAreaの数として、特別な値、例えば、負値(−1など)あるいはNULLなどが設定される。
再び、図4を参照すると、メモリ領域305には、図8に示すように、Area Server30Aが属するGroup1のGroup Server30−2およびMaster Server20のロケーション(IPアドレス)が記憶される。
Area分割部306は、Area Server30Aで管理されているAreaのサイズを監視し、Areaのサイズが所定の閾値に達すると、そのAreaを2つのAreaに分割する。
Area再配置部307は、IPアドレスがArea Server30Aの前後のArea Server30Aから他サーバ管理エリア数の通知を受けると、自サーバ管理エリア数および通知された他サーバ管理エリア数に基づき、その他サーバ管理エリア数の通知を受けたArea Server30Aに対するArea Server30AへのAreaの偏りの程度を求め、求めたAreaの偏りの程度がプロパティファイルに記憶されている偏りの程度の閾値を超えているかを判定する。また、Area再配置部307は、他サーバ管理エリア数の通知を受けたArea Server30Aに対するArea Server30AへのAreaの偏りの程度が閾値を越えている場合には、Area Server30AへのAreaの偏りの程度が閾値を超える状態の持続時間が、プロパティファイルに記憶されている偏り持続時間を越えたか否かを判定する。Area Server30AへのAreaの偏りの程度が閾値を越える状態の持続時間が偏り持続時間を越えると、Area再配置部307は、その他サーバ管理エリア数の通知を受けたArea Server30AにAreaの再配置を行う。
次に、Group Server30Gの構成について、図9を参照して説明する。なお、上述したように、Group Server30Gは、Area Server30Aの中から任命される。したがって、Group Server30Gは、上述したArea Server30Aが有する構成を全て包含する。そのため、図9においては、図4と同様の構成については同じ符号を付し、説明を省略する。
Disk領域302は、プロパティファイル、Areaリストに加えて、Area Serverリストを記憶している。
図10は、Area Serverリストの構成を示す図である。なお、図10は、Group Server30−2のDisk領域302に記憶されるArea Serverリストの構成を示す図である。
図10に示すように、Area Serverリストとして、Group1に属するArea Server30Aごとに、そのArea Server30Aのロケーション(IPアドレス)と、そのArea Server30Aが管理するAreaに含まれるRowの中で最も小さいKeyであるStartRowKeyと、そのArea Server30Aが管理するAreaに含まれるRowの中で最も大きいKeyであるStopRowKeyと、が対応付けて記憶される。Area Serverリストにおいては、各Area Server30Aのロケーションに応じて昇順にソート済みである。そのため、2分探索などにより高速な探索が可能な状態となっている。
データの追加が行われる場合には、そのデータをValueとするRowの格納先は、StartKey<そのRowのKey≦StopKeyとなるAreaが選択される。ここで、Keyの大小は、辞書順の大小で比較される。したがって、例えば、Keyが、"Key30abc"(>"Key30")であるRow、あるいは、Keyが、"Key60"であるRowは、Area Server30−2(IPアドレス:10.0.0.2)が管理先として選択される。
再び、図9を参照すると、制御部303は、同じグループに属する全てのArea Server30AからそのArea Server30Aが管理するAreaの数を取得し、所定のイベントを契機として、通信部301を介して、取得したAreaの数の合計(自グループ管理エリア数)を、Group Server30Gの次にIPアドレスが小さい(1つ上位の)Group Server30GおよびGroup Server30Gの次にIPアドレスが大きい(1つ下位の)Group Server30G、すなわち、IPアドレスがGroup Server30Gの前後のGroup Server30Gに通知する。なお、制御部303は、プロパティファイルに記憶されている通知頻度で、あるいは、IPアドレスがGroup Server30Gの前後のGroup Server30Gから、そのGroup Serverが属するグループの全てのArea Server30Aで管理されているAreaの数の合計(他グループ管理エリア数)が通知された際の応答として、自グループ管理エリア数を通知する。制御部303は、自グループ管理エリア数および通知された他グループ管理エリア数を記憶領域401に記憶させる。
図11は、記憶領域401の構成を示す図である。なお、図11は、Group Server30−5のメモリ領域401の構成を示す図である。
図11に示すように、記憶領域401においては、Area Server30−5の次にIPアドレスが小さい(1つ上位の)Group Server30−2(IPアドレス:10.0.0.2)から通知されたAreaの数と、Group Server30−5が属するグループの全てのArea Server30Aで管理されているAreaの数と、Area Server30−5の次にIPアドレスが大きい(1つ下位の)Area Server30−8から通知されたAreaの数と、が記憶される。
ここで、例えば、Group Server30−2よりも上位のGroup Serverは存在しない。この場合、Group Server30−2のメモリ領域401においては、図12に示すように、上位のGroup Serverから通知されたAreaの数として、特別な値、例えば、負値(−1など)あるいはNULLなどが設定される。
再び、図9を参照すると、制御部303は、IPアドレスがGroup Server30Gの前後のGroup Server30Gから他グループ管理エリア数が通知を受けると、自グループ管理エリア数および通知された他サーバ管理エリア数に基づき、その他グループ管理エリア数の通知を受けたGroup Server30Gが属するグループに対するGroup Server30Gが属するグループへのAreaの偏りの程度を求め、その偏りの程度が閾値を超えている場合には、その他グループ管理エリア数の通知を受けたGroup Server30Gが属するグループのArea Server30Aに、Group Server30Gが属するグループのArea Server30で管理されているAreaの再配置を行う。
次に、本実施形態の分散システム1の動作について説明する。
まず、Group内でのArea再配置時の動作について説明する。
図13は、Area Server30−1〜30−3が属するGroup1内でのArea再配置時の動作を示す図である。
図13においては、Area Server30−1〜30−3のDisk領域302のプロパティファイルには、自サーバ管理エリア数の通知頻度として、自サーバ管理エリア数が前回の通知時から50増加した場合に他のArea Serverに通知を行い、Areaの偏りの程度の閾値を自グループ管理エリア数の20%とし、偏り状態の持続時間として、Areaの偏りの程度が閾値を越える状態が2回続いた場合にArea再配置を行う旨が記憶されているものとする。また、以下では、Area Server30−1(IPアドレス:10.0.0.1)が管理するAreaの数は790であり、Area Server30−2(IPアドレス:10.0.0.2)が管理するAreaの数は950であり、Area Server30−3(IPアドレス:10.0.0.3)が管理するAreaの数は900であるとする(状態1)。
以下では、Area Server30−2を構成する各部の動作を中心に説明を行う。
状態1において、Area Server30−2の通信部301を介した自サーバ管理エリア数、および、Group1に属し、IPアドレスがArea Server30−2の前後のArea Server30−1,30−3が管理するAreaの数の通知が行われ、Area Server30−1〜30−3それぞれが管理するAreaの数がArea Server30−2のメモリ領域304に記憶される。
状態2において、Area Server30−2の自サーバ管理エリア数が50増加したとする。プロパティファイルには、自サーバ管理エリア数が50増加した場合に通知を行う旨が記憶されているので、Area Server30−2の通信部301は、自サーバ管理エリア数(1000)をArea Server30−1,30−3に通知する。また、通信部301は、その通知に応じて、Area Server30−1,30−3から、各Area Serverが管理するAreaの数の通知を受ける。ここでは、Area Server30−1から通知されたAreaの数は790であり、Area Server30−3から通知されたAreaの数は900であるとする。Area Server30−2のメモリ領域304には、Area Server30−1〜30−3のそれぞれが管理するAreaの数が記憶される。
次に、Area Server30−2のArea再配置部307は、自サーバ管理エリア数とArea Server30−1,30−3から通知されたAreaの数との差が偏りの程度の閾値以上であるか否かを判定する。上述したように、プロパティファイルには、自サーバ管理エリア数の20%を偏りの程度の閾値とする旨が記憶されている。自サーバ管理エリア数は1000であるため、偏りの程度の閾値は200となる。したがって、Area再配置部307は、自サーバ管理エリア数とArea Server30−1,30−3から通知されたAreaの数との差が、200を超えるか否かを判定する。上述したように、Area Server30−1から通知されたAreaの数は790であるので、自サーバ管理エリア数との差は210となる。また、Area Server30−3から通知されたAreaの数は900であるので、自サーバ管理エリア数との差は100となる。自サーバ管理エリア数とArea Server30−1から通知されたAreaの数との差が偏りの程度の閾値である200を超えるので、Area再配置部307は、メモリ領域304にArea Server30−1に対するArea Server30−2へのAreaの偏り程度が閾値以上となった状態の持続時間として「1」を記憶させる。
状態3において、自サーバ管理エリア数がさらに50増加したとすると、通信部301は、自サーバ管理エリア数(1050)をArea Server30−1,30−3に通知する。また、通信部301は、その通知に応じて、Area Server30−1,30−3から、各Area Serverが管理するAreaの数の通知を受ける。ここでは、Area Server30−1から通知されたAreaの数は800であり、Area Server30−3から通知されたAreaの数は950であるとする。メモリ領域304には、Area Server30−1〜30−3のそれぞれが管理するAreaの数が記憶される。
次に、Area再配置部307は、自サーバ管理エリア数とArea Server30−1,30−3から通知されたAreaの数との差が、偏りの程度の閾値以上であるか否かを判定する。上述したように、プロパティファイルには、自サーバ管理エリア数の20%を偏りの程度の閾値とする旨が記憶されており、自サーバ管理エリア数は1050であるため、偏りの程度の閾値は210となる。したがって、Area再配置部307は、自サーバ管理エリア数とArea Server30−1,30−3から通知されたAreaの数との差が、210を超えるか否かを判定する。上述したように、Area Server30−1から通知されたAreaの数は800であるので、自サーバ管理エリア数との差は250となる。また、Area Server30−3から通知されたAreaの数は950であるため、自サーバ管理エリア数との差は100となる。自サーバ管理エリア数とArea Server30−1から通知されたAreaの数との差が偏りの程度の閾値である210を超えるので、Area再配置部307は、メモリ領域304に記憶されている、Area Server30−1に対するArea Server30−2へのAreaの偏りの程度が閾値以上となった状態の持続時間を「1」から「2」に更新する。
上述したように、プロパティファイルには、Areaの偏りの程度が閾値を越える状態が2回続いた場合にArea再配置を行う旨が記憶されているので、Area再配置部307は、Area Server30−1をAreaの再配置先と決定し、Area Server30−2で管理されているAreaのうち、所定数のAreaのArea Server30−1への再配置を行う。
ここで、Area再配置部307は、例えば、自サーバ管理エリア数とArea Server30−1から通知されたAreaの数との差が250であるので、その半分、すなわち、125だけAreaをArea Server30−1に再配置する(状態4)。その結果、Area Server30−1が管理するAreaの数とArea Server30−2が管理するAreaの数とは同数となり、Area Server30−2の負荷が分散される。
また、Area再配置部307は、各Area Server30Aで管理されるAreaに含まれるRowのKey範囲の連続性が保持されるようにAreaの再配置を行う。ここで、上述したように、Area Server30−1は、Key範囲がKey1〜Key30のRowを含むAreaを管理し、Area Server30−2は、Key範囲がKey31〜Key60のRowを含むAreaを管理している。この場合、Area Server30−2のArea再配置部307は、Area Server30−1をAreaの再配置先と決定すると、Area Server30−2で管理されているAreaのうち、RowのKeyの値が小さいAreaから順に所定数のAreaの再配置を行う。そのため、Areaの再配置後においても、各Area Server30Aが管理するAreaのKey範囲は連続しているため、Area Serverリストにおいて、Area Server30Aごとのエントリ数は1つでよい。そのため、Area Serverリストのサイズが増大するのを抑制することができる。
また、上述したように、Areaの再配置先をIPアドレスが前後のArea Server30Aとすることで、図24に示したように、Master Server20がAreaの再配置先のArea Serverを探し必要がなくなり、Master Server20の負荷を低減することができる。
次に、Group間でのArea再配置時の動作について説明する。
図14は、Group間でのArea再配置時の動作を示す図である。
なお、図14においては、Group Server30−2,30−5,30−8のDisk領域302のプロパティファイルには、通知頻度として、自グループ管理エリア数が前回の通知時から200増加した場合に他のGroup Serverへの通知を行い、Areaの偏りの程度の閾値を自グループ管理エリア数の20%とし、偏り状態の持続時間として、Areaの偏りの程度が閾値を越える状態が2回続いた場合にArea再配置を行う旨が記憶されているものとする。また、以下では、Group1に属するArea Server30−1〜30−3で管理されているAreaの数の合計が2100であり、Group2に属するArea Server30−4〜30−6で管理されているAreaの数の合計が2500であり、Group3に属するArea Server30−7〜30−9で管理されているAreaの数の合計が2500であるとする(状態1)。
以下では、Group Server30−5(Area Server30−5)を構成する各部の動作を中心に説明を行う。
状態1において、Group Server30−5の通信部301を介した自グループ管理エリア数、および、Group1,3の各々に属する全てのArea Server30Aで管理されているAreaの数の合計の通知が行われ、各Groupに属するすべてのArea Server30Aで管理されているAreaの数の合計がGroup Server30−2のメモリ領域304に記憶される。
状態2において、自グループ管理エリア数が200増加したとする。プロパティファイルには、自グループ管理エリア数が200増加した場合に通知を行う旨が記憶されているので、Group Server30−5の通信部301は、自グループ管理エリア数(2700)を、Group Server30−2,30−8に通知する。また、通信部301は、その通知に応じて、Group Server30−2からはGroup1に属する全てのArea Server30Aで管理されているAreaの数の合計を通知され、Group Server30−8からはGroup3に属する全てのArea Server30Aで管理されているAreaの数の合計を通知される。ここでは、Group Server30−2から通知されたAreaの数は2150であり、Group Server30−8から通知されたAreaの数は2500であるとする。Group Server30−5のメモリ領域304には、Group1〜Group3に属する各Area Serverで管理されているAreaの数の合計が記憶される。
次に、Group Server30−5のArea再配置部307は、自グループ管理エリア数とGroup Server30−2,30−8から通知されたAreaの数との差が偏りの程度の閾値以上であるか否かを判定する。上述したように、プロパティファイルには、自グループ管理エリア数の20%を偏りの程度の閾値とする旨が記載されている。自グループ管理エリア数は2700であるため、偏りの程度の閾値は540となる。したがって、Area再配置部307は、自グループ管理エリア数とGroup Server30−2,30−8から通知されたAreaの数との差が、540を超えるか否かを判定する。上述したように、Group Server30−2から通知されたAreaの数は2150であるので、自グループ管理エリア数との差は550となる。また、Group Server30−8から通知されたAreaの数は2500であるので、自グループ管理エリア数との差は200となる。自グループ管理エリア数とGroup Server30−2から通知されたAreaの数との差が偏りの程度の閾値である540を超えるので、Area再配置部307は、メモリ領域304にGroup1に対するGroup2へのAreaの偏りの程度が閾値以上となった状態の持続時間として「1」を記憶させる。
状態3において、自グループ管理エリア数がさらに200増加したとすると、通信部301は、自グループ管理エリア数(2900)をGroup Server30−2,30−8に通知する。また、通信部301は、その通知に応じて、Group Server30−2からはGroup1に属する全てのArea Server30Aで管理されているAreaの数の合計を通知され、Group Server30−8からはGroup3に属する全てのArea Server30Aで管理されているAreaの数の合計を通知される。ここでは、Group Server30−2から通知されたAreaの数は2200であり、Group Server30−8から通知されたAreaの数は2500であるとする。Group Server30−5のメモリ領域304には、Group1〜Group3に属する全てのArea Serverで管理されているAreaの数の合計が記憶される。
次に、Area再配置部307は、自グループ管理エリア数とGroup Server30−2,30−8から通知されたAreaの数との差が偏りの程度の閾値以上であるか否かを判定する。上述したように、プロパティファイルには、自グループ管理エリア数の20%とする旨が記載されており、自グループ管理エリア数は2900であるため、偏りの程度の閾値は580となる。したがって、Area再配置部307は、自グループ管理エリア数と、Group Server30−2,30−8から通知されたAreaの数との差が、580を超えるか否かを判定する。上述したように、Group Server30−2から通知されたAreaの数は2200であるので、自グループ管理エリア数との差は700となる。また、Group Server30−8から通知されたAreaの数は2500であるので、自グループ管理エリア数との差は400となる。自グループ管理エリア数とGroup Server30−2から通知されたAreaの数との差が偏りの程度の閾値である580を超えるので、Area再配置部307は、メモリ領域304に記憶されている、Group1に対するGroup2へのAreaの偏りの程度が閾値以上となった状態の持続時間を「1」から「2」に更新する。
上述したように、プロパティファイルには、Areaの偏りの程度が閾値を越える状態が2回続いた場合にArea再配置を行う旨が記憶されているので、Area再配置部307は、Group2に属するArea Serverで管理されているAreaのGroup1に属するArea Serverへの再配置を行うと決定し、Group2に属するArea Serverで管理されているAreaのうち、所定数のAreaのGroup1に属するArea Serverへの再配置を行う。
ここで、Area再配置部307は、例えば、自グループ管理エリア数とGroup Server30−2から通知されたAreaの数との差が700であるので、その半分、すなわち、350だけAreaをGroup1に属するArea Serverに再配置する(状態4)。その結果、Group2に属する各Area Serverで管理されているAreaの数の合計とGroup1に属する各Area Serverで管理されているAreaの数の合計とは同数となり、Group2に属する各Area Serverの負荷が分散される。
また、Area再配置部307は、各グループの担当のKey範囲の連続性が保持されるようにAreaの再配置を行う。ここで、上述したように、Group1に属するGroup Server30−2の担当のKey範囲はKey1〜Key100であり、Group2に属するGroup Server30−5の担当のKey範囲はKey101〜Key200である。この場合、Group Server30−5のArea再配置部307は、Group1に属するArea Serverへの再配置を行うと決定すると、Group2に属する各Area Serverで管理されているAreaのうち、Rowの値が小さいAreaから順に所定数のAreaの再配置を行う。そのため、Areaの再配置後においても、各グループのGroup Server30Gが担当するKey範囲は連続しているため、Group Serverリストにおいて、Group Server30Gごとのエントリ数は1つでよい。そのため、Group Serverリストのサイズが増大するのを抑制することができる。
次に、Area Server起動時のMaster Server20の動作について説明する。
図15は、Area Server30Aの起動時のMaster Server20の動作を示すシーケンス図である。
Area Server30Aの起動時には、ネットワークを介してサーバ間で通信を行うための分散ロックシステムなどにより、Master Server20にArea Server30Aが起動プロセスを開始した旨が通知される。
Master Server20は、Disk領域202に記憶されているプロパティファイルから全Area Server30Aのロケーション一覧、および、Group数を読み込む(ステップS101)。
次に、Master Server20は、Area Server30Aから起動プロセスを開始した旨が通知されると、自身の稼働を知らせる稼動通知をそのArea Server30Aに行うとともに、分散システムにおいて担当するAreaを復元する旨を依頼する再開依頼を行う(ステップS102)。
次に、Master Server20は、読み込んだGroup数だけGroupリストにエントリを作成する。また、Master Server20は、管理するTableに含まれるRowのKey範囲をグループ数でほぼ等分となるように分割する。
次に、Master Server20は、稼働中のArea Server30Aを読み込んだグループ数のグループにグループ分けを行う。また、Master Server20は、グループ毎に、そのグループに属するArea Server30Aのうち、1つのArea Server30AをGroup Serverと決定する(ステップS103)。上述したように、同じグループに属するArea Server30Aのうち、中間のロケーションに位置するArea Server30A(IPアドレスが最大または最小ではないArea Server30A)がGroup Serverに任命される。そのため、Group間でのArea再配置が行われる場合にも、特定のArea Server30Aの負荷が高くなるのを防ぐことができる。
図15においては、Master Server20は、同じグループに属するArea Server30−1〜30−3のうち、Area Server30−2をGroup Serverに決定したとする。Master Server20は、Area Server30−2にArea Server30−1〜30−3が属するグループのGroup Serverに任命した旨を通知する(ステップS104)また、Master Server20は、グループ数でほぼ等分となるように分割したKey範囲のうち、そのグループの担当のKey範囲をGroup Serverに任命したArea Server30−2に通知する。グループのGroup Serverに任命されたArea Server30−2は、そのグループに属するArea Server30Aの数だけArea Serverリストにエントリを作成する。また、Area Server30−2は、Master Server20から通知されたKey範囲をそのグループに属するArea Server30Aの数でほぼ等分し、各Area Server30Aに分割したKey範囲のRowを含むAreaを管理させる。
系全体が起動すると、Master Server20は、分散ロックシステムなどにより、Area Server30A、Group Server30Gの死活監視を行う。
図16は、クライアント10のデータ参照時の動作を示すシーケンス図である。
なお、図16においては、クライアント10は、キャッシュ機能を有しているものとする。また、図16においては、URL(Uniform Resource Locator)がhttp://www.goo.ne.jp/?TH=3のWebコンテンツを収集日時によらず全て取得する旨がクライアント10に入力されたとする。この場合、クライアント10は、例えば、図17に示すAPI(Application Program Interface)を発行する。
まず、クライアント10は、図17に示すAPIにおけるRowKeyの値(set_rowKey関数に指定されたURL情報)に対応するキャッシュを記憶しているか否かを判定する(ステップS201)。RowKeyの値に対応するキャッシュを記憶している場合には、クライアント10は、直接、そのキャッシュに示されるロケーションのArea Server30Aに直接アクセスし、所望のデータを取得する。
RowKeyの値に対応するキャッシュを記憶していない場合には、クライアント10は、Master Server20、Group Server30G、Area Server30Aの順にロケーション解決を行い、所望のデータを取得する。具体的には、まず、クライアント10は、図17に示すAPIにおけるRowKeyの値を担当のKey範囲とするGroup Server30Gのロケーションの取得要求をMaster Server20に行う(ステップS202)。次に、クライアント10は、RowKeyの値をキーとして、Master Server20で記憶されているGroupリスト(昇順でソート済み)のStartRowKeyの値を参照し、そのRowKeyの値を担当のKey範囲とするGroup Server30Gのロケーションを2分探索により取得する。
次に、クライアント10は、ロケーションを取得したGroup Server30Gに、APIにおけるRowKeyの値を担当のKey範囲とするArea Server30Aのロケーションの取得要求を行う(ステップS203)。次に、クライアント10は、RowKeyの値をキーとして、Group Server30Gで記憶されているArea Serverリスト(昇順でソート済み)のStartRowKeyの値を参照し、そのRowKeyの値を担当のKey範囲とするArea Server30Aののロケーションを2分探索により取得する。
次に、クライアント10は、ロケーションを取得したArea Server30Aにデータの取得要求を行い(ステップS204)、所望のデータを取得する。
図18は、クライアント10のデータ更新時の動作を示すシーケンス図である。
なお、図18においては、クライアント10は、キャッシュ機能を有しているものとする。また、図18においては、Table1にURLがhttp://www.goo.ne.jp/?TH=3のWebコンテンツを格納する旨がクライアント10に入力されたとする。この場合、クライアント10は、例えば、図19に示すAPI(Application Program Interface)を発行する。
まず、クライアント10は、図19に示すAPIにおけるRowKeyの値に対応するキャッシュを記憶しているか否かを判定する(ステップS301)。RowKeyの値に対応するキャッシュを記憶している場合には、クライアント10は、直接、そのキャッシュに示されるロケーションのArea Server30Aに直接アクセスし、所望のデータを取得する。
RowKeyの値に対応するキャッシュを記憶していない場合には、クライアント10は、Master Server20、Group Server30G、Area Server30Aの順にロケーション解決を行い、Table1へのデータの格納を行う。具体的には、まず、クライアント10は、図19に示すAPIにおけるRowKeyの値を担当のKey範囲とするGroup Server30Gのロケーションの取得要求をMaster Server20に行う(ステップS302)。次に、クライアント10は、RowKeyの値をキーとして、Master Server20で記憶されているGroupリスト(昇順でソート済み)のStartRowKeyの値を参照し、そのRowKeyの値を担当のKey範囲とするGroup Server30Gのロケーションを2分探索により取得する。
次に、クライアント10は、ロケーションを取得したGroup Server30Gに、APIにおけるRowKeyの値を担当のKey範囲とするArea Server30Aのロケーションの取得要求を行う(ステップS303)。次に、クライアント10は、RowKeyの値をキーとして、Group Server30Gで記憶されているArea Serverリスト(昇順でソート済み)のStartRowKeyの値を参照し、そのRowKeyの値を担当のKey範囲とするArea Server30Aののロケーションを2分探索により取得する。
次に、クライアント10は、ロケーションを取得したArea Server30Aにデータの更新要求を行い(ステップS304)、そのArea Server30Aで管理されている、Table1の所定のAreaにデータを追加で格納する。この結果、Table1には、RowKeyの値が「http:www.goo.ne.jp/?TH=3」、Column名が「contents」、タイプスタンプが「201102071300」、Valueが「<html>・・・</html>」の1レコードがひとまとまりでTable1に追加される。
なお、例えば、Group1:aa~ff、Group2:gg~kk、・・・というように各グループが担当するRowKeyの値の範囲をMaster Server20のプロパティファイルに予め記憶させておくことで、データの初期投入時などに特定のArea Server30Aに負荷が偏るのを防ぐことができる。
次に、Area分割時のArea Serve30Aの動作について説明する。
図20は、Area分割時のArea Server30Aの動作を示すシーケンス図である。
Area Server30AのArea分割部306は、Area Server30Aで管理されているAreaのサイズを監視し、Areaのサイズが所定の閾値を超えると、そのAreaを2つのAreaに分割する。ここで、Area分割部306は、Area3AとArea3Bとのサイズがほぼ等しくなるようなRowKeyを選択して分割を行う。
次に、Area Server30Aの通信部301は、Area Server30Aで管理されているAreaの数が、前回の通知時からDisk領域302に記憶されているプロパティファイルに含まれる通知頻度に示される所定数だけ増加したか否かを判定する(ステップS401)。
Area Server30Aで管理されているAreaの数が、前回の通知時から所定数だけ増加している場合には、通信部301は、自サーバ管理エリア数を、同じグループに属し、Area Server30Aの1つ上位の(IPアドレスがArea Server30Aの次に小さい)Area Server30Aに通知する(ステップS402)。また、通信部301は、1つの上位のArea Server30Aから、その1つの上位のArea Server30Aで管理されているAreaの数の通知を受ける(ステップS403)。また、通信部301は、自サーバ管理エリア数を、同じグループに属し、Area Server30Aの1つ下位の(IPアドレスがそのArea Serverの次に大きい)Area Server30Aに通知する(ステップS404)。また、通信部301は、1つの下位のArea Server30Aから通知、その1つの下位のArea Server30Aで管理されているAreaの数の通知を受ける(ステップS405)。
自サーバ管理エリア数と、1つ上位および1つ下位のArea Server30Aから通知されたAreaの数とは、Area Server30Aのメモリ領域304に記憶される。
次に、Area再配置時のArea Server30Aの動作について説明する。
図21は、Area再配置時のArea Server30Aの動作を示すシーケンス図である。
なお、図21においては、Area Server30の自サーバ管理エリア数は1000であり、Area Server30Aの1つ上位のArea Server30Aで管理されているAreaの数は800であり、Area Server30Aの1つ下位のArea Server30Aで管理されているAreaの数が900であるとする。
Area Server30Aのエリア再配置部307は、1つ上位および1つ下位のArea Server30Aから、各Area Server30Aが管理するAreaの数が通知されると、その通知されたAreaの数および自サーバ管理エリア数に基づき、1つ上位および1つ下位のArea Server30Aに対するArea Server30AへのAreaの偏りの程度を求める。次に、エリア再配置部307は、求めた1つ上位あるいは1つ下位のArea Server30Aに対するArea Server30AへのAreaの偏りの程度が偏りの程度の閾値を超えているか否かを判定する。さらに、エリア再配置部307は、1つ上位あるいは1つ下位のArea Server30Aに対するArea Server30AへのAreaの偏りの程度が閾値を超えている場合には、Areaの偏りの程度が閾値を超えている状態の持続時間が、Disk領域302に記憶されているプロパティファイルに含まれる偏り持続時間を越えているか否かを判定する。Areaの偏りの程度が閾値を超えている状態の持続時間が偏り持続時間を越えている場合には、Area再配置部307は、Area再配置が必要であると判定する(ステップS501)。
次に、Area再配置部307は、再配置を行うAreaの数およびAreaの再配置先のArea Server30Aを決定する。ここで、1つ上位のArea Serve30Aで管理されているエリア数が、1つ下位のArea Server30Aで管理されているエリア数よりも少ないので、Area再配置部307は、1つ上位のArea Serve30AをAreaの再配置先のArea Server30Aに決定し、例えば、自サーバ管理エリア数と1つ上位のArea Server30Aで管理されているAreaの数との差(200)の半分、すなわち、100だけAreaの再配置を行うと決定する(ステップS502)。
次に、Area再配置部307は、1つ上位のArea Server30Aに、決定したAreaの数だけAreaの再配置を行う(ステップS503)。上述したように、1つのArea Server30Aで管理されているAreaに含まれるRowのKey範囲は連続している。また、各Area Server30Aで管理されているAreaに含まれるRowのKey範囲は、各Area Server30AのIPアドレスに順に連続している。ここで、1つ上位のArea Server30Aで管理されているAreaに含まれるRowのKey範囲が、Area Server30Aで管理されているAreaに含まれるRowのKey範囲よりも小さいとする。この場合、Area再配置部307は、Area Server30Aで管理されているAreaのうち、RowのKey範囲が小さい順にAreaの再配置を行う。そのため、Area再配置後も、1つのArea Server30Aで管理されているAreaに含まれるKey範囲の連続性が保持されるとともに、各Area Server30Aで管理されているAreaに含まれるRowのKey範囲の連続性も保持される。
次に、Area Server30Aは、自身が属するグループのGroup Server30Aに、Area Serverリストの更新を要求する(ステップS504)。上述したように、各Area Server30Aが管理するAreaのKey範囲が連続するようにArea再配置が行われるため、Area Serverリストにおいて、Area Server30Aごとのエントリ数は1つでよい。そのため、Area Serverリストのサイズが増大するのを抑制することができる。
次に、Group Serverの再決定時の動作について説明する。
図22は、Group Serverの再決定時のMaster Server20の動作を示すシーケンス図である。
上述したように、Master Server20の制御部203は、各Area Server30AのIPアドレスに応じてグループ分けを行い、グループ毎にGroup Serverを決定する。ここで、Area Server30Aの減設または障害による停止を検出した場合、あるいは、Area Server30Aの増設を検出すると、制御部203は、各Group内に属するArea Server30Aの数を点検し、Area Server数に偏りがあるか否かを判定する。偏りがある場合は、制御部203は、グループの再編成を行う。具体的には、制御部203は、メモリ領域204に記憶されているロケーションリストに示される稼働中のArea Server30Aを、Disk領域202に記憶されているプロパティファイルの設定に応じてグループ分けする。次に、制御部203は、グループ毎に、そのグループ内のGroup Server数は1であるか否かを判定する。1つのグループ内に2以上のGroup Server30Gが存在する場合には、1つのGroup Serverだけを残し、他のGroup Serverを解任する。また、1つのグループ内に1つもGroup Server30Gが存在しない場合には、制御部203は、そのグループ内の1つのArea Server30AをGroup Serverに任命する(ステップS601)。
次に、Master Server20の通信部201は、Group Serverを解任されたArea Server30Aにその旨を通知する(ステップS602)。Group Serverを解任されると、通常のArea Server30Aに戻る。また、通信部201は、新たにGroup Serverに任命されたArea Server30Aにその旨を通知する(ステップS603)。
なお、Area Server30Aの減設、あるいは、障害による停止を検出すると、Master Server20は、そのArea Server30AのDisk領域に記憶されているAreaリストを参照し、そのArea Server30Aで管理されていた全Areaを、即時に隣接するArea Serverに再配置する。その結果、新たにAreaを管理することになったArea Server30Aは、一時的に多くのAreaを管理することになり、そのArea Server30へのAreaの偏りが発生する。しかし、この一時的なAreaの偏りは、例えば、図13に示される処理が繰り返されることにより、徐々に均等化される。また、Area Server30Aの増設を検出すると、Master Server20は、その増設されたArea Server30Aと同じグループに属し、その増設されたArea Server30Aに隣接するArea Server30Aに管理されているAreaを、その増設されたArea Server30Aに再配置する。
また、Master Server20は、Group Server30Gの障害などによる停止を検出すると、図22に示される処理を行い、Area Server30Aを新たにGroup Serverに任命する。
このように、本実施形態によれば、Area Server30Aは、他のArea Server30Aに対する自身へのAreaの偏りの程度が所定の閾値を超えたか否かを判定し、自身へのAreaの偏りの程度が所定の閾値を超えた場合に、その他のArea Server30AへのArea再配置を行う。
そのため、Area分割毎にMeta Table(Meta Area)の更新が行われることがなくなるので、Meta Table(Meta Area)を管理するArea Server30Aへのアクセスが少なくなり、負荷を低減させることができる。
また、本実施形態によれば、Master Server20は、複数のRowのKey範囲をソートし、Group Server30GのIPアドレスの順に、Key範囲のソート順が保持されるように、Key範囲の割り当てを行うとともに、Group Server30G毎に、各Group Server30Gに割り当てたKey範囲を記憶する(Group Serverリスト)。また、Group Server30Gは、自グループに属するArea Server30A毎に、各Area Server30AのIPアドレスの順にKey範囲のソート順が保持されるように割り当てられたKey範囲を記憶する(Area Serverリスト)。
上述したように、Area数は100,000以上のオーダになる。そのため、Area毎にエントリを作成すると、Meta Table(Meta Area)のエントリ数もArea数は100,000以上のオーダになる。一方、本実施形態のように、Group Server30G毎に、あるいは、Area Server30毎に、担当するKey範囲を記憶することで、全てのGroup ServerリストおよびArea Serverリストのエントリ数を合わせても、Area Server30Aの数と同じになる。一般に、分散システム1におけるArea Serverの数は、100〜1000のオーダなので、Group ServerリストおよびArea Serverリストのエントリ数も、100〜1000のオーダとなり、Area毎にエントリを作成する場合と比べて、2桁以上、エントリ数を削減することができる。
また、Master Server20がGroupリストを記憶し、Group Server30GがArea Serverリストを記憶し、データの参照、更新時には、Groupリスト、Area Serverリスト、User Areaの順に辿ることで、従来と同様に、3段階のロケーション解決を行うことができる。
なお、上述した実施形態においては、Master Server20は、所定のKey範囲をGroup Server30Gに割り当てるとともに、そのGroup ServerのロケーションとそのKey範囲とをGroupリストとして記憶し、Group Server30Gは、Master Server20から割り当てられたKey範囲のRowを含むAreaを同じグループに属するArea Server30Aで分散して管理させるとともに、Area Server30AのロケーションとそのArea Server30Aが管理するAreaに含まれるRowのKey範囲とをArea Serverリストとして記憶する例を用いて説明したが、これに限られるものではない。例えば、Master Server20が、各Area Server30AにKey範囲を割り当て、割り当てたKey範囲のRowを含むAreaを監理させるとともに、Area Server30AのロケーションとそのArea Server30Aが管理するAreaに含まれるRowのKey範囲と記憶するようにしてもよい。
なお、本発明のArea Serverにおいて行われる方法は、コンピュータに実行させるためのプログラムに適用してもよい。また、そのプログラムを記憶媒体に格納することも可能であり、ネットワークを介して外部に提供することも可能である。
1 分散システム
3 Area
10 クライアント
20 Master Server
30−1〜30−9,30A Area Server
30−2,30−5,30−8,30G Group Server
201,301 通信部
202,302 Disk領域
203,303 制御部
204,304,305,401 メモリ領域
306 Area分割部
307 Area再配置部

Claims (8)

  1. ネットワークを介して接続された複数のエリアサーバを備え、データ群を分割した複数のエリアを前記複数のエリアサーバが分散して管理する分散システムであって、
    前記複数のエリアサーバの各々は、
    管理しているエリアのサイズが所定値以上となると、該エリアを二つのエリアに分割するエリア分割部と、
    所定のイベントを契機として、自サーバで管理しているエリアの数である自サーバ管理エリア数を他の前記エリアサーバに通知する通信部と、
    前記自サーバ管理エリア数、および、前記他のエリアサーバから通知された、該他のエリアサーバで管理されているエリアの数である他サーバ管理エリア数に基づき自サーバへのエリアの偏りの程度を求め、該求めた偏りの程度が所定の閾値以上であれば、前記管理しているエリアの一部を、前記他のエリアサーバに再配置するエリア再配置部と、を有することを特徴とする分散システム。
  2. 請求項1記載の分散システムにおいて、
    前記エリア再配置部は、前記自サーバへのエリアの偏りの程度が前記閾値以上である状態が所定期間以上継続した場合にエリアを再配置することを特徴とする分散システム。
  3. 請求項1または2記載の分散システムにおいて、
    前記通信部は、前記自サーバ管理エリア数が前回の通知時から所定数以上増加したことを契機として、前記自サーバ管理エリア数を通知することを特徴とする分散システム。
  4. 請求項1から3のいずれか1項に記載の分散システムにおいて、
    マスターサーバをさらに備え、
    前記マスターサーバは、
    前記複数のエリアサーバをグループ分けするとともに、グループ毎に、該グループに属するエリアサーバの内、1つのエリアサーバをグループサーバに任命する制御部をさらに有し、
    前記通知部は、自サーバが前記グループサーバに任命されると、自サーバと同じグループに属するエリアサーバの各々から、該エリアサーバで管理されているエリアの数を取得し、所定のイベントを契機として、前記同じグループに属する全てのエリアサーバで管理されているエリアの数の合計である自グループ管理エリア数を前記グループサーバに任命された他のエリアサーバに通知し、
    前記エリア再配置部は、前記自グループ管理エリア数、および、前記グループサーバに任命された他のエリアサーバから通知された、該エリアサーバが属するグループの全てのエリアサーバで管理されているエリアの数の合計である他グループ管理エリア数に基づき自グループへのエリアの偏りの程度を求め、該求めた偏りの程度が所定の閾値以上であれば、前記自グループのエリアサーバで管理されているエリアの一部を、前記グループサーバに任命された他のエリアサーバが属するグループのエリアサーバに再配置することを特徴とする分散システム。
  5. マスターサーバと、ネットワークを介して接続された複数のエリアサーバと、を備え、データ群を分割した複数のエリアを前記複数のエリアサーバが分散して管理する分散システムであって、
    前記データ群は、キーと該キーに対応する値とを対応つけた複数のロウから構成され、
    前記マスターサーバは、
    前記データ群を構成する複数のロウのキーを所定の順にソートした後に前記キーの範囲を前記エリアサーバの数に応じて分割し、該分割したキーの範囲の各々を前記複数のエリアサーバ各々の前記ネットワーク上におけるアドレスの順に前記複数のエリアサーバの各々に割り当て、前記キーの範囲を割り当てた前記エリアサーバに前記キーの範囲のロウを含むエリアを管理させる制御部と、
    前記複数のエリアサーバの各々に割り当てた前記キーの範囲を記憶する記憶部と、を有し、
    前記通知部は、前記ネットワーク上におけるアドレスの順が前後のエリアサーバである隣接エリアサーバに前記自サーバ管理エリア数を通知し、
    前記エリア再配置部は、前記キーのソート順が保持されるようにエリアを再配置することを特徴とする分散システム。
  6. 請求項5記載の分散システムにおいて、
    前記制御部は、前記グループ毎に、該グループに属するエリアサーバの内、1つのエリアサーバをグループサーバに任命し、
    前記記憶部は、前記グループのグループサーバに任命したエリアサーバ毎に、前記グループに属する全てのエリアサーバに割り当てられた前記キーの範囲を記憶し、
    前記グループのグループサーバに任命されたエリアサーバは、前記グループに属するエリアサーバ毎に、該エリアサーバに割り当てられた前記キーの範囲を記憶し、
    前記通知部は、自グループが属するグループにおける前記隣接エリアサーバに前記自サーバ管理エリア数を通知し、
    前記エリア再配置部は、前記キーのソート順が保持されるように、自グループが属するグループにおける前記隣接エリアサーバにエリアを再配置することを特徴とする分散システム。
  7. データ群を分割した複数のエリアを、分散して管理する複数のエリアサーバの各々に適用される負荷分散方法であって、
    管理しているエリアのサイズが所定値以上となると、該エリアを二つのエリアに分割し、
    所定のイベントを契機として、自サーバで管理しているエリアの数である自サーバ管理エリア数を他の前記エリアサーバに通知し、
    前記自サーバ管理エリア数、および、前記他のエリアサーバから通知された、該他のエリアサーバで管理されているエリアの数である他サーバ管理エリア数に基づき自サーバへのエリアの偏りの程度を求め、該求めた偏りの程度が所定値以上であれば、前記管理しているエリアの一部を前記他のエリアサーバに再配置することを特徴とする負荷分散方法。
  8. データ群を分割した複数のエリアを、分散して管理する複数のエリアサーバの各々に、
    管理しているエリアのサイズが所定値以上となると、該エリアを二つのエリアに分割する処理と、
    所定のイベントを契機として、自サーバで管理しているエリアの数である自サーバ管理エリア数を他の前記エリアサーバに通知する処理と、
    前記自サーバ管理エリア数、および、前記他のエリアサーバから通知された、該他のエリアサーバで管理されているエリアの数である他サーバ管理エリア数に基づき自サーバへのエリアの偏りの程度を求め、該求めた偏りの程度が所定値以上であれば、前記管理しているエリアの一部を前記他のエリアサーバに再配置する処理と、を実行させるプログラム。
JP2011157799A 2011-07-19 2011-07-19 分散システム、負荷分散方法、および、プログラム Withdrawn JP2013025453A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011157799A JP2013025453A (ja) 2011-07-19 2011-07-19 分散システム、負荷分散方法、および、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011157799A JP2013025453A (ja) 2011-07-19 2011-07-19 分散システム、負荷分散方法、および、プログラム

Publications (1)

Publication Number Publication Date
JP2013025453A true JP2013025453A (ja) 2013-02-04

Family

ID=47783759

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011157799A Withdrawn JP2013025453A (ja) 2011-07-19 2011-07-19 分散システム、負荷分散方法、および、プログラム

Country Status (1)

Country Link
JP (1) JP2013025453A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016528626A (ja) * 2013-08-13 2016-09-15 インテル コーポレイション 作業密度を増加させ、エネルギー効率を向上させるための電力バランシング

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016528626A (ja) * 2013-08-13 2016-09-15 インテル コーポレイション 作業密度を増加させ、エネルギー効率を向上させるための電力バランシング

Similar Documents

Publication Publication Date Title
US10776396B2 (en) Computer implemented method for dynamic sharding
US8200933B2 (en) System and method for removing a storage server in a distributed column chunk data store
US9052824B2 (en) Content addressable stores based on sibling groups
US8214388B2 (en) System and method for adding a storage server in a distributed column chunk data store
US7464247B2 (en) System and method for updating data in a distributed column chunk data store
US7447839B2 (en) System for a distributed column chunk data store
US8762353B2 (en) Elimination of duplicate objects in storage clusters
CN101354726B (zh) 一种机群文件系统的内存元数据管理方法
CN110489059B (zh) 数据集群存储的方法、装置及计算机设备
CN105550371A (zh) 一种面向大数据环境的元数据组织方法和系统
US10394782B2 (en) Chord distributed hash table-based map-reduce system and method
CN102971732A (zh) 键/值存储器的集成分级查询处理的系统结构
JP5599943B2 (ja) サーバクラスター
US11151081B1 (en) Data tiering service with cold tier indexing
US11140220B1 (en) Consistent hashing using the power of k choices in server placement
US10503737B1 (en) Bloom filter partitioning
Dai et al. Improving load balance for data-intensive computing on cloud platforms
US11275717B2 (en) Web-scale distributed deduplication
US11188258B2 (en) Distributed storage system
JP2013025453A (ja) 分散システム、負荷分散方法、および、プログラム
CN114415971B (zh) 数据处理方法以及装置
US11310309B1 (en) Arc jump: per-key selection of an alternative server when implemented bounded loads
CN117075823B (zh) 对象查找方法、系统、电子设备及存储介质
CN116595015B (zh) 数据处理方法、装置、设备及存储介质
Shen et al. A Distributed Caching Scheme for Improving Read-write Performance of HBase

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20130305

A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20141007