JP2015165373A - Node and program - Google Patents
Node and program Download PDFInfo
- Publication number
- JP2015165373A JP2015165373A JP2014040471A JP2014040471A JP2015165373A JP 2015165373 A JP2015165373 A JP 2015165373A JP 2014040471 A JP2014040471 A JP 2014040471A JP 2014040471 A JP2014040471 A JP 2014040471A JP 2015165373 A JP2015165373 A JP 2015165373A
- Authority
- JP
- Japan
- Prior art keywords
- data
- node
- nodes
- predetermined direction
- acquisition unit
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
本発明は、複数サーバを並べたクラスタ構成において、分散システムを構成するサーバの追加や削除が発生した際に、データを保持している可能性があるサーバを特定するノードおよびプログラムに関する。 The present invention relates to a node and a program for identifying a server that may hold data when a server constituting a distributed system is added or deleted in a cluster configuration in which a plurality of servers are arranged.
近年、クラウドコンピューティングの隆盛に伴い、多量のデータの処理や保持を効率的に行うことが求められている。そこで、複数のサーバを協調動作させることにより効率的な処理を実現する分散処理技術が発展している。 In recent years, with the rise of cloud computing, it has been required to efficiently process and retain a large amount of data. Thus, distributed processing technology has been developed that realizes efficient processing by operating a plurality of servers in a coordinated manner.
分散処理を行う際には、クラスタを構成する各サーバ(以下、「ノード」と称する。)が担当するデータを決定する必要がある。このとき、クラスタ全体での処理能力を高めるためには、各ノードが担当するデータ数(データ量)は平均化されていることが望ましい。 When performing distributed processing, it is necessary to determine the data handled by each server (hereinafter referred to as “node”) constituting the cluster. At this time, in order to increase the processing capacity of the entire cluster, it is desirable that the number of data (data amount) handled by each node is averaged.
代表的なデータの管理手法として、各データのkeyをハッシュ関数にかけた値(以下、「hash(key)」と称する。)をノード数Nで割った余り、すなわち「hash(key) mod N」を番号として持つノードがデータを管理する手法がある。この場合、各ノードに事前に「0」から「N−1」までの番号を割り当てていることが前提となる。このような管理手法を用いた場合、ノードが追加・離脱すると、Nの値が変化して、多くのデータについて、そのデータの保存を担当するノードが変更になるため、担当するデータを再配置することが必要になる。 As a representative data management technique, a remainder obtained by dividing a value obtained by multiplying the key of each data by a hash function (hereinafter referred to as “hash (key)”) by the number of nodes N, that is, “hash (key) mod N”. There is a method in which a node having a number as a number manages data. In this case, it is assumed that numbers “0” to “N−1” are assigned to each node in advance. When such a management method is used, when a node is added or removed, the value of N changes and the node responsible for storing that data changes for many data. It becomes necessary to do.
そこで、ノードの追加・離脱に伴い担当するノードが変更になるデータ数を約1/Nに抑える方法として、コンシステントハッシュ(Consistent Hashing)法(非特許文献1参照)を用いた管理手法がある。このコンシステントハッシュ法は、Amazon Dynamo(非特許文献1参照)等において用いられている。 Therefore, there is a management method using a consistent hashing method (see Non-Patent Document 1) as a method of suppressing the number of data that the node in charge changes with the addition / detachment of the node to about 1 / N. . This consistent hash method is used in Amazon Dynamo (see Non-Patent Document 1) and the like.
このコンシステントハッシュ法を用いたデータ管理手法では、ノードとデータの双方にID(IDentifier)を割り当てる。そして、データのIDから閉じたID空間を時計回りに辿った場合に最初に遭遇するノードをそのデータの担当とする。ノードに対するIDの与え方の例としては、IPアドレスをハッシュ関数にかけた値(hash(IPアドレス))が挙げられる。 In this data management method using the consistent hash method, IDs (IDentifiers) are assigned to both nodes and data. Then, when the closed ID space is traced clockwise from the ID of the data, the first node encountered is assigned to the data. An example of how to give an ID to a node is a value (hash (IP address)) obtained by multiplying an IP address by a hash function.
クラスタ構成の分散システムでは、各ノードの処理性能が等しい場合には、各ノードが担当するデータ量を等しくする、すなわち、コンシステントハッシュ法のID空間における、ノード間の距離(以下、「ノードの担当範囲」または「ハッシュID範囲」と称する。)を等しくすることが望ましい。ノード間距離を等しく設定しても、ノードの参加や離脱が発生すると偏りが生じる。その影響を分散させるために、各ノードに仮想的に複数のID(仮想ID)を持たせる手法が用いられている(非特許文献1参照)。各ノードが複数の仮想IDを持つことで、仮想ID毎の担当範囲は異なっていても、大数の法則に従いノードの担当範囲は平均化される。 In a distributed system with a cluster configuration, when the processing performance of each node is equal, the amount of data handled by each node is made equal, that is, the distance between nodes (hereinafter referred to as “node's It is desirable to equalize the “responsible range” or “hash ID range”. Even if the distance between nodes is set to be equal, a bias occurs when a node joins or leaves. In order to disperse the influence, a method of virtually giving each node a plurality of IDs (virtual IDs) is used (see Non-Patent Document 1). Since each node has a plurality of virtual IDs, even if the assigned range for each virtual ID is different, the assigned range of the node is averaged according to the law of large numbers.
図15は、複数のノードをクラスタ構成にした場合に、各ノードをコンシステントハッシュのID空間(環状のID空間)上に配置し、データを管理する手法(以下、「コンシステントハッシュ法によるデータ管理手法」と称する。)を説明するための図である(特許文献2参照)。なお、ここで、データの管理とは、各ノードが行うデータの取得や更新、データの複製を行うこと等を意味する。 FIG. 15 shows a method of managing data by arranging each node on a consistent hash ID space (annular ID space) when a plurality of nodes are in a cluster configuration (hereinafter referred to as “consistent hash data”). It is a figure for demonstrating a management method "(refer patent document 2). Here, the management of data means acquisition and update of data performed by each node, replication of data, and the like.
図15に示すように、コンシステントハッシュ法では、各ノードがコンシステントハッシュのID空間(以下、単に「ID空間」と称する場合がある。)にマッピングされる。そして、各ノードは、図15に示すように、自身が担当するハッシュIDの範囲(「ハッシュID範囲」)を持っている。あるデータを取得する際は、データを一意に特定するkey情報をハッシュ関数にかけ、導出されたコンシステントハッシュのID空間上の位置(図15においては、黒丸(●)で表示)から所定の方向(図15では時計回り)に進んで最初に遭遇するノードからデータを取得する(図15においては、矢印(→)で表示)。例えば、図15において、データAについては、ID空間上を時計回りに進み最初に遭遇したノード「1」が担当となる。なお、更新時も同様にノードを特定する。 As shown in FIG. 15, in the consistent hash method, each node is mapped to an ID space of a consistent hash (hereinafter, simply referred to as “ID space”). Each node has a range of hash IDs that it is in charge of (“hash ID range”), as shown in FIG. When acquiring certain data, key information that uniquely identifies the data is applied to the hash function, and a predetermined direction from the position in the ID space of the derived consistent hash (indicated by a black circle (●) in FIG. 15). Data is acquired from the first node encountered (clockwise in FIG. 15) (indicated by an arrow (→) in FIG. 15). For example, in FIG. 15, for data A, the node “1” that first encounters in the clockwise direction in the ID space is in charge. Note that the node is specified in the same way at the time of update.
また、複製データは、ID空間上で時計回り(若しくは反時計回り)に隣のノードに作成する(冗長数が「2」の場合)。図15では、ノード「1」においてデータAの更新を行った場合、ノード「2」にデータAの複製を作成する。このようにすることにより、ノード「1」が故障等の理由でクラスタから離脱しても、データへの問い合わせはデータAの複製を持つノード「2」に振り分けられるため、ノード「2」において処理を継続することが可能となる。 In addition, the duplicate data is created in the adjacent node clockwise (or counterclockwise) in the ID space (when the redundancy number is “2”). In FIG. 15, when the data A is updated at the node “1”, a copy of the data A is created at the node “2”. By doing so, even if the node “1” leaves the cluster due to a failure or the like, the data inquiry is distributed to the node “2” having a copy of the data A. Can be continued.
次に、コンシステントハッシュ法によるデータ管理手法において、クラスタに新たなノードが参加(追加)する場合の動作について説明する。
図16は、コンシステントハッシュのID空間上に、新たにノードが参加した場合の動作例を説明するための図である。
Next, an operation when a new node joins (adds) a cluster in the data management method based on the consistent hash method will be described.
FIG. 16 is a diagram for explaining an operation example when a new node joins the consistent hash ID space.
図16においては、図15に示すノードの配置において、ノード「1」とノード「4」との間に、ノード「5」が新たに配置された例を示している。
コンシステントハッシュのID空間にノード「5」が参加した後、ノード「5」がデータを保持するハッシュID範囲に位置するデータの問い合わせがあった場合、参加直後のノード「5」はデータを持っていないため、ノード「5」の参加以前に該当データを担当していたノード「1」からデータを引き継いで処理を行う。その後、ノード「5」はノード「4」の複製データ(図16においては、「データDの複製」と表記。)を保持し、ノード「1」はノード「4」のハッシュID範囲のデータの複製(「データDの複製」)を保持する必要がなくなるため、破棄を行う。また、ノード「2」は、ノード「1」のハッシュID範囲ではなくなった「データAの複製」を保持する必要がなくたるため、破棄を行う。以降は、図15の複製作成処理と同様に動作する。
FIG. 16 shows an example in which the node “5” is newly arranged between the nodes “1” and “4” in the node arrangement shown in FIG.
After node “5” participates in the consistent hash ID space, if there is an inquiry about data located in the hash ID range in which node “5” holds data, node “5” immediately after participation has data Therefore, the data is taken over from the node “1” that was in charge of the data before the participation of the node “5”, and the process is performed. Thereafter, the node “5” holds the duplicate data of the node “4” (indicated as “duplicate data D” in FIG. 16), and the node “1” is the data of the hash ID range of the node “4”. Since it is no longer necessary to hold a duplicate ("Duplicate Data D"), it is discarded. Further, the node “2” does not need to hold “duplicate data A” that is no longer in the hash ID range of the node “1”, and therefore discards it. Thereafter, the operation is the same as the copy creation process of FIG.
また、ノードの参加または離脱後のID空間に従ったデータ配置への置き換えを行うデータの再配置を一度に実行すると、新たに参加したノード「5」の負荷が高くなり通常サービスに影響を及ぼす可能性がある。このため、データに対する処理が発生したタイミングや、負荷を調整しながらバックグラウンドで処理を行うことが望ましい。
クラスタ構成の分散システムでは、トラヒックや利用者数の変化に合わせて、クラスタを構成するサーバ数を調整することで、クラスタの処理能力を柔軟に変更可能であるという利点がある。
In addition, if data relocation is performed at one time to replace data with the data space according to the ID space after joining or leaving the node, the load on the newly joined node “5” increases and affects the normal service. there is a possibility. For this reason, it is desirable to perform processing in the background while adjusting the processing timing for data and the load.
In a distributed system having a cluster configuration, there is an advantage that the processing capacity of the cluster can be flexibly changed by adjusting the number of servers constituting the cluster in accordance with changes in traffic and the number of users.
コンシステントハッシュ法によるデータ管理手法は、クラスタを構成するノードの追加や離脱に伴うデータの移行が全データに対する一部のデータに限られるため、クラスタ構成の動的な変更(ノードの追加・離脱)が頻繁に起こるシステムに対して有効である。また、クラスタを構成するノードの障害に備えて、原本データを保持するノード以外の1つ以上のノードに対して複製データを保持させることで、耐故障性を高めている。 The data management method based on the consistent hash method dynamically changes the cluster configuration (node addition / removal) because the data migration associated with the addition or removal of nodes constituting the cluster is limited to a portion of all data. ) Is effective for a system that occurs frequently. Further, in preparation for a failure of a node constituting the cluster, fault tolerance is improved by holding one or more nodes other than the node holding the original data to hold the duplicate data.
ところで、クラスタを構成するノードの参加または離脱があった場合、データを探索し、クラスタを構成する他ノードから取得して処理を行う必要がある。この場合、クラスタへのノードの参加または離脱からバックグラウンドで行われるデータ再配置完了までの間、データを保持しているノードとデータへの問い合わせを受けるノードが異なる可能性がある。この際、問い合わせを受けたノードは、図16を参照して述べたようにデータを引き継ぎ処理を行うこととなる。しかしながら、問い合わせ先が限定できない場合、クラスタを構成する全ノードに対する問い合わせが必要となり、データを取得する負荷が信号処理に影響を与えるおそれがある。また、データを保持している可能性のあるノードが特定できない場合には、全ノードに対してデータ有無を問い合わせるまでデータの有無を正確に判定することはできない。なお、動的構成変更(動的にノードが参加または離脱)が発生した場合にも、確実にデータ一貫性を担保したい場合には、上記のような問い合わせが必要になる。 By the way, when a node constituting a cluster joins or leaves, it is necessary to search for data, obtain it from another node constituting the cluster, and perform processing. In this case, there is a possibility that the node that holds the data and the node that receives the inquiry about the data are different from the joining or leaving of the node to the cluster to the completion of the data relocation performed in the background. At this time, the node that received the inquiry performs the data takeover process as described with reference to FIG. However, when the inquiry destination cannot be limited, an inquiry to all the nodes constituting the cluster is required, and the load for acquiring data may affect the signal processing. If a node that may hold data cannot be identified, the presence or absence of data cannot be accurately determined until all nodes are inquired about the presence or absence of data. In addition, even when a dynamic configuration change (a node dynamically joins or leaves) occurs, inquiries as described above are required to ensure data consistency.
このような背景を鑑みて本発明がなされたのであり、本発明は、クラスタを構成するノードの参加または離脱があった場合、全ノードに対する問い合わせを不要にしつつデータの一貫性を保持し、データを保持している可能性があるノードを効率良く探索することを可能とするノードおよびプログラムを提供することを課題とする。
プログラムを提供することを課題とする。
The present invention has been made in view of such a background, and in the case where a node constituting a cluster joins or leaves, the present invention maintains data consistency while eliminating the need for an inquiry to all nodes. It is an object of the present invention to provide a node and a program that can efficiently search for a node that may hold a message.
The challenge is to provide a program.
前記した課題を解決するため、請求項1に記載の発明は、環状のID(IDentifier)空間に、処理対象の複数のデータのID、および、クラスタを構成し前記データに関するリクエストを処理する複数のノードのIDが、割り当てられ、前記ID空間において前記データのIDから所定方向回りに辿って最初に遭遇した前記ノードまでの間に位置する前記データを当該ノードが原本データとして保持するとともに、前記クラスタ内の自身以外の他のノードに前記原本データの複製である複製データを保持させる分散システムの前記ノードであって、メッセージ処理に必要なデータを保持していなかった場合、前記データを保持している可能性のあるノードを特定し、他のノードに要求してデータを取得するデータ取得部と、ノードの参加または離脱に伴い、自身が保持しているデータのうち、別のノードへと移行する、または、新たに複製データを配置するデータを特定して、当該特定したデータを再冗長化・再配置するデータ再冗長化・再配置部と、を備え、前記データ取得部は、前記原本データを持っているノードに信号を振り分けられる状況であるデータ再冗長化・再配置完了までに発生したノード参加・離脱台数の合計の値ΔNを保持し、前記データのKey情報をハッシュ値演算した結果であるデータIDを算出するととともに、算出した前記データIDと自身のノードIDの間のノード数αを算出し、前記値ΔNと前記ノード数αの比較結果を基に、ID空間上の自身のノードIDから前記値ΔN台分のノードに対して問い合わせてデータを取得することを特徴とする。
In order to solve the above-described problem, the invention described in
このようにすることで、クラスタを構成するノードの参加または離脱があった場合、全ノードに対する問い合わせを不要にしつつデータの一貫性を保持し、データを保持している可能性があるノードを効率良く探索することができる。 In this way, when a node that constitutes a cluster joins or leaves, it is possible to maintain the consistency of data while eliminating the need for inquiries to all nodes, and to improve the efficiency of nodes that may hold data. You can search well.
請求項2に記載の発明は、前記データ取得部が、α=0の場合、前記ID空間上で前記複製データが作成される方向である所定方向回りに前記値ΔN台分探索してデータを取得し、α≦ΔNの場合、前記所定方向回りに前記値ΔN台分探索し、前記所定方向回りと逆方向にα台分探索してデータを取得し、α>ΔNの場合、前記所定方向回りと、当該所定方向回りと逆方向とにそれぞれ前記値ΔN台分探索してデータを取得することを特徴とする。 According to a second aspect of the present invention, when α = 0, the data acquisition unit searches the ID space for the value ΔN around a predetermined direction that is a direction in which the duplicate data is created. If α ≦ ΔN, search for the value ΔN around the predetermined direction, and search for α units around the predetermined direction to obtain data. If α> ΔN, the predetermined direction It is characterized in that data is obtained by searching for the value ΔN around the rotation direction and around the predetermined direction.
このようにすることで、クラスタを構成するノードの参加または離脱があった場合、全ノードに対する問い合わせを不要にしつつデータの一貫性を保持し、データを保持している可能性があるノードを効率良く探索することができる。 In this way, when a node that constitutes a cluster joins or leaves, it is possible to maintain the consistency of data while eliminating the need for inquiries to all nodes, and to improve the efficiency of nodes that may hold data. You can search well.
請求項3に記載の発明は、前記データ取得部が、前記所定方向回りと逆方向の前記値ΔN台分の問い合わせについて、自身のノードIDと前記データIDの間に存在するノードに対してのみ行うことを特徴とする。 According to a third aspect of the present invention, the data acquisition unit only asks a node existing between its own node ID and the data ID for an inquiry for the value ΔN in the direction opposite to the predetermined direction. It is characterized by performing.
このようにすることで、クラスタを構成するノードの参加または離脱があった場合、全ノードに対する問い合わせを不要にしつつデータの一貫性を保持し、データを保持している可能性があるノードを効率良く探索することができる。また、所定方向回りと逆方向にΔN台分の問い合わせについては、自身のノードIDとデータIDの間に存在するノードに対してのみ行えばよい。 In this way, when a node that constitutes a cluster joins or leaves, it is possible to maintain the consistency of data while eliminating the need for inquiries to all nodes, and to improve the efficiency of nodes that may hold data. You can search well. Inquiries for ΔN units in the direction opposite to the predetermined direction need only be made for nodes existing between the node ID and the data ID.
請求項4に記載の発明は、前記データ取得部が、前記原本データを保持していない場合において、前記複製データの保持の有無を判定し、前記複製データを保持している場合、自身のノードIDのID空間上の前記所定方向回りと逆方向に前記値ΔN台分のノードに対して問い合わせてデータを取得することを特徴とする。 According to a fourth aspect of the present invention, when the data acquisition unit does not hold the original data, the data acquisition unit determines whether or not the duplicate data is held. Data is obtained by inquiring of the nodes of the value ΔN in the direction opposite to the predetermined direction on the ID space of the ID.
このようにすることで、原本データなしで複製データありの場合、所定方向回りと逆方向のみにΔN台分問い合わせればよく、問い合わせ範囲を減らすことができ、データを保持している可能性があるノードをより効率良く探索することができる。 In this way, when there is duplicate data without original data, it is sufficient to inquire ΔN units only in the direction opposite to the predetermined direction, the inquiry range can be reduced, and there is a possibility that the data is retained. A certain node can be searched more efficiently.
請求項5に記載の発明は、前記データ取得部が、前記値ΔNと前記ノード数αの比較結果を基に、α≦ΔNの場合、前記所定方向回りと逆方向に前記α台分探索してデータを取得し、α>ΔNの場合、前記所定方向回りと逆方向に前記値ΔN台分探索してデータを取得することを特徴とする。 According to a fifth aspect of the present invention, the data acquisition unit searches for the α units in the direction opposite to the predetermined direction when α ≦ ΔN based on the comparison result between the value ΔN and the number of nodes α. If α> ΔN, data is obtained by searching for the value ΔN in the direction opposite to the predetermined direction.
このようにすることで、原本データなしで複製データありの場合、所定方向回りと逆方向のみにΔN台分問い合わせればよく、問い合わせ範囲を減らすことができ、データを保持している可能性があるノードをより効率良く探索することができる。また、所定方向回りと逆方向にΔN台分の問い合わせについては、自身のノードIDとデータIDの間に存在するノードに対してのみ行えばよい。 In this way, when there is duplicate data without original data, it is sufficient to inquire ΔN units only in the direction opposite to the predetermined direction, the inquiry range can be reduced, and there is a possibility that the data is retained. A certain node can be searched more efficiently. Inquiries for ΔN units in the direction opposite to the predetermined direction need only be made for nodes existing between the node ID and the data ID.
請求項6に記載の発明は、コンピュータを請求項1ないし請求項5のいずれか1項に記載のノードとして機能させるためのプログラムとした。
The invention described in claim 6 is a program for causing a computer to function as the node described in any one of
これによれば、このようなプログラムを実装したコンピュータを本発明のノードとして機能させることができる。 According to this, a computer in which such a program is installed can be caused to function as a node of the present invention.
本発明によれば、クラスタを構成するノードの参加または離脱があった場合、全ノードに対する問い合わせを不要にしつつデータの一貫性を保持し、データを保持している可能性があるノードを効率良く探索することを可能とするノードおよびプログラムを提供することができる。 According to the present invention, when a node constituting a cluster joins or leaves, it is possible to efficiently maintain a node that may hold data while maintaining consistency of data while making an inquiry to all nodes unnecessary. Nodes and programs that can be searched can be provided.
(第1の実施形態)
次に、本発明を実施するための形態(以下、「本実施形態」と称する。)について説明する。
以下の説明において、複製データはコンシステントハッシュのID空間上で時計回りのノードに作成するものとする。したがって、ノード検索において、右回りとはID空間上時計回り、左周りとはID空間上反時計回りを示す。これに従い、右側とは自ノードからみてID空間上の右側を、左側とは自ノードからみてID空間上の左側を示す。なお、右側、左側を、右隣、左隣、また単に右、左と記述する場合がある。
(First embodiment)
Next, a mode for carrying out the present invention (hereinafter referred to as “the present embodiment”) will be described.
In the following description, it is assumed that duplicate data is created in a clockwise node on the consistent hash ID space. Therefore, in the node search, clockwise means clockwise in the ID space and counterclockwise means counterclockwise in the ID space. Accordingly, the right side indicates the right side in the ID space as viewed from the own node, and the left side indicates the left side in the ID space as viewed from the own node. In some cases, the right side and the left side are described as right adjacent, left adjacent, or simply right and left.
[分散システムの全体構成]
まず、本発明の第1の実施形態に係るノード1を含む分散システム1000の全体構成について説明する。
図1は、本発明の第1の実施形態に係るノード1を含む分散システム1000の全体構成を示す図である。
[Overall configuration of distributed system]
First, the overall configuration of the distributed
FIG. 1 is a diagram showing an overall configuration of a distributed
この分散システム1000は、各クライアント2からのメッセージを受け付けるロードバランサ3と、振り分け装置4と、クラスタを構成する複数のノード1とを含んで構成される。ロードバランサ3は、クライアント2からのメッセージを単純なラウンドロビン法等により各振り分け装置4に振り分ける。振り分け装置4は、受信したメッセージを、例えば、コンシステントハッシュ法等に基づき、各ノード1に振り分ける。各ノード1では、メッセージ処理を行い、クライアント2にサービスを提供する。
The distributed
分散システム1000のノード1は、コンシステントハッシュのID空間に、処理対象の複数のデータのID、および、クラスタを構成しデータに関するリクエストを処理する複数のノードのIDが、割り当てられ、ID空間においてデータのIDから所定方向回りに辿って最初に遭遇したノードまでの間に位置するデータを当該ノードが原本データとして保持するとともに、クラスタ内の自身以外の他のノードに原本データの複製である複製データを保持させる。
The
図1においては、振り分け装置4とノード1とを別装置として記載したが、同一サーバ上で別々の機能として動作させることも可能である。また、振り分け装置4も、図1に示すように、クラスタ構成をとることができる。さらに、ロードバランサ3が存在せず、クライアント2から任意の振り分け装置4にメッセージを送信することも可能である。
In FIG. 1, the
<処理概要>
一般に、データは他のノード(サーバ)に一定ルールに従って複製してある。ノードの参加または離脱が起きた時、原本データと複製データとの一貫性を保つために、データの移動等(再配置)が行われる。その最中に、データアクセス(問い合わせ)を受けた場合に、そのデータを保持するサーバを特定するために全ノードにデータ有無を問い合わせる事態が発生する場合があり、時間がかかったり、または、負荷が高くなってしまう。
本発明の第1の実施形態に係るノード1は、データ有無を問い合わせるサーバの範囲を限定するようにする。具体的には、最初に問い合わせを受けたノードから、高々、参加または離脱されたノードの台数ΔN台分左右(データおよびノードのIDの空間上におけるノード群の順序におけるΔN台分の左右)に問い合わせる。
このようにすることにより、コンシステントハッシュ法を用いたクラスタシステムにおいて、データを保有するノードを効率よく探すことが可能となる。
<Process overview>
In general, data is replicated to other nodes (servers) according to certain rules. When a node joins or leaves, data movement or the like (relocation) is performed in order to maintain consistency between the original data and the replicated data. In the meantime, when data access (inquiry) is received, there may be a situation in which all nodes are inquired about the presence of data in order to identify the server holding the data, which takes time or loads Becomes higher.
The
By doing so, it becomes possible to efficiently search for a node that holds data in a cluster system using the consistent hash method.
<ノード>
次に、本発明の第1の実施形態に係る分散システム1000を構成するノード1について、具体的に説明する。
図2は、本発明の第1の実施形態に係るノード1の構成例を示す機能ブロック図である。
ノード1は、図1に示したように、各振り分け装置4と通信可能に接続されるとともに、クラスタを構成する自身以外の他のノード1とも通信可能に接続される。そして、クライアント2からのメッセージを受信し、サービスを提供する。また、このノード1は、自身が原本データとして保持する情報を、後記する複製データの配置のための所定の条件を満たす他のノード1に対して送信することにより、他のノード1に複製データを保持させる。
このノード1は、図2に示すように、制御部10と、入出力部11と、記憶部12とを含んで構成される。
<Node>
Next, the
FIG. 2 is a functional block diagram showing a configuration example of the
As shown in FIG. 1, the
As illustrated in FIG. 2, the
入出力部11は、振り分け装置4や、自身以外の他のノード1との間の情報の入出力を行う。また、この入出力部11は、通信回線を介して情報の送受信を行う通信インタフェースと、不図示のキーボード等の入力手段やモニタ等の出力手段等との間で入出力を行う入出力インタフェースとから構成される。
The input /
制御部10は、ノード1全体の制御を司り、ノード識別子管理部101、メッセージ処理部102、データ取得部103、死活監視部104、及びデータ再冗長化・再配置部105を含んで構成される。なお、この制御部10は、例えば、記憶部12に格納されたプログラムをCPU(Central Processing Unit)がRAM(Random Access Memory)に展開し実行することで実現される。
The control unit 10 controls the
<ノード識別子管理部>
ノード識別子管理部101は、クラスタへのノードの追加や離脱が発生した際に、クラスタを構成するノードの識別子情報(コンシステントハッシュ法ではID空間上のノードの情報一覧)を更新し、ノード識別子管理テーブル100として管理する。
なお、ノード識別子管理部101においてノード識別子を付与することも可能であるし、他のノードや外部システムで計算したノード識別子管理テーブルを受信して登録することも可能である。ここで、コンシステントハッシュ法で仮想IDを用いる場合、ノード識別子は仮想ID毎に保持する。
<Node identifier manager>
The node
Note that the node
<ノード識別子管理テーブル>
図3は、本発明の第1の実施形態に係るノード識別子管理テーブル100のデータ構成例を示す図である。図3に示すように、ノード識別子管理テーブル100は、クラスタを構成する各ノード1のノード識別子110、およびサーバ名などの識別子としてのアドレスを含んで構成される。
<Node identifier management table>
FIG. 3 is a diagram illustrating a data configuration example of the node identifier management table 100 according to the first embodiment of the present invention. As shown in FIG. 3, the node identifier management table 100 includes a
このノード識別子110は、コンシステントハッシュ法のID空間上でのノードIDに対応する。また、コンシステントハッシュ法において仮想IDを用いる場合には、ノード識別子110は、仮想ID毎に割り当てられ、ノード識別子管理テーブル100に登録される。そして、このノード識別子管理テーブル100では、例えば、コンシステントハッシュのID空間におけるID(または仮想ID)を昇順に並べて管理する。つまり、ノード識別子管理テーブル100において、ノード識別子110(ノードID)を昇順に並べたときの自身のノード1の行の次の行のノード1が、ID空間上での右隣(時計回りに次)のノード1となる。
例えば、図3においては、コンシステントハッシュのID空間に基づくノード識別子が「3ab946129」は、アドレス(例えば、IPアドレス)「192.168.0.24」に対応付けられる。
This
For example, in FIG. 3, the node identifier “3ab946129” based on the consistent hash ID space is associated with an address (eg, IP address) “192.168.0.24”.
アドレス120は、クラスタを構成する各ノード1の識別子を表す。このアドレス120は、ノード1それぞれのアドレス(例えば、IPアドレス)に対応付けられて記憶される。
The
なお、このノード識別子管理テーブル100のノード識別子110は、特定のノード(マスタノード)のノード識別子管理部101が各ノード1に対して付与することもできる。また、ノード1それぞれのノード識別子管理部101でノード識別子を付与することも可能である。他のノードや外部システムで計算したノード識別子管理テーブル100を受信して登録することも可能である。
さらに、このノード識別子管理テーブル100には、処理で必要となる他の付加情報(例えば、各ノード1のクラスタへの参加日時等)を加えることも可能である。
Note that the
Furthermore, it is also possible to add other additional information required for processing (for example, the date and time of joining each
<メッセージ処理部>
図2に戻り、メッセージ処理部102は、振り分け装置4から振り分けられたメッセージを受信し、そのメッセージの処理を実行し、処理結果をクライアント2に返信することにより、サービスを提供する。
また、メッセージ処理部102は、他のノード(ここではノード識別子を昇順に並べた時の次のノード=ID空間の右隣のノード)にデータの複製を行うことでデータの冗長化を実現する。複製データを複数持つ場合には、さらに他のノード(ここではノード識別子を昇順に並べた時のさらに次のノード=ID空間の2つ右隣のノード)にデータの複製を行う。
<Message processing part>
Returning to FIG. 2, the
Further, the
<データ取得部>
データ取得部103は、メッセージ処理に必要なデータを保持していなかった場合、データを保持している可能性のあるノードを特定し、他のノードに要求してデータを取得する。本実施形態では、データ取得部103は、データを保持している可能性のあるノードを特定し、問い合わせを行うノードを絞り込むことで、全ノードへの問い合わせが発生し、無駄なトラヒックの発生や処理の遅延を招くことを防ぐようにする。
<Data acquisition unit>
If the
データ取得部103は、原本データを持っているノードに確実に信号を振り分けられる状況であるデータ再冗長化・再配置の完了までに発生したノード参加・離脱台数の合計ΔNを求めて保持する。ここで、データ再冗長化・再配置は、ノードの参加または離脱によって一時的にデータの配置が崩れたものを再び配置し直すもので、再冗長化・再配置が完了すると、原本データを持っているノードに確実に信号を振り分けられる状況となる。また、データ取得部103は、データのKey情報をハッシュ値演算した結果であるデータIDを算出するととともに、算出したデータIDと自身のノードIDの間のノード数αを算出し、ΔNとノード数αの比較結果を基に、自身のノードIDのID空間上の左、右、または左右にΔN台分のノードに対して問い合わせてデータを取得する。
The
具体的には、データ取得部103は、上記ノード数α=0の場合、ID空間上で複製データが作成される方向である所定方向回りにΔN台分探索してデータを取得し、α≦ΔNの場合、所定方向回りにΔN台分探索し、所定方向回りと逆方向にα台分探索してデータを取得し、α>ΔNの場合、所定方向回りと、当該所定方向回りと逆方向とにそれぞれΔN台分探索してデータを取得する。ここで、図11を参照して後記するように、後記データ取得部103は、原本データなしの場合、所定方向回りと逆方向のΔN台分の問い合わせについては、自身のノードIDとデータIDの間に存在するノードに対してのみ行う。なお、問い合わせノードの特定方法の詳細については、後記する。
Specifically, when the number of nodes α = 0, the
<死活監視部>
死活監視部104は、他のノードと常に死活監視信号のやり取りを実施しており、クラスタを構成するノードの追加や離脱を検出している。死活監視部104は、クラスタを構成するノードの追加や離脱を検出した場合には、自ノードあるいは他ノードのノード識別子管理部101、あるいはノード識別子110を設定している外部システムに通知を行い、ノード識別子管理テーブル100へと反映する。
<Life and death monitoring department>
The life and
<死活監視テーブル>
図4は、本発明の第1の実施形態に係る死活監視テーブル200のデータ構成例を示す図である。
死活監視テーブル200は、1台の物理装置を単位として作成され、監視対象となるノード1(サーバ)がリスト化されたものである。死活監視テーブル200には、例えば、サーバ名とそれに紐付くアドレス(IPアドレス)とが記憶される。
<Life and death monitoring table>
FIG. 4 is a diagram illustrating a data configuration example of the life and death monitoring table 200 according to the first embodiment of the present invention.
The life and death monitoring table 200 is created in units of one physical device, and lists nodes 1 (servers) to be monitored. In the alive monitoring table 200, for example, a server name and an address (IP address) associated with the server name are stored.
死活監視テーブル200は、論理装置(仮想ノード)単位でノードが構成されるパターンを考慮して、その論理装置を構築する物理装置が少なくとも1回は監視対象となるように設定される。また、クラスタを構成するノード1に追加や離脱があった場合、ノード識別子管理テーブル100と同期的に更新されるものとする。よって、ノード識別子管理テーブル100のノード識別子110が、論理装置単位で構成された仮想IDによるものではなく、物理装置単位のIDである場合には、死活監視テーブル200とノード識別子管理テーブル100とについて、同一のものを用いてもよい。また、この場合、死活監視テーブル200を生成せず、ノード識別子管理テーブル100を用いて、死活監視部104が各ノード1の死活監視を行うようにしてもよい。
The alive monitoring table 200 is set so that a physical device that constructs a logical device becomes a monitoring target at least once in consideration of a pattern in which nodes are configured in units of logical devices (virtual nodes). In addition, when there is an addition or withdrawal to the
<データ再冗長化・再配置部>
図2に戻り、データ再冗長化・再配置部105は、ノードの参加または離脱に伴い、ノード識別子管理テーブル100を利用して、自身が保持しているデータのうち、別のノードへと移す、あるいは新たに複製データを配置するデータを特定し、ノードが通常行っている処理の負荷を考慮しながら、バックグラウンドでデータを再冗長化・再配置する。ノードの参加・ノード障害に伴う離脱の場合は、参加・離脱後にデータの再冗長化・再配置を実行する。また、保守観点によるノードの離脱の場合にはノード離脱前にデータの再冗長化・再配置を実施する。ここで、保守観点によるノードの離脱の場合、データの再冗長化・再配置が完了するまでの間はデータ取得部103による問い合わせノードの対象となることに注意が必要である。
なお、データ再冗長化・再配置における「再」の意味とは、ノードの参加または離脱によって一時的にデータの配置が崩れたものを再び配置し直すことを表現したものである。
<Data Redundancy / Relocation Unit>
Returning to FIG. 2, the data re-redundancy /
In addition, the meaning of “re” in data re-redundancy / re-arrangement expresses re-arranging data whose arrangement has been temporarily lost due to the participation or withdrawal of a node.
<記憶部>
図2に戻り、記憶部12は、ハードディスクやフラッシュメモリ、RAM等の記憶手段からなり、処理の対象となる原本データや複製データ(いずれも不図示)、前記したノード識別子管理テーブル100(図3参照)や死活監視テーブル200(図4参照)が記憶される。
<Storage unit>
Returning to FIG. 2, the storage unit 12 includes storage means such as a hard disk, a flash memory, and a RAM, and original data and copy data (both not shown) to be processed, the above-described node identifier management table 100 (FIG. 3). Reference) and the life / death monitoring table 200 (see FIG. 4).
以下、上述のように構成されたクラスタ構成の分散システムにおけるデータ保持サーバ特定方法について説明する。
図5乃至図9は、本実施形態における問い合わせ先ノード特定処理の具体例を説明するための図である。
Hereinafter, a data holding server specifying method in the cluster-structured distributed system configured as described above will be described.
5 to 9 are diagrams for explaining a specific example of the inquiry destination node specifying process in this embodiment.
<新たなノードが1台参加>
図5は、クラスタに新たなノードが1台参加したケースを表す図である。
図5(a)のケースでは、図5(a)の番号(1)に示すように、クラスタに新たなノードが1台参加した場合、参加したノード「◎(二重丸)」は、参加前にデータXを保持していた右隣のノード「●(黒丸)」に問い合わせを行い、データを取得する必要がある。すなわち、図5(a)の符号aに示すように、新たにクラスタに参加したノード「◎(二重丸)」は、ID空間を参加したノード数分右回りに探索してデータ取得する必要がある。
<New node participates>
FIG. 5 is a diagram illustrating a case where one new node participates in the cluster.
In the case of FIG. 5A, as indicated by the number (1) in FIG. 5A, when one new node joins the cluster, the joined node “◎ (double circle)” It is necessary to inquire the node “● (black circle)” on the right side that previously held the data X to acquire the data. That is, as indicated by the symbol a in FIG. 5A, the node “「 (double circle) ”that newly joined the cluster needs to search the ID space clockwise for the number of nodes that participated and acquire data. There is.
一方、図5(b)のケースでは、経路途中で信号の到着順序が入れ違ったケースを表している。図5(b)の番号(2)(3)の信号到達に示すように、信号順序の入れ替え等により信号の到着順序が入れ違うことがある。例えば、ノード参加前のノード識別子管理テーブル100(図2参照)に基づき振り分けられた信号がノード参加前のノード識別子管理テーブル100に基づき振り分けられた信号よりも後に到達したケースを表している。この場合、図5(b)で示すように、新たに参加したノード「◎(二重丸)」が既にデータXを移行し、処理をしている可能性があるため、図5(b)の番号(3)で信号を受信したノード「●(黒丸)」は、左隣のノード「◎(二重丸)」に問い合わせを行い、データを取得する必要がある。すなわち、図5(b)の符号bに示すように、信号を受信((3)信号到達)したノード「●(黒丸)」は、ID空間を参加したノード数分左回りに探索してデータを取得する必要がある。 On the other hand, the case of FIG. 5B represents a case where the arrival order of the signals is changed in the middle of the route. As shown in the signal arrivals of numbers (2) and (3) in FIG. 5B, the arrival order of the signals may be changed by changing the signal order. For example, it represents a case where a signal distributed based on the node identifier management table 100 (see FIG. 2) before joining the node has arrived after the signal distributed based on the node identifier management table 100 before joining the node. In this case, as shown in FIG. 5B, the newly joined node “◎ (double circle)” may have already migrated and processed the data X, so FIG. The node “● (black circle)” that has received the signal with the number (3) needs to inquire the adjacent node “◎ (double circle)” to obtain data. That is, as indicated by the symbol b in FIG. 5B, the node “● (black circle)” that has received the signal ((3) signal arrival) searches the ID space counterclockwise by the number of nodes participating in the data. Need to get.
このように、ノード参加後には、信号を受信したノードは、左右に参加したノード数(ここでは1台)分の問い合わせを行い、データを取得した後に処理を行う必要がある。なお、図5(b)のケースでは、信号を受信((3)信号到達)したノード「●(黒丸)」は、複製データを保持しており処理を継続できる可能性はあるが、データの一貫性の観点から、左隣のノードに問い合わせを行い、原本データを管理する権利を取得した後に処理を行う必要がある。つまり、複製データ側を原本データより先に更新することはない。 Thus, after joining a node, the node that has received the signal needs to make an inquiry for the number of nodes participating in the left and right (here, one), and perform processing after acquiring data. In the case of FIG. 5B, the node “● (black circle)” that has received the signal ((3) signal arrival) holds duplicate data and may continue processing, but the data From the viewpoint of consistency, it is necessary to inquire the node on the left and acquire the right to manage the original data before processing. That is, the copy data side is not updated before the original data.
<新たなノードが複数台参加>
図6は、クラスタに新たなノードが複数台参加したケースを表す図である。
図6(a)のケースでは、図6(a)の番号(1),(1)′,(1)″に示すように、クラスタに新たなノードが複数台参加した場合、新たにクラスタに参加し信号を受信したノード「◎(二重丸)」は、他の新たに参加したノード「◎(二重丸)」を含み3台(新たに参加したノード数)分右隣りに問い合わせを行い、ノード「◎(二重丸)」は参加前にデータXを保持していた3台右隣のノード「●(黒丸)」からデータを取得する必要がある。すなわち、図6(a)の符号aに示すように、新たにクラスタに参加したノード「◎(二重丸)」は、ID空間を参加したノード数分右回りに探索してデータ取得する必要がある。
<New node participation>
FIG. 6 is a diagram illustrating a case where a plurality of new nodes participate in the cluster.
In the case of FIG. 6A, as shown in the numbers (1), (1) ′ , and (1) ″ in FIG. 6A, when a plurality of new nodes join the cluster, The node “◎ (double circle)” that participated and received the signal includes the other newly joined node “◎ (double circle)”, and inquires to the right next to the number of nodes (number of newly joined nodes). The node “◎ (double circle)” needs to acquire data from the node “● (black circle)” on the right side of the three units that held the data X before participation. That is, as indicated by the symbol a in FIG. 6A, the node “◎ (double circle)” that newly joins the cluster needs to search the ID space clockwise as many times as the number of nodes that participated and acquire data. There is.
一方、図6(b)のケースでは、経路途中で信号の到着順序が入れ違ったケースを表している。図6(b)の番号(2)の信号到達と番号(3)の信号到達とに示すように、信号順序の入れ替え等により信号の到着順序が入れ違うことがある。例えば、ノード参加前のノード識別子管理テーブル100(図2参照)に基づき振り分けられた信号がノード参加前のノード識別子管理テーブル100に基づき振り分けられた信号よりも後に到達したケースを表している。この場合、図6(b)で示すように、新たに参加したノード「◎(二重丸)」が既にデータXを以降して処理をしている可能性があるため、図6(b)の番号(3)で信号を受信したノード「●(黒丸)」は、他の新たに参加したノード「◎(二重丸)」を含み2台(新たに参加したノード数)分左隣のノードに問い合わせを行い、データを取得する必要がある。すなわち、図6(b)の符号bに示すように、信号を受信((3)信号到達)したノード「●(黒丸)」は、ID空間を参加したノード数分左回りに探索してデータを取得する必要がある。 On the other hand, the case of FIG. 6B represents a case where the arrival order of the signals is changed in the middle of the route. As shown in signal arrival of number (2) and signal arrival of number (3) in FIG. 6 (b), the arrival order of signals may be reversed due to a change in signal order or the like. For example, it represents a case where a signal distributed based on the node identifier management table 100 (see FIG. 2) before joining the node has arrived after the signal distributed based on the node identifier management table 100 before joining the node. In this case, as shown in FIG. 6B, the newly joined node “新 た (double circle)” may have already processed the data X, so FIG. The node “● (black circle)” that received the signal with the number (3) of No. 2 is adjacent to the left by two units (the number of newly joined nodes), including the other newly joined node “◎ (double circle)” It is necessary to query the node and get the data. That is, as indicated by the symbol b in FIG. 6B, the node “● (black circle)” that has received the signal ((3) signal arrived) searches the ID space counterclockwise by the number of nodes participating in the data. Need to get.
このように、ノードが複数台参加したケースにおいても、信号を受信したノードは左右に参加したノード数(図6(a)では3台、図6(b)では2台)分の問い合わせを行いデータを取得した後に処理を行う必要がある。なお、図6(b)のケースでは、信号を受信((3)信号到達)したノード「●(黒丸)」は、複製データを保持しており処理を継続できる可能性はあるが、データの一貫性の観点から、左隣のノードに問い合わせを行い、原本データを管理する権利を取得した後に処理を行う必要がある。つまり、複製データ側を原本データより先に更新することはない。 In this way, even in the case where a plurality of nodes participate, the node that received the signal makes an inquiry for the number of nodes participating in the left and right (three in FIG. 6A and two in FIG. 6B). It is necessary to perform processing after acquiring data. In the case of FIG. 6B, the node “● (black circle)” that has received the signal ((3) signal arrival) holds duplicate data and may continue processing, but the data From the viewpoint of consistency, it is necessary to inquire the node on the left and acquire the right to manage the original data before processing. That is, the copy data side is not updated before the original data.
<ノードの保守観点による離脱>
図7は、ノードの保守観点による離脱を行うケースを表す図である。図7(a)において、番号(1)のノードは、保守観点による離脱対象ノード「○(白破線丸)」、図7(b)において、番号(1),(1)′のノードは、保守観点による離脱対象ノード「○(白破線丸)」である。なお、離脱には、保守観点による離脱のほか、故障等による離脱がある。保守観点による離脱では、離脱対象となっているノードが持つデータをすべて他のサーバ(ノード)に移行した後に当該ノードが離脱することになる。
<Leaving from the viewpoint of node maintenance>
FIG. 7 is a diagram illustrating a case where the node is detached from the maintenance viewpoint. In FIG. 7 (a), the node with the number (1) is the node to be detached from the maintenance viewpoint “◯ (white broken circle)”. In FIG. 7 (b), the nodes with the numbers (1) and (1) ′ are The node to be detached from the maintenance viewpoint is “◯ (white broken circle)”. In addition, the separation includes separation from a maintenance viewpoint and separation due to a failure or the like. In the departure from the maintenance point of view, the node leaves after all the data held by the node to be removed is transferred to another server (node).
図7(a)のケースでは、図7(a)の番号(1),(2)に示すように、信号を受信したノード「●(黒丸)」は、左隣の離脱対象ノード「○(白破線丸)」に対してデータの問い合わせを行い、データXを取得した後に処理を行う必要がある。すなわち、図7(a)の符号aに示すように、信号を受信したノード「●(黒丸)」は、ID空間を左回りに探索してデータを取得する必要がある。 In the case of FIG. 7A, as indicated by the numbers (1) and (2) in FIG. 7A, the node “● (black circle)” that received the signal is the left target node “◯ ( It is necessary to perform processing after inquiring data with respect to “white broken line circle)” and acquiring data X. That is, as indicated by the symbol a in FIG. 7A, the node “● (black circle)” that has received the signal needs to search the ID space counterclockwise to acquire data.
また、図7(b)のケースでは、信号を受信したノード「●(黒丸)」は、図7(b)の番号(1),(1)′に示すように、2台(離脱対象のノード数)分左隣のノード「○(白破線丸)」に対してデータの問い合わせを行い、データXを取得した後に処理を行う必要がある。すなわち、図7(b)の符号bに示すように、信号を受信したノード「●(黒丸)」は、ID空間を離脱したノード数分左回りに探索してデータを取得する必要がある。
このように、ノード離脱後には信号を受信したノードは、左隣に離脱したノード数分の問い合わせを行い、データを取得する必要がある。なお、図7(a)(b)のケースにおいて、信号を受信(「(2)信号到達」参照)したノード「●(黒丸)」は、複製データを保持しており処理を継続できる可能性はあるが、データの一貫性の観点から、左隣のノードに問い合わせを行い、原本データを管理する権利を取得した後に処理を行う必要がある。つまり、複製データ側を原本データより先に更新することはない。
Further, in the case of FIG. 7B, the node “● (black circle)” that received the signal has two units (the ones to be detached) as indicated by the numbers (1) and (1) ′ in FIG. It is necessary to inquire data with respect to the node “◯ (white broken line circle)” on the left side by the number of nodes) and obtain the data X, and then perform processing. That is, as indicated by the symbol b in FIG. 7B, the node “● (black circle)” that has received the signal needs to search counterclockwise by the number of nodes that have left the ID space and acquire data.
In this way, after leaving the node, the node that has received the signal needs to make inquiries for the number of nodes that have left on the left and acquire data. In the case of FIGS. 7A and 7B, the node “● (black circle)” that has received a signal (see “(2) Signal arrival”) holds duplicate data and may continue processing. However, from the viewpoint of data consistency, it is necessary to inquire the node on the left and acquire the right to manage the original data before processing. That is, the copy data side is not updated before the original data.
<ノードの参加と離脱(保守観点)>
図8は、ノードの参加と離脱が発生したケースを表す図である。なお、この時の離脱は保守観点の離脱であったと仮定する。図8において、番号(1)のノードは、保守観点による離脱対象ノード「○(白破線丸)」である。
図8の番号(4)の信号到達および図8の番号(3)に示すように、新たにクラスタに参加し信号を受信したノード「◎(二重丸)」は、データXを取得する必要がある。この例では、図8の符号aに示すように、新たにクラスタに参加したノード「◎(二重丸)」は、ID空間を参加または離脱したノード数分右回りに探索してデータ取得する。
<Participation and withdrawal of nodes (maintenance perspective)>
FIG. 8 is a diagram illustrating a case where a node joins and leaves. It is assumed that the departure at this time was a maintenance departure. In FIG. 8, the node with the number (1) is the leaving target node “◯ (white broken circle)” from the maintenance viewpoint.
As shown in the signal arrival at number (4) in FIG. 8 and the number (3) in FIG. 8, the node “◎ (double circle)” that newly joined the cluster and received the signal needs to acquire the data X There is. In this example, as indicated by reference symbol a in FIG. 8, the node “◎ (double circle)” that newly joined the cluster searches the ID space clockwise by the number of nodes that have joined or left the ID space, and acquires data. .
この場合、図8の符号bに示すように、データXは、もともと離脱対象ノード「○(白破線丸)」(「(1)ノード離脱(保守観点)」参照)が保持していたが、バックグラウンドでデータを移行しているため、既にノード離脱後の配置に移行している可能性がある。つまり、データXは、図8の破線矢印cに示すように、ノード離脱から新たなノードの参加までの間に、離脱対象ノードからその右隣のノードへとバックグラウンドでデータを移行(「(2)データ再配置」参照)されている可能性があり、信号受信時でデータXが離脱対象となっているノードとその右隣のノードのどちらにあるかはわからない。この場合、バックグラウンドでデータを移行しているので、図8の離脱対象ノード「○(白破線丸)」がデータを持っているのか、その右隣のノード「●(黒丸)」にデータがあるのかが分からない。 In this case, as indicated by the symbol b in FIG. 8, the data X was originally held by the node to be removed “◯ (white broken circle)” (see “(1) Node leaving (maintenance point of view)”). Since data is migrated in the background, there is a possibility that it has already migrated to the arrangement after leaving the node. That is, as shown by the broken line arrow c in FIG. 8, the data X migrates in the background from the node to be removed to the next node to the right (“( 2) Data relocation "), and it is not known whether the data X is in the node to be removed or the node on the right side when the signal is received. In this case, since the data is migrated in the background, whether the node to be removed “◯ (white broken circle)” in FIG. 8 has the data or the data to the node “● (black circle)” on the right side of the node. I don't know if it exists.
そこで、新たにクラスタに参加したノードは、離脱しようとしているノード「○(白破線丸)」とその右隣のノード「●(黒丸)」とを含む2台(参加、離脱したノード数)分右隣に問い合わせを行いデータを取得する必要がある。このように、ノードの離脱・参加があった場合には、左右に参加・離脱したノード数分の問い合わせを行いデータを取得する必要がある。
ここで、前述したようにノードの離脱や参加に伴い、データの再冗長化・再配置が行われるため、データの問い合わせは再冗長化・再配置の完了までの期間となる。また、自身が既に原本データを保持していたケースでは、他のノードが原本データを保持していない(更新権利を持っていない)ことがわかるため、問い合わせを行わずに処理を継続できる。
Therefore, the nodes that newly joined the cluster are for two nodes (number of nodes that have joined or left), including the node “○ (white dashed circle)” that is about to leave and the node “● (black circle)” to the right of it. It is necessary to make inquiries to the right and obtain data. Thus, when a node leaves / joins, it is necessary to obtain data by making inquiries for the number of nodes joining / leaving left and right.
Here, as described above, data re-redundancy / re-arrangement is performed in accordance with the leaving or joining of the node, so the data inquiry is a period until the completion of re-redundancy / re-arrangement. Also, in the case where the node already holds the original data, it can be understood that the other node does not hold the original data (has no update right), so that the processing can be continued without making an inquiry.
<左側問い合わせが不要なケース>
図9は、左側問い合わせが不要なケースを表す図である。図8において、番号(1)のノードは、保守観点による離脱対象ノード「○(白破線丸)」である。
図9の番号(3)の信号到達および図9の番号(2)に示すように、新たにクラスタに参加し信号を受信したノード「◎(二重丸)」は、データのKey情報をハッシュ値演算した結果(以降、データIDと呼ぶ)と参加ノードの間にノードが存在しないため、左側問い合わせは不要である。
<Case where left side inquiry is not required>
FIG. 9 is a diagram illustrating a case where the left side inquiry is unnecessary. In FIG. 8, the node with the number (1) is the leaving target node “◯ (white broken circle)” from the maintenance viewpoint.
As shown in the signal arrival of the number (3) in FIG. 9 and the number (2) in FIG. 9, the node “◎ (double circle)” that newly joined the cluster and received the signal hashes the key information of the data. Since there is no node between the result of the value calculation (hereinafter referred to as data ID) and the participating node, the left side inquiry is unnecessary.
以上をまとめると、データの問い合わせ先は、図10に示す表1となる。
表1(データの問い合わせ先を示す表)は、「原本データ保持」および「原本データなし」について、「データ再冗長化・再配置完了前」と「データ再冗長化・再配置完了後」を表にして示したものである。なお、表1中のΔNは、あるノードの参加または離脱に伴うデータ再冗長化・再配置開始から完了までに発生したノード参加・離脱台数の合計であり、データ取得部103(図2参照)で計算して記憶部12(図2参照)に保持している。
In summary, the data inquiry destination is Table 1 shown in FIG.
Table 1 (a table showing data inquiry destinations) shows “before data re-redundancy / relocation completion” and “after data re-redundancy / relocation completion” for “original data retention” and “no original data”. It is shown in a table. Note that ΔN in Table 1 is the total number of nodes participating / leaving from the start to the completion of data re-redundancy / relocation due to the joining or leaving of a node, and the data acquisition unit 103 (see FIG. 2). And stored in the storage unit 12 (see FIG. 2).
表1に示すように、「原本データ保持」している場合は、「データ再冗長化・再配置完了前」および「データ再冗長化・再配置完了後」のいずれの場合も問い合わせ不要である。
「原本データなし」の場合は、「データ再冗長化・再配置完了後」では問い合わせ不要であるが、「データ再冗長化・再配置完了前」では、左右にΔN台分問い合わせが必要である。ただし、左側の問い合わせは、自身のIDとデータIDの間に存在するノードに対してのみ実施する。「左側の問い合わせは、自身のIDとデータIDの間に存在するノードに対してのみ実施」する理由は、次の通りである。コンシステントハッシュ法では、データのIDから右回りに探索して最初に当たったノードIDを持つノードにデータを保持する。よって、データIDとノードIDの間にノードが存在しなければ、左側にデータを持っているノードは、存在することはありえないからである。
また、左側の問い合わせについては、図9に示したように、データIDと自身のIDの間にいるノードに限定して実施すればよい。
As shown in Table 1, in the case of “original data retention”, there is no need to inquire in either of “before data re-redundancy / relocation completion” and “after data re-redundancy / relocation completion” .
In the case of “no original data”, the inquiry is not required in “after data re-redundancy / relocation completion”, but in “before data re-redundancy / relocation completion”, inquiries for ΔN units are required on the left and right. . However, the inquiry on the left side is executed only for a node existing between its own ID and data ID. The reason why “the inquiry on the left side is executed only for a node existing between its own ID and data ID” is as follows. In the consistent hash method, data is stored in a node having a node ID first hit after searching clockwise from the data ID. Therefore, if there is no node between the data ID and the node ID, a node having data on the left side cannot exist.
Further, as shown in FIG. 9, the inquiry on the left side may be executed only for the nodes between the data ID and its own ID.
ここで、「データ再冗長化・再配置完了前」の「原本データなし」の場合には原本データをたどる必要があるのに対し、「データ再冗長化・再配置完了後」の「原本データなし」の場合、問い合わせ不要である理由について述べる。「データの再冗長化・再配置が完了している」とは、原本データを持っているノードに確実に信号を振り分けられる状況」である。すなわち、原本データがなければ探索してもデータが見つかることはないという状況であるので、問い合わせは不要であるとする。 Here, in the case of “No original data” in “Before data re-redundancy / relocation complete”, it is necessary to follow the original data, whereas “Original data” in “After data re-redundancy / relocation complete” In the case of “None”, the reason why the inquiry is unnecessary is described. “Re-redundancy / relocation of data has been completed” is a situation in which a signal can be reliably distributed to a node having original data. That is, it is assumed that no data can be found even if there is no original data.
<処理の流れ>
次に、本発明の第1の実施形態に係るノード1の信号受信から処理までの流れについて、図11および前記した図5ないし図9を参照して説明する。
<Process flow>
Next, the flow from signal reception to processing of the
図11は、本発明の第1の実施形態に係るノード1(データ取得部103)が行うクライアントからの信号受信から信号処理までの流れを示すフローチャートである。データ取得部103において、問い合わせ先ノードを特定する方法について説明する。
まず、メッセージ処理部102(図2参照)は、ノード識別子管理部101やメッセージ処理部102から、クライアントからの信号を受信する(ステップS10)。
まず、データ取得部103は、あるノードの参加または離脱に伴うデータ再冗長化・再配置開始から完了までに発生したノード参加・離脱台数の合計ΔNが0より大きい(ΔN>0)か否かを判定する(ステップS11)。
各ノードでは、常にΔNの値を保持している。以下、再冗長化・再配置が完了している状態を安定状態と呼ぶこととする。安定状態からノードの参加または離脱1台が発生した場合に、ΔN=1とする。その後、安定状態に移行する前にさらなる参加または離脱が1台発生した場合、ΔN=+1とする。上記は、参加または離脱が起こる度に繰り返すこととする。安定状態に遷移した場合には、ΔN=0とする。
FIG. 11 is a flowchart showing a flow from signal reception to signal processing from a client performed by the node 1 (data acquisition unit 103) according to the first embodiment of the present invention. A method for specifying the inquiry destination node in the
First, the message processing unit 102 (see FIG. 2) receives a signal from the client from the node
First, the
Each node always holds the value of ΔN. Hereinafter, a state in which re-redundancy / relocation has been completed is referred to as a stable state. ΔN = 1 when one node joins or leaves from the stable state. After that, if one more participation or withdrawal occurs before shifting to the stable state, ΔN = + 1. The above will be repeated whenever participation or withdrawal occurs. In the case of transition to a stable state, ΔN = 0.
そして、この条件を満たさない場合には(ステップS11→No)、問い合わせ先ノード特定処理を終了する(ステップS19へ進む)。一方、この条件を満たす場合には(ステップS11→Yes)、次のステップS12に進む。 If this condition is not satisfied (step S11 → No), the inquiry destination node specifying process is terminated (proceeds to step S19). On the other hand, when this condition is satisfied (step S11 → Yes), the process proceeds to the next step S12.
次に、データ取得部103は、原本データを保持しているか否かを判定する。原本データを保持している場合には(ステップS12→Yes)、表1に示すように、「データ再冗長化・再配置完了前」および「データ再冗長化・再配置完了後」のいずれの場合も問い合わせ不要であるため、問い合わせ先ノード特定処理を終了する(ステップS19へ進む)。
Next, the
一方、原本データを保持していない場合には(ステップS12→No)、表1に示すように、左右にΔN台分問い合わせが必要であるため、次のステップS13以降に進む。
ここで、データ取得部103は、表1に示すように、左右にΔN台分問い合わせに際し、左側の問い合わせは、自身のノードIDとデータIDの間に存在するノードに対してのみ実施する。例えば、図9の番号(3)の信号到達および図9の番号(2)に示すように、新たにクラスタに参加し信号を受信したノード「◎(二重丸)」は、データIDと参加ノードの間にノードが存在しないため、左側問い合わせは不要である。
On the other hand, if the original data is not held (step S12 → No), as shown in Table 1, since it is necessary to make an inquiry for ΔN units on the left and right, the process proceeds to the next step S13 and subsequent steps.
Here, as shown in Table 1, the
図11のフローに戻って、まず、データ取得部103は、データのKey情報をハッシュ値演算した結果からデータIDを算出する(ステップS13)。
次に、データ取得部103は、算出したデータIDと自身のノードIDの間のノード数αを算出する(ステップS14)。
次に、データ取得部103は、前記ノード数αとΔNを比較する(ステップS15)。
α=0の場合、データ取得部103は、右にΔN探索してデータ取得し(ステップS16)、次のステップS19に進む。
α≦ΔNの場合、データ取得部103は、右にΔN探索+左にα探索してデータ取得し(ステップS17)、次のステップS19に進む。
α>ΔNの場合、データ取得部103は、左右にΔN探索してデータ取得し(ステップS18)、次のステップS19に進む。
最後に、ステップS19において、メッセージ処理部102は、信号処理を行って問い合わせ先ノード特定処理を終了する。
以下、上記フローの実行による、問い合わせ先ノード特定処理の具体例について説明する。
Returning to the flow of FIG. 11, first, the
Next, the
Next, the
When α = 0, the
When α ≦ ΔN, the
If α> ΔN, the
Finally, in step S19, the
Hereinafter, a specific example of the inquiry destination node specifying process by executing the above flow will be described.
<例1:ノード参加>
図6(a)に示す例において、図6(a)の番号(1),(1)′,(1)″に示すように、クラスタに新たなノードが3台参加した場合、新たにクラスタに参加し信号を受信したノード「◎(二重丸)」は、他の新たに参加したノード「◎(二重丸)」を含み3台(新たに参加したノード数)分右隣りに問い合わせを行い、ノード「◎(二重丸)」は参加前にデータXを保持していた3台右隣のノード「●(黒丸)」からデータを取得する。図6(a)の符号aに示すように、新たにクラスタに参加したノード「◎(二重丸)」は、ID空間を参加したノード数ΔN分右回りに探索してデータ取得する(例えば、図11のステップS17における右にΔN探索参照)。
<Example 1: Node participation>
In the example shown in FIG. 6A, when three new nodes join the cluster, as shown in the numbers (1), (1) ′ , (1) ″ in FIG. The node “◎ (double circle)” that participated in and received the signal includes the other newly joined node “◎ (double circle)”. The node “◎ (double circle)” acquires data from the node “● (black circle)” on the right side of the three units that held the data X before participation. As indicated by the symbol a in FIG. 6A, the node “◎ (double circle)” that newly joined the cluster searches the ID space clockwise by the number of nodes ΔN that participated and acquires data (for example, , See ΔN search on the right in step S17 of FIG. 11).
図6(b)に示す例において、経路途中で信号の到着順序が入れ違った場合、図6(b)の番号(3)で信号を受信したノード「●(黒丸)」は、他の新たに参加したノード「◎(二重丸)」を含みノード数αが2台(新たに参加したノード数)分左隣のノードに問い合わせを行い、データを取得する。図6(b)の符号bに示すように、信号を受信((3)信号到達)したノード「●(黒丸)」は、ID空間を参加したノード数ΔN左回りに探索してデータを取得する(例えば、図11のステップS17における右にΔN探索参照)。 In the example shown in FIG. 6B, if the arrival order of signals is changed in the middle of the route, the node “● (black circle)” that received the signal with the number (3) in FIG. Inquiries are made to the nodes on the left side including the joined node “◎ (double circle)” and the number of nodes α is two (the number of newly joined nodes) to obtain data. As shown by the symbol b in FIG. 6B, the node “● (black circle)” that has received the signal ((3) signal arrival) searches the ID space counterclockwise for the number of nodes ΔN and acquires data. (For example, see ΔN search on the right side in step S17 in FIG. 11).
<例2:ノード離脱>
図7(a)に示す例において、図7(a)の番号(1),(2)に示すように、信号を受信したノード「●(黒丸)」は、左隣の離脱対象ノード「○(白破線丸)」に対してデータの問い合わせを行い、データXを取得した後に処理を行う。図7(b)の符号aに示すように、信号を受信したノード「●(黒丸)」は、ID空間を左回りに探索してデータを取得する(例えば、図11のステップS18におけるΔN探索参照)。
<Example 2: Node leaving>
In the example shown in FIG. 7A, as indicated by the numbers (1) and (2) in FIG. 7A, the node “● (black circle)” that received the signal is the left target node “◯” Data inquiry is made to “(white broken line circle)”, and processing is performed after data X is acquired. As shown by reference symbol a in FIG. 7B, the node “● (black circle)” that has received the signal searches the ID space counterclockwise to acquire data (for example, ΔN search in step S18 in FIG. 11). reference).
図7(b)に示す例において、信号を受信したノード「●(黒丸)」は、図7(b)の番号(1),(1)′に示すように、2台(離脱対象のノード数)分左隣のノード「○(白破線丸)」に対してデータの問い合わせを行い、データXを取得する。図7(b)の符号bに示すように、信号を受信したノード「●(黒丸)」は、ID空間を離脱したノード数分左回りに探索してデータを取得する(例えば、図11のステップS18におけるΔN探索参照)。 In the example shown in FIG. 7B, the node “● (black circle)” that received the signal has two nodes (nodes to be detached) as shown by numbers (1) and (1) ′ in FIG. The data inquiry is made to the node “◯ (white dashed circle)” on the left side by the number), and the data X is acquired. As shown by the symbol b in FIG. 7B, the node “● (black circle)” that has received the signal searches counterclockwise by the number of nodes that have left the ID space and acquires data (for example, FIG. 11). (See ΔN search in step S18).
<例3:ノード参加・離脱>
図8に示す例において、 図8の番号(4)の信号到達および図8の番号(3)に示すように、ノードの離脱・参加があった場合には、左右に参加・離脱したノード数分の問い合わせを行いデータを取得する(例えば、図11のステップS18における左右にΔN探索参照)。この場合、図8の符号aに示すように、新たにクラスタに参加したノード「◎(二重丸)」は、ID空間を参加または離脱したノード数分右回りに探索してデータ取得する。
<Example 3: Node join / leave>
In the example shown in FIG. 8, when the signal arrives at the number (4) in FIG. 8 and the node leaves / joins as shown in the number (3) in FIG. Minutes inquiries and data is acquired (for example, see ΔN search left and right in step S18 in FIG. 11). In this case, as indicated by reference symbol a in FIG. 8, the node “((double circle)” that newly joined the cluster searches the ID space clockwise by the number of nodes that have joined or left the ID space, and acquires data.
以上説明したように、分散システム1000のノード1は、メッセージ処理に必要なデータを保持していなかった場合、データを保持している可能性のあるノードを特定し、他のノードに要求してデータを取得するデータ取得部103を備える。データ取得部103は、原本データを持っているノードに確実に信号を振り分けられる状況であるデータ再冗長化・再配置完了までに発生したノード参加・離脱台数の合計のΔNを求めて保持し、データのKey情報をハッシュ値演算した結果であるデータIDを算出するととともに、算出したデータIDと自身のノードIDの間のノード数αを算出し、ΔNとノード数αの比較結果を基に、自身のノードIDのID空間上の左、右、または左右にΔN台分のノードに対して問い合わせてデータを取得する。
As described above, when the
データ取得部103は、図11に示されているように、α=0の場合、ID空間上で複製データが作成される方向である所定方向回り(本実施形態では時計回り)にΔN台分探索してデータを取得し、α≦ΔNの場合、所定方向回りにΔN台分探索し、所定方向回りと逆方向にα台分探索してデータを取得し、α>ΔNの場合、所定方向回りと、当該所定方向回りと逆方向とにそれぞれΔN台分探索してデータを取得する。
As shown in FIG. 11, when α = 0, the
このように、ノード1は、ノードの参加または離脱に伴うデータ再冗長化・再配置開始から完了までに発生したノード参加・離脱台数をカウントすることで、最初に問い合わせを受けたノードから、高々、増減設されたノードの台数ΔN台分左右(データおよびノードのIDの空間上におけるノード群の順序におけるΔN台分の左右)に問い合わせる。これにより、データ有無を問い合わせるノードの範囲を限定する、すなわち問い合わせ先を絞り込むことができる。したがって、クラスタを構成するノードの参加または離脱があった場合、全ノードに対する問い合わせを不要にしつつデータの一貫性を保持し、データを保持している可能性があるノードを効率良く探索することができる。
In this way, the
(第2実施形態)
次に、本発明の第2の実施形態に係るノード1Aについて説明する。
図12は、本発明の第2の実施形態に係るノード1Aの構成例を示す機能ブロック図である。図2において示した第1の実施形態に係るノード1との違いは、第2の実施形態に係るノード1Aは、第1の実施形態に係るノード1のデータ取得部103が、データ取得部103Aに変更されていることである。その他の構成については、図12において、図2に示した第1に実施形態に係るノード1と同一の名称と符号を付し、説明を省略する。また、分散システム1000の全体構成も第1の実施形態における図1と同一であるので説明を省略する。
データ取得部103Aは、図2のデータ取得部103の「原本データ保持」および「原本データなし」の判定に加え、「原本データ保持」と「原本データなし/複製データあり」と「原本データなし/複製データなし」とを判定する。
(Second Embodiment)
Next, a node 1A according to the second embodiment of the present invention will be described.
FIG. 12 is a functional block diagram showing a configuration example of the node 1A according to the second embodiment of the present invention. The difference from the
The
図13は、データの問い合わせ先を表(表2)にして示す図である。
表2は、図10の表1に対して「原本データなし」が、さらに「原本データなし/複製データあり」と「原本データなし/複製データなし」とに分かれる。
「原本データなし/複製データあり」の場合、「データ再冗長化・再配置完了前」では、左にΔN台分問い合わせる。ただし、左側の問い合わせは自身のIDとデータIDの間に存在するノードに対してのみ実施する。
「原本データなし/複製データなし」の場合、「データ再冗長化・再配置完了前」では、左右にΔN台分問い合わせる。ただし、左側の問い合わせは自身のIDとデータIDの間に存在するノードに対してのみ実施する。なお、「原本データなし/複製データあり」および「原本データなし/複製データなし」のいずれの場合も「データ再冗長化・再配置完了後」では、問い合わせ不要である。また、左側の問い合わせが不要のケースについては、図9で説明している。
FIG. 13 is a table showing the data inquiry destination (Table 2).
In Table 2, “no original data” is further divided into “no original data / with duplicate data” and “no original data / no duplicate data” with respect to Table 1 in FIG.
In the case of “no original data / replicated data”, in the “before data re-redundancy / relocation completion”, an inquiry is made on the left for ΔN units. However, the inquiry on the left side is executed only for a node existing between its own ID and data ID.
In the case of “no original data / no duplicate data”, “before data re-redundancy / relocation complete” is inquired for ΔN units on the left and right. However, the inquiry on the left side is executed only for a node existing between its own ID and data ID. In both cases of “no original data / with duplicate data” and “no original data / no duplicate data”, there is no need to make an inquiry in “after data re-redundancy / relocation complete”. Further, the case where the inquiry on the left side is unnecessary is described with reference to FIG.
表2に関して、「原本データなし/複製データあり」または「原本データなし/複製データなし」は、データ取得部103Aが、システム的に下記のような判定を行う。
例えば、以下のような2例が挙げられる。
Regarding Table 2, “no original data / with duplicate data” or “no original data / no duplicate data”, the
For example, there are the following two examples.
(1)各データに付加情報を持たせる
各データに付加情報を持ち、その中に原本/複製情報を記述しておく態様である。データ取得部103Aは、この付加情報から「原本データなし/複製データあり」または「原本データなし/複製データなし」を判定することが可能である。なお、この付加情報を有するデータは、「ノード情報」あるいは「メタデータ」と呼ばれることがある。ただし、この場合には、事前に原本データ一覧や複製データ一覧などのデータ一覧を作成してから、後記図14のフローに入る必要がある。
(1) Each data has additional information Each data has additional information, and original / replica information is described therein. The
(2)原本データと複製データでデータの格納先ディレクトリを変える
事前にデータ格納先を原本データと複製データで別々としておく態様である。例えば、原本データは、/A/B/C/original/〜に格納し、複製データは/A/B/C/backup/〜に格納する。この場合、原本データと複製データでデータの格納先が異なるため、後記図14のフロー実行のチェックの段階で原本データディレクトリ配下を先に見て、なければ続いて複製データディレクトリ配下を見ることになる。
(2) Changing the data storage destination directory between the original data and the replicated data This is a mode in which the data storage destination is set separately for the original data and the replicated data in advance. For example, the original data is stored in / A / B / C / original / ˜, and the duplicate data is stored in / A / B / C / backup / ˜. In this case, since the data storage destination is different between the original data and the duplicate data, the subordinate of the original data directory is looked at first at the stage of the flow execution check shown in FIG. Become.
図14は、本発明の第2の実施形態に係るノード1A(データ取得部103A)が行うクライアントからの信号受信から処理までの流れを示すフローチャートである。図14において、図11に示したフローと同一の処理を行うステップには同一ステップ番号を付し、説明を省略する。
図14において、ステップS14でノード数αを算出すると、データ取得部103Aは、複製データを保持しているか否かを判定する(ステップS21)。
複製データを保持している場合、ステップS22に進み(ステップS21→Yes)、複製データを保持していない場合、ステップS15に進む(ステップS21→No)。
ステップS22では、データ取得部103Aは、前記ノード数αとΔNを比較する。
α=0の場合、データ取得部103Aは、ステップS19に進む。
α≦ΔNの場合、データ取得部103Aは、左にα探索してデータ取得し(ステップS23)、次のステップS19に進む。
α>ΔNの場合、データ取得部103Aは、左にΔN探索してデータ取得し(ステップS24)、次のステップS19に進む。
FIG. 14 is a flowchart showing a flow from signal reception to processing performed by the node 1A (
In FIG. 14, when the number of nodes α is calculated in step S14, the
If duplicate data is held, the process proceeds to step S22 (step S21 → Yes), and if duplicate data is not held, the process proceeds to step S15 (step S21 → No).
In step S22, the
If α = 0, the
If α ≦ ΔN, the
If α> ΔN, the
このように、本実施形態によれば、ノード1Aのデータ取得部103A(図12参照)は、データ問い合わせ先の原本データなしの場合において、複製データの保持の有無を判定し、複製データを保持している場合、自身のノードIDのID空間上の所定方向回りと逆方向に値ΔN台分のノードに対して問い合わせてデータを取得する。具体的には、データ取得部103Aは、α≦ΔNの場合、所定方向回りと逆方向にα台分探索してデータを取得し、α>ΔNの場合、所定方向回りと逆方向に値ΔN台分探索してデータを取得する。
As described above, according to the present embodiment, the
図13の表2に示すように、「原本データなし/複製データあり」の場合、「データ再冗長化・再配置完了前」では、左にΔN台分問い合わせる。第1の実施形態の図10の表1では、原本データ保持と原本データなしを判定していたため、原本データなしの場合は、「データ再冗長化・再配置完了前」では、左右にΔN台分問い合わせている。これに対し、本実施形態では、原本データなしの場合において、複製データの保持の有無を判定しているので、原本データなしで複製データありの場合、左のみにΔN台分問い合わせればよく、問い合わせ範囲を減らすことができる。ここで、図13の表2に示すように、左にΔN台分の問い合わせについては、自身のノードIDとデータIDの間に存在するノードに対してのみ行えばよいので、右側の問い合わせを減らすことができれば、データを保持している可能性があるノードをより効率良く探索することができる。 As shown in Table 2 of FIG. 13, in the case of “no original data / replicated data”, inquiries for ΔN units are made to the left in “before data re-redundancy / relocation completion”. In Table 1 of FIG. 10 of the first embodiment, since the original data retention and the absence of the original data are determined, if there is no original data, “N” is left and right in “before data re-redundancy / relocation completion”. I have a minute inquiry. On the other hand, in the present embodiment, whether or not the copy data is held is determined when there is no original data. Therefore, when there is copy data without the original data, it is sufficient to inquire ΔN units only on the left side. The inquiry range can be reduced. Here, as shown in Table 2 of FIG. 13, the queries for ΔN units on the left need only be made to the nodes existing between the node ID and the data ID of the own node, so the queries on the right side are reduced. If possible, it is possible to more efficiently search for a node that may hold data.
以上、本発明の実施形態について説明したが、本発明は、ここで説明した各実施形態に限定されるものではない。 As mentioned above, although embodiment of this invention was described, this invention is not limited to each embodiment described here.
1,1A ノード
2 クライアント
3 ロードバランサ
4 振り分け装置
10 制御部
11 入出力部
12 記憶部
100 ノード識別子管理テーブル
101 ノード識別子管理部
102 メッセージ処理部
103,103A データ取得部
104 死活監視部
105 データ再冗長化・再配置部
200 死活監視テーブル
1000 分散システム
1,
Claims (6)
メッセージ処理に必要なデータを保持していなかった場合、前記データを保持している可能性のあるノードを特定し、他のノードに要求してデータを取得するデータ取得部と、
ノードの参加または離脱に伴い、自身が保持しているデータのうち、別のノードへと移行する、または、新たに複製データを配置するデータを特定して、当該特定したデータを再冗長化・再配置するデータ再冗長化・再配置部と、を備え、
前記データ取得部は、
前記原本データを持っているノードに信号を振り分けられる状況であるデータ再冗長化・再配置完了までに発生したノード参加・離脱台数の合計の値ΔNを保持し、
前記データのKey情報をハッシュ値演算した結果であるデータIDを算出するとともに、算出した前記データIDと自身のノードIDの間のノード数αを算出し、
前記値ΔNと前記ノード数αの比較結果を基に、ID空間上の自身のノードIDから前記値ΔN台分のノードに対して問い合わせてデータを取得する
ことを特徴とするノード。 In a circular ID (IDentifier) space, IDs of a plurality of data to be processed and IDs of a plurality of nodes that form a cluster and process requests related to the data are allocated, and from the IDs of the data in the ID space A copy that is a copy of the original data in another node other than itself in the cluster while the node holds the data located between the nodes encountered up to the first encounter after tracing around a predetermined direction. A node of a distributed system for holding data,
If the data necessary for message processing is not held, the node that may hold the data is identified, a data acquisition unit that requests other nodes to acquire data,
When a node joins or leaves, the data that it holds is transferred to another node, or the data to be newly copied is specified, and the specified data is made redundant again. A data re-redundancy / re-arrangement unit for re-arrangement,
The data acquisition unit
Holds the total value ΔN of the number of nodes participating / leaved that occurred until the completion of data re-redundancy / relocation, which is a situation where signals can be distributed to the nodes having the original data,
A data ID that is a result of hash value calculation of the key information of the data is calculated, and a node number α between the calculated data ID and its own node ID is calculated,
Based on a comparison result between the value ΔN and the number of nodes α, the node obtains data by making an inquiry to the nodes corresponding to the value ΔN from its own node ID in the ID space.
α=0の場合、前記ID空間上で前記複製データが作成される方向である所定方向回りに前記値ΔN台分探索してデータを取得し、
α≦ΔNの場合、前記所定方向回りに前記値ΔN台分探索し、前記所定方向回りと逆方向にα台分探索してデータを取得し、
α>ΔNの場合、前記所定方向回りと、当該所定方向回りと逆方向とにそれぞれ前記値ΔN台分探索してデータを取得すること
を特徴とする請求項1に記載のノード。 The data acquisition unit
If α = 0, search for the value ΔN around the predetermined direction, which is the direction in which the duplicate data is created in the ID space, to obtain data,
If α ≦ ΔN, search for ΔN units around the predetermined direction, search α units in the opposite direction to the predetermined direction, and obtain data,
2. The node according to claim 1, wherein when α> ΔN, data is obtained by searching for the value ΔN around the predetermined direction and in a direction opposite to the predetermined direction.
前記所定方向回りと逆方向の前記値ΔN台分の問い合わせについて、自身のノードIDと前記データIDの間に存在するノードに対してのみ行うこと
を特徴とする請求項1または請求項2に記載のノード。 The data acquisition unit
The inquiry about the value ΔN units in the direction opposite to the predetermined direction is performed only for a node existing between its own node ID and the data ID. Nodes.
前記複製データを保持している場合、自身のノードIDのID空間上の前記所定方向回りと逆方向に前記値ΔN台分のノードに対して問い合わせてデータを取得すること
を特徴とする請求項1ないし請求項3のいずれか1項に記載のノード。 The data acquisition unit determines whether or not to hold the duplicate data when the original data is not held;
When the duplicate data is held, the data is obtained by inquiring of the nodes for the value ΔN in the direction opposite to the predetermined direction on the ID space of the own node ID. The node according to any one of claims 1 to 3.
α≦ΔNの場合、前記所定方向回りと逆方向に前記α台分探索してデータを取得し、
α>ΔNの場合、前記所定方向回りと逆方向に前記値ΔN台分探索してデータを取得すること
を特徴とする請求項4に記載のノード。 The data acquisition unit is based on a comparison result between the value ΔN and the number of nodes α.
In the case of α ≦ ΔN, data is obtained by searching the α units in the direction opposite to the predetermined direction,
5. The node according to claim 4, wherein when α> ΔN, data is acquired by searching for the value ΔN units in a direction opposite to the predetermined direction.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014040471A JP5845298B2 (en) | 2014-03-03 | 2014-03-03 | Nodes and programs |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014040471A JP5845298B2 (en) | 2014-03-03 | 2014-03-03 | Nodes and programs |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015165373A true JP2015165373A (en) | 2015-09-17 |
JP5845298B2 JP5845298B2 (en) | 2016-01-20 |
Family
ID=54187839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014040471A Active JP5845298B2 (en) | 2014-03-03 | 2014-03-03 | Nodes and programs |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5845298B2 (en) |
-
2014
- 2014-03-03 JP JP2014040471A patent/JP5845298B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP5845298B2 (en) | 2016-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11481139B1 (en) | Methods and systems to interface between a multi-site distributed storage system and an external mediator to efficiently process events related to continuity | |
JP2021002369A (en) | Index update pipeline | |
US11734248B2 (en) | Metadata routing in a distributed system | |
US9367261B2 (en) | Computer system, data management method and data management program | |
US10712964B2 (en) | Pre-forking replicas for efficient scaling of a distributed data storage system | |
US20120278817A1 (en) | Event distribution pattern for use with a distributed data grid | |
JP5969315B2 (en) | Data migration processing system and data migration processing method | |
JP2013182575A (en) | Server and program | |
WO2015196692A1 (en) | Cloud computing system and processing method and apparatus for cloud computing system | |
KR20130038517A (en) | System and method for managing data using distributed containers | |
US20240176762A1 (en) | Geographically dispersed hybrid cloud cluster | |
JP5845298B2 (en) | Nodes and programs | |
JP5918802B2 (en) | Nodes and programs | |
JP5690296B2 (en) | Load balancing program and load balancing apparatus | |
JP6093320B2 (en) | Distributed processing system | |
JP5711771B2 (en) | Node leave processing system | |
JP5815000B2 (en) | Nodes and programs | |
JP6506156B2 (en) | Node and gravitation suppression method | |
JP2011180658A (en) | Redundancy method in distributed file system | |
Sakthisri et al. | Balancing blocks for distributed file system in clouds by using load rebalancing algorithm | |
JP6127005B2 (en) | Cluster system server device and program | |
Lebre et al. | AS-cast: Lock Down the Traffic of Decentralized Content Indexing at the Edge | |
JP2014146153A (en) | Cluster system | |
JP6093319B2 (en) | Cluster system | |
Xiao et al. | Applying MapReduce Framework to Peer-to-Peer Overlay Network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150929 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20151029 |
|
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: 20151117 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151120 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5845298 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |