JP2012048424A - 識別子割当て方法及びプログラム - Google Patents

識別子割当て方法及びプログラム Download PDF

Info

Publication number
JP2012048424A
JP2012048424A JP2010188877A JP2010188877A JP2012048424A JP 2012048424 A JP2012048424 A JP 2012048424A JP 2010188877 A JP2010188877 A JP 2010188877A JP 2010188877 A JP2010188877 A JP 2010188877A JP 2012048424 A JP2012048424 A JP 2012048424A
Authority
JP
Japan
Prior art keywords
identifier
node
identifiers
node device
distributed system
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.)
Granted
Application number
JP2010188877A
Other languages
English (en)
Other versions
JP5514041B2 (ja
Inventor
Michio Irie
道生 入江
Gosei Nishimura
豪生 西村
Masashi Kaneko
雅志 金子
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 JP2010188877A priority Critical patent/JP5514041B2/ja
Publication of JP2012048424A publication Critical patent/JP2012048424A/ja
Application granted granted Critical
Publication of JP5514041B2 publication Critical patent/JP5514041B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

【課題】分散システムのノード数が変動しても個々のノードの負荷を均一化することを可能にする識別子割当て方法及びプログラムを提供すること。
【解決手段】本発明の一態様は、複数のノード装置が協調して動作する分散システムにおいて、前記ノード装置に識別子を割り当てる方法であって、前記分散システムのノード装置に対する識別子割当てイベントを検出するステップと、前記識別子割当てイベントを検出すると、前記分散システムにおける割当て済みの識別子を格納した識別子一覧表にアクセスするステップと、前記識別子一覧表を参照して、前記識別子一覧表に格納されている隣り合う識別子の間の領域が最大となる隣り合う識別子を決定するステップと、前記決定された隣り合う識別子の間の領域内の何れかの識別子を前記ノード装置に割り当てるステップとを有する方法に関する。
【選択図】図3

Description

本発明は、複数のノードが協調して動作する分散システムに関し、より詳細には、分散システムにおいてノード間の負荷の分散を可能にするノードに対する識別子割当て方法及びプログラムに関する。
一般に、複数のノードが協調して動作する分散システムでは、分散システム内の個々のノードを認識し識別するための識別子が割り当てられる。一部の分散システムでは、識別子は、単に個々のノードの識別を可能にしさえすればよいという役割しか有していない。その場合、識別子の割当ては、ノード間で同じ値が使われることがないよう、一意な値を割当てるものであればよい。一方で、コンシステント・ハッシング(非特許文献1)のように、識別子の役割が、識別子の値によって個々のノードが担当する処理負荷量等が決定されるなど、個々のノードの識別以上の意味を持つような分散システムも存在する。
このような分散システムにおいて、コンシステント・ハッシング(Consistent Hashing)などに基づくデータ管理方法が利用されている。コンシステント・ハッシングによると、各ノードを識別するための識別子と、これらのノードにより管理される各データを識別するための識別子とが割り当てられる。あるノードが管理するデータの識別子の範囲は、典型的には、当該ノードの識別子と、当該ノードより小さな値の識別子を有するノードのうち最も大きな値の識別子を有するノードの識別子との間で定められる。そして、これらのノードやデータの識別子をハッシュ関数などを用いて返される無作為な値により割当てることによって、個々のノードが担当するデータの量は確率的に均等になり、このような分散データ管理プログラムによりノード間の負荷を均等にすることが可能となる。
図1は、従来技術による無作為な識別子割当て方法による単一の識別子の割当ての一例を示す。図1では、識別子の値の小さいものから、円形にノードが並べて示されている。ここで円形に並べているのは、コンシステント・ハッシング等では識別子の最大値の次に最小値が来るためである。この円のことを、コンシステント・ハッシングの用語に倣いID空間と呼称する。ID空間上に数字とともに配置されている丸や四角等の記号はノードの識別子を表し、数字はそのノードが何番目に分散システムに追加されたものかを表している。なお、ID空間上では時計周りに行くほど識別子の値が大きくなるものとする。ここで、ノードの担当する領域とは、そのノードの識別子から反時計周りに別のノードの識別子までの円弧に相当する。図1に示される例では、ノード1の担当する領域とは、ノード1とノード2との間の円弧のことである。この領域の大小に比例して、ノードの担当するデータや処理の負荷量が決まる。図1は、コンシステント・ハッシングにおける最も基本的なノードの識別子の割り当て方法の具体例である。ここではノードは5つまで追加されており、それぞれに無作為な値の識別子が与えられてID空間上に存在している。識別子の値が無作為に決められているため、ノード間の領域の大きさにもばらつきが見られる。
このように、このコンシステント・ハッシングにおいては、ノードとデータの識別子の割り当ては、ハッシュ関数によって行われる。ハッシュ関数は入力に対して、無作為な出力を返す関数である。ある入力に対しては常に同じ出力を返すことから、完全にランダムな値を返す関数ではなく、元々の入力の持っていた意味等を無視した出力を返すという意味で、無作為な出力を行う関数である。このハッシュ関数に、ノードやデータ毎に決まった一意な値、例えばノードの名前やアドレス、データの名前等を入力することで得られた値を、識別子として利用する。
このような識別子の割り当て方法を用いる場合、個々のノードの担当するデータの識別子の範囲は、高い確率で平均値よりも大きくなる。これはランダウの漸近記法によって記すならば、各ノードの担当する負荷の量が、平均負荷のΘ(logN)倍になると記述することができる(Nはノードの総数)。これは、ノード数が多いほど平均よりも多くの負荷を担当しなければならないノードが存在することを意味する。コンシステント・ハッシングではこの問題の緩和のために、1つのノードに対し複数の識別子を割り当てることによって、確率的にこの担当する負荷を均一化することを行っている。
図2は、従来技術による無作為な識別子割当て方法による複数の識別子の割当ての一例を示す。図2では、ノード1つにつき複数の識別子が割り当てられている。コンシステント・ハッシングでは、負荷の分散のためにこの方法を用いることが言及されている。図2では、ノード1つにつき3つの識別子を割り当てる場合に、3つのノードが追加されている状態を表している。各ノードは3つの識別子のそれぞれの担当する3つの領域を束ねただけの領域を担当する形となる。大数の法則により、1つのノードに割り当てる識別子の数を増やすほど、ノード単位での領域は平均化される。
D. Karger, E. Lehman, T. Leighton, M. Levine, D. Lewin, and R. Panigrahy, "Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web," in Proceedings of the 29th ACM Symposium on Theory of Computing (STOC'97), pp.654-663, May 1997.
上述したような従来技術による1つのノードに対し複数の識別子を割り当てるという方法は、一定の効果を持つものの、より均一性の高い負荷分散を行いたいような分散システムにおいては、更なる改善が求められる。
より効果的な識別子の割当て方法を検討する際に、以下のような事項を考慮する必要がある。1つには、ノードの識別子を割り当てた後、これを変更してはならないということである。これは、ノードの識別子を変更すると幾つかのノードの担当する量が変化し、ノード間でのデータの移動というノード間の通信コストが大きい処理が発生するためである。このコストは場合によってはそもそものデータ管理の処理自体を阻害しうるものであり、負荷の均一化以前に回避しなければならない。
もう1つは、分散システムにおいては、分散システムを構成するノードの数が動的に変化しうるという点である。分散システム全体で処理すべきデータの量が増加しているような場合には、ノードを追加しノード数を増やす。処理すべきデータの量が減ったり、あるいは何らかの故障によってノードがノードとして処理を継続することができなくなった場合には、当該ノードを削除して全体のノード数を減らす。ここで、ノード数が減る場合、削除されたノードが担当していた範囲は、担当範囲の決定方法(あるノードが管理するデータの識別子の範囲を、ノード自身の識別子と、当該ノードより小さな値の識別子を持つノードの中で最も大きい値の識別子を持つノードの識別子との間と定める)に従って、削除されたノードよりも大きい識別子を持つ直近のノードによって引き継がれることになる。そのため、仮に各ノードによって担当する量が完全に均一であった場合でも、いずれかのノードの削除が行われると、そのノードの担当していた量が隣のノードに引き継がれ、引き継いだノードは担当量がそれまでの2倍になってしまうことになる。
本発明の課題は、上記問題点に鑑み、分散システムのノード数が変動しても個々のノードの負荷を均一化することを可能にする識別子割当て方法及びプログラムを提供することである。
上記課題を解決するため、本発明の一態様は、複数のノード装置が協調して動作する分散システムにおいて、前記ノード装置に識別子を割り当てる方法であって、前記分散システムのノード装置に対する識別子割当てイベントを検出するステップと、前記識別子割当てイベントを検出すると、前記分散システムにおける割当て済みの識別子を格納した識別子一覧表にアクセスするステップと、前記識別子一覧表を参照して、前記識別子一覧表に格納されている隣り合う識別子の間の領域が最大となる隣り合う識別子を決定するステップと、前記決定された隣り合う識別子の間の領域内の何れかの識別子を前記ノード装置に割り当てるステップとを有する方法に関する。
本発明によると、分散システムの識別子の間隔を均一化することにより、各ノードの担当する処理量やデータ量を均一化し、ノード間の負担量を均等にすることが可能になる。また、分散システムにおけるノードの追加・削除などの状況に関わらず、ノード間の負担を公平化することができ、システム全体の利用効率を向上させることが可能になる。
図1は、従来技術による識別子割当て方法による単一の識別子の割当ての一例を示す。 図2は、従来技術による識別子割当て方法による複数の識別子の割当ての一例を示す。 図3は、本発明の一実施例による識別子割当て装置の構成を示す。 図4は、本発明の一実施例による識別子割当て装置を備えた分散システムの構成を示す。 図5は、本発明の一実施例による識別子割当て装置を備えた分散システムの他の構成を示す。 図6は、本発明の一実施例による識別子割当て方法による単一の識別子の割当ての一例を示す。 図7は、本発明の一実施例による識別子割当て方法による複数の識別子の割当ての一例を示す。 図8は、本発明の一実施例による識別子割当て方法によるノードを削除した場合の単一の識別子の割当てにおける担当領域変更の一例を示す。 図9は、本発明の一実施例による識別子割当て方法によるノードを削除した場合の複数の識別子の割当てにおける担当領域変更の一例を示す。 図10は、本発明の一実施例による識別子割当て方法の処理を示すフロー図である。
以下、図面に基づいて本発明の実施の形態を説明する。
まず、本発明の原理を説明する。本発明では、ノードへの識別子の割り当てに際して、各ノードに1つの識別子ではなく複数の識別子を割り当てることが可能である。各識別子はそれぞれに担当する範囲を持ち、それらを1つのノードがまとめて管理する形になる。個々の識別子の担当する範囲は、従来技術に関して述べたようにΘ(logN)倍になる確率が高いが、複数の識別子で担当される範囲を総合することで、大数の法則により均一性が向上する。
また、ノードが削除される場合、個々の識別子の担当範囲は、各識別子よりも値が大きい直近の識別子によって引き継がれる。これらの引き継ぎ先の識別子を持つノードは1つのノードでなく、いくつかのノードである可能性が高い。これにより、ノードの削除時の負荷が隣のノードに引き継がれ、負荷の均一性が崩れるという従来技術による問題を軽減することができる。
また、個々の識別子の割り当てに際して、従来技術のようにハッシュ関数を用いて無作為な値を割り当てるのではなく、偏りが生じている部分を平均化するような値を作為的に割り当てる。すなわち、識別子を割り当てる時点での識別子間の間隔の大きい順に、ノードに割り当てる領域を識別子の数だけ選択し、その領域の中のある値を識別子として割り当てることで、ノードの担当範囲の決定方法に従って、それまで間隔の大きかった領域を2つに分割するものである。
これは、従来技術のように確率的に識別子間の間隔の平均化を行うのではなく、決定的に識別子間の間隔の均一化を行うことを意味する。これにより、従来技術では平均よりも間隔の大きい領域がある場合も、次に追加されたノードがこの領域を分割するような識別子を持つかどうかはランダムであったものが、この決定的な方法では確実に大きな領域を分割するような識別子を持つことになる。
ここで、単純にノード追加時の識別子の間隔の均一性だけを考えるならば、1つのノードに複数の識別子を割り当てる必要はなく、上記の決定的な方法によってノードに1つだけ識別子を割り当てればよい。一方で、識別子が1つしか割り当てられない場合、ノードが削除された場合に生じた不均一性は、次にノードが追加されるまで均一化されることはない。本発明では、複数の識別子の割り当てと、決定的な識別子の割り当てを併用することで、従来技術による問題点であるノード数の変動における均一性の欠如を生じさせることなく、個々のノードの負荷の均一化を実現することができる。
次に、本発明の一実施例による識別子割当て装置を説明する。図3は、本発明の一実施例による識別子割当て装置の構成を示す。識別子割当て装置100は、典型的には、補助記憶装置、メモリ装置、CPU、通信装置などの各種ハードウェアリソースの1以上から構成される。補助記憶装置は、ハードディスクやフラッシュメモリなどから構成され、後述される各種処理及び機能を実現するプログラムやデータを格納する。メモリ装置は、RAM(Random Access Memory)などから構成され、プログラムの起動指示があった場合に、補助記憶装置からプログラムを読み出して格納する。CPUは、情報を処理するプロセッサとして機能し、メモリ装置に格納されたプログラムに従って後述される各種機能を実現する。通信装置は、ネットワークを介し他の装置と接続するための各種通信回路から構成される。通信装置は、典型的には、各種ネットワークと接続するための通信インタフェースなどを有する。なお、識別子割当て装置100は、上述したハードウェア構成に限定されるものでなく、ネットワークを介し各ノードと双方向通信するための機能を有する他の何れか適切なハードウェア構成を有してもよい。
なお、識別子割当て装置100は、図4に示されるように、サーバ・クライアントタイプの分散システムのサーバとして配置されてもよい。すなわち、識別子割当て装置100は、分散システムの各ノードと接続することで、ノードから識別子割当て要求を受け、これに応答して識別子を割当てるサーバとして機能する。
あるいは、識別子割当て装置100は、図5に示されるように、分散システムの各ノード内に配置されてもよい。すなわち、識別子割当て装置100は、分散システムのノード上に、独立した装置又はプログラムもしくは分散システムのプログラムの一部として組み込まれてもよい。
なお、本発明の識別子割当て装置100は、独立した物理的装置である必要はなく、プロセッサとメモリとを備えた汎用コンピュータに後述される識別子割当て機能及び方法を実行させるためのコンピュータプログラムとして実現されてもよい。この場合、そのプログラムの動作する位置は限定されず、分散システムから識別子割当て要求が受けられ、分散システムのノードの識別子の一覧表を保持し、もしくは参照可能であれば、どのような接続構成であっても動作可能である。
なお、本明細書で記述するノードとは、分散システムの処理の構成要素のことであり、具体的には分散システムを構成する各計算機がノードとして実現される。一方で、複数の仮想マシンを用いたり、分散システムのプログラムを複数起動することで、1つの計算機上で複数のノードが存在する形を実現することも可能である。
図3に示されるように、識別子割当て装置100は、識別子一覧表格納部101と、識別子決定部110とからなる。
識別子一覧表格納部101は、分散システム内のノードに対してすでに割当てられている識別子を記述した識別子一覧表を格納する。上述したように、本発明による識別子は、個々のノードを特定するだけでなく、識別子の値によって個々のノードが担当する処理負荷の量等が決定されるなど、個々のノードの識別以上の意味を有している。識別子一覧表は、典型的には、分散システム内の既存のノードに割当て済みの識別子を、ノード名やノードが分散システムに接続された順番などに関連付けて格納する。これにより、ノード削除時に、削除対象のノードに割り当てられている識別子を迅速に特定することができる。
識別子決定部110は、新たなノードの追加など識別子割当てイベントに応答して、識別子一覧表を参照して、後述される処理により割り当てるべき識別子を決定する。さらに、識別子を決定した後、識別子決定部110は、当該識別子を識別子一覧表格納部101に通知し、識別子一覧表を更新させる。
識別子決定部110は、決定的識別子決定部111と、複数識別子割当て部112とを有する。決定的識別子決定部111は、まず識別子一覧表を参照することで、分散システムの全ノードの識別子を取得し、それらを識別子の大きさの順に並べ、識別子間の距離を計算する。この識別子間の距離は、例えば、図1及び2に示されたID空間上の距離であり、隣り合う識別子間の距離は、当該識別子間の円弧の長さ、当該識別子と円の中心とにより画成される扇型領域の面積などとして定義されてもよい。なお、本明細書における「隣り合う」、「値の間隔が大きい」、「領域が大きい」などの表現は、このような識別子間の距離の定義に基いた表現である。一般に、距離の定義にはユークリッドノルムや排他論理和等が用いられる。本明細書では特に断りなくユークリッドノルムを距離の定義として用いるが、本発明はこれに限定されるものでなく、排他論理和やあるいはその他の距離の定義を用いてもよい。
決定的識別子決定部111は、計算した距離の情報をもとに、識別子間の間隔の大きい順に、分散システムから要求された識別子の個数だけ領域(上述したID空間では、識別子間の円弧)を選択する。選択した個々の領域中に含まれる値をそれぞれ識別子として設定し、分散システムにこの複数の識別子を通知する。このような識別子決定方法によると、領域内の何れかの値を識別子に取ることで、この識別子を割り当てられたノードが、それまでに存在し不均一性の原因となっていた領域を大きい順に分割することになる。
なお、識別子の割り当ての際に識別子の間隔が大きい順に領域を選択するものとしたが、この間隔の大きさが同じものが複数あった場合に、そのいずれかを選択するかを決定する選択方法については、本明細書においては特に限定しない。ここでは、一例として領域内の識別子の値が小さい領域、すなわち、図1及び2に示されるようなID空間では、反時計回りの方向にある領域から選択するものとする。
ここで、選択された領域をどのように分割するか、すなわち、選択された領域内の何れの識別子を決定するかについては、いくつかの方法が考えられる。例えば、最もシンプルな例は均等に2分割する方法である。この場合、新しいノードが分散システムに追加されるたびに最大領域の大きさが半分に分割されていくことで、識別子間の間隔の偏りを補正していく形となる。他の実施例では、各ノードの計算能力や記憶容量に応じて、割り当てる領域を調整するようにしてもよい。すなわち、任意の比率で領域を分割するようにしてもよい。しかしながら、本発明は、上述した分割の比率について限定されるものでなく、他の適切な任意の比率による分割方法が利用されてもよい。
上述した識別子の決定方法により、各ノードの担当する領域が均一化され、各ノードの担当する処理の量やデータの量についても均一化されることになる。なお、コンシステント・ハッシングの仕組みを使って、データの格納位置の決定ではなく分散システムの処理を行う位置を決定する場合がある。本明細書では以下特に断りなく、データの分散の仕組みにおいて本発明による識別子割当て装置を適用することを前提として説明を行うが、分散システムの処理を行う位置を決定する場合にも本発明を適用可能であり、データの格納位置の決定のみに本発明の適用対象を限定するものではない。
複数識別子割当て部112は、分散システムから要求された個数だけ、1つのノードに対して決定的識別子決定部111を使用して複数の識別子を割り当てる。具体的には、複数識別子割当て部112は、分散システムから要求された識別子の個数に対応して、上述した決定的識別子決定部111の処理を複数回実行させ、決定された複数の識別子を当該ノードに割当てる。
次に、図6〜9を参照して、本発明の上述した識別子割当て装置による識別子割当ての具体例を説明する。図6〜9では、図1及び2と同様に、識別子の値の小さいものから、円形にノードが並べて示されている。この円により示されるID空間上に数字とともに配置されている丸や四角等の記号はノードの識別子を表し、数字はそのノードが何番目に分散システムに追加されたものかを表している。なお、ID空間上では時計周りに行くほど識別子の値が大きくなるものとする。ここで、ノードの担当する領域とは、そのノードの識別子から反時計周りに別のノードの識別子までの円弧に相当する。この領域の大小に比例して、ノードの担当するデータや処理の負荷量が決まる。
図6は、本発明の決定的な識別子割り当て方法を用いて、5つのノードに単一の識別子を割り当てた際の状態を表している。ここでは、一例として領域を均等に2分割する形で識別子を割り当てている。一切の領域が存在しない初期状態では、ノード1への識別子の割り当てには任意の値が割り当てられ、ノード2以降は、それぞれ存在する領域のうち最大の領域の中間に新しい識別子が割り当てられる。図6の例では、同じ大きさの領域が複数存在する場合は、円の最も上側の点(図6ではノード1が存在する場所)を始点として、最も識別子の小さい領域を選択することとしている。このため、ノード4まで追加された時点で正確に4分割されていたID空間において、次のノード5は、ノード3の管理する領域、すなわち、ノード1とノード3との間の領域の中央に識別子を割り当てられ、ノード3の担当していた領域を2分割することとなる。
図7は、図6に示した決定的な識別子の割り当て手法を用いて、3つのノードのそれぞれに3つの識別子を割り当てた場合の状態を表している。図2の場合と同様に、大数の法則により図6の例よりも個々のノードの担当する領域が均一になっていることがわかる。また、図2の例とは異なり、決定的に識別子の値が決定されているため、確率によってばらつきが生じることのない、常に同じ形でID空間上に識別子が配置されていく形となる。そのため、図1,2の従来技術による識別子割当て方法及び図6の単一の識別子割当て方法と比較して、図7に示される本発明の複数識別子割当て方法は、確率に依らず安定していて、かつ最も領域が均一化される方法であることがわかる。
図8,9はノードの削除時におけるノードの担当領域の変化を表したものである。このようなノードの削除は、例えば、分散システムの管理者などからのノードの削除指示、ノードの故障、分散システムからのノードの接続解除などによりトリガーされる。図8は、各ノードに単一の識別子が割り当てられる図1の例において、ノード1が削除された場合のノードの担当領域の変化を示している。図8の左側に示されるように、ノード1が削除される前は、ノード1は円弧201の領域を担当し、ノード4は円弧200の領域を担当していた。これが、図8の右側に示されるように、ノード1が削除されると、ノード1の担当していた円弧201の領域全体がそのまま隣接するノード4に引き継がれ、ノード4の担当領域が円弧202にまで増大する。
一方、図9は、各ノードに複数の識別子が割り当てられる図2の例において、ノード1が削除された場合のノードの担当領域の変化を示している。図9の左側に示されるように、ノード1が削除される前は、ノード1は3つの円弧301,303,305を担当している。これが、図9の右側に示されるように、ノード1が削除されると、その担当していた3つの領域は、円弧301の領域はノード2の担当する円弧300に引き継がれ、円弧306となる。円弧303の領域はノード2の担当する円弧302に引き継がれ、円弧307となる。円弧305の領域はノード3の担当する円弧304に引き継がれ、円弧308となる。このように、ノード1つにつき複数の識別子を割り当てることによって、図8の例と比較して、図8の例では削除されたノード1の担当領域はそのままノード4が引き継ぎ、担当領域間の不均一を増大させていたが、図9の例ではノード1の3つの担当領域をノード2,3の2つのノードで引き継いだため、不均一の増大が抑えられている。また、1つのノードに割り当てる識別子の個数を増加させることで、更にノードの削除時の不均一を抑えることができる。
なお、ここでは図1と図2の例を用いてノードが削除された場合の1つのノードに複数の識別子を割り当てる識別子割当て方法の優位点を説明したが、図6と図7の例においても複数の識別子を割当てることにより同様の優位点が得られることは明らかであろう。
これまでの例によっても、本発明の複数識別子割当て方法を用いた図7の例が、ノードの追加の状態とノードの削除の状態の何れにおいても、各ノードの担当する負荷が最も均一に分散していることが理解されるであろう。
次に、図10を参照して、本発明の一実施例による識別子割当て方法を説明する。図10は、本発明の一実施例による決定的な複数識別子割当て方法の処理を示すフロー図である。なお、図10に示される処理フローは例示的なものにすぎず、本発明は図示された処理フローに限定されるものでない。
本実施例による識別子割り当て方法は、新たに追加されたノードに対する識別子の割当て要求により開始される(ステップS101)。次に、ステップS102において、1ノードごとに割当てる識別子の個数vと、この時点で存在している全ての識別子の総数aと、これらの識別子を記述した識別子一覧表とが入力される。その後、ステップS103において、初期化処理としてカウンタ変数iに0が設定される。
次に、ステップ104において、現時点で割当て済みの識別子の総数が0であるか、すなわち、a=0であるか判定される。現時点で割当て済みの識別子の総数が0である場合(ステップS104:yes)、すなわち、現在割当てようとしている識別子がこの分散システムにおける最初のノードの最初の識別子である場合、ステップS105において、割当てられる識別子の値を0に設定する。例えば、これは、図7に示される上端のノード1の識別子に相当する。
他方、現時点で割当て済みの識別子の総数が0でない場合(ステップS104:no)、ステップS106において、さらに現時点で割当て済みの識別子の総数が1であるか、すなわち、a=1であるか判定される。現時点で割当て済みの識別子の総数が1である場合(S106:yes)、すなわち、現在割当てようとしている識別子がこの分散システムにおける2番目の識別子である場合、ステップS107において、割当てられる識別子の値を(識別子の取りうる上限値÷2)に設定する。例えば、これは、図7に示される下端のノード1の識別子に相当する。
他方、現時点で割当て済みの識別子の総数が1でない場合(S106:no)、本実施例の複数識別子割当て方法は、ステップS108以降において、識別子一覧表を参照して割当てる識別子の値を決定する。ステップS108において、識別子一覧表を参照し、隣り合う識別子間の距離が最大となる領域を決定する。次に、ステップS109において、決定された領域の開始点及び終了点に相当する識別子をそれぞれID及びIDk+1としたとき、割当てられる識別子は、この領域を2等分する値、すなわち、(ID+IDk+1)÷2により算出される識別子に設定される。なお、厳密には、最大の領域|ID−IDk+1|が識別子の上限値をまたいで存在する場合がある。この場合、上記の式では2等分することができないが、その場合も適切に領域の中央値を返す式を適用するものとする。
このようにしてステップS105,S107及びS109で新しい識別子が取得された後、ステップS110において、カウンタ変数iと識別子の総数aの値をそれぞれ1だけインクリメントすると共に、識別子一覧表を更新する。
ステップS111において、カウンタ変数iが1ノード毎に割当てられる識別子の個数vに満たない場合(S111:no)、更なる識別子を割当てるため、ステップS106に戻って、同様の手順を実行することによって更なる識別子を割り当てる。他方、カウンタ変数iが1ノード毎に割当てられる識別子の個数vに等しい場合(S111:yes)、必要なv個の識別子の割当てが完了したことになるため、当該処理を終了する(ステップS112)。
本発明の識別子割当て装置及び方法では、ノードによって管理されるデータのそれぞれに識別子を割当て、あるノードが管理するデータの識別子の範囲を、ノード自身の識別子と、当該ノードよりも値の小さい識別子を持つノードの中では最も大きい値の識別子を持つノードの識別子との間と定める。また、各ノードの担当するデータ量等の負荷が均等に分散されるよう識別子の間隔が最も大きい領域から順に、1つのノードにつき複数の識別子を割り当てる。
なお、上述した実施例では、主にコンシステント・ハッシングのフレームワークにおいて、本発明の識別子割当て装置及び方法を用いる場合が説明されるが、本発明は、これに限定されるものでなく、識別子が識別以上の意味を持つ任意の分散プログラムに適用可能である。
本発明の識別子割当て装置及び方法によると、分散システムの識別子の間隔を均一化することができ、それによりノードの担当する処理量やデータ量を均一化し、ノード間の負担量が公平になる。また、ノードの削除時に均一性が崩れる問題についても、各ノードに複数の識別子を割り当てることによって、これを軽減する。これらの特性により、分散システムにおいて、ノードの追加・削除などの状況に関わらずに、ノード間の負担を公平化することができ、システム全体の利用効率を上昇させることが可能になる。
以上、本発明の実施例について詳述したが、本発明は上述した特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
100 識別子割当て装置
101 識別子一覧表格納部
110 識別子決定部
111 決定的識別子決定部
112 複数識別子割当て部

Claims (9)

  1. 複数のノード装置が協調して動作する分散システムにおいて、前記ノード装置に識別子を割り当てる方法であって、
    前記分散システムのノード装置に対する識別子割当てイベントを検出するステップと、
    前記識別子割当てイベントを検出すると、前記分散システムにおける割当て済みの識別子を格納した識別子一覧表にアクセスするステップと、
    前記識別子一覧表を参照して、前記識別子一覧表に格納されている隣り合う識別子の間の領域が最大となる隣り合う識別子を決定するステップと、
    前記決定された隣り合う識別子の間の領域内の何れかの識別子を前記ノード装置に割り当てるステップと、
    を有する方法。
  2. 前記識別子は、前記分散システムにおいて各ノード装置を識別すると同時に、前記分散システムにおける各ノード装置に割り当てられた処理負荷の決定に用いられる、請求項1記載の方法。
  3. 前記ノード装置に割り当てられた識別子を前記識別子一覧表に格納し、前記識別子一覧表を更新するステップをさらに有する、請求項1又は2記載の方法。
  4. 前記識別子割当てイベントは、前記ノード装置に所定数の識別子を割り当てる複数識別子割当てイベントを含み、
    前記識別子割当てイベントが前記複数識別子割当てイベントである場合、前記決定するステップ、前記割り当てるステップ及び前記更新するステップが、前記所定数の回数だけ繰り返される、請求項3記載の方法。
  5. 前記分散システムにおいて識別子が割当て済みのノード装置を削除するノード装置削除イベントを検出するステップと、
    前記ノード装置削除イベントを検出すると、前記ノード装置に割り当てられていた識別子を割当解放し、前記削除されたノード装置の処理負荷を前記識別子一覧表の割当解放された識別子に隣り合う識別子を有するノード装置に再割当てするステップと、
    をさらに有する、請求項2乃至4何れか一項記載の方法。
  6. 前記識別子割当てイベントは、前記分散システムへの新たなノード装置の追加を含む、請求項1乃至5何れか一項記載の方法。
  7. 前記割り当てるステップは、前記決定された隣り合う識別子の間の領域を等分するよう前記識別子を前記ノード装置に割り当てる、請求項1乃至6何れか一項記載の方法。
  8. 前記割り当てるステップは、前記決定された隣り合う識別子の間の領域を、前記ノード装置の計算能力及び/又は記憶容量に応じて分割するよう前記識別子を前記ノード装置に割り当てる、請求項1乃至6何れか一項記載の方法。
  9. 請求項1乃至8何れか一項記載の方法をコンピュータに実行させるためのコンピュータプログラム。
JP2010188877A 2010-08-25 2010-08-25 識別子割当て方法及びプログラム Active JP5514041B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010188877A JP5514041B2 (ja) 2010-08-25 2010-08-25 識別子割当て方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010188877A JP5514041B2 (ja) 2010-08-25 2010-08-25 識別子割当て方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2012048424A true JP2012048424A (ja) 2012-03-08
JP5514041B2 JP5514041B2 (ja) 2014-06-04

Family

ID=45903231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010188877A Active JP5514041B2 (ja) 2010-08-25 2010-08-25 識別子割当て方法及びプログラム

Country Status (1)

Country Link
JP (1) JP5514041B2 (ja)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013186837A1 (ja) * 2012-06-11 2013-12-19 株式会社Murakumo 情報処理システム、方法およびプログラム
WO2014020742A1 (ja) * 2012-08-02 2014-02-06 株式会社Murakumo 負荷分散装置、情報処理システム、方法およびプログラム
WO2014102997A1 (ja) 2012-12-28 2014-07-03 株式会社日立製作所 計算機、計算機システムの制御装置及び記録媒体
JP2015512551A (ja) * 2012-04-06 2015-04-27 エグザブロックス・コーポレーション ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間
JP2015184744A (ja) * 2014-03-20 2015-10-22 日本電信電話株式会社 スロット群生成装置、スロット群生成方法、および、負荷分散システム
JP2015203797A (ja) * 2014-04-15 2015-11-16 日本電気株式会社 オブジェクト配置装置、オブジェクト配置方法、及び、プログラム
US9514137B2 (en) 2013-06-12 2016-12-06 Exablox Corporation Hybrid garbage collection
US9552382B2 (en) 2013-04-23 2017-01-24 Exablox Corporation Reference counter integrity checking
US9715521B2 (en) 2013-06-19 2017-07-25 Storagecraft Technology Corporation Data scrubbing in cluster-based storage systems
US9774582B2 (en) 2014-02-03 2017-09-26 Exablox Corporation Private cloud connected device cluster architecture
US9830324B2 (en) 2014-02-04 2017-11-28 Exablox Corporation Content based organization of file systems
US9846553B2 (en) 2016-05-04 2017-12-19 Exablox Corporation Organization and management of key-value stores
JP2018036793A (ja) * 2016-08-30 2018-03-08 日本電信電話株式会社 識別子割当て方法及びプログラム
US9934242B2 (en) 2013-07-10 2018-04-03 Exablox Corporation Replication of data between mirrored data sites
US9985829B2 (en) 2013-12-12 2018-05-29 Exablox Corporation Management and provisioning of cloud connected devices
US10248556B2 (en) 2013-10-16 2019-04-02 Exablox Corporation Forward-only paged data storage management where virtual cursor moves in only one direction from header of a session to data field of the session
US10474654B2 (en) 2015-08-26 2019-11-12 Storagecraft Technology Corporation Structural data transfer over a network
WO2021149537A1 (ja) * 2020-01-21 2021-07-29 株式会社オートネットワーク技術研究所 管理装置、車載装置の識別情報割り当て方法、車載システム、及びデータ構造
WO2022018808A1 (ja) * 2020-07-20 2022-01-27 日本電信電話株式会社 負荷分散方法、負荷分散装置、負荷分散システムおよびプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007119418A1 (ja) * 2006-04-11 2007-10-25 Brother Kogyo Kabushiki Kaisha 情報通信システム、コンテンツカタログ情報検索方法、及びノード装置等
JP2008090564A (ja) * 2006-09-29 2008-04-17 Brother Ind Ltd コンテンツ配信システム及び同システムにおける識別情報割当方法及び同システムにおける識別情報割当装置及び同装置のプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007119418A1 (ja) * 2006-04-11 2007-10-25 Brother Kogyo Kabushiki Kaisha 情報通信システム、コンテンツカタログ情報検索方法、及びノード装置等
JP2008090564A (ja) * 2006-09-29 2008-04-17 Brother Ind Ltd コンテンツ配信システム及び同システムにおける識別情報割当方法及び同システムにおける識別情報割当装置及び同装置のプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNG201000261010; 川上大輔,他4名: '範囲検索と複数属性のデータの処理に適応した分散データストア' 情報処理学会研究報告 平成21年度 [CD-ROM] , 20100215, p.1-9, 社団法人情報処理学会 *
JPN6013034724; 川上大輔,他4名: '範囲検索と複数属性のデータの処理に適応した分散データストア' 情報処理学会研究報告 平成21年度 [CD-ROM] , 20100215, p.1-9, 社団法人情報処理学会 *

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015512551A (ja) * 2012-04-06 2015-04-27 エグザブロックス・コーポレーション ネットワーク・インフラストラクチャにおけるデータ記憶及び編成を容易にするコンシステント・リング名前空間
US9628438B2 (en) 2012-04-06 2017-04-18 Exablox Consistent ring namespaces facilitating data storage and organization in network infrastructures
JPWO2013186837A1 (ja) * 2012-06-11 2016-02-01 株式会社Murakumo 情報処理システム、方法およびプログラム
WO2013186837A1 (ja) * 2012-06-11 2013-12-19 株式会社Murakumo 情報処理システム、方法およびプログラム
JPWO2014020742A1 (ja) * 2012-08-02 2016-07-11 株式会社Murakumo 負荷分散装置、情報処理システム、方法およびプログラム
WO2014020742A1 (ja) * 2012-08-02 2014-02-06 株式会社Murakumo 負荷分散装置、情報処理システム、方法およびプログラム
WO2014102997A1 (ja) 2012-12-28 2014-07-03 株式会社日立製作所 計算機、計算機システムの制御装置及び記録媒体
US9805109B2 (en) 2012-12-28 2017-10-31 Hitachi, Ltd. Computer, control device for computer system, and recording medium
US9552382B2 (en) 2013-04-23 2017-01-24 Exablox Corporation Reference counter integrity checking
US9514137B2 (en) 2013-06-12 2016-12-06 Exablox Corporation Hybrid garbage collection
US9715521B2 (en) 2013-06-19 2017-07-25 Storagecraft Technology Corporation Data scrubbing in cluster-based storage systems
US9934242B2 (en) 2013-07-10 2018-04-03 Exablox Corporation Replication of data between mirrored data sites
US10248556B2 (en) 2013-10-16 2019-04-02 Exablox Corporation Forward-only paged data storage management where virtual cursor moves in only one direction from header of a session to data field of the session
US9985829B2 (en) 2013-12-12 2018-05-29 Exablox Corporation Management and provisioning of cloud connected devices
US9774582B2 (en) 2014-02-03 2017-09-26 Exablox Corporation Private cloud connected device cluster architecture
US9830324B2 (en) 2014-02-04 2017-11-28 Exablox Corporation Content based organization of file systems
JP2015184744A (ja) * 2014-03-20 2015-10-22 日本電信電話株式会社 スロット群生成装置、スロット群生成方法、および、負荷分散システム
JP2015203797A (ja) * 2014-04-15 2015-11-16 日本電気株式会社 オブジェクト配置装置、オブジェクト配置方法、及び、プログラム
US10474654B2 (en) 2015-08-26 2019-11-12 Storagecraft Technology Corporation Structural data transfer over a network
US9846553B2 (en) 2016-05-04 2017-12-19 Exablox Corporation Organization and management of key-value stores
JP2018036793A (ja) * 2016-08-30 2018-03-08 日本電信電話株式会社 識別子割当て方法及びプログラム
WO2021149537A1 (ja) * 2020-01-21 2021-07-29 株式会社オートネットワーク技術研究所 管理装置、車載装置の識別情報割り当て方法、車載システム、及びデータ構造
JP2021114724A (ja) * 2020-01-21 2021-08-05 株式会社オートネットワーク技術研究所 管理装置、車載装置の識別情報割り当て方法、車載システム、及びデータ構造
JP7363510B2 (ja) 2020-01-21 2023-10-18 株式会社オートネットワーク技術研究所 管理装置、車載装置の識別情報割り当て方法、車載システム、及びデータ構造
US11923999B2 (en) 2020-01-21 2024-03-05 Autonetworks Technologies, Ltd. Management apparatus, method for allocating identification information of onboard apparatus, onboard system, and data structure
WO2022018808A1 (ja) * 2020-07-20 2022-01-27 日本電信電話株式会社 負荷分散方法、負荷分散装置、負荷分散システムおよびプログラム

Also Published As

Publication number Publication date
JP5514041B2 (ja) 2014-06-04

Similar Documents

Publication Publication Date Title
JP5514041B2 (ja) 識別子割当て方法及びプログラム
CN107026907B (zh) 一种负载均衡方法、负载均衡器及负载均衡系统
US20210385171A1 (en) Software load balancer to maximize utilization
US8087025B1 (en) Workload placement among resource-on-demand systems
US20170031622A1 (en) Methods for allocating storage cluster hardware resources and devices thereof
JP6881575B2 (ja) 資源割当システム、管理装置、方法およびプログラム
US10394782B2 (en) Chord distributed hash table-based map-reduce system and method
JP6275119B2 (ja) メモリ要素の割当てのために一方向リンク付けリストを区分化するシステム及び方法
CA2964461A1 (en) Composite partition functions
US20220318071A1 (en) Load balancing method and related device
JP2016024612A (ja) データ処理制御方法、データ処理制御プログラムおよびデータ処理制御装置
US9106482B1 (en) Systems and methods for proxy-less load balancing
JP2015162066A (ja) クラスタシステム、および、負荷分散方法
CN110178119B (zh) 处理业务请求的方法、装置与存储系统
JP2010224754A (ja) リソース割当装置、リソース割当方法、及びプログラム
US8156289B2 (en) Hardware support for work queue management
Randles et al. Biased random walks on resource network graphs for load balancing
CN113268329A (zh) 一种请求调度方法、装置及存储介质
CN109005071B (zh) 一种决策部署方法和调度设备
Mao et al. Sharing based virtual network embedding algorithm with dynamic resource block generation
US11086689B2 (en) Method for automatically and dynamically assigning the responsibility for tasks to the available computing components in a highly distributed data-processing system
CN113326099B (zh) 资源管理方法、装置、电子设备和存储介质
US20190373053A1 (en) Ranked session affinity to improve load balancing efficiency for stateful requests
JP6553562B2 (ja) 識別子割当て方法及びプログラム
CN114298431A (zh) 一种网络路径选择方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121025

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130716

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130905

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20131001

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140328

R150 Certificate of patent or registration of utility model

Ref document number: 5514041

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150