JP5903022B2 - 分散データ管理プログラムおよび分散データ管理装置 - Google Patents
分散データ管理プログラムおよび分散データ管理装置 Download PDFInfo
- Publication number
- JP5903022B2 JP5903022B2 JP2012220477A JP2012220477A JP5903022B2 JP 5903022 B2 JP5903022 B2 JP 5903022B2 JP 2012220477 A JP2012220477 A JP 2012220477A JP 2012220477 A JP2012220477 A JP 2012220477A JP 5903022 B2 JP5903022 B2 JP 5903022B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- node
- data set
- destination
- identifier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000013523 data management Methods 0.000 title claims description 26
- 238000012545 processing Methods 0.000 claims description 100
- 238000012546 transfer Methods 0.000 claims description 44
- 238000000034 method Methods 0.000 description 80
- 238000013508 migration Methods 0.000 description 28
- 230000005012 migration Effects 0.000 description 28
- 238000013500 data storage Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 14
- 208000011338 SATB2 associated disease Diseases 0.000 description 5
- 208000013959 SATB2-associated syndrome Diseases 0.000 description 5
- 239000000126 substance Substances 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 101000811220 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) 40S ribosomal protein S19-A Proteins 0.000 description 1
- 101000811215 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) 40S ribosomal protein S19-B Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 235000011127 sodium aluminium sulphate Nutrition 0.000 description 1
- 238000001808 supercritical antisolvent technique Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
分散処理システムの各ノードで実行される分散データ管理プログラムは、一般的なデータの管理機能に加えて、その分散処理システムに於ける処理担当ノードの決定機能を有している。この分散データ管理プログラムが実行されたとき、各ノードは、分散処理システムに於ける処理の状態データを管理対象とする。
コンシステント・ハッシュ法は、複数のサーバが多量のデータを分担して管理する分散処理プログラムの一形態である。コンシステント・ハッシュ法の原理は、分散データ管理プログラムを実行するノードと、ノードによって管理されるデータのそれぞれに識別子を割り当て、あるノードが管理するデータの識別子の範囲を、ノード自身の識別子と、自身よりも値の小さい識別子を持つノードの中では最も大きい値の識別子を持つノードの識別子との間として定めるものである。
コンシステント・ハッシュ法を実装したソフトウェアプログラムのインタフェースは、データの保存要求と取得要求のみを受け付ける単純なものである。コンシステント・ハッシュ法を実行するノードは、受信した信号が要求するデータの識別子を参照して、複数のサーバのうち指定されたデータを管理しているサーバを特定し、特定したサーバに対して、データの保存要求や取得要求を転送する。
ID空間5は、円環状である。円環状のID空間5には、ノードの識別子6−1〜6−6と、データ集合の識別子7−1〜7−7が並んでいる。
データ集合の識別子7−1からノードの識別子6−1への矢印は、このデータ集合の識別子7−1の担当がノードの識別子6−1であることを示している。このとき、ノードの識別子6−1で示されるノードに、データ集合の識別子7−1で示されるデータ集合が格納される。
データ集合の識別子7−2からノードの識別子6−2への矢印は、このデータ集合の識別子7−2の担当がノードの識別子6−2であることを示している。このとき、ノードの識別子6−2で示されるノードに、データ集合の識別子7−2で示されるデータ集合が格納される。
データ集合の識別子7−3からノードの識別子6−4への矢印は、このデータ集合の識別子7−3の担当がノードの識別子6−4であることを示している。このとき、ノードの識別子6−4で示されるノードに、データ集合の識別子7−3で示されるデータ集合が格納される。
データ集合の識別子7−4〜7−6からノードの識別子6−5への矢印は、このデータ集合の識別子7−4〜7−6の担当がノードの識別子6−5であることを示している。このとき、ノードの識別子6−5で示されるノードに、データ集合の識別子7−4〜7−6で示されるデータ集合が格納される。
データ集合の識別子7−7からノードの識別子6−6への矢印は、このデータ集合の識別子7−7の担当がノードの識別子6−6であることを示している。このとき、ノードの識別子6−6で示されるノードに、データ集合の識別子7−7で示されるデータ集合が格納される。
以下、ノードの識別子6−1〜6−6を特に区別しないときには、単にノードの識別子6と記載する。データ集合の識別子7−1〜7−7を特に区別しないときには、単にデータ集合の識別子7と記載する。
ノード(n)4−nは、識別子1740f0d5のデータ集合を有し、識別子1740f0d5のデータ集合は、複数のセッション状態データを含んでいる。このノード(n)4−nの識別子は、例えば、図10(a)のノードの識別子6のいずれかである。データ集合の識別子1740f0d5は、例えば図10(a)のデータ集合の識別子7のいずれかに対応している。
セッション状態データであるSession1は、データの識別子であるSession1.idの値が、例えば3c2af102であり、セッション状態データの実体かつセッション状態であるSession1.stateの値が、例えば「confirmed」(確立状態)である。データ集合の識別子1740f0d5は、ID空間5に存在している。各ノードは、データ集合の識別子1740f0d5を参照し、コンシステント・ハッシュ法による演算を行うことで、識別子1740f0d5のデータ集合を担当しているノードの識別子6を特定し、よって、識別子1740f0d5のデータ集合を格納しているノード(n)4−nを特定することができる。
このようなコンシステント・ハッシュ法の適用例の1つとして、SIP Servlet(非特許文献2)コンテナのようなセッション制御を行うアプリケーションサーバの実装が考えられる。
SIP Servletとは、セッション制御プロトコルの1つであるSIP(Session Initiation Protocol)を用いるサーバアプリケーションを簡易に実装可能にするJava(登録商標)用のAPI(Application Programming Interface)の規定であり、これを実装したものがSIP Servletコンテナである。このようなSIPのアプリケーションサーバに於いては、SIPに於いてB2BUA(Back-to-Back User Agent)と呼ばれる、2つのセッション状態を関連付けて管理する形態が用いられることが多い。SIP Servletではこの2つ(ないしそれ以上)の関連するセッション状態を、SAS(SIP Application Session)というデータ集合に格納するものとし、SIP Servletコンテナの多くの実装に於いて、このSAS(データ集合)の単位でデータを格納している。
本発明ではSIPのように、サーバ側でデータ集合間でのデータの移動があったことをクライアント側が関知しないプロトコルを扱うサーバを対象としている。そのためクライアントは、データの移動前後で変わらず移動前のSAS(データ集合)の識別子を指定した信号を送信する。
この方法に於いて、各ノードは、SAS(データ集合)の識別子に対応させて、そのSAS(データ集合)に関連するセッション状態データを格納する。それに加えて、各ノードは、セッション状態データの識別子に対応させて、そのセッション状態データを格納しているSAS(データ集合)の識別子を格納する。セッション状態データに対するアクセス要求信号を受信した際には、まずアクセス要求信号に含まれたパラメータである指定セッションの識別子を参照して、コンシステント・ハッシュ法により、指定セッション状態データを担当(格納)するノードを特定して、特定したノードに対してアクセス要求信号を転送する。次に、転送されたアクセス要求信号を受信したノードは、このノードが保持するセッション識別子に対応するSAS(データ集合)の識別子から、指定セッションを格納するSAS(データ集合)を担当(格納)するノードに対して、更にアクセス要求信号を転送する。
すなわち、初回はデータの識別子に基づく転送を行い、2回目は、当該データを格納するデータ集合の識別子に基づく転送を行う。これによって、データ集合間でデータが移動した場合も、移動先データ集合を保持するノードに対してアクセス要求信号を転送することが可能になる。
しかし、この方法では、データの移動の有無に関わらず、全てのデータに対する信号について2段階の転送が必要となり、全ての信号の処理時間が増大してしまうという欠点がある。
更に、当該データが生成されたときの移動元データ集合に当該データが移動されたときには、移動元情報を削除して、当該データが生成されたときの状態に戻すことができる。これにより、使用される記憶容量を削減することができる。
クライアント2−1〜2−mは、ロードバランサ3を介して各ノード4に接続されている。以下、クライアント2−1〜2−mを特に区別しないときには、単にクライアント2と記載する。クライアント2は、ロードバランサ3を介してノード4に要求を送信することによって、この分散データ管理システム1上のデータの取得や保存を行うものである。
分散データ管理プログラム42は、分散データ管理装置であるノード4上で実行され、各ノード4に分散されているデータを管理するためのソフトウェアプログラムである。
アプリケーション41は、分散データ管理装置であるノード4上で実行されて、各データを利用して所定のプロトコル処理を行うためのソフトウェアプログラムである。分散データ管理プログラム42は、ノード4の図示しないHDD(Hard Disk Drive)などに記憶され、ノード4の図示しないCPU(Central Processing Unit)によって実行されて、分散データなどを記憶するデータ部421と、記憶した分散データなどを処理する処理部422とを具現化するものである。
アプリケーション41は、例えば、分散データ管理プログラム42に対して状態データを保存し、この状態データを利用してSIP信号の処理を行うSIPアプリケーションなどである。
分散データ管理プログラム42は、分散データなどを記憶するデータ部421と、記憶した分散データなどを処理する処理部422とを具現化する。
データ部421は、データ集合の識別子と当該データ集合の値とが対として格納されるデータ群4211と、各ノード4の識別子と当該ノード4のアドレスとが対として格納されるアドレス表4212とを格納している。更に、データ部421の各データ集合の値は、1または複数のデータを含んでいる。本実施形態では、データ集合の識別子やセッション状態データの識別子やノードの識別子としてハッシュ値を用いており、図2では8桁の16進数で示している。しかし、これに限られず、任意長かつ任意の値を識別子として用いてもよい。
処理部422は、受信した信号によって指定された指定データの格納先であるノード(格納先ノード)を決定する転送先決定部4221と、転送先である格納先ノードに信号を転送する信号転送部4222と、ノード4を追加するノード追加部4223と、ノード4を削除するノード削除部4224と、データ集合の格納先ノードに於いて信号の要求に基づいてデータの取得を行うデータ取得部4225と、データ集合間でデータを移動するデータ移動部4226と、このデータ集合の格納先ノードに於いて、信号の要求に基づいてデータの保存、作成または更新を行うデータ保存部4227とを備えている。
転送先決定部4221は、例えば、移動要求を受信し、この移動要求によって指定された指定データを、この移動要求に含まれた移動先の識別子で示される移動先のデータ集合(移動先データ集合:図3(b))に移動する際に、この指定データを含むデータ集合(指定データ集合)の格納先ノードを特定する。
信号転送部4222は、例えば、転送先決定部4221が特定した格納先ノードが自ノード以外ならば、格納先ノードに対して移動要求を転送するものである。
データ取得部4225は、信号の要求を受信した際に、この信号で指定されたデータ集合の識別子とデータの識別子とに基づいて、要求されたデータの取得を行うものである。
データ移動部4226は、例えば、転送先決定部4221が特定した格納先ノードが自ノードならば、移動先データ集合の識別子を参照して指定データの移動先ノードを特定して、移動先ノードの移動先データ集合に、指定データの実体を移動するものである。更にデータ移動部4226は、指定データに係る移動元情報(SessionX.orgParent:図3(b))を参照して移動元集合を特定し、更に移動元ノードを特定する。
データ保存部4227は、にデータ移動部4226が特定した移動元ノードが自ノードならば、移動元データ集合に含まれるデータ(移動元データ)に、移動先データ集合の識別子の情報および指定データの実体が存在しない旨の情報を設定するものである。
ノード(2)4−2は、識別子1740f0d5のデータ集合を有している。識別子1740f0d5のデータ集合は、このデータ集合の値として、1または複数のセッション状態データを含んでいる。セッション状態データであるSession1は、その識別子であるSession1.idの値が3c2af102であり、セッション状態データの実体の存在情報であるSession1.existの値が「true」(真)であり、セッション状態データの実体であるSession1.stateの値が「confirmed」(確立状態)である。
ここでは、識別子1740f0d5のデータ集合(移動元データ集合)から、識別子d14ec862のデータ集合(移動先データ集合)へと、識別子3c2af102のセッション状態データを移動したあとの状態を示している。
識別子1740f0d5のデータ集合に於いて、セッション状態データであるSession1は、その識別子であるSession1.idの値が3c2af102であり、セッション状態データの実体の存在情報であるSession1.existの値が「false」(偽)であり、このデータに係る移動先情報として、Session1.curParentの値にd14ec862が設定されている。移動元データ集合に含まれるセッション状態データは、移動元のデータ(移動元データ)に係る情報である。このデータに係る移動先情報には、移動先データ集合の識別子の情報が設定されている。分散データ管理プログラム42の実行によって具現化された処理部422は、移動先データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動先データ集合を格納する移動先ノードを特定する。
以下、SessionXとして、セッション状態データ全般を示し、SessionX.idとしてセッション状態データの識別子を示し、SessionX.existとしてセッション状態データの存在情報を示し、SessionX.curParentとして、セッション状態データに係る移動先情報を示す場合がある。
以下、SessionX.stateとしてセッション状態データの実体を示し、SessionX.orgParentとして、セッション状態データに係る移動元情報を示す場合がある。
本実施形態のノード4の処理部422は、一度移動したデータを、移動前のデータ集合に戻すように再び移動した場合は、後記する図5に示すように、移動先情報(SessionX.curParent)などを追加せず、一度も移動していないのと同じ状態(図3(a)参照)へと戻している。これにより、データを格納する領域を減らし、かつ処理時間を短縮することができる。
各ノード4は、分散データ管理プログラム42の実行によって処理部422を具現化する。この処理部422は、データの移動要求を受信すると、データの移動要求処理を開始する。以下のステップS30〜S41に於いて、処理の主体は全て同一のノード(自ノード)である。
ステップS31に於いて、転送先決定部4221は、データの移動要求に含まれる指定データ集合の識別子を参照し、コンシステント・ハッシュ法により、この指定データ集合を格納するノード4である格納先ノードを特定する。
ステップS32に於いて、転送先決定部4221は、自ノードが格納先ノードであるか否かを判断する。転送先決定部4221は、当該判断条件が成立しなかったならば(No)、ステップS33の処理を行い、当該判断条件が成立したならば(Yes)、ステップS34の処理を行う。
ステップS33に於いて、信号転送部4222は、格納先ノードに対してデータの移動要求を転送し、図4の処理を終了する。
ステップS35に於いて、データ移動部4226は、移動先ノードに対して、当該指定データの実体(SessionX.state)を移動先データ集合に移動する要求を送信する。
ステップS36に於いて、データ移動部4226は、当該指定データに係る移動元情報(SessionX.orgParent)に設定された移動元データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動元データ集合を格納する移動元ノードを特定する。なお、当該指定データが移動元情報(SessionX.orgParent)を有していないときには、自ノードが移動元ノードである。
ステップS37に於いて、データ移動部4226は、自ノードが移動元ノードであるか否かを判断する。データ移動部4226は、当該判断条件が成立しなかったならば(No)、ステップS38の処理を行い、当該判断条件が成立したならば(Yes)、ステップS40の処理を行う。
ステップS38に於いて、データ移動部4226は、移動元ノードに対して、当該指定データに係る移動先更新要求を送信する。
ステップS39に於いて、データ移動部4226は、当該指定データに係る情報を全て削除する。これにより、当該指定データに係る情報を、移動元データ集合と移動先データ集合の2箇所に限定し、使用する記憶容量を削減することができる。ステップS39の処理が終了すると、データ移動部4226は、図4の処理を終了する。
ステップS41に於いて、データ保存部4227は、当該指定データに係る移動先情報(SessionX.curParent)に、移動先データ集合の識別子を設定し、図4の処理を終了する。
自ノードが格納先ノードであり、かつ、移動要求に含まれた指定データに係る移動元情報(SessionX.orgParent)に設定された移動元データ集合を含む移動元ノードであったときには、図4の処理のうち、ステップS30〜S32,S34〜S37,S40,S41の処理を行う。
自ノードが格納先ノードであり、かつ、移動要求に含まれた指定データに係る移動元情報(SessionX.orgParent)に設定された移動元データ集合を含む移動元ノードでなかったときには、図4の処理のうち、ステップS30〜S32,S34〜S39の処理を行う。
分散データ管理プログラム42の実行によって具現化された処理部422は、図4のステップS35で送信された指定データの実体(SessionX.state)と移動要求とを受信すると、データ保存処理を開始する。
ステップS50に於いて、処理部422は、指定データの実体(SessionX.state)と移動要求とを受信し、移動要求を解釈する。この移動要求は、例えば、移動対象となる指定データの識別子と、この指定データの新たな移動先データ集合の識別子と、移動元データ集合の識別子とを含んでいる。
ステップS51に於いて、データ保存部4227は、移動元データ集合と移動先データ集合とが同一であるか否かを判断する。データ保存部4227は、当該判断条件が成立しなかったならば(No)、ステップS52の処理を行い、当該判断条件が成立したならば(Yes)、ステップS55の処理を行う。
ステップS52に於いて、データ保存部4227は、移動先データ集合に当該指定データの実体(SessionX.state)を保存する。
ステップS54に於いて、データ保存部4227は、当該指定データに係る移動元情報(SessionX.orgParent)に移動元データ集合の識別子を設定し、図5(a)の処理を終了する。
ステップS55に於いて、データ保存部4227は、移動先データ集合に当該指定データの実体(SessionX.state)を保存する。
ステップS56に於いて、データ保存部4227は、当該指定データに係る移動先情報(SessionX.curParent)を削除し、図5(a)の処理を終了する。
分散データ管理プログラム42の実行によって具現化された処理部422は、図4のステップS38で送信された移動先更新要求を受信すると、データの移動先更新処理を開始する。
ステップS60に於いて、処理部422は、受信した移動先更新要求を解釈する。この移動先更新要求には、例えば、指定データの識別子と、移動元データ集合の識別子と、移動先データ集合の識別子とを含んでいる。
ステップS61に於いて、データ保存部4227は、移動元データ集合と移動先データ集合とが同一であるか否かを判断する。データ保存部4227は、当該判断条件が成立しなかったならば(No)、ステップS62の処理を行い、当該判断条件が成立したならば(Yes)、図5(b)の処理を終了する。
ステップS62に於いて、データ保存部4227は、移動元データ集合が含んでいる当該指定データに係る移動先情報(SessionX.curParent)に、移動先データ集合の識別子を設定し、図5(b)の処理を終了する。
このシーケンスS11〜S18は、ノード(2)4−2に指定データが新たに生成されたのち、ノード(1)4−1がアプリケーション41を実行し、指定データを、ノード(2)4−2からノード(3)4−3に移動するように要求した場合を示している。
シーケンスS12に於いて、ノード(1)4−1は、分散データ管理プログラム42を実行して、データ移動要求に含まれる指定データ集合の識別子を参照し、コンシステント・ハッシュ法により、指定データ集合を格納する格納先ノードを特定する。特定された格納先ノードは、ノード(2)4−2であるとする。以下のシーケンスでは、分散データ管理プログラム42の実行に係る記載を省略する。
シーケンスS13に於いて、ノード(1)4−1は、ノード(2)4−2に対して、データの移動要求を送信する。
シーケンスS15に於いて、ノード(2)4−2は、ノード(3)4−3に対して、指定データの実体(SessionX.state)の移動要求を送信する。
シーケンスS16に於いて、ノード(2)4−2は、指定データに係る移動元情報(SessionX.orgParent)に格納されている移動元データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動元データ集合を格納する移動元ノードを特定する。ここで、移動元ノードは、自ノードであるノード(2)4−2である。
シーケンスS18に於いて、ノード(2)4−2は、移動元データ集合に含まれる指定データに係る移動先情報(SessionX.curParent)を更新する。ノード(2)4−2は、この指定データに係る移動先情報(SessionX.curParent)に、指定データの実体(SessionX.state)が保存されている移動先データ集合の識別子を設定する。
このシーケンスS11〜S18aは、分散データ管理システム1が、図6に示すシーケンスS11〜S18を実行した後に、更にノード(1)4−1がアプリケーション41を実行し、指定データを、ノード(3)4−3からノード(4)4−4に移動するように要求した場合を示している。
シーケンスS11に於いて、図6のシーケンスS11と同様に、ノード(1)4−1は、アプリケーション41を実行して、自ノードの分散データ管理プログラム42の実行によって具現化した処理部422に対して、データ移動要求を行う。この移動要求は、指定データを含む指定データ集合の識別子と、移動する指定データの識別子と、移動先データ集合の識別子とをパラメータとして含んでいる。
シーケンスS12に於いて、図6のシーケンスS12と同様に、ノード(1)4−1は、分散データ管理プログラム42を実行して、データの移動要求に含まれる指定データ集合の識別子を参照し、コンシステント・ハッシュ法により、指定データ集合を格納する格納先ノードを特定する。ここで特定された格納先ノードは、ノード(3)4−3である。なお、以下のシーケンスでは、分散データ管理プログラム42の実行の記載を省略する。
シーケンスS14aに於いて、ノード(3)4−3は、データの移動要求に含まれる移動先データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動先データ集合を格納する移動先ノードを特定する。ここでは、移動先ノードは、ノード(4)4−4である。図7に於いて、指定データは既に1度移動済みであるため、指定データに係る移動元情報(SessionX.orgParent)に格納されていた移動元データ集合の識別子を取得し、一時的に保存しておく。
シーケンスS15aに於いて、ノード(3)4−3は、移動先であるノード(4)4−4に対して、指定データの実体(SessionX.state)の移動要求を送信する。
シーケンスS17aに於いて、ノード(3)4−3は、ノード(2)4−2に対して、指定データの移動先更新要求を送信する。これにより、ノード(3)4−3は、ノード(2)4−2に対して、指定データの実体(SessionX.state)をノード(3)4−3からノード(4)4−4の移動先データ集合に移動したことを通知する。
シーケンスS18aに於いて、ノード(2)4−2は、指定データに係る移動先情報(SessionX.curParent)を、指定データの実体(SessionX.state)を含んだ移動先データ集合の識別子に更新する。
分散データ管理プログラム42の実行により具現化された処理部422は、データのアクセス要求を受信すると、アクセス要求処理を開始する。以下のステップS70〜S80に於いて、処理の主体は全て同一のノード(自ノード)である。
ステップS70に於いて、処理部422は、データのアクセス要求を受信し、アクセス要求を解釈する。このアクセス要求は、例えば、アクセスの対象となる指定データの識別子と、この指定データを含む指定データ集合の識別子とを含んでいる。
ステップS71に於いて、データ取得部4225は、データのアクセス要求に含まれる指定データ集合の識別子を参照し、コンシステント・ハッシュ法により、指定データ集合を格納するノード4である格納先ノードを特定する。
ステップS72に於いて、データ取得部4225は、自ノードが格納先ノードであるか否かを判断する。データ取得部4225は、当該判断条件が成立しなかったならば(No)、ステップS73の処理を行い、当該判断条件が成立したならば(Yes)、ステップS74の処理を行う。
ステップS74に於いて、データ取得部4225は、指定データ集合から、アクセス要求で指定された当該指定データを取得する。
ステップS75に於いて、データ取得部4225は、当該指定データの実体(SessionX.state)が存在するか否かを判断する。データ取得部4225は、当該判断条件が成立しなかったならば(No)、ステップS78の処理を行い、当該判断条件が成立したならば(Yes)、ステップS76の処理を行う。
ステップS76に於いて、データ保存部4227は、当該指定データの実体(SessionX.state)に対して、アクセス要求を実行する。
ステップS77に於いて、データ保存部4227は、アクセス要求の実行結果を、アクセス要求の送信元であるクライアント2に応答し、図8の処理を終了する。
ステップS79に於いて、データ保存部4227は、移動先データ集合の識別子を参照し、コンシステント・ハッシュ法により、移動先データ集合を格納する移動先ノードを特定する。
ステップS80に於いて、データ保存部4227は、移動先ノードに対して、当該指定データへのアクセス要求を転送し、図8の処理を終了する。
自ノードが、アクセス要求に含まれた指定データ集合を含む格納先ノードであり、かつ、指定データ集合に当該指定データの実体(SessionX.state)が存在していなかったときには、図8の処理のうち、ステップS70〜S72,S74,S75,S78〜S80の処理を行う。
自ノードが、アクセス要求に含まれた指定データ集合を含む格納先ノードであり、かつ、指定データ集合に当該指定データの実体(SessionX.state)が存在していたときには、図8の処理のうち、ステップS70〜S72,S74〜S77の処理を行う。
このシーケンスS01〜S09は、分散データ管理システム1が、クライアント2が送信したアクセス要求を受信して、このアクセス要求に対する応答信号を送信する場合を示している。このシーケンスS01〜S09に於いて、図3(b)に示すように、ノード(2)4−2が、移動元データ集合を格納しており、ノード(3)4−3が、移動先データ集合を格納している。
シーケンスS02に於いて、ロードバランサ3は、無作為にいずれかのノード4に、アクセス要求を振り分ける。ここでは、ロードバランサ3は、アクセス要求をノード(1)4−1に振り分けている。
シーケンスS03に於いて、ノード(1)4−1は、分散データ管理プログラム42を実行して、アクセス要求に含まれる指定データ集合の識別子を参照し、コンシステント・ハッシュ法により、指定データ集合を格納している格納先のノード4を特定する。ここでは、ノード(2)4−2が、格納先として特定されている。以下のシーケンスでは、分散データ管理プログラム42の実行に関する記載を省略する。
シーケンスS04に於いて、ノード(1)4−1は、ノード(2)4−2に対して、このアクセス要求を転送する。このアクセス要求は、アクセスの対象となる指定データの識別子3c2af102と、この指定データを含む指定データ集合の識別子1740f0d5とをパラメータとして含んでいる。
シーケンスS05に於いて、ノード(2)4−2は、指定データ集合に含まれる指定データに係る情報を取得する。ここでは指定データの存在を表す値が、「false」(偽)であり、指定データの実体(Session1.state)に代わり、指定データに係る移動先情報(Session1.curParent)が残されている。ここで指定データ集合は、図3(b)に示す移動元データ集合である。
シーケンスS07に於いて、ノード(2)4−2は、アクセス要求を、ノード(3)4−3に転送する。このアクセス要求には、アクセスの対象となる指定データの識別子3c2af102と、この指定データの本体を含む移動先データ集合の識別子d14ec862とをパラメータとして含んでいる。
シーケンスS08に於いて、ノード(3)4−3は、アクセス要求を受信したので、アクセス要求に含まれる指定データ集合の識別子d14ec862に基づき、指定データ集合を取得し、更に指定データの識別子3c2af102に基づき、指定データの実体(Session2.state)にアクセスする。ここで指定データ集合は、図3(b)に示す移動先データ集合である。
シーケンスS09に於いて、ノード(3)4−3は、アプリケーション41により、指定データの実体(Session2.state)に所定の処理を行う。ここで、ノード(3)4−3のアプリケーション41は、指定データの実体(Session2.state)を含む応答信号をクライアント2に応答することにより、指定データの実体(Session2.state)をクライアント2に送信する処理を行う。
以上説明した本実施形態では、次の(A)〜(F)のような効果がある。
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の(a)〜(d)のようなものがある。
2 クライアント
3 ロードバランサ
4 ノード (分散データ管理装置)
41 アプリケーション
42 分散データ管理プログラム
421 データ部
4211 データ群
4212 アドレス表
422 処理部
4221 転送先決定部
4222 信号転送部
4223 ノード追加部
4224 ノード削除部
4225 データ取得部
4226 データ移動部
4227 データ保存部
5 ID空間
6 ノードの識別子
7 データ集合の識別子
Claims (7)
- 分散データ管理システム内で処理を実行する各ノードに搭載される分散データ管理プログラムであって、
各前記ノードは、
1または複数のデータを含むデータ集合および当該データ集合の識別子を格納するデータ部と、
前記データ集合の識別子を参照して、前記データ集合がいずれのノードに格納されているかを特定する処理部と、を備えており、
指定されたデータである指定データを移動先データ集合に移動する移動要求を受けるステップと、
前記指定データを含むデータ集合である指定データ集合を格納する格納先ノードを特定するステップと、
を各前記ノードの前記処理部に実行させ、
更に前記格納先ノードが自ノードならば、
前記移動先データ集合の識別子を参照して前記指定データの移動先である移動先ノードを特定するステップと、
前記移動先ノードの前記移動先データ集合に前記指定データの実体を移動するステップと、
前記指定データに含まれる移動元データ集合の識別子の情報を参照して移動元ノードを特定するステップと、
を各前記ノードの前記処理部に実行させ、
更に前記自ノードが前記移動元ノードでないならば、
前記移動元ノードに対して前記移動元データ集合に含まれる移動元データに、少なくとも前記移動先データ集合の識別子の情報を設定する要求を送信するステップ、
を各前記ノードの前記処理部に実行させるための分散データ管理プログラム。 - 前記移動元ノードに対して前記移動元データ集合に含まれる前記移動元データに、前記移動先データ集合の識別子の情報を設定する要求を送信するステップを前記処理部に実行させたのち、
前記指定データ集合に含まれる前記指定データに係る情報を全て削除するステップ、
を各前記ノードの前記処理部に実行させるための請求項1に記載の分散データ管理プログラム。 - 移動する前記指定データの実体を受信するステップを前記処理部に実行させ、
前記移動先データ集合の識別子が前記移動元データ集合の識別子と異なるならば、
前記移動先データ集合に前記指定データの実体を設定するステップと、
前記移動先データ集合に前記指定データの前記移動元データ集合の識別子の情報を設定するステップと、を前記処理部に実行させ、
前記移動先データ集合の識別子が前記移動元データ集合の識別子と同一ならば、
前記移動先データ集合に前記指定データの実体を設定するステップと、
前記移動先データ集合の前記指定データから前記移動元データ集合の識別子の情報を削除するステップと、
を前記処理部に実行させるための請求項1または請求項2に記載の分散データ管理プログラム。 - 前記指定データを前記移動先データ集合に移動する前記移動要求には、前記指定データの識別子、前記指定データ集合の識別子、および、前記移動先データ集合の識別子が含まれている、
ことを特徴とする請求項1ないし請求項3のいずれか1項に記載の分散データ管理プログラム。 - 前記処理部は更に、
各前記データの識別子を参照して当該データが格納されている前記データ集合を特定する手段を備え、
前記指定データを前記移動先データ集合に移動する前記移動要求には、前記指定データの識別子と前記移動先データ集合の識別子とが含まれている、
ことを特徴とする請求項1ないし請求項4のいずれか1項に記載の分散データ管理プログラム。 - 前記指定データへのアクセス要求を受信するステップと、
前記指定データを含む前記指定データ集合の前記格納先ノードを特定するステップと、
を前記処理部に実行させ、
更に前記格納先ノードが前記自ノード以外ならば、前記格納先ノードに前記アクセス要求を転送するステップを、前記格納先ノードが前記自ノードならば、前記指定データ集合から前記指定データに係る情報を取得するステップを前記処理部に実行させ、
更に、前記指定データの実体が存在したならば、前記アクセス要求を実行するステップを前記処理部に実行させ、前記指定データの実体が存在しなかったならば、前記指定データの前記移動先データ集合の識別子の情報に基づいて、前記移動先ノードを決定するステップと、前記移動先ノードに前記アクセス要求を転送するステップと、
を前記処理部に実行させるための請求項1ないし請求項5のいずれか1項に記載の分散データ管理プログラム。 - 複数のノードである分散データ管理装置が協調して動作する分散データ管理システムに於いて、
1または複数のデータを含むデータ集合および当該データ集合の識別子を格納する記憶部と、
指定データを移動先データ集合に移動する移動要求を受信すると、前記指定データを含む指定データ集合の格納先ノードを特定する転送先決定部と、
前記格納先ノードが自ノード以外ならば、前記格納先ノードに前記移動要求を転送する信号転送部と、
前記格納先ノードが前記自ノードならば、前記移動先データ集合の識別子を参照して前記指定データの移動先ノードを特定して、前記移動先ノードの前記移動先データ集合に前記指定データの実体を移動して、前記指定データの移動元データ集合の識別子を参照して移動元ノードを特定するデータ移動部と、
前記自ノードが前記移動元ノードでないならば、前記移動元ノードに対して前記移動元データ集合に含まれる移動元データに、少なくとも前記移動先データ集合の識別子の情報を設定する要求を送信するデータ保存部と、
を備えることを特徴とする分散データ管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012220477A JP5903022B2 (ja) | 2012-10-02 | 2012-10-02 | 分散データ管理プログラムおよび分散データ管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012220477A JP5903022B2 (ja) | 2012-10-02 | 2012-10-02 | 分散データ管理プログラムおよび分散データ管理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014074944A JP2014074944A (ja) | 2014-04-24 |
JP5903022B2 true JP5903022B2 (ja) | 2016-04-13 |
Family
ID=50749079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012220477A Expired - Fee Related JP5903022B2 (ja) | 2012-10-02 | 2012-10-02 | 分散データ管理プログラムおよび分散データ管理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5903022B2 (ja) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5124733B2 (ja) * | 2006-04-25 | 2013-01-23 | キヤノンItソリューションズ株式会社 | サーバ装置および情報共有システムおよびプログラムおよび記録媒体 |
-
2012
- 2012-10-02 JP JP2012220477A patent/JP5903022B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2014074944A (ja) | 2014-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6984097B2 (ja) | エッジプロキシを持つコンテンツデリバリネットワークアーキテクチャ | |
US8082290B2 (en) | Intelligent establishment of peer-to-peer communication | |
JP4938074B2 (ja) | リソースの位置情報の要求方法、当該方法のためのユーザノードおよびサーバ | |
EP3087722B1 (en) | Peer-to-peer network prioritizing propagation of objects through the network | |
WO2013078875A1 (zh) | 内容的管理方法的方法、装置和系统 | |
US8140645B2 (en) | Index server support to file sharing applications | |
US10305729B2 (en) | Systems and methods of providing an edge cloud storage and caching system operating over a local area network | |
JP2009501456A (ja) | ピア・データ転送の統合 | |
JP2012078902A (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
CN111352716B (zh) | 一种基于大数据的任务请求方法、装置、系统及存储介质 | |
CN109547508B (zh) | 一种实现资源访问的方法、装置及系统 | |
US9760370B2 (en) | Load balancing using predictable state partitioning | |
JP2011028547A (ja) | 仮想マシン起動端末および仮想マシン起動プログラム | |
JP2012514278A (ja) | インデックスサーバとその方法 | |
US20220012110A1 (en) | Networking-related system call interception and modification | |
JP5544521B2 (ja) | 状態管理方法、処理装置、および状態管理プログラム | |
JP5903022B2 (ja) | 分散データ管理プログラムおよび分散データ管理装置 | |
JPWO2013186837A1 (ja) | 情報処理システム、方法およびプログラム | |
EP4057577B1 (en) | Addressing method and addressing apparatus | |
JP2007328736A (ja) | リソース検索システム | |
CN103685367A (zh) | 离线下载系统和方法 | |
JP5690296B2 (ja) | 負荷分散プログラムおよび負荷分散装置 | |
JP5690287B2 (ja) | 負荷分散プログラムおよび負荷分散装置 | |
CN104537081A (zh) | 文件管理系统和方法 | |
JP5452516B2 (ja) | 分散処理装置、および、分散処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20140502 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20140528 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150130 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20151026 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20151117 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160108 |
|
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: 20160308 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160311 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5903022 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |