JP5600573B2 - 負荷分散装置及びプログラム - Google Patents

負荷分散装置及びプログラム Download PDF

Info

Publication number
JP5600573B2
JP5600573B2 JP2010272830A JP2010272830A JP5600573B2 JP 5600573 B2 JP5600573 B2 JP 5600573B2 JP 2010272830 A JP2010272830 A JP 2010272830A JP 2010272830 A JP2010272830 A JP 2010272830A JP 5600573 B2 JP5600573 B2 JP 5600573B2
Authority
JP
Japan
Prior art keywords
node
key
management range
range length
virtual
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.)
Active
Application number
JP2010272830A
Other languages
English (en)
Other versions
JP2012123544A (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.)
Japan Broadcasting Corp
Original Assignee
Japan Broadcasting 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 Japan Broadcasting Corp filed Critical Japan Broadcasting Corp
Priority to JP2010272830A priority Critical patent/JP5600573B2/ja
Publication of JP2012123544A publication Critical patent/JP2012123544A/ja
Application granted granted Critical
Publication of JP5600573B2 publication Critical patent/JP5600573B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、分散型データベースシステムや分散ファイルシステムにおける負荷分散に関し、特にDHT(分散ハッシュテーブル、Distributed Hash Table)によるKey-Value型データ管理システムの負荷分散装置及びプログラムに関する。
ネットワークで接続された複数のノードを見かけ上1台の蓄積装置とみなしてデータやファイルを管理するシステムとして、分散型データベースシステムや分散ファイルシステムなどがある。このような分散型データベースシステムや分散ファイルシステムでは、「キー」と「値」を組みとしたデータ(以下、「キー」と「値」の組みを(キー、値)と記載する。)を管理するKey-Value型のデータ管理システムが使われている。大規模なKey-Value型のデータ管理システムを実現する方法としては、DHTが提案されている。DHTではシステムを構成する複数のノードにおいて、(キー、値)を分散して保管管理する。
DHTの代表的な方式としてChordがある(例えば、非特許文献1参照。)。Chordでは、システムに参加するノードは、ハッシュ関数を使ってノードアドレスなどからシステム内で一意なノードIDを生成し、ノードIDを値の順序で円状に配置したオーバーレイネットワークを構成する。システムに(キー、値)を保管する場合、ノードは、キーからハッシュ関数を使ってキーIDを生成し、オーバーレイネットワーク上でそのキーIDに時計周りに近いノードIDのノードにその(キー、値)を保管する。そして、ノードがキーを検索する場合、キーからハッシュ関数を使ってキーIDを生成し、そのキーIDに近いノードIDのノードを発見し、発見したノードからキーに対応する値を取得する。
例えば、「キー」をシステムで分散管理する対象のデータのデータ名とし、「値」をそのデータを記憶しているノードのアドレスとする。データを記憶しているノードは、データ名からハッシュ関数によりキーIDを生成し、オーバーレイネットワーク上でこのキーIDに時計周りに近いノードIDのノードに、データ名等を示す「キー」と自ノードのノードアドレスを示す「値」との対応付けを登録する。データを利用する利用ノードは、利用したいデータのデータ名からキーIDを生成し、このキーIDに時計周りに近いノードIDのノードに問合せを行なって、「キー」に対応した「値」を取得する。利用ノードは、この取得した「値」により、データを記憶しているノードのアドレスを知ることができる。
DHTでは、キーIDに近いノードIDのノードを発見することが必要である。ノードを発見する方式として、システムに参加している各ノードにおいて、システムに参加しているノードの一部を管理するノードテーブルを保有することにより、システム全体でノードテーブルを分散して保管する方式と、システムに参加している全ノードが登録されている完全なノードテーブルを全ノードにおいて共通に持つ方式とがある。
ノードテーブルを分散して保管する方式では、多数のノードから構成される大規模なシステムを構成することが可能であり、完全なノードテーブルを保管する方式は、分散してノードテーブルを保管する方式に比べて大規模なシステムを構成が難しい。一方、ノードテーブルを分散して保管する方式では、キーを検索する場合、複数のノードをルーティングしながら探すため検索時間がかかるが、完全なノードテーブルを持つ方式では、ルーティングの必要がなくO(1)の検索ができる。言い換えれば、定数オーダーの検索ができる。Chordはノードテーブルを各ノードで分散して保管する方式であり、システムに参加しているノードの数をNとすると、キーを管理しているノードを発見するまでのホップ数はO(log2N)(Nの対数のオーダー)となる。
完全なノードテーブルを保管する方式として非特許文献2、非特許文献3が提案されている。全ノードが完全なノードテーブルを共通に保管する方式では、システムへのノードの参加や離脱があった場合、全ノードがそれにあわせてノードテーブルを修正する。そのため、非特許文献2では、ハッシュ空間を分割した中に、Slice Leaderおよび、Unit Leaderのノードをそれぞれ割り当て、それらのノードを経由して階層的に全ノードに参加や離脱の通知を行っている。また、各ノードはノードテーブルを正しく保つために、ノードテーブルのノードおよび隣接ノードへの生存確認を定期的に行っている。非特許文献3では、各ノードはノードテーブの中からランダムにノードを選択し、定期的にノードテーブルを交換し合っている。
DHTにおけるハッシュ空間内で、各ノードが管理する範囲は、時計回りと逆方向の隣接ノード(predecessor)のIDから自ノードIDまでとなる。SHA−1などのハッシュ関数を使うことによって生成されるノードIDはランダムな値であるが、一般的に、生成されるノードIDには偏りが生じる。このハッシュ空間上でのノードIDの偏りは、各ノードが管理するキーIDの管理範囲長の偏りとなり、結果として、システムに参加しているノードが管理する(キー、値)のデータ量に差が生じてしまう。
これに対処する方式として仮想ノード方式がある。仮想ノード方式では、1つのノードが複数の異なるノードIDを生成し、オーバーレイネットワークに参加させることで、各ノードのキー管理範囲長を均等化させる。生成する仮想ノード数は、非特許文献1では1ノード当たりlog(N)個であり、非特許文献3では1ノード当たり60という経験的な値である。仮想ノードのノードIDの生成方法としては、予め決められた方法、例えば、ノードアドレスに1,2,3・・・を順番に追加した値からハッシュ関数により生成する方法や、非特許文献2で提案しているように、元のノードIDからハッシュ空間上で等間隔な位置に配置する方法などがある。
仮想ノード方式は、各ノードのキー管理範囲長を均等化するだけではなく、ノードの性能が異なる場合に、その性能に応じてノードのキー管理範囲長を調整することにも利用することができる。すなわち、性能が高いノードの仮想ノード数を増やすことで、そのノードのキー管理範囲長を広くさせることができる。しかし、ノードの性能差に応じて仮想ノード数を制御する場合、システム内のノードの性能差が大きいと仮想ノード数を多くする必要がある。そのため、ノードテーブルサイズの増大や、管理オーバーヘッドの増加などの問題が生じる。これを解決するために、特許文献1では、ハッシュ空間上でノードが管理する境界を、隣接ノード間の性能差に応じて各ノード間で調整している。
特開2004−252663号公報
上述のように、DHTでは、ハッシュ関数を使って生成したノードIDを用いた場合、ハッシュ空間上でのノードの配置に偏りが生じ、その結果として各ノードが管理するキー管理範囲長に差が生じる。そこで、これを解決するために、各ノードに仮想ノードを割り当てる方法が用いられている。しかし、各ノードに固定数の仮想ノードを割り当てると、ノードテーブルサイズの増加や、管理オーバーヘッドの増加などによって必要な記憶容量が増大し、リソースの負荷が生じる。そのため、むやみに多数の仮想ノードを割り当てることには問題がある。
また、特許文献1のように、隣接ノード間の割り当て範囲を調整する方式であっても、ノードの配置がもともと偏っている場合には、割り当て範囲の調整範囲が狭くあるいは広くなりすぎてしまう。そのため、固定的数を割り当てる仮想ノード手法を併用することが必要となり、根本的な解決にはならない。
本発明は、このような事情を考慮してなされたもので、複数のノード装置によりデータを分散して管理するシステムにおいて、システムに参加しているノード装置を管理するために使用する記憶容量の増加を抑えながら、各ノード装置におけるデータの管理範囲長に偏りをなくすことができる負荷分散装置及びプログラムを提供する。
[1] 本発明の一態様は、データ管理システムを構成するノード装置を特定するノード特定情報を含んだノードテーブルを記憶するとともに、前記ノード特定情報とノードIDとの対応付けを示すキー検索用ノードテーブルを記憶する記憶部と、前記データ管理システムに参加したノード装置のノード特定情報を前記ノードテーブルに書き込み、前記データ管理システムから離脱したノード装置のノード特定情報を前記ノードテーブルから削除するノードテーブル管理部と、前記キー検索用ノードテーブルに設定されているノードIDと、前記ノードIDに対応付けられた前記ノード特定情報とに基づいて、各ノード装置が管理対象とするキーの管理範囲長を算出する管理範囲長演算部と、前記ノードテーブル内のノード特定情報と、前記ノード特定情報により特定されるノード装置に対して生成されたノードIDとの対応付けを設定したキー検索用ノードテーブルを前記記憶部に書き込み、生成した前記キー検索用ノードテーブルに基づいて前記管理範囲長演算部により算出された各ノード装置の管理範囲長のうち最大の管理範囲長と最小の管理範囲長との差異が所定以内であると判断するまで、前記管理範囲長が最小の前記ノード装置に仮想ノードを追加し前記仮想ノードが追加された前記ノード装置のノード特定情報と前記仮想ノードに対して生成されたノードIDとの対応付けを前記キー検索用ノードテーブルに追加して更新する処理を繰り返す仮想ノード登録部と、前記キー検索用ノードテーブル内のノードIDと、指定されたキーに基づいて、前記キーに対応した値を管理している前記ノード装置のノード特定情報を取得するキーテーブル処理部と、を備えることを特徴とする負荷分散装置である。
この態様によれば、キーに対応した値を保持するノード装置を検索するためにノード装置の特定情報とノードIDとを対応づけたキー検索用ノードテーブルを用いるKey-Value型データ管理システムにおいて、ノード装置の参加や離脱が発生した際、負荷分散装置は、各ノード装置のキーの管理範囲長の差異が所定の範囲内になるまで、管理範囲長が最も狭いノード装置に対して仮想ノードのノードIDを割り当ててキーの管理範囲長を増加させる処理を繰り返し、ノード装置の特定情報と当該ノード装置に対して生成されたノードIDとからなるキー検索用ノードテーブルを生成する。
なお、ノード装置のキーの管理範囲は、そのノード装置のノード特定情報に対応してキー検索用ノードテーブルに登録されているノードIDに基づいて決まる。ノード装置に割り当てるノードIDは、そのノード装置のノード特定情報と、当該ノード装置に割り当て済みのノードID毎に固有の情報とを元に算出されたハッシュ値を用いることができる。
一例として、ノードIDに対応した管理範囲は、隣接するノードIDから自ノードIDまでである。但し、範囲の境界がどちらに属するかは適宜予め定める。
管理範囲長は、上記の管理範囲の長さであり、各ノード装置のキーの管理範囲長は、そのノード装置に割り当てられた各ノードIDに対応した管理範囲の長さの総計である。
各ノードのキーの管理範囲長の差異を所定の範囲内とすることは、各ノード装置の負荷を同等に近くするということである。
これにより、各ノード装置のキーの管理範囲長の不均衡を効率的に是正し、システム全体に割り当てる仮想ノードの数を抑えることができる。キーの管理範囲長の不均衡を是正することによって各ノード装置の負荷の偏りも是正され、従って、キー検索用ノードテーブルの増加を抑えながら、各ノード装置の負荷分散を行なうことが可能となる。
[2] 本発明の一態様は、上述する負荷分散装置であって、前記管理範囲長演算部は、前記ノード装置の管理範囲長を、前記ノード装置の性能を示す値に応じて重み付けし、前記仮想ノード登録部は、前記ノード装置の性能を示す値に応じて重み付けされた前記管理範囲長のうち最大の管理範囲長と最小の管理範囲長との差異が所定以内であるかを判断する、ことを特徴とする。
この態様によれば、負荷分散装置は、ノード性能の指標値によって各ノード装置におけるキーの管理範囲長を重み付けし、重み付けした管理範囲長が同等に近くなるまで、重み付けした管理範囲長が最も狭いノード装置に対して仮想ノードのノードIDを割り当てる。一例として、キーの管理範囲長の重み付けは、キーの管理範囲長に、CPUの性能を示す値の逆数を乗算したり、総ディスク容量の逆数を乗算したりすることにより行なう。言い換えれば、ノードの性能値に対するキーの管理範囲長の比の値を用いる。
従って、ノード装置の処理能力やメモリ容量などに応じた管理範囲長を各ノード装置に割り当てることができる。
[3] 本発明の一態様は、上述する負荷分散装置であって、前記管理範囲長演算部は、前記仮想ノード登録部により前記仮想ノードが追加された前記ノード装置のノード特定情報と前記仮想ノードに対して生成されたノードIDとの対応付けが前記キー検索用ノードテーブルに追加された場合、前記キー検索用ノードテーブルに追加された前記仮想ノードのノードIDと隣接するノードIDを特定してキーの管理範囲長を算出し、前記仮想ノードが追加された前記ノード装置の管理範囲長を、算出した前記管理範囲長を加算した値に更新するとともに、前記キー検索用ノードテーブルから前記仮想ノードのノードIDに隣接するノードIDに対応したノード特定情報を読み出し、読み出したノード特定情報により特定される前記ノード装置のキー管理範囲長を、算出した前記管理範囲長を減算した値に更新する、ことを特徴とする。
この態様によれば、負荷分散装置は、一旦算出した各ノード装置のキーの管理範囲長を記憶しておき、ノード装置に仮想ノードのノードIDが追加されてキー検索用ノードテーブルが更新されたときは、追加されたノードIDの仮想ノードについてキーの管理範囲長を算出する。そして、記憶していた管理範囲長のうち、仮想ノードが追加されたノード装置と、仮想ノードに隣接するノードに対応したノード装置とについて記憶していたキー管理範囲長のみを変更する。
これにより、各ノード装置のキーの管理範囲長を高速に算出することが可能となる。
[4] 本発明の一態様は、上述する負荷分散装置であって、前記ノード特定情報は、前記ノード装置のアドレスであることを特徴とする。
この態様によれば、キー検索用ノードテーブルに、ノード特定情報としてノードアドレスが設定される。
これにより、キーテーブル処理部は、キー検索用ノードテーブルからキーを管理するノード装置のアドレスを取得することができるため、読み出したアドレスを宛先に用いてキーに対応する値の問合せを行なうことが可能となる。
[5] 本発明の一態様は、負荷分散装置として用いられるコンピュータを、データ管理システムを構成するノード装置を特定するノード特定情報を含んだノードテーブルを記憶するとともに、前記ノード特定情報とノードIDとの対応付けを示すキー検索用ノードテーブルを記憶する記憶部、前記データ管理システムに参加したノード装置のノード特定情報を前記ノードテーブルに書き込み、前記データ管理システムから離脱したノード装置のノード特定情報を前記ノードテーブルから削除するノードテーブル管理部、前記キー検索用ノードテーブルに設定されているノードIDと、前記ノードIDに対応付けられた前記ノード特定情報とに基づいて、各ノード装置が管理対象とするキーの管理範囲長を算出する管理範囲長演算部、前記ノードテーブル内のノード特定情報と、前記ノード特定情報により特定されるノード装置に対して生成されたノードIDとの対応付けを設定したキー検索用ノードテーブルを前記記憶部に書き込み、生成した前記キー検索用ノードテーブルに基づいて前記管理範囲長演算部により算出された各ノード装置の管理範囲長のうち最大の管理範囲長と最小の管理範囲長との差異が所定以内であると判断するまで、前記管理範囲長が最小の前記ノード装置に仮想ノードを追加し前記仮想ノードが追加された前記ノード装置のノード特定情報と前記仮想ノードに対して生成されたノードIDとの対応付けを前記キー検索用ノードテーブルに追加して更新する処理を繰り返す仮想ノード登録部、前記キー検索用ノードテーブル内のノードIDと、指定されたキーに基づいて、前記キーに対応した値を管理している前記ノード装置のノード特定情報を取得するキーテーブル処理部、として機能させることを特徴とするプログラムである。
本発明によれば、複数のノード装置によりデータを分散して管理するKey-Value型データ管理システムにおいて、システムに参加しているノード装置を管理するために使用する記憶容量の増加を抑えながら、各ノード装置におけるデータの管理範囲長に偏りをなくすことができる。
本発明の第1の実施形態によるデータ管理システムの構成図である。 同実施形態による負荷分散装置の構成を示すブロック図である。 同実施形態によるノードテーブルのデータ構成例を示す図である。 同実施形態によるキー検索用ノードテーブルのデータ構成例を示す図である。 同実施形態によるキーテーブルのデータ構成例を示す図である。 同実施形態によるノードテーブル管理部のノードテーブル更新処理フローを示す図である。 同実施形態による仮想ノード登録部のキー検索用ノードテーブル更新処理フローを示す図である。 同実施形態による管理範囲長演算部の管理範囲長算出処理を説明するための図である。 同実施形態によるデータ管理システムの実験結果を示す図である。 第2の実施形態による管理範囲長演算部の管理範囲長算出処理を説明するための図である。 第3の実施形態によるノードテーブルのデータ構成例を示す図である。 同実施形態によるキー検索用ノードテーブルのデータ構成例を示す図である。 同実施形態による管理範囲長演算部の管理範囲長算出処理を説明するための図である。
以下、図面を参照しながら本発明の実施形態を詳細に説明する。
[1.第1の実施形態]
[1.1 全体構成]
図1は、本発明の第1の実施形態によるデータ管理システムの構成図である。本実施形態のデータ管理システムは、DHTを用いたKey-Value(キー(鍵)−値)型データ管理システムであり、例えば、分散型データベースシステムや、分散ファイルシステムなどである。同図に示すように、データ管理システムは、通信ネットワーク5を介して複数のノード装置1を接続することにより構成される。通信ネットワーク5は、例えば、ルータなどの通信装置やケーブルなどの通信線等の各種ネットワーク装置から構成されるIP(Internet Protocol、インターネットプロトコル)通信網である。ノード装置1は、負荷分散装置10とデータ記憶部30とを備える。データ記憶部30は、データ管理システムにおいて管理対象となるファイル等のデータを記憶する。
[1.2 負荷分散装置とデータ管理システムとの関係]
負荷分散装置10は、各ノード装置1内で動作する。ノード装置1は、例えば、ノードを実行するコンピュータ装置であり、負荷分散装置10は、ノード装置1がアプリケーションプログラムを実行することにより実行されるプロセスに相当する。各負荷分散装置10は、Key-Value型データ管理システムに参加しているノード装置1を管理するノードテーブルと、キー管理を行っているノード装置1の発見に用いるキー検索用ノードテーブルを保持している。Key-Value型データ管理システムへの新たなノード装置1の参加や、Key-Value型データ管理システムに参加していたノード装置1の離脱が発生した場合に、負荷分散装置10が動作してノードテーブル及びキー検索用ノードテーブルを修正する。全ての負荷分散装置10は同じ動作をするため、Key-Value型データ管理システム内の全ての負荷分散装置10のノードテーブルとキー検索用ノードテーブルは同一に保たれる。
本実施形態において、ノードテーブルには、Key-Value型データ管理システムに参加しているノード装置1のみがノードとして登録される。一方、キーの登録や検索に使用されるキー検索用ノードテーブルには、DHTにおける円状のオーバーレイネットワークを構成するノードが登録される。オーバーレイネットワークを構成するノードには、ノード装置1のように実体があるノードと、ノード装置1に対して仮想的に生成された仮想ノードとが含まれる。本実施形態では、キー検索用ノードテーブルに仮想ノードを登録することにより負荷分散を実現する。
なお、DHTを用いたKey-Value型データ管理システムの構成方法や、ノードの参加・離脱の通知方法は、既存のKey-Value型データ管理システムの技術を適用する。
[1.3 負荷分散装置の構成]
図2は、本実施形態による負荷分散装置10の構成を示すブロック図であり、本実施形態と関係する機能ブロックのみ抽出して示している。同図に示すように、負荷分散装置10は、ノードテーブル管理部11、仮想ノード登録部12、ノードID生成部13、管理範囲長演算部14、記憶部15、及び、キーテーブル処理部16を備えて構成される。
記憶部15は、ハードディスク装置や半導体メモリなどで実現され、ノードテーブル21、キー検索用ノードテーブル22、及び、キーテーブル23を記録する。ノードテーブル21は、データ管理システムを構成するノード装置1のノードIDとアドレスを対応付けたデータである。キー検索用ノードテーブル22は、オーバーレイネットワークに参加しているノードのノードIDとアドレスを対応付けたデータである。キーテーブル23は、「キー」と「値」の組みを示すデータである。
ノードテーブル管理部11は、データ管理システムに新たなノード装置1が参加した場合や、データ管理システムに参加していたノード装置1が離脱した場合に、記憶部15に記憶されているノードテーブル21を更新する。ノードID生成部13は、ノード装置1のアドレスと仮想ノードの数に基づいてノードIDを生成する。管理範囲長演算部14は、キー検索用ノードテーブル22に設定されているノードIDに基づいて各ノード装置1が管理するキーの範囲の広さである管理範囲長を算出する。
仮想ノード登録部12は、管理範囲長演算部14が算出した管理範囲長が最も狭いノード装置1に対して仮想ノードを生成し、記憶部15に記憶されているキー検索用ノードテーブル22を更新する処理を、各ノード装置1の管理範囲長の差異が所定以下になるか、仮想ノード数が上限に達するまで繰り返す。仮想ノード登録部12が備えるメモリ121は、各ノード装置1の管理範囲長の差異が所定以下であると判断するための条件である管理範囲しきい値Thと、仮想ノード数の上限を示す最大仮想ノード数Vmaxを記憶する。管理範囲しきい値Thは、最も狭い管理範囲長と最も広い管理範囲長の比についてのしきい値である。キーテーブル処理部16は、記憶部15に保存されているキーテーブル23を参照して、キーに対応した値を読み出す。
[1.4 データ構成]
図3は、本実施形態によるノードテーブル21のデータ構成例を示す図である。
同図に示すように、ノードテーブル21は、データ管理システムを構成するノード装置1のノードIDとノードアドレスと対応付けたデータのリストである。ノードテーブル21は、ノードIDの数値順にソートされている。ノードテーブル21のノードIDには、仮想ノードのノードIDは含まれない。本実施形態では、ノード装置1のIP(Internet Protocol)アドレスとポート番号の組み合わせをノードアドレスとして用いる。
図4は、本実施形態によるキー検索用ノードテーブル22のデータ構成例を示す図である。
同図に示すように、キー検索用ノードテーブル22は、オーバーレイネットワークを構成するノードのノードID、ノードアドレス、及び、仮想ノード数を対応付けたデータのリストである。キー検索用ノードテーブル22は、ノードIDの数値順にソートされている。キー検索用ノードテーブル22のノードIDには、ノード装置1のノードIDに加え、仮想ノードのノードIDも含まれる。DHTを用いたKey-Value型データ管理システムである本実施形態のデータ管理システムは、キー管理を行うノードの発見にこのキー検索用ノードテーブル22を用いる。すなわち、キー検索用ノードテーブル22がDHTにおける円状のオーバーレイネットワークを示している。ノードアドレスは、ノード装置1を特定するノード特定情報として用いることができる。
図5は、本実施形態によるキーテーブル23のデータ構成例を示す図である。
同図に示すように、キーテーブル23は、データ管理システムで管理するキーと値との組み合わせを対応付けたデータのリストである。本実施形態では、キーがデータを特定するデータIDであり、値がデータを記憶しているノード装置1のノードアドレスである場合を例に説明する。
[1.5 負荷分散装置の動作]
次に、負荷分散装置10の動作について説明する。
まず、DHTを用いたKey-Value型データ管理システムにおける参加及び離脱の通知手順の一例について説明する。ノード装置1がオーバーレイネットワークに参加する場合、当該ノード装置1内の負荷分散装置10は、既にオーバーレイネットワークに参加しているいずれかのノード装置1内の負荷分散装置10に対して参加を要求する。参加の要求を受信した負荷分散装置10は、ノードの参加をスライス・リーダー(Slice Leader)へ通知し、スライス・リーダーは他のスライス・リーダーへ通知を行い、さらに、スライス・リーダーから自領域内のユニット・リーダー(Unit Leader)への通知を行なう。このように、ノードの参加情報をオーバーレイネットワーク内の全ノードに通知する。なお、負荷分散装置10は、ノードテーブル21に登録されているノードIDに基づいてスライス・リーダー、ユニット・リーダーなどの通知先を決定する。
また、負荷分散装置10がノード装置1の離脱を検出した場合、参加の通知の場合と同様に、ノードの離脱をスライス・リーダーへ通知し、スライス・リーダーは他のスライス・リーダーへ通知を行い、さらに、スライス・リーダーから自領域内のユニット・リーダーへの通知を行なう。負荷分散装置10は、オーバーレイネットワークから離脱した他のノード装置1内の負荷分散装置10から離脱の通知を受けるか、定期的に他のノード装置1に送信する生存確認信号に対する応答を受信しないことによって離脱を検出する。なお、生存確認信号は、ノードテーブル21に登録されているノードアドレスを宛先として送信される。
なお、上述した参加・離脱の通知手順は、DHTを用いたオーバーレイネットワークの構成方法の一つであるOne Hoopの例であり、DHTを用いたKey-Value型データ管理システムの他の既存の技術により、全ノード装置1に参加や離脱を通知することができる。
[1.5.1 ノードテーブル管理部の動作]
図6は、本実施形態によるノードテーブル管理部11のノードテーブル更新処理フローを示す図である。
ノードテーブル管理部11は、他の負荷分散装置10からノードの参加の通知あるいは離脱の通知を受信する。参加の通知には、「参加」を示す通知種別、及び、参加したノード装置1のノードアドレスが含まれる。また、離脱の通知には、「離脱」を示す通知種別、及び、離脱したノード装置1のノードアドレスが含まれる。ノードテーブル管理部11は、参加の通知または離脱の通知に含まれるノードアドレスと、仮想ノード数「0」とをノードID生成部13に出力し、ノードIDの生成を指示する。ノードID生成部13はノードアドレスと仮想ノード数の組み合わせからノードIDを生成し、ノードテーブル管理部11に通知する(ステップS11)。
続いて、ノードテーブル管理部11は、通知種別が「参加」であると判断した場合(ステップS12:YES)、記憶部15に記憶されているノードテーブル21に、ステップS11において管理範囲長演算部14から受信したノードIDと、参加の通知に設定されているノードアドレスとを対応付けたデータを追加する(ステップS13)。
一方、ノードテーブル管理部11は、通知種別が「離脱」であると判断した場合(ステップS12:NO)、記憶部15に記憶されているノードテーブル21から、ステップS11において管理範囲長演算部14から受信したノードIDと、当該ノードIDに対応付けられたノードアドレスの組のデータを削除する(ステップS14)。
ステップS13またはステップS14の処理の後、ノードテーブル管理部11は、仮想ノード登録部12に実行指示を出力し、更新後のノードテーブル21に基づくキー検索用ノードテーブルの生成を指示する(ステップS15)。
なお、ノードテーブル管理部11は、ノードテーブル21に登録されているノードアドレスを宛先として定期的に他の負荷分散装置10に生存確認信号を送信し、応答がなかった場合、その宛先のノードアドレスが設定されたノードの離脱の通知を受信したものとして、上記処理を行なう。
また、ノードテーブル管理部11は、離脱の通知を受信した場合、ステップS11の処理を行なわず、ステップS13において、離脱の通知に設定されているノードアドレスと、当該ノードアドレスに対応付けられたノードIDの組のデータを削除してもよい。
以上の動作により、DHTを用いたKey-Value型データ管理システムに参加しているノードを記録したノードテーブル21が維持される。
[1.5.2 仮想ノード登録部の動作]
図7は、本実施形態による仮想ノード登録部12のキー検索用ノードテーブル更新処理フローを示す図である。このキー検索用ノードテーブル更新処理により、仮想ノード登録部12は、ノードテーブル21からキー検索用ノードテーブル22を生成する。仮想ノード登録部12のメモリ121には、図示しない入力手段などにより設定された管理範囲しきい値Thと、最大仮想ノード数Vmaxが予め記憶される。
仮想ノード登録部12は、図6のステップS15においてノードテーブル管理部11が出力したキー検索用ノードテーブル生成の実行指示を受信する。仮想ノード登録部12は、記憶部15に現在記憶されているキー検索用ノードテーブル22の内容を削除し、ノードテーブル21の現在の設定内容をキー検索用ノードテーブル22へコピーする(ステップS21)。このとき、仮想ノード登録部12は、キー検索用ノードテーブル22にコピーした各データのノードID及びノードアドレスの組に対応させて、仮想ノード数のフィールドに「0」を設定する。
続いて、仮想ノード登録部12は、生成済みの仮想ノード数のカウンタとして利用するパラメータNに「0」をセットする(ステップS22)。仮想ノード登録部12は、パラメータNがメモリ121に記憶されている最大仮想ノード数Vmaxより小さいか否かを判断する(ステップS23)。仮想ノード登録部12は、パラメータNが最大仮想ノード数Vmaxより小さいと判断した場合(ステップS23:NO)、DHTを用いたKey-Value型データ管理システムに参加しているノード装置1の管理範囲長のうち、最も大きい管理範囲長である最大管理範囲長Lmaxと、最も小さい管理範囲長である最小管理範囲長Lminを出力するよう管理範囲長演算部14に指示する(ステップS24)。管理範囲長演算部14は、キー検索用ノードテーブル22を参照し、最大管理範囲長Lmax、及び、最小管理範囲長Lminと、最小管理範囲長Lminのノード装置1(以下、「最小管理範囲長ノード装置」と記載する。)のノードアドレスと、最小管理範囲長ノード装置の仮想ノード数を返送する。
仮想ノード登録部12は、最大管理範囲長Lmax/最小管理範囲長Lminが管理範囲しきい値Thより大きいか否かを判断する(ステップS25)。仮想ノード登録部12は、最大管理範囲長Lmax/最小管理範囲長Lminが管理範囲しきい値Thより大きいと判断した場合(ステップS25:YES)、現時点で管理範囲長が最小である最小管理範囲長ノード装置に仮想ノードを1つ追加する(ステップS26)。具体的には、以下のように動作する。
仮想ノード登録部12は、ステップS24において受信した仮想ノード数に1を加算して、追加対象の仮想ノード数を算出する。仮想ノード登録部12は、最小管理範囲長ノード装置のノードアドレスと、追加対象の仮想ノード数とを管理範囲長演算部14に出力し、ノードIDの生成を指示する。管理範囲長演算部14はノードアドレスと仮想ノード数の組み合わせからノードIDを生成し、仮想ノード登録部12に通知する。仮想ノード登録部12は、管理範囲長演算部14から受信した仮想ノードのノードID、最小管理範囲長ノード装置のノードアドレス、及び、追加対象の仮想ノード数を対応付けたデータを、キー検索用ノードテーブル22に追加する。
仮想ノードの追加後、仮想ノード登録部12は、現在のパラメータNの値に1を加算し(ステップS27)、ステップS23からの処理を繰り返す。
そして、最終的に、ステップS23において、仮想ノード数の合計が最大仮想ノード数Vmaxに達し、パラメータNが最大仮想ノード数Vmax以上であると判断した場合(ステップS23:YES)、あるいは、ステップS25において、最大管理範囲長Lmax/最小管理範囲長Lminが管理範囲しきい値Th以下であると判断した場合(ステップS25:NO)、仮想ノード登録部12は、処理を終了する。
以上のように、本実施形態では、キーの管理範囲長が最小のノード装置1に対して仮想ノードを追加する処理を繰り返す。これにより、効率的に管理範囲長の不均衡を是正し、各ノード装置1のキーの管理範囲長が同程度になるように仮想ノード数を決定することができる。
なお、管理しきい値Thが1に近いほど、各ノード装置1において管理されるキーの数が均等に近くなるが、その反面、仮想ノード数が増え、結果としてキー検索用ノードテーブル22のサイズが増加してしまう。そのため、実験等の結果に基づいて、キー検索用ノードテーブル22のサイズが大きくなりすぎない範囲で管理しきい値Thを決定する。また、最大仮想ノード数Vmaxが大きいほど、キー検索用ノードテーブル22のサイズが大きくなる可能性がある。そのため、最大仮想ノード数Vmaxは、記憶部15として使用されるメモリの容量に基づいて決定される。
本実施形態では、ステップS25において、最大管理範囲長Lmax/最小管理範囲長Lminと管理範囲のしきい値Thとを比較し、処理が終了したかを判定しているが、これに限定されるものではない。例えば、最大管理範囲長Lmaxと所定のしきい値を比較してもよく、最小管理範囲長Lminと所定のしきい値を比較してもよい。あるいは、キー検索用ノードテーブル22に登録されている全てのノード装置1及び仮想ノードの管理範囲長の標準偏差や分散と所定のしきい値を比較してもよい。
[1.5.3 ノードID生成部の動作]
次に、本実施形態によるノードID生成部13のノードID生成処理を説明する。
ノードテーブル管理部11または仮想ノード登録部12からノードアドレス及び仮想ノード数を受信すると、ノードID生成部13は、ノードアドレスと仮想ノード数とを結合したデータにハッシュ関数を用いてノードIDを生成する。仮想ノード数は0からはじまる整数である。本実施形態では、ハッシュ関数としてSHA−1(Secure Hash Algorithm 1)を用いる。従って、ノードID生成部13は、ノードIDとして160ビットの値を生成する。例えば、ノードアドレスが「192.168.100.10:3939」であり、仮想ノード数が「3」である場合、ノードID生成部13は、ノードアドレスと仮想ノード数を結合したデータ「192.168.100.10:3939_3」を生成する。SHA-1のハッシュ関数をHash()とすると、ノードID生成部13は、Hash(“192.168.100.10:3939_3”)によりノードIDを算出する。ノードID生成部13は、ノードアドレス及び仮想ノード数の出力元であるノードテーブル管理部11または仮想ノード登録部12に、算出したノードIDを返送する。
[1.5.4 管理範囲長演算部の動作]
次に、本実施形態による管理範囲長演算部14の管理範囲長算出処理を説明する。管理範囲長演算部14は、管理範囲長算出処理において、オーバーレイネットワークに参加している各ノードのハッシュ空間上での管理範囲長を計算する。
図8は、管理範囲長演算部14の管理範囲長算出処理を説明するための図である。上述したように、本実施形態では160ビット長のノードIDを利用しているが、説明を簡単にするため、同図においては、ノードIDを8ビット長として説明する。ノードIDが8ビット長であるため、ノードIDは0以上かつ255以下の範囲の整数値となる。
図8(a)は、オーバーレイネットワークを示す図であり、図8(b)は、図8(a)に示すオーバーレイネットワークが形成されているときのキー検索用ノードテーブル22を示す。図8(a)及び図8(b)に示す例においては、3つのノード装置1がオーバーレイネットワークに参加している状態を示しており、これらの3つのノード装置1を大文字のA,B,Cを用いてそれぞれノードA、ノードB、ノードEとする。また、ノードA、ノードB、ノードEそれぞれの仮想ノードを、小文字のa、b、cを用いてノードa、ノードb、ノードeとする。
以下、ノードID=iのノードxをノードx[i]と記載する。
図8(c)は、各ノード装置1の管理範囲長を示す図である。各ノードのキーの管理範囲は、時計回りに反対方向の隣接ノードであるpredecessorとの距離である。例えば、ノードE[90]のpredecessorは、ノードb[70]である。従って、ノードE単独のキー管理範囲は「71〜90」であり、管理範囲長は「20」となる。また、ノードEには、ノードe[60]、ノードe[190]の2つの仮想ノードがある。ノードe[190]のpredecessorは、ノードa[160]であるため、キー管理範囲は「161〜190」であり、管理範囲長は「30」となる。また、ノードe[60]のpredecessorは、ノードa[10]であるため、キー管理範囲は「11〜60」であり、管理範囲長は「50」となる。よって、ノードE全体の管理範囲長は、20+30+50=100である。
同様にして、ノードA全体の管理範囲長は、ノードA[10]単独のキー管理範囲「241〜255、0〜10」の管理範囲長「26」と、ノードa[160]単独のキー管理範囲「141〜160」の管理範囲長「20」を合計した「46」となる。
また、ノードB全体の管理範囲長は、ノードB[140]単独のキー管理範囲「91〜140」の管理範囲長「50」と、ノードb[240]単独のキー管理範囲「191〜240」の管理範囲長「50」と、ノードb[70]単独のキー管理範囲「61〜70」の管理範囲長「10」を合計した「110」である。
このように、各ノード装置1の合計の管理範囲長は、当該ノード装置1のノード単独の管理範囲長と、当該ノード装置1について生成された各仮想ノード単独の管理範囲長の合計となる。結果として、管理範囲長演算部14は、最大管理範囲長LmaxとしてノードBの管理範囲長「110」を、最小管理範囲長LminとしてノードAの管理範囲長「46」を出力する。
上記の動作を行うため、管理範囲長演算部14は、キー検索用ノードテーブル22を参照し、全ノード装置1の管理範囲長を計算する。具体的には、以下のように動作する。
管理範囲長演算部14は、キー検索用ノードテーブル22に設定されているノードIDに順に注目していき、注目しているノードIDと、注目しているノードIDよりも小さい隣接するノードIDとの差から、注目しているノードID単独の管理範囲長を求める。
キー検索用ノードテーブル22に注目しているノードIDよりも小さい隣接するノードIDが設定されていない場合、その注目しているノードIDは、オーバーレイネットワークに参加している中で最も小さいノードIDである。従って、predecessorのノードIDは、キー検索用ノードテーブル22に登録されている中でも最も大きいノードIDである。管理範囲長演算部14は、注目しているノードID(例えば、図8(b)に示すノードID=10)に、ノードIDが取りうる最大の値(ノードIDが8ビット長である場合「255」)を加算した後、predecessorのノードID(図8(b)に示すノードID=240)を減算することによって管理範囲長を算出する。
管理範囲長演算部14は、キー検索用ノードテーブル22に登録されている各ノードIDについて管理範囲長を算出した後、キー検索用ノードテーブル22に同じノードアドレスが対応付けられているノードIDについて算出した管理範囲長を合計する。これによって、各ノード装置1の管理範囲長が算出される。管理範囲長演算部14は、算出した管理範囲長のうち最大である最大管理範囲長Lmax、最小である最小管理範囲長Lminを選択する。管理範囲長演算部14は、最小管理範囲長Lminに対応したノードアドレスと対応付けてキー検索用ノードテーブル22に設定されている仮想ノード数の中から、最も大きい仮想ノード数を読み出す。管理範囲長演算部14は、最大管理範囲長Lmax、最小管理範囲長Lmin、最小管理範囲長ノード装置のノードアドレス、読み出した仮想ノード数を仮想ノード登録部12に返送する。
[1.5.5 キーテーブル処理部の動作]
続いて、キーテーブル処理部の動作例について説明する。
いずれかのノード装置1がデータ記憶部30に新たなデータを記憶すると、キーテーブル処理部16は、この新たなデータのデータ名からSHA−1ハッシュ関数によりデータIDを生成する。キーテーブル処理部16は、データ記憶部30に保存されているキー検索用ノードテーブル22から、生成したデータIDに時計回りに近いノードIDを検索し、そのノードIDに対応したノードアドレスを取得する。キーテーブル処理部16は、取得したノードアドレスを宛先として、データIDと自ノード装置1のノードアドレスを設定したキー登録要求を送信する。キー登録要求を受信したノード装置1において、負荷分散装置10のキーテーブル処理部16は、キー登録要求内のデータIDとノードアドレスの組をデータ記憶部30に記憶しているキーテーブル23に追加する。
いずれかのノード装置1がデータにアクセスする場合、負荷分散装置10のキーテーブル処理部16は、そのデータのデータ名からIDを生成する。キーテーブル処理部16は、データ記憶部30に保存されているキー検索用ノードテーブル22から、生成したデータIDに時計回りに近いノードIDを検索し、そのノードIDに対応したノードアドレスを取得する。キーテーブル処理部16は、取得したノードアドレスを宛先として、データIDをキーとして設定した問合せを送信する。問合せを受信したノード装置1において、負荷分散装置10のキーテーブル処理部16は、データ記憶部30に記憶されているキーテーブル23から、問合せに設定されているキーに対応した値を読み出して返送する。この値は、データを記憶しているノード装置1のノードアドレスを示す。問合せ送信元のノード装置1は、受信した「値」により示されるノードアドレス宛先として、データを記憶しているノード装置1にアクセスし、アクセス先のノード装置1が備えるデータ記憶部30に記憶されている操作対象のデータの読み出し、書替え、削除などを行なう。
上記においては、キーがデータを特定するデータIDであり、値がデータを記憶しているノード装置1のノードアドレスである場合の例を説明したが、DHTを用いたKey-Value型データ管理システムの既存の技術を用い、他のキーとデータの組を分散して管理することもできる。
[1.6 性能]
図9は、本実施形態による負荷分散装置10を使った実験結果を示す。図9(a)は、データ管理システムに参加しているノード装置1の数と、全ノード装置1の管理範囲長の標準偏差との関連を示し、図9(b)は、データ管理システムに参加しているノード装置1の数と、キー検索用ノードテーブルのサイズとの関係を示す。
実験では、管理範囲しきい値Th=1.5、最大仮想ノード数Vmax=10000とし、ノード装置1の数を3〜1000の範囲とした。なお、比較として、全ノード装置それぞれに0、10、100個の固定数の仮想ノードを割り当てる方式を用いた場合における全ノード装置の管理範囲長の標準偏差と、キー検索用ノードテーブルのサイズを示している。
図9(a)に示す管理範囲長の標準偏差の結果から、本実施形態では、データ管理システムに参加している各ノード装置1の負荷分散を行なう場合に、100個の固定数の仮想ノードを割り当てる方式と同等の性能が得られることがわかる。一方、図9(b)に示すの結果から、本実施形態の負荷分散装置10を用いたときのキー検索用ノードテーブル22のサイズは、各ノード装置に10個の固定数の仮想ノードを割り当てる方式において用いられるキー検索用ノードテーブルのサイズと同程度であることがわかる。
これらの実験結果から、本実施形態によれば、各ノード装置に固定数100の仮想ノードを割り当てるの場合と同程度の性能を、10分の1のサイズのキー検索用ノードテーブルによりで実現できることがわかる。
[2. 第2の実施形態]
上述した第1の実施形態において、管理範囲長演算部14は、キー検索用ノードテーブル22に登録されている全てのノードの管理範囲長を求めた後、各ノード装置1が管理しているキーの管理範囲長を算出しているが、算出方法はこれに限定されるものではない。本実施形態では、各ノードが管理しているキーの管理範囲長を高速に算出する。
以下では、第1の実施形態との差分を説明する。
図10は、本実施形態による管理範囲長演算部14の処理を説明するための図である。
図10(a)は、図7のステップS26の処理によって、図8(a)に示すオーバーレイネットワークにノードAの仮想ノードであるノードa[230]が追加された場合の例を示している。また、図10(b)は、ノードa[230]の追加後の各ノード装置1の管理範囲長を示している。
図10(a)に示すノードa[230]の追加により、ノードAの管理範囲長には、追加されたノードa[230]とそのpredecessorのノードe[190]との距離である「40」が追加される。一方、追加されたノードa[230]のsuccessor(時計回り方向の隣接ノード)のノードb[240]の管理範囲長は「40」だけ短くなる。この例では、追加されたノードa[230]のsuccessorであるノードb[240]は、ノードBの仮想ノードであるので、ノードBの管理範囲長を「40」だけ短くする。
結果として、図10(b)に示すように、管理範囲長の演算は、ノードAの管理範囲長に「40」を加算し、ノードBの管理範囲長から「40」を減算するだけで求めることが可能である。
以上の動作を行うため、管理範囲長演算部14は、図7のステップS24において各ノードアドレスについて算出した管理範囲長を記憶部15に書き込む。そして、ステップS26において仮想ノードが追加され、次のループでステップS24を実行する際、仮想ノード登録部12からステップS26において追加された仮想ノードのノードIDを受信する。追加されたノードIDを追加ノードIDと記載する。
管理範囲長演算部14は、キー検索用ノードテーブル22から追加ノードIDよりも小さい隣接するノードIDとの差から、追加された仮想ノードの管理範囲長を求めるとともに、追加ノードIDに対応したノードアドレスを読み出す。管理範囲長演算部14は、読み出したノードアドレスに対応して記憶部15に記憶されている管理範囲長を、追加された仮想ノードの管理範囲長を加算した値に更新する。
さらに、管理範囲長演算部14は、キー検索用ノードテーブル22から追加ノードIDよりも大きい隣接するノードIDを特定し、特定したノードIDに対応したノードアドレスを読み出す。管理範囲長演算部14は、読み出したノードアドレスに対応して記憶部15に記憶されている管理範囲長を、追加された仮想ノードの管理範囲長を減算した値に更新する。
上記処理の後、管理範囲長演算部14は、仮想ノード追加後の各ノード装置1のアドレスに対応した管理範囲長を記憶部15から読み出す。
[3. 第3の実施形態]
第3の実施形態には、各ノード装置1のノード性能が異なる場合に適用する。つまり、DHTに参加する各ノード装置1の性能が同一ではない場合、それらのノード性能に応じて各負荷分散装置10が管理及び保管する(キー、値)のデータ量を制御する。以下、第1の実施形態及び第2の実施形態との差分を説明する。
[3.1 データ構成]
図11は、本実施形態のノードテーブル21のデータ構成例を示す図である。同図に示すノードテーブル21が、図3に示すノードテーブル21と異なる点は、ノードID及びノードアドレスに対応付けて、ノード性能値が設定される点である。ノード性能値は、ノードの性能を示す指標についての定量的な値であり、例えば、CPU(central processing unit)の性能を示す値や、ノードが保管できる総ディスク容量などがある。
図12は、本実施形態のキー検索用ノードテーブル22のデータ構成例を示す図である。同図に示すキー検索用ノードテーブル22が、図4に示すキー検索用ノードテーブル22と異なる点は、ノードID、ノードアドレス、及び、仮想ノード数に対応付けて、ノード性能値が設定される点である。
[3.2 負荷分散装置の動作]
次に、負荷分散装置10の動作について説明する。
[3.2.1 ノードテーブル管理部の動作]
図6のステップS11において、ノードテーブル管理部11が受信するノードの参加の通知には、通知種別「参加」、参加したノード装置1のノードアドレス、及び、参加したノード装置1の性能値が含まれる。ステップS13において、ノードテーブル管理部11は、記憶部15に記憶されているノードテーブル21に、ステップS11において管理範囲長演算部14から受信したノードIDと、参加の通知に含まれるノードアドレス及びノード性能値とを対応付けたデータを新たに追加する。また、ステップS14において、ノードテーブル管理部11は、記憶部15に記憶されているノードテーブル21から、ステップS11においてノードID生成部13から受信したノードIDと、当該ノードIDに対応付けられたノードアドレス及び性能値の組のデータを削除する。
[3.2.2 仮想ノード登録部の動作]
図7のステップS21において、仮想ノード登録部12が、ノードテーブル21の設定内容をキー検索用ノードテーブル22にコピーする際、ノードID、ノードアドレス及び性能値の組がそのままコピーされる。また、ステップS26において、仮想ノード登録部12は、仮想ノードのノードID、最小管理範囲長ノード装置のノードアドレス及び性能値に、追加対象の仮想ノード数を対応付けたデータを、キー検索用ノードテーブル22に追加する。
[3.2.3 管理範囲長演算部の動作]
本実施形態による管理範囲長演算部14は、上述した第1の実施形態、または、第2の実施形態のように算出した各ノード装置1の管理範囲長に、当該ノード装置1の性能値に応じて重み付けを行う。
管理範囲長演算部14は、第1の実施形態または第2の実施形態と同様に、各ノード装置1のノードアドレス毎に管理範囲長を算出する。管理範囲長演算部14は、各ノードアドレスに対応付けてノードテーブル21またはキー検索用ノードテーブル22に設定されている性能値を読み出すと、ノードアドレス毎に算出した管理範囲長を、そのノードアドレスについて読み出した性能値によって除算する。管理範囲長演算部14は、除算した結果の管理範囲長の中で最大の管理範囲長を最大管理範囲長Lmax、最小の管理範囲長を最小管理範囲長Lminとして選択する。管理範囲長演算部14は、最小管理範囲長Lminに対応したノードアドレスと対応付けてキー検索用ノードテーブル22に設定されている仮想ノード数の中から、最も大きい仮想ノード数を読み出す。管理範囲長演算部14は、最大管理範囲長Lmax、最小管理範囲長Lmin、最小管理範囲長ノード装置のノードアドレス、読み出した仮想ノード数をノードテーブル管理部11に返送する。
図13は、ノード性能を考慮した場合の管理範囲長演算を説明するための図である。オーバーレイネットワークは、図8(a)と同様に構成されており、ノードA、ノードB、ノードCについて第1の実施形態と同様の処理により算出された管理範囲長はそれぞれ「46」、「110」、「100」である。また、ノードA、ノードB、ノードCのノード性能値はそれぞれ「1」、「2」、「3」である。この場合、ノードAの管理範囲長は、ノードAの管理範囲長「46」を、ノードAのノード性能値「1」によって除算した値「46」となる。また、ノードBの管理範囲長は、ノードBの管理範囲長「110」をノードBのノード性能値「2」によって除算した値「55」となる。また、ノードEの管理範囲長は、ノードEの管理範囲長「100」をノードEのノード性能値「3」によって除算した値「33」となる。従って、最大管理範囲長Lmaxは、ノードBの管理範囲長「55」となり、最小管理範囲長Lminは、ノードEの最小管理範囲長ノード装置の管理範囲長となる。
この結果、性能が高いノードEの仮想ノードを増加させることになる。
[4. 本発明の実施形態の効果]
以上説明したように、本発明の実施形態によれば、DHTを用いたKey-Value型データ管理システムを構成するノード装置に実装される負荷分散装置は、システムを構成しているノード装置の参加や離脱が発生した際、各ノード装置の管理範囲長が同等に近くなるまで、管理範囲長が最も狭いノード装置へ仮想ノードの割り当てを行う処理を繰り返し、ノード装置のアドレスと当該ノード装置に対して生成された仮想ノードのノードIDとからなるキー検索用ノードテーブルを生成する。よって、従来技術と比較して各ノード装置のキーの管理範囲長の不均衡を効率的に是正し、仮想ノードの数を抑えることが可能となるため、キー検索用ノードテーブルの増加が少ない。
また、各ノード装置を均等に負荷分散したり、各ノード装置のノード性能に応じて負荷分散したりすることが可能となる。
[5. その他]
なお、上述した実施形態では、各負荷分散装置10においてノードテーブル21及びキー検索用ノードテーブル22を生成しているが、一部の負荷分散装置10においてノードテーブル21及びキー検索用ノードテーブル22を生成し、他の負荷分散装置10に配信してもよい。
上述した負荷分散装置10を実装するノード装置1は、内部にコンピュータシステムを有している。そして、負荷分散装置10の動作の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータシステムが読み出して実行することによって、上記処理が行われる。ここでいうコンピュータシステムとは、CPU及び各種メモリやOS、周辺機器等のハードウェアを含むものである。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶部のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
1…ノード装置
10…負荷分散装置
11…ノードテーブル管理部
12…仮想ノード登録部
121…メモリ
13…ノードID生成部
14…管理範囲長演算部
15…記憶部
16…キーテーブル処理部
21…ノードテーブル
22…キー検索用ノードテーブル
23…キーテーブル
30…記憶部
5…通信ネットワーク

Claims (5)

  1. データ管理システムを構成するノード装置を特定するノード特定情報を含んだノードテーブルを記憶するとともに、前記ノード特定情報とノードIDとの対応付けを示すキー検索用ノードテーブルを記憶する記憶部と、
    前記データ管理システムに参加したノード装置のノード特定情報を前記ノードテーブルに書き込み、前記データ管理システムから離脱したノード装置のノード特定情報を前記ノードテーブルから削除するノードテーブル管理部と、
    前記キー検索用ノードテーブルに設定されているノードIDと、前記ノードIDに対応付けられた前記ノード特定情報とに基づいて、各ノード装置が管理対象とするキーの管理範囲長を算出する管理範囲長演算部と、
    前記ノードテーブル内のノード特定情報と、前記ノード特定情報により特定されるノード装置に対して生成されたノードIDとの対応付けを設定したキー検索用ノードテーブルを前記記憶部に書き込み、生成した前記キー検索用ノードテーブルに基づいて前記管理範囲長演算部により算出された各ノード装置の管理範囲長のうち最大の管理範囲長と最小の管理範囲長との差異が所定以内であると判断するまで、前記管理範囲長が最小の前記ノード装置に仮想ノードを追加し前記仮想ノードが追加された前記ノード装置のノード特定情報と前記仮想ノードに対して生成されたノードIDとの対応付けを前記キー検索用ノードテーブルに追加して更新する処理を繰り返す仮想ノード登録部と、
    前記キー検索用ノードテーブル内のノードIDと、指定されたキーに基づいて、前記キーに対応した値を管理している前記ノード装置のノード特定情報を取得するキーテーブル処理部と、
    を備えることを特徴とする負荷分散装置。
  2. 前記管理範囲長演算部は、前記ノード装置の管理範囲長を、前記ノード装置の性能を示す値に応じて重み付けし、
    前記仮想ノード登録部は、前記ノード装置の性能を示す値に応じて重み付けされた前記管理範囲長のうち最大の管理範囲長と最小の管理範囲長との差異が所定以内であるかを判断する、
    ことを特徴とする請求項1に記載の負荷分散装置。
  3. 前記管理範囲長演算部は、前記仮想ノード登録部により前記仮想ノードが追加された前記ノード装置のノード特定情報と前記仮想ノードに対して生成されたノードIDとの対応付けが前記キー検索用ノードテーブルに追加された場合、前記キー検索用ノードテーブルに追加された前記仮想ノードのノードIDと隣接するノードIDを特定してキーの管理範囲長を算出し、前記仮想ノードが追加された前記ノード装置の管理範囲長を、算出した前記管理範囲長を加算した値に更新するとともに、前記キー検索用ノードテーブルから前記仮想ノードのノードIDに隣接するノードIDに対応したノード特定情報を読み出し、読み出したノード特定情報により特定される前記ノード装置のキー管理範囲長を、算出した前記管理範囲長を減算した値に更新する、
    ことを特徴とする請求項1または請求項2に記載の負荷分散装置。
  4. 前記ノード特定情報は、前記ノード装置のアドレスであることを特徴とする請求項1から請求項3のいずれかの項に記載の負荷分散装置。
  5. 負荷分散装置として用いられるコンピュータを、
    データ管理システムを構成するノード装置を特定するノード特定情報を含んだノードテーブルを記憶するとともに、前記ノード特定情報とノードIDとの対応付けを示すキー検索用ノードテーブルを記憶する記憶部、
    前記データ管理システムに参加したノード装置のノード特定情報を前記ノードテーブルに書き込み、前記データ管理システムから離脱したノード装置のノード特定情報を前記ノードテーブルから削除するノードテーブル管理部、
    前記キー検索用ノードテーブルに設定されているノードIDと、前記ノードIDに対応付けられた前記ノード特定情報とに基づいて、各ノード装置が管理対象とするキーの管理範囲長を算出する管理範囲長演算部、
    前記ノードテーブル内のノード特定情報と、前記ノード特定情報により特定されるノード装置に対して生成されたノードIDとの対応付けを設定したキー検索用ノードテーブルを前記記憶部に書き込み、生成した前記キー検索用ノードテーブルに基づいて前記管理範囲長演算部により算出された各ノード装置の管理範囲長のうち最大の管理範囲長と最小の管理範囲長との差異が所定以内であると判断するまで、前記管理範囲長が最小の前記ノード装置に仮想ノードを追加し前記仮想ノードが追加された前記ノード装置のノード特定情報と前記仮想ノードに対して生成されたノードIDとの対応付けを前記キー検索用ノードテーブルに追加して更新する処理を繰り返す仮想ノード登録部、
    前記キー検索用ノードテーブル内のノードIDと、指定されたキーに基づいて、前記キーに対応した値を管理している前記ノード装置のノード特定情報を取得するキーテーブル処理部、
    として機能させることを特徴とするプログラム。
JP2010272830A 2010-12-07 2010-12-07 負荷分散装置及びプログラム Active JP5600573B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010272830A JP5600573B2 (ja) 2010-12-07 2010-12-07 負荷分散装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010272830A JP5600573B2 (ja) 2010-12-07 2010-12-07 負荷分散装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2012123544A JP2012123544A (ja) 2012-06-28
JP5600573B2 true JP5600573B2 (ja) 2014-10-01

Family

ID=46504933

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010272830A Active JP5600573B2 (ja) 2010-12-07 2010-12-07 負荷分散装置及びプログラム

Country Status (1)

Country Link
JP (1) JP5600573B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101269428B1 (ko) 2012-07-30 2013-05-30 한국과학기술정보연구원 데이터 분배 시스템 및 방법
WO2014030235A1 (ja) * 2012-08-23 2014-02-27 ディジタル・ワークス株式会社 分散型データベースシステム
JP6059558B2 (ja) * 2013-02-26 2017-01-11 日本電信電話株式会社 負荷分散判定システム
JP6288596B2 (ja) * 2014-11-05 2018-03-07 華為技術有限公司Huawei Technologies Co.,Ltd. データ処理方法および装置
JP6447147B2 (ja) * 2015-01-09 2019-01-09 日本電気株式会社 振り分け装置、データ処理システム、振り分け方法、および、プログラム
JP6325995B2 (ja) * 2015-02-20 2018-05-16 日本電信電話株式会社 分散システム、負荷分散方法及びプログラム
JP6241449B2 (ja) 2015-05-21 2017-12-06 横河電機株式会社 データ管理システム及びデータ管理方法
KR102266324B1 (ko) * 2020-02-28 2021-06-17 숭실대학교산학협력단 머신 러닝 실행 관리 플랫폼에서의 워커 노드 관리 방법 및 그를 위한 플랫폼 시스템
JP6798737B1 (ja) * 2020-03-12 2020-12-09 SingulaNet株式会社 個人情報管理システム及び個人情報管理方法
CN111966502A (zh) * 2020-09-21 2020-11-20 北京百度网讯科技有限公司 用于调整实例数的方法、装置、电子设备及可读存储介质
CN114840498B (zh) * 2022-07-05 2022-09-13 北京优合融宜科技有限公司 基于Java技术实现内存键值数据管理的方法及其装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4068473B2 (ja) * 2003-02-19 2008-03-26 株式会社東芝 ストレージ装置、分担範囲決定方法及びプログラム
JP2009230686A (ja) * 2008-03-25 2009-10-08 Nippon Hoso Kyokai <Nhk> コンテンツ管理サーバ及びコンテンツ管理プログラム

Also Published As

Publication number Publication date
JP2012123544A (ja) 2012-06-28

Similar Documents

Publication Publication Date Title
JP5600573B2 (ja) 負荷分散装置及びプログラム
JP5551270B2 (ja) ピアツーピアネットワークを分解して、分解されたピアツーピアネットワークを使用するための方法および装置
Loukopoulos et al. Static and adaptive distributed data replication using genetic algorithms
US7596618B2 (en) Splitting a workload of a node
US11818209B2 (en) State management and object storage in a distributed cloud computing network
Tavakoli-Someh et al. Multi-objective virtual network function placement using NSGA-II meta-heuristic approach
US20080270421A1 (en) Information distribution system, information processing device and memory medium
JP2009295127A (ja) アクセス方法、アクセス装置及び分散データ管理システム
JP5544523B2 (ja) 分散処理システム、分散処理方法、負荷分散装置、負荷分散方法、及び、負荷分散プログラム
US8868756B1 (en) Sticky routing
Hauswirth et al. An overlay network for resource discovery in grids
US20120179778A1 (en) Applying networking protocols to image file management
US11108854B2 (en) Peer-to-peer network for internet of things resource allocation operation
US11570247B2 (en) Resilient distributed storage system
US11507313B2 (en) Datafall: a policy-driven algorithm for decentralized placement and reorganization of replicated data
KR102503958B1 (ko) 분산 네트워크 환경에서의 쿼리 배치 장치 및 그 방법
JP4923115B2 (ja) 自己組織型分散オーバーレイ・ネットワークにおいてオブジェクトへの参照を分散させる方法、コンピュータプログラム、及びノード、並びに自己組織型分散オーバーレイ・ネットワーク
JP2007156700A (ja) 情報検索方法、情報登録方法およびネットワークサービス情報検索システム
CN108965387B (zh) 一种提高p2p数据存储抗毁性的均衡方法及系统
JP6112110B2 (ja) 分散システム、負荷分散方法、ノード装置、およびプログラム
Berenbrink et al. Distributing storage in cloud environments
WO2013027784A1 (ja) データ処理装置、データ分散処理システム、データ処理方法およびプログラム記憶媒体
Brocco The grid, the load and the gradient: A bio-inspired approach to load balancing
CN117440003A (zh) 一种无中心的分布式存储方法及系统
Raj et al. High-performance peer-to-peer systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140402

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: 20140722

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140818

R150 Certificate of patent or registration of utility model

Ref document number: 5600573

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250