JPWO2015186191A1 - データ管理システム及びデータ管理方法 - Google Patents
データ管理システム及びデータ管理方法 Download PDFInfo
- Publication number
- JPWO2015186191A1 JPWO2015186191A1 JP2016524971A JP2016524971A JPWO2015186191A1 JP WO2015186191 A1 JPWO2015186191 A1 JP WO2015186191A1 JP 2016524971 A JP2016524971 A JP 2016524971A JP 2016524971 A JP2016524971 A JP 2016524971A JP WO2015186191 A1 JPWO2015186191 A1 JP WO2015186191A1
- Authority
- JP
- Japan
- Prior art keywords
- data
- determination unit
- unit
- consistency
- determination
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/186—Passive fault masking when reading multiple copies of the same data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/187—Voting techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2048—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Hardware Redundancy (AREA)
Abstract
プロセッサとメモリとストレージ装置を備えたサーバを複数有し、データを前記複数のサーバで受信して格納し、データを多重化するデータ管理システムであって、サーバは、多重化されたデータの一貫性を判定する第1の判定部と、多重化されたデータの一貫性を判定する際に、前記第1の判定部よりもサーバの許容故障数は大きいが、データの一貫性を判定するためにサーバ間の最小通信回数が多い第2の判定部と、第1の判定部または第2の判定部からデータの一貫性の判定結果を受け付けて、判定結果が一貫性を保証するデータを含む場合には、当該一貫性が保証されたデータを出力する組み合わせ部と、組み合わせ部が出力したデータを格納するデータ格納部と、を備える。
Description
本発明は、データを複数のサーバに格納して多重化し、可用性を確保する計算機システムに関する。
インメモリ型分散KVS(Key Value Store)等の分散データ管理システムでは、サーバに障害が発生したときにデータが消失するのを防止するため、データを複数のサーバに分散して格納し、可用性を確保している。
データを複数のサーバに格納する多重化において、データの一貫性を保証するには、分散合意アルゴリズム(例えば、特許文献1)を利用する手法が知られている。特許文献1に開示されるPaxosアルゴリズム(以下、PAXOSとする)では、オリジナルデータをマスタとしてマスタ計算機に格納し、複製したデータをスレーブとして扱い、複数のスレーブ計算機に格納する。
PAXOSにおいて、多重化したデータの一貫性を保証するためには、データの複製数をfとし、データを格納する計算機の数をプロセス数nとすると、
プロセス数n=2f+1
として表される。上記より、最低でも計算機(マスタとスレーブ)間で2回の通信が必要となり、許容故障数eはn/2未満である。なお、許容故障数eは、障害が発生しても最小通信回数(レイテンシー)を維持可能なプロセス(または計算機)の数である。また、レイテンシーは、クライアントがデータの更新(または参照)をマスタ計算機に要求してから、スレーブ計算機で合意に達する(データの一貫性を保証する)までの最小の通信回数δとする。
プロセス数n=2f+1
として表される。上記より、最低でも計算機(マスタとスレーブ)間で2回の通信が必要となり、許容故障数eはn/2未満である。なお、許容故障数eは、障害が発生しても最小通信回数(レイテンシー)を維持可能なプロセス(または計算機)の数である。また、レイテンシーは、クライアントがデータの更新(または参照)をマスタ計算機に要求してから、スレーブ計算機で合意に達する(データの一貫性を保証する)までの最小の通信回数δとする。
Paxosでは、スレーブを格納するスレーブ計算機の一部の故障や遅延は隠蔽できるが、マスタ計算機の故障または遅延を隠蔽できないので、常時低レイテンシーを求める分散データ管理システムでは障害発生時の通信回数の増大によるレイテンシーの増大が課題となる。
そこで、マスタとスレーブの関係を排除し、各計算機にデータを送信し、各計算機が受信したデータを更に相互に送受信し、各計算機が相互に送受信したデータの値の同一性を判定することで、一貫性を保証しつつ、レイテンシーを確保する技術が提案されている(例えば、非特許文献1、2)。
Francisco Brasileiro, Fabiola Greve, Achour Mostefaoui, Michel Raynal著、Consensus In One Communication Step、"Parallel Computing Technologies"、Springer Berlin Heidelberg刊、2001年発行、第42〜50頁
Michael Ben-Or著, Another Advantage of Free Choice: Completely Asynchronous Agreement Protocols (Extended Abstract)、PODC '83 Proceedings of the second annual ACM symposium on Principles of distributed computing、1983年発行、第27〜30頁
しかしながら、上記従来例の非特許文献1では、データの一貫性を保証したまま低レイテンシーを実現するために、Paxosより必要なプロセス数を増やすことで実現している。このため、合意に至るまでの通信回数を低減できるものの、プロセス数がn=3f+1と増大するのに加え、最小の通信回数を維持可能な許容故障数eはn/3未満に減少する、という問題があった。また、Paxosでは、マスタ計算機の故障や遅延を隠蔽できない、という問題があった。
そこで本発明は、上記問題点に鑑みて成されたもので、サーバ(またはプロセス数)の増大を抑制しながらも、データの更新(または参照)をサーバに要求してから、データの一貫性を保証するまでの通信回数を低減することを目的とする。
本発明は、プロセッサとメモリとストレージ装置を備えたサーバを複数有し、データを前記複数のサーバで受信して格納し、前記データを多重化して保持するデータ管理システムであって、前記サーバは、前記多重化された前記データの一貫性を判定する第1の判定部と、前記多重化された前記データの一貫性を判定する際に、前記第1の判定部よりも前記サーバの許容故障数は大きいが、前記データの一貫性を判定するために前記サーバ間の最小通信回数が多い第2の判定部と、前記第1の判定部または前記第2の判定部から前記データの一貫性の判定結果を受け付けて、前記判定結果が前記一貫性を保証するデータを含む場合には、当該一貫性が保証されたデータを出力する組み合わせ部と、前記組み合わせ部が出力した前記データを格納するデータ格納部と、を備える。
本発明によれば、サーバ(プロセス数)の増大を抑制し、サーバの許容故障数の低減を抑制しながらも、データを受け付けてからデータの一貫性を保証するまでの通信回数を低減することができる。
以下、本発明の一実施形態について添付図面を用いて説明する。
図1は、分散データ管理を行う計算機システムの一例を示すブロック図である。サーバ1−1〜1−nはネットワーク2を介してクライアント3−1、3−2に接続される。サーバ1−1〜1−nは、クライアント3−1、3−2から受け付けたデータを分散して格納する分散データ管理システムを構成する。なお、以下の説明ではサーバ1−1〜1−nの総称を符号1で表し、クライアント3−1、3−2の総称を符号3で表す。
図2は、サーバ1−1の構成の一例を示すブロック図である。なお、サーバ1−2〜1−nも同様の構成であるので、重複した説明は省略する。サーバ1−1は、演算を行うプロセッサ11と、プログラムやデータを保持するメモリ12と、データやプログラムを格納するストレージ装置14と、ネットワーク2に接続されて通信を行うインターフェース13と、を含む計算機である。
メモリ12には、インターフェース13を介してデータの送受信を行う送受信部110と、受信したデータと他のサーバ1のデータの同一性(一貫性)を判定する更新部130と、更新部130が出力したデータを格納するデータ格納部140が保持される。なお、データ格納部140はストレージ装置14に設定されてもよいし、ストレージ装置14とメモリ12の双方に設定されてもよい。
更新部130は、受信したデータと他のサーバ1のデータの同一性を判定するために、省プロセス1−ステップ合意アルゴリズムを実行する省プロセス1ステップ合意部210と、2ステップ合意アルゴリズムを実行する2ステップ合意部220と、を含む低レイテンシー合意アルゴリズム実行部200と、補助的な合意アルゴリズムとしてPAXOSアルゴリズムを実行するPAXOS合意部230と、省プロセス1ステップ合意部210と2ステップ合意部220の出力を組み合わせて一貫性が保証された確定値を出力する組み合わせ部240が含まれる。
送受信部110と、更新部130を構成する省プロセス1ステップ合意部210と、2ステップ合意部220と、PAXOS合意部230と、組み合わせ部240の各機能部はプログラムとしてメモリ12にロードされる。
プロセッサ11は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、プロセッサ11は、送受信プログラムに従って処理することで送受信部110として機能し、組み合わせプログラムに従って処理することで組み合わせ部240として機能する。他のプログラムについても同様である。さらに、プロセッサ11は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
サーバ1−1の各機能を実現するプログラム、テーブル等の情報は、ストレージ装置14や不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
送受信部110は、クライアント3からデータの更新要求を受信すると、当該サーバ1−1が受信したデータを他のサーバ1−2〜1−nへ送信する。その後、送受信部110は、全てのサーバ1−2〜1−nの半数から送信された更新要求のデータを受信し、受信したデータを更新部130へ送信し、更新部130がデータの同一性の判定を行う。
そして、更新部130は、他のサーバ1のデータと一貫性が保証されたデータを出力し、データ格納部140へ書き込む。更新部130は、書き込みが完了するとクライアント3に更新完了の応答を送信し、更新処理を完了する。
クライアント3の構成は、図示しないプロセッサと、メモリと、インターフェース及びストレージ装置を含む計算機である。クライアント3は、サーバ1に対してデータの登録、更新、参照を要求するアプリケーションを実行する。
次に、更新部130の構成について説明する。更新部130には、上記したように送受信部110がクライアント3から受信したデータと、他のサーバ1が受信したクライアント3のデータが入力される。
更新部130では、これらのデータを省プロセス1ステップ合意部210(第1の判定部)と、2ステップ合意部220(第2の判定部)へそれぞれ入力してデータの同一性(または一貫性)の判定を実行する。
省プロセス1ステップ合意部210は、同一性の判定結果として確定値または推定値あるいは解決値を出力する。2ステップ合意部220は、同一性の判定結果として確定値または推定値あるいは解決値を出力する。組み合わせ部240はこれらの確定値または推定値、解決値を入力する。
組み合わせ部240は、クライアント3から受信したデータと、他のサーバ1へ送信されたクライアント3のデータが同一であると判定した場合、入力されたデータについて一貫性を保証した確定値(合意値)としてデータ格納部140へ出力する。確定値は同一性(または一貫性)が保証されたデータであり、合意値は同一性について他のサーバ1との間で合意したデータで、サーバ1間で一貫性が保証される。
一方、確定値が得られない場合、組み合わせ部240は推定値またはクライアント3から受け付けたデータ(解決値)をPAXOS合意部230(第3の判定部または補助合意部)へ入力し、他のサーバ1のPAXOS合意部230と通信を行って、確定値を演算する。そして、更新部130は、PAXOS合意部230の確定値を取得し、当該確定値を合意値として出力する。
更新部130は、組み合わせ部240またはPAXOS合意部230が出力した合意値をデータ格納部140へ格納し、データの更新が完了した応答をクライアント3−1へ送信する。
<省プロセス1ステップ合意部>
図15は、省プロセス1ステップ合意部210の一例を示すブロック図である。省プロセス1ステップ合意アルゴリズムによるデータの同一性(一貫性)の判定と、同一性が保証されない場合(以下、衝突とする)の解決手法は、前記非特許文献1の1ステップ合意アルゴリズムと同様で、次の通りである。
・データの同一性:確定値同士は必ず一致する。
・衝突の解決:確定値がいずれかのサーバ1に存在する可能性がある場合、推定値は必ず前記確定値と一致する。(確定値がいずれかのサーバ1に存在する可能性がある場合、確定値と一致する推定値が必ず存在し、解決値(推定値)となる)。それ以外の場合、解決値は入力データ(あるいは提案)の値の中の任意の一つと一致する。
図15は、省プロセス1ステップ合意部210の一例を示すブロック図である。省プロセス1ステップ合意アルゴリズムによるデータの同一性(一貫性)の判定と、同一性が保証されない場合(以下、衝突とする)の解決手法は、前記非特許文献1の1ステップ合意アルゴリズムと同様で、次の通りである。
・データの同一性:確定値同士は必ず一致する。
・衝突の解決:確定値がいずれかのサーバ1に存在する可能性がある場合、推定値は必ず前記確定値と一致する。(確定値がいずれかのサーバ1に存在する可能性がある場合、確定値と一致する推定値が必ず存在し、解決値(推定値)となる)。それ以外の場合、解決値は入力データ(あるいは提案)の値の中の任意の一つと一致する。
図15は、図1のサーバ1−1〜1−5の各送受信部110を送受信部1〜5とし、サーバ1−1と1−5の更新部130を更新部1、5とした例を示す。図示の例では送受信部1〜4が、クライアント3からデータ「A」を受信し、送受信部5が、クライアント3からデータ「B」を受信した例を示す。
省プロセス1ステップ合意アルゴリズムを実行する省プロセス1ステップ合意部210では、送受信部1〜5を確定クォーラムと推定クォーラムの2つのクォーラムに分け、各クォーラムのデータの同一性を更新部1と更新部5の合意で求める例を示す。なお、クォーラムは、分散処理を実行する要素の部分集合を示す。
次に、確定クォーラムを構成する送受信部110(サーバ1)の数をQeとし、推定クォーラムを構成する送受信部110(サーバ1)の数をQfとする。
上述のデータの同一性の要件から、任意の確定クォーラム同士は互いに必ず重なる必要があり、Qe>n/2となる。なお、nは送受信部110(サーバ1)の総数である。
また、上記衝突の解決の要件から、任意の確定クォーラムは、任意の推定クォーラムの過半数部分を包含する必要があり、Qe+(Qf/2)>nとなる。ここで、省プロセス1ステップ合意アルゴリズムの目的は、Qf>n/2とすることであるので、これを満たすクォーラムサイズは、
Qe≧(3/4)n となる最小の整数Qe
Qf>n/2 となる最小の整数Qf
となる。なお、過半数はn/2より大きい最小の整数とする。
Qe≧(3/4)n となる最小の整数Qe
Qf>n/2 となる最小の整数Qf
となる。なお、過半数はn/2より大きい最小の整数とする。
確定値と推定値の決定方法は、次の通りである。
・確定クォーラム内で、全てのデータの値が一致すればその値を確定値に出力し、そうでなければ空、を確定値に出力。
・確定クォーラムが存在することが判定できない場合、確定値には何も出力されない。
・推定クォーラム内で、ある過半数部分以上のデータの値が一致すればその値を推定値に出力し、そうでなければ空を推定値に出力。
・確定クォーラム内で、全てのデータの値が一致すればその値を確定値に出力し、そうでなければ空、を確定値に出力。
・確定クォーラムが存在することが判定できない場合、確定値には何も出力されない。
・推定クォーラム内で、ある過半数部分以上のデータの値が一致すればその値を推定値に出力し、そうでなければ空を推定値に出力。
衝突が発生した際の解決値の決定方法は、1ステップ合意アルゴリズムと同様で、次の通りである。
・推定値が空でなければ推定値を解決値として出力し、空であれば入力されたデータの中の任意の一つを解決値とする。なお、解決値や推定値について他の更新部130とPAXOS合意を実施することで、同一性を確保することができる。
・推定値が空でなければ推定値を解決値として出力し、空であれば入力されたデータの中の任意の一つを解決値とする。なお、解決値や推定値について他の更新部130とPAXOS合意を実施することで、同一性を確保することができる。
なお、図示の例では、送受信部1を含むクォーラムの処理をサーバ1の更新部1で実行する例を示したが、他のサーバ1−nの更新部nで処理を実行してもよい。
<2ステップ合意部>
図16は、2ステップ合意部220の一例を示すブロック図である。2ステップ合意アルゴリズムによるデータの同一性の判定と、同一性が保証されない衝突の解決手法は、上述の省プロセス1ステップ合意アルゴリズム(及び1ステップ合意アルゴリズム)と同様である。
図16は、2ステップ合意部220の一例を示すブロック図である。2ステップ合意アルゴリズムによるデータの同一性の判定と、同一性が保証されない衝突の解決手法は、上述の省プロセス1ステップ合意アルゴリズム(及び1ステップ合意アルゴリズム)と同様である。
図16は、図1のサーバ1−1〜1−5の各送受信部110を送受信部1〜5とし、サーバ1−1と1−5の更新部130を更新部1、5とする。また、図16では、図1に示した2ステップ合意部220を前段部220−Aと後段部220−Bに分割し、サーバ1−1〜1−5の前段部220−Aを前段部1〜5とし、サーバ1−1とサーバ1−5の後段部220−Bを後段部1と後段部5として表示した。なお、図16においては、サーバ1−1の後段部1と、サーバ1−5の後段部5で合意値を決定する例を示す。また、図16の例では送受信部1〜4が、クライアント3からデータ「A」を受信し、送受信部5が、クライアント3からデータ「B」を受信した例を示す。
2ステップ合意アルゴリズムを実行する2ステップ合意部220では、送受信部1〜5を複数の選択クォーラムに分け、前段部1〜5を2つの計数クォーラムに分けて、更新部1、5で処理を行う例を示す。なお、図示は省略するが、前段部2の入力は送受信部2、3、4の選択クォーラムが受信したデータであり、前段部3の入力は送受信部1、3、4が受信したデータであり、前段部4の入力は送受信部1、2、4が受信したデータである。
次に、送受信部1〜5の選択クォーラムと、前段部1〜5の計数クォーラムは、次のように設定する。
上記データの同一性の要件から、任意の選択クォーラム同士は互いに必ず重なる必要があり、過半数以上必要である。従って、選択クォーラムのサイズはn/2を超える最小の整数となる。
また、上記衝突の解決の要件から、任意の計数クォーラム同士は互いに必ず重なる必要があり、過半数以上必要である。従って、計数クォーラムのサイズはn/2を超える最小の整数となる。
クライアント3−1からデータを受信すると2ステップ合意部220の前段部1〜5は、各選択クォーラム毎に前段部1〜5へ受信したデータを送信する。
前段部1〜5では、受信した選択クォーラム内のデータの値が、全て一致すれば、選択値として決定する。一方、それ以外の場合は、選択値を空とする。
次に、後段部1、5における確定値と推定値の決定方法は次の通りである。
・計数クォーラム内で、全てのデータが一致すれば、その値を確定値に出力する。
・計数クォーラム内で、空でないデータが存在すればその値を推定値とし、そうでなければ空を推定値として出力する。
・計数クォーラム内で、全てのデータが一致すれば、その値を確定値に出力する。
・計数クォーラム内で、空でないデータが存在すればその値を推定値とし、そうでなければ空を推定値として出力する。
解決値の決定方法 は、1ステップ合意と同様であり、推定値が空でなければ推定値、空であれば入力されたデータの中の任意の一つ、とする。なお、解決値や推定値について他の更新部130とPAXOS合意を実施することで、同一性を確保することができる。
<処理の概要>
図3は、本発明のサーバ1で行われる分散データ管理の一例を示すシーケンス図である。図示の例ではクライアント3−1がデータAの更新要求をサーバ1−1〜1−nへマルチキャストで送信する例を示す。なお、クライアント3−1から各サーバ1へのマルチキャストによる送信は、図示しない管理計算機などが行っても良い。
図3は、本発明のサーバ1で行われる分散データ管理の一例を示すシーケンス図である。図示の例ではクライアント3−1がデータAの更新要求をサーバ1−1〜1−nへマルチキャストで送信する例を示す。なお、クライアント3−1から各サーバ1へのマルチキャストによる送信は、図示しない管理計算機などが行っても良い。
各サーバ1の送受信部110は、クライアント3−1から受信したデータを他のサーバ1へマルチキャストで送信する(図中M2)。サーバ1は、全てのサーバ1の半数から受信したデータを更新部130へ送信し、同一性の判定を行う。
更新部130は、図15に示した確定クォーラム(または推定クォーラム)のデータを省プロセス1ステップ合意部(図3のSP1−STEP)210へ入力する。また、更新部130は、図16に示した選択クォーラム(または計数クォーラム)のデータを2ステップ合意部220へ入力する。
省プロセス1ステップ合意部210では、入力されたデータのうち3/4が全て一致した場合(確定クォーラムから入力されたデータが全て一致した場合)、当該データを確定した値(確定値)とする。また、省プロセス1ステップ合意部210は、入力されたデータの1/2で、過半数のデータが一致した場合、すなわち推定クォーラムから入力されたデータのうち過半数のデータが一致した場合、当該データを推定値とする。一方、上記以外の場合には、クライアント3から受信したデータ等の任意の入力値を解決値として出力する。
次に、2ステップ合意部220では、前段部220−A(図3の2−STEP(1))選択クォーラムのデータから確定値、推定値または解決値を演算し、計数クォーラム毎に後段部220−B(図3の2−STEP(2))へ送信する(M3)。
後段部220−Bでは、計数クォーラムから入力されたデータが全て一致した場合、当該データを確定値として出力する。また、後段部220−Bは、計数クォーラムから入力されたデータが部分一致した場合、当該データを推定値とする。一方、上記以外の場合には、クライアント3から受信したデータ等の任意の入力値を解決値として出力する。
次に、更新部130では、省プロセス1ステップ合意部210と2ステップ合意部220の出力が組み合わせ部240へ入力される。組み合わせ部240は、図4に示すように予め設定された優先順位に従って省プロセス1ステップ合意部210または2ステップ合意部220の出力を選択する。なお、図4は、合意のアルゴリズムを選択する優先順位を示す図である。図4は、優先順位2401と、選択する内容を記載した特徴2402からひとつのエントリが構成される。この優先順位は、条件設定部120に保持される。
まず、組み合わせ部240は、第1の優先順位として、省プロセス1ステップ合意部210の確定値または2ステップ合意部220の確定値のいずれかを合意値(合意確定値)として選択する。
なお、省プロセス1ステップ合意部210の確定値は、サーバ1の3/4(確定クォーラム)から受信したデータが一致した値である。また、2ステップ合意部220の確定値は、後段部220−Bがサーバ1の1/2(計数クォーラム)から受信したデータが一致した値である。
組み合わせ部240は、第2の優先順位として、2ステップ合意部220の推定値を選択する。この推定値は、2ステップ合意部220の後段部220−Bがサーバ1の1/2から受信したデータのうち部分一致した値(計数クォーラムから受信したデータのうち部分一致した値)である。
また、組み合わせ部240は、第3優先順位として、省プロセス1ステップ合意部210の推定値を選択する。この推定値は、省プロセス1ステップ合意部210がサーバ1の1/2から受信したデータのうち過半数が一致した値(推定クォーラムから受信したデータのうち過半数が一致した値)である。
組み合わせ部240は、第4優先順位として、省プロセス1ステップ合意部210または2ステップ合意部220のいずれかの解決値を選択する。
組み合わせ部240は、図4の優先順位に従って省プロセス1ステップ合意部210または2ステップ合意部220の出力を選択した後、選択したデータが確定値であればそのまま出力する。
一方、組み合わせ部240は、推定値または解決値を選択した場合には、他のサーバ1との間で合意を行う必要がある。このため、組み合わせ部240は選択した推定値または解決値をPAXOS合意部230へ入力して他のサーバ1との間でデータの合意値を決定する。
そして、更新部130は、組み合わせ部240から出力された合意値またはPAXOS合意部230から出力された合意値を、各サーバ1との間で同一性が保証されたデータとしてデータ格納部140へ格納する。また、更新部130は、データの格納が完了したことをクライアント3−1へ応答する。
このように、本発明では、省プロセス1ステップ合意部210と2ステップ合意部220の2つの合意アルゴリズムを組み合わせ、さらに、これら2つの合意アルゴリズムから確定値が得られないときにはPAXOS合意部230によって合意値を得る。これにより、プロセス数(または計算機数)の増大を抑制しながらも、クライアント3がデータの更新(または参照)をサーバ1に要求してから、サーバ1で合意に達するまでの最小の通信回数を低減することができる。
図5は、各合意アルゴリズムの性能を比較する図である。図5では、合意のアルゴリズムの名称3001と、データの一貫性を保証するために必要なデータを格納する計算機の数を示すプロセス数n3002と、クライアント3からサーバ1間で合意を得るまでの最小通信回数を維持可能な許容故障数e3003と、クライアント3からサーバ1間で合意するまでの最小通信回数δ3004からひとつのエントリが構成される。
まず、必要なプロセス数3002は、データの一貫性を保証するためのデータの複製数をfとし、データを格納する計算機の数をプロセス数nとしたもので、前記従来例に示した1ステップ合意アルゴリズムが最大のn=3f+1となる。
次に、最小通信回数δを維持可能な許容故障数e3003は、PAXOSと2ステップがe<n/2と最大であり、最も可用性が高い。これに対して省プロセス1ステップは、e≦n/4と最小となる、最も可用性が低い。また、1ステップの許容故障数e3003は、省プロセス1ステップよりも大となるが、PAXOSと2ステップの許容故障数eよりは小さい。
次に、最小通信回数δは、クライアント3の要求からサーバ1間での合意に至るまでの通信回数で、省プロセス1ステップと1ステップが最小でδ=2となる。これは、図3で示したように、クライアント3−1からデータの更新要求で1回の通信となり、各サーバ1の送受信部110は受信したデータを他のサーバ1へ送信することで2回の通信となる(M2)。そして、省プロセス1ステップ合意部210(または1ステップ)で、確定値が得られれば合計2回の通信でサーバ1間の合意値を得られることができる。
一方、2ステップでは、上記サーバ1間での通信(M2)の後、前段部220−Aの結果を各後段部220−Bへ送信するため、最低でも3回の通信が必要となる。PAXOSでも同様に最低でも3回の通信が必要となる。
本発明では、省プロセス1ステップ合意部210と、2ステップ合意部220を組み合わせることで、必要なプロセス数n3002は、1ステップよりも少なく、PAXOSと同等のn=2f+1で、許容故障数eは、PAXOSと同等のe<n/2で1ステップよりも可用性が高く、かつ最小通信回数δは、PAXOSよりも小さく、1ステップと同等の2回となる。
これにより、本発明では、1ステップよりも計算機資源(プロセス数n)を低減しながら、PAXOSと同等の許容故障数eを維持し、さらには、1ステップと同等の最小通信回数δを確保できる。これにより、分散データ管理システムの可用性を確保しながらレイテンシー(最小通信回数δ)を削減し、かつ、計算機資源が増大するのを抑制することができるのである。
<処理の詳細>
図6は、各サーバで行われる処理の一例を示すフローチャートである。この処理は、クライアント3からデータの更新要求(または参照要求や登録要求)を受信したときに実行される。
図6は、各サーバで行われる処理の一例を示すフローチャートである。この処理は、クライアント3からデータの更新要求(または参照要求や登録要求)を受信したときに実行される。
まず、サーバ1は、クライアント3からマルチキャストで送信された更新要求に含まれるデータを受信する(S1)。次にサーバ1は、受信したデータを他のサーバ1へマルチキャストで送信する(S2)。サーバ1は、全てのサーバ1の半数からクライアント3が送信したデータを受信する(S3)。
次に、サーバ1は、ステップS3で受信した全てのサーバ1の半数からのデータを、ステップS4の省プロセス1ステップ合意処理と、ステップS5の2ステップ合意処理へそれぞれ入力する。ステップS4では、上述した省プロセス1ステップ合意部210の処理が図7で示すように実行される。ステップS5では、上述した2ステップ合意部220の処理が図8で示すように実行される。なお、図示の例では、省プロセス1ステップ合意処理(S4)と2ステップ合意処理(S5)を並列して実行する例を示すが、順次実行しても良い。
ステップS6では、上述した組み合わせ部240の処理が図9で示すように実行される。ステップS7では、サーバ1の更新部130が、省プロセス1ステップ合意処理または2ステップ合意処理の何れかから確定値が出力され、合意が確定したか否かを判定する。合意が確定していればステップS8へ進んで、組み合わせ部240が出力した確定値を合意値に決定する。
一方、ステップS7の判定で合意が確定していなければ、更新部130は、ステップS9へ進んで、組み合わせ部240が出力した推定値または解決値をPAXOS合意部230へ入力し、サーバ1間での合意処理を実行させる。ステップS10では、更新部130がPAXOS合意部230から出力を受け付け、合意値として決定する。
この後、更新部130は、ステップS8またはステップS10で決定した合意値をデータ格納部140へ格納し、クライアント3へ更新が完了したことを応答する。
図7は、図6のステップS4で行われる省プロセス1ステップ合意処理の一例を示すフローチャートである。この処理は、更新部130の省プロセス1ステップ合意部210で実行される。
更新部130は、全サーバ1の1/2台(推定クォーラム)からデータを受信するまで待機する(S11)。更新部130は、推定クォーラムを構成する全サーバ1の1/2台からデータを受信すると、これらのデータが全て一致したか否かを判定する(S12)。全てのデータが一致した場合にはステップS13へ進み、そうでない場合にはステップS16へ進む。
ステップS13では、更新部130が、全サーバ1の3/4台(確定クォーラム)からデータを受信するまで待機する。更新部130は、確定クォーラムを構成する全サーバ1の3/4台からデータを受信すると、これらのデータが全て一致したか否かを判定する(S14)。全てのデータが一致した場合にはステップS15へ進み、そうでない場合にはステップS17へ進む。
ステップS15では、推定クォーラムの全てのデータと、確定クォーラムの全てのデータが一致したので、更新部130は、受信したデータを確定値として決定する。
一方、ステップS12の判定で、全てのデータが一致しない場合のステップS16では、更新部130が過半数のデータが当該サーバ1で受信したデータと一致したか否かを判定する。過半数のデータが一致していればステップS17へ進み、そうでない場合にはステップS18へ進む。
ステップS17では、更新部130が、過半数が一致したデータを推定値として決定する。一方、推定クォーラムで過半数のデータが一致しない場合、更新部130は、ステップS18でデータを予め設定した解決値として決定する。なお、解決値は、当該サーバ1が受信したデータ等を用いることができる。
次に、ステップS19で、更新部130は、上記ステップS15、S17、S18の何れかで決定したデータを組み合わせ部240へ出力する。
上記処理により、省プロセス1ステップ合意アルゴリズムによる推定クォーラムと確定クォーラムが受信したデータに基づいて、更新部130は確定値または推定値を得ることができる。
図8は、図6のステップS5で行われる2ステップ合意処理の一例を示すフローチャートである。この処理は、更新部130の2ステップ合意部220で実行される。
更新部130は、全サーバ1の1/2台(選択クォーラム)から前段部220−Aがデータを受信するまで待機する(S21)。更新部130は、選択クォーラムを構成する全サーバ1の1/2台からデータを受信すると、当該サーバ1が受信したデータと、これらのデータが全て一致したか否かを判定する(S22)。全てのデータが一致した場合にはステップS23へ進み、そうでない場合にはステップS24へ進む。
ステップS23では、前段部220−Aが他のサーバ1から受信したデータを、各サーバ1の後段部220−Bへ送信する。一方、選択クォーラムの全てのデータが一致しなかったステップS24では、前段部220−Aが各サーバ1の後段部220−Bへ空のデータを送信する。
次に、ステップS25では、全サーバ1の1/2台(計数クォーラム)から後段部220−Bがデータを受信するまで待機する(S25)。更新部130は、計数クォーラムを構成する全サーバ1の1/2台からデータを受信すると、当該サーバ1が受信したデータと、これらのデータが全て一致したか否かを判定する(S26)。全てのデータが一致した場合にはステップS27へ進み、そうでない場合にはステップS28へ進む。
ステップS28では、後段部220−Bが受信したデータは全て空のデータであるか否かを判定する。更新部130は、後段部220−Bが受信したデータが全て空でない場合には、ステップS29へ進んで、いずれかのデータを推定値として決定する。
一方、後段部220−Bが受信したデータが全て空の場合には、ステップS30へ進んで、データは予め設定した解決値として決定する。なお、解決値は、当該サーバ1が受信したデータ等を用いることができる。
次に、ステップS31で、更新部130は、上記ステップS27、S29、S30の何れかで決定したデータを組み合わせ部240へ出力する。
上記処理により、2ステップ合意アルゴリズムによる選択クォーラムと計数クォーラムが受信したデータに基づいて、更新部130は確定値または推定値を得ることができる。
図9は、図6のステップS6で行われる組み合わせ部240の処理の一例を示すフローチャートである。
まず、組み合わせ部240は、省プロセス1ステップ合意処理(S4)と2ステップ合意処理(S5)の出力を受け付ける(S41)。組み合わせ部240は、省プロセス1ステップ合意処理の出力と、2ステップ合意処理(S5)の出力の何れかに確定値があるか否かを判定する(S42)。何れかの出力に確定値が存在する場合にはステップS43へ進み、そうでない場合にはステップS45へ進む。
ステップS43で、組み合わせ部240は省プロセス1ステップ合意処理と2ステップ合意処理の何れかの出力から確定値を選択する。次に、ステップS44では、組み合わせ部240が選択した確定値を合意値とする。
ステップS45で、組み合わせ部240は2ステップ合意処理の出力に推定値が存在するか否かを判定する。推定値が存在する場合には、ステップS46へ進み、そうでない場合にはステップS47へ進む。
ステップS46で、組み合わせ部240は、2ステップ合意処理の推定値を選択してステップS50に進む。
ステップS47で、組み合わせ部240は、省プロセス1ステップ合意(図中S1−STEP)処理の出力に推定値が存在するか否かを判定する。推定値が存在する場合には、ステップS48へ進み、そうでない場合にはステップS49へ進む。
ステップS48で、組み合わせ部240は、省プロセス1ステップ合意処理の推定値を選択してステップS50に進む。一方、ステップS49では、組み合わせ部240が解決値を選択してステップS50に進む。ここで、解決値は、組み合わせ部240で予め設定された値や、送受信部110で受け付けた値などを用いればよい。
次に、ステップS50では、ステップS46、S45、S49の何れかで組み合わせ部240が選択した値をPAXOS合意部230へ入力する。ステップS51では、PAXOS合意部230が他のサーバ1との間で合意値を演算して出力する。なお、PAXOS合意部230については、前記従来例の特許文献1等と同様であるのでここでは詳述しない。そして、ステップS52では、組み合わせ部240がPAXOS合意部230の確定値を合意値とする。
そして、ステップS53では、上記ステップS44、S52の何れか一方で得られた合意値を組み合わせ部240が出力する。
上記処理によって、更新部130の組み合わせ部240では、省プロセス1ステップ合意部210または2ステップ合意部220の何れかの確定値を合意値とすることができる。また、省プロセス1ステップ合意部210または2ステップ合意部220の双方で確定値が得られない場合には、推定値または解決値を入力としてPAXOS合意部230から合意値をえることができる。
以上のように本実施例1では、省プロセス1ステップ合意部210と2ステップ合意部220を組み合わせ、さらに補助合意部としてPAXOS合意部230を採用することで、上述のように、必要なプロセス数nを1ステップ合意アルゴリズムよりも少なく、PAXOSと同等の値とすることができる。さらに、本発明の許容故障数eは、PAXOSと同等のe<n/2を維持し、かつ最小通信回数δは、PAXOSよりも小さく、1ステップ合意アルゴリズムと同等の2回となる。したがって、1ステップ合意アルゴリズムよりも計算機資源(プロセス数n)を低減しながら、PAXOSと同等の許容故障数eを維持し、さらには、1ステップ合意アルゴリズムと同等の最小通信回数δを確保できる。これにより、分散データ管理システムの可用性を確保しながらレイテンシー(最小通信回数)を削減し、かつ、計算機資源が増大するのを抑制することができるのである。また、本発明ではPAXOSのようにマスタ計算機を必要としないため、マスタ計算機の故障や遅延による影響を受けることがない。
なお、省プロセス1ステップ合意部210または2ステップ合意部220の双方から確定値が出力されない場合には、PAXOS合意部230で合意値を演算することになるが、PAXOS合意部230が頻繁に実行されるとレイテンシーが増大する。
この場合、単位時間(例えば、10秒ないし1分)内で所定の回数を超えてPAXOS合意部230を実行する場合、更新部130は省プロセス1ステップ合意部210及び2ステップ合意部220を実行せずにPAXOS合意部230のみで合意値を算出するようにしてもよい。この状況で更新部130は、省プロセス1ステップ合意部210及び2ステップ合意部220の実行を停止しても良いし、省プロセス1ステップ合意部210及び2ステップ合意部220へのデータの入力を停止してもよい。
図10は、第2の実施例を示し、クライアント3からのデータを全順序で処理する場合に組み合わせ部240で行われる処理の一例を示すフローチャートである。本実施例2は、前記実施例1の組み合わせ部240の処理を変更したもので、その他の構成は前記実施例1と同様である。
全順序は、各送受信部110が受信したデータをその都度比較することを示す。そして、本実施例2では、優先順位が上位のデータが入手できると、優先順位が下位のデータを破棄し、優先順位が上位のデータのみを利用してデータの一貫性を保証する。図10の処理は、前記第1の実施例の図6に示したステップS6の組み合わせ部の処理で実行される。
組み合わせ部240は、ステップS61で、省プロセス1ステップ合意処理(図中S1−STEP)または2ステップ合意処理(図中2−STEP)の何れかの出力結果が入力されるまで待機する。
組み合わせ部240は、出力結果が入力されると、当該出力結果が確定値で、かつ優先順位の高い省プロセス1ステップ合意処理の出力であるか否かを判定する(S62)。組み合わせ部240は、優先順位の高い省プロセス1ステップ合意処理からの確定値であれば合意が確定したと判定してステップS70に進む。一方、組み合わせ部240は、優先順位の低い2ステップ合意の確定値や、推定値などの確定値以外の場合にはステップS63へ進んで、他方の出力結果が入力されるまで待機する(S63)。
組み合わせ部240は、他方の出力結果を受け付けると、確定値であるか否かを判定する(S64)。受け付けた出力結果が確定値であれば、2ステップ合意処理と省プロセス1ステップ合意処理(第1の優先順位)のそれぞれから確定値が入力されたので、組み合わせ部240は、合意が確定したと判定してステップS70に進む。ステップS70では、組み合わせ部240が、ステップS62、S64で合意が確定した確定値を合意値として出力する。一方、組み合わせ部240は、入力された出力結果が確定値でない場合にはステップS65へ進む。
ステップS65では、組み合わせ部240が、2ステップ合意処理の出力結果を参照し、ステップS66で、推定値であるか否かを判定する。組み合わせ部240は、出力結果が第2の優先順位である2ステップ合意処理の推定値であれば、ステップS71へ進んで当該推定値をPAXOS合意部230へ入力する。一方、出力結果が2ステップ合意処理の推定値でない場合には、ステップS67へ進む。
ステップS67では、組み合わせ部240が、省プロセス1ステップ合意処理の出力結果を参照し、ステップS68で、推定値であるか否かを判定する。組み合わせ部240は、出力結果が第3の優先順位である省プロセス1ステップ合意処理の推定値であれば、ステップS71へ進んで当該推定値をPAXOS合意部230へ入力する。一方、出力結果が省プロセス1ステップ合意処理の推定値でない場合には、ステップS69へ進む。
ステップS69では、組み合わせ部240が、省プロセス1ステップ合意処理の入力または2ステップ合意処理の入力(クライアント3からの入力または他のサーバ1の前段部220−Aからの入力)を参照し、何れか一方の入力を選択する。そして、ステップS71では、組み合わせ部240が、上記ステップS66、S68で参照した推定値または、ステップS69で選択した入力をPAXOS合意部230へ入力し、各サーバ1との間で合意値を演算させる。そして、ステップS72では、PAXOS合意部230からの出力を合意値として出力する。
前記第1の実施例では、省プロセス1ステップ合意処理と2ステップ合意処理の双方の出力を受け付ける例を示したが、本実施例2では、省プロセス1ステップ合意処理と2ステップ合意の出力の何れか一方を受け付けたときに実行する。
この場合、他のサーバ1との通信回数が少ない省プロセス1ステップ合意処理で確定値が得られれば、この確定値を合意値とすることで、2ステップ合意処理を待たずに処理を完了することができ、処理の高速化を実現できる。
換言すれば、更新部130では、確定値(判定結果)に優先順位を設定しておき、優先順位が上位の確定値が取得できると、優先順位が下位の判定結果を破棄する。そして、更新部130は優先順位が上位の確定値のみで、データの一貫性を保証する。
図11〜図14は、本発明の第3の実施例を示し、クライアント3からのデータを半順序で処理する例を示す。
図11は、本発明の第3の実施例を示し、クライアント3からのデータを半順序で処理する場合、各サーバ1の送受信部110で受け付けたデータの一例を示すブロック図である。
図11において、送受信部1〜n(110−1〜110−n)は、サーバ1−1〜1−nの構成要素であり、各送受信部110は、複数のデータを到着順で格納可能なバッファ115を有する。その他の構成は、前記第1の実施例と同様である。なお、図11の更新部130−1、130−2は、サーバ1−1、1−2の構成要素である。
ここで半順序処理は、入力されたデータが順序を交換可能であれば、各送受信部110が更新部130へ異なる順序でデータを配送しても、更新部130では入力されたデータを処理した最終的な結果が、すべてのサーバ1の更新部130で同じとなる。本実施例3は、データの順序を交換することでデータが一致する場合には、送受信部110が更新部130へ送信するデータの順序を変更することで、各サーバ1の更新部130のデータを一致させることで、衝突(データの不一致)の発生を低減させるものである。
半順序処理は、クライアント3−1がマルチキャストで送信した一組のデータではなく、サーバ1の送受信部110が順序を交換可能なデータを受信している限り、バッファ115内のすべてのデータの中からクォーラムの個数(図示の例では5個)が一致するデータを確定値として更新部130へ送信する順序を決定する。半順序処理では、順序が交換可能でないデータを受信した場合に衝突の解決を行う。
図11以後の図においては、同一の文字の大文字と小文字のデータ同士は順序を交換不可であり、それ以外は順序を交換可能として記述する。例えば、データAとデータaは順序の交換が不可であり、データAとデータB及びデータAとデータbは順序の交換が可能である。
図12は、半順序処理でデータの衝突を解決する計算機システムの一例を示すブロック図である。図12は、省プロセス1ステップ合意部210と2ステップ合意部220(前段部220−A及び後段部220−B)及び組み合わせ部240で半順序処理を適用し、データの衝突の解決を行う例を示す。
図12において、送受信部110−1〜110−5、前段部1〜5(220A)は、サーバ1〜5の構成要素を示し、サーバ1とサーバ5の更新部130−1、130−5で合意を行う例を示す。なお、送受信部110−1〜110−5は、上述のように複数のデータを入力順で保持するバッファ115をそれぞれ有する。
送受信部110−1、110−2のバッファ115には、データ「C」、「B」、「A」が保持され、送受信部110−3のバッファ115には、データ「C」、「A」、「b」が保持され、送受信部110−4のバッファ115には、データ「C」、「b」、「a」が保持され、送受信部110−5のバッファ115には、データ「A」、「a」が保持される。
上記では、送受信部110−1、101−2のバッファ115のデータは同一であり、送受信部110−3〜110−5のバッファ115では、データ「A」、「C」、「a」、「b」が衝突する。
この例では、サーバ1の省プロセス1ステップ合意部210の推定値は、「C」、「B」、「A」となり、2ステップ合意部220の推定値は「C」、「A」となる。同様に、サーバ5の省プロセス1ステップ合意部210の推定値は、「C」、「a」、「b」となり、2ステップ合意部220の推定値は「C」、「A」となる。
衝突の解決では、2ステップ合意部220の推定値(以下、2ステップ(図中2−STEP)推定値とする)と省プロセス1ステップ合意部210の推定値(以下、1ステップ(図中S1−STEP)推定値とする)をそれぞれ決定する。そして、後述するように、2ステップ推定値と1ステップ推定値の順に組み合わせ部240へ出力する。
組み合わせ部240では、入力された2ステップ推定値と1ステップ推定値を結合し、結合した推定値を補助合意部であるPAXOS合意部230へ入力し、他のサーバ1と合意を行う。
更新部130は、PAXOS合意部230の出力である合意の結果を、再度、2ステップ推定値と1ステップ推定値に分離し、この順に各更新部130へ出力する。
2ステップ推定値と1ステップ推定値の順序に従わないで出力すると、1ステップ推定値が先に送信される可能性があり、更新部130−1にデータAが送信済みであるにもかかわらず、更新部130−5にデータAと順序を交換できないデータaが先に送信され、データの一貫性を失うことになる。
そこで、本発明では上述のように衝突が発生した場合には、2ステップ推定値の次に1ステップ推定値を決定し、これらを結合した推定値でPAXOS合意(補助合意)を行い、PAXOS合意の結果を再度、2ステップ推定値と、1ステップ推定値に分離し、この順序で出力する。
以上の処理により、省プロセス1ステップ合意部210と2ステップ合意部220を組み合わせて半順序処理を行う際には、優先順位が最上位の合意したデータが取得できない場合には、優先順位が下位の値まで全てを使用して補助合意を行う。これにより、データの衝突が発生した場合でも、データの一貫性を保証することが可能となる。
図13は、組み合わせ部240で行われる半順序処理の一例を示すフローチャートである。また、図14は、図13の衝突解決処理S84で行われる処理の一例を示すフローチャートである。
組み合わせ部240は、まず、ステップS81で、省プロセス1ステップ合意部210からの確定値、または2ステップ合意部220からの確定値、あるいは衝突判定値の何れかの入力を待つ。なお、衝突判定値は、推定値または解決値(または不定あるいは任意の値)で、省プロセス1ステップ合意部210または2ステップ合意部220の何れかからの入力である。組み合わせ部240は、入力を受け付けると、受け付けたデータが衝突判定値であるか否かを判定する(S82)。衝突判定値が入力された場合にはステップS84へ進み、確定値が入力された場合にはステップS83へ進む。
ステップS83では、組み合わせ部240が、受け付けた確定値を合意値として出力し、上記ステップS81に戻って処理を繰り返す。ステップS84では、組み合わせ部240が図14に示す衝突解決処理を実行し、衝突を解決した後に上記ステップS81に戻って処理を繰り返す。
図14の衝突解決処理について以下に説明する。ステップS91では、組み合わせ部240が優先順位の高い、2ステップ合意部220からの推定値を取得する。2ステップ合意部220からの推定値が存在する場合、組み合わせ部240は、当該推定値を推定値集合2とする。なお、2ステップ合意部220からの推定値が存在しない場合には、推定値集合2を空集合として次のステップに進む。
ステップS92では、組み合わせ部240が優先順位の高い、省プロセス1ステップ合意部210からの推定値を取得する。省プロセス1ステップ合意部210からの推定値が存在する場合、組み合わせ部240は、推定値からステップS91で設定した推定値集合2のデータを除いた部分を推定値集合1とする。なお、省プロセス1ステップ合意部210からの推定値が存在しない場合には、推定値集合1を空集合として次のステップに進む。
ステップS93では、組み合わせ部240が優先順位の低い、省プロセス1ステップ合意部210からの解決値を取得する。省プロセス1ステップ合意部210からの解決値が存在する場合、組み合わせ部240は、解決値からステップS92で設定した推定値集合1とステップS91で設定した推定値集合2を除いた部分を不定集合とする。なお、省プロセス1ステップ合意部210からの解決値が存在しない場合には、不定集合を空集合として次のステップに進む。
ステップS94では、組み合わせ部240が上記推定値集合1、推定値集合2、不定集合の順でPAXOS合意部230へ入力し、他のサーバ1との間でPAXOS合意を実行させる。
ステップS95では、PAXOS合意部230が、推定値集合1に対応するPAXOS合意値を無衝突集合1と、推定値集合2に対応するPAXOS合意値を無衝突集合2と、不定集合に対応するPAXOS合意値を衝突集合として出力する。
ステップS96では、更新部130は、まず、推定値集合2に対応する無衝突集合2を出力する。次に、ステップS97では、更新部130が、推定値集合1に対応する無衝突集合1を出力する。最後にステップS97では、更新部130が不定集合に対応する衝突集合を所定の順序で出力する。
以上の処理により、更新部130を構成する組み合わせ部240は、衝突の解決を行ってPAXOS合意によるデータの一貫性を保証することができるのである。なお、図12では、不定集合及び衝突集合の記載を省略したが、不定集合が発生した場合には図14と同様に処理すればよい。
換言すれば、更新部130では、判定結果に優先順位を設定しておき、優先順位が最上位の確定値(判定結果)が取得できない場合には、優先順位が下位の判定結果を利用してデータの一貫性を保証する。なお、優先順位が下位の判定結果は、全て利用することが望ましい。
なお、本発明において説明した計算機等の構成、処理部及び処理手段等は、それらの一部又は全部を、専用のハードウェアによって実現してもよい。
また、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体(例えば、非一時的な記憶媒体)に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
<補足>
サーバを制御するプログラムを格納した記憶媒体であって、
多重化されたデータの一貫性を判定する第1の判定部で、受信したデータの一貫性を判定する第1のステップと、
前記第1の判定部よりも前記サーバの許容故障数は小さいが、前記データの一貫性を判定するために前記サーバ間の最小通信回数が多い第2の判定部で、前記受信したデータの一貫性を判定する第2のステップと、
前記第1の判定部または前記第2の判定部から前記データの一貫性の判定結果を受け付けて、前記判定結果が前記一貫性を保証するデータを含む場合には、当該一貫性が保証されたデータを出力する第3のステップと、
前記一貫性が保証されたデータを格納する第4のステップと、
を前記サーバに実行させるプログラムを格納した非一時的計算機読み取り可能な記憶媒体。
サーバを制御するプログラムを格納した記憶媒体であって、
多重化されたデータの一貫性を判定する第1の判定部で、受信したデータの一貫性を判定する第1のステップと、
前記第1の判定部よりも前記サーバの許容故障数は小さいが、前記データの一貫性を判定するために前記サーバ間の最小通信回数が多い第2の判定部で、前記受信したデータの一貫性を判定する第2のステップと、
前記第1の判定部または前記第2の判定部から前記データの一貫性の判定結果を受け付けて、前記判定結果が前記一貫性を保証するデータを含む場合には、当該一貫性が保証されたデータを出力する第3のステップと、
前記一貫性が保証されたデータを格納する第4のステップと、
を前記サーバに実行させるプログラムを格納した非一時的計算機読み取り可能な記憶媒体。
Claims (16)
- プロセッサとメモリとストレージ装置を備えたサーバを複数有し、データを前記複数のサーバで受信して格納し、前記データを多重化して保持するデータ管理システムであって、
前記サーバは、
前記多重化された前記データの一貫性を判定する第1の判定部と、
前記多重化された前記データの一貫性を判定する際に、前記第1の判定部よりも前記サーバの許容故障数は大きいが、前記データの一貫性を判定するために前記サーバ間の最小通信回数が多い第2の判定部と、
前記第1の判定部または前記第2の判定部から前記データの一貫性の判定結果を受け付けて、前記判定結果が前記一貫性を保証するデータを含む場合には、当該一貫性が保証されたデータを出力する組み合わせ部と、
前記組み合わせ部が出力した前記データを格納するデータ格納部と、
を備えることを特徴とするデータ管理システム。 - 請求項1に記載のデータ管理システムであって、
前記第2の判定部は、
前記データの一貫性の判定を行って第1の判定結果を出力する前段判定部と、
他のサーバの前記前段判定部から前記第1の判定結果を受信し、複数の前記第1の判定結果から前記データの一貫性を判定し、第2の判定結果を出力する後段判定部と、を含み、
前記組み合わせ部は、
前記第1の判定部と第2の判定部の双方の判定結果が一貫性を保証できない場合には、前記第2の判定部の後段判定部で前記サーバの過半数から受信した第2の判定結果のうち部分一致しているデータを出力することを特徴とするデータ管理システム。 - 請求項2に記載のデータ管理システムであって、
前記第1の判定部は、
全てのサーバの過半数から受信したデータに基づいて前記データの一貫性を判定し、
前記組み合わせ部は、
前記第2の判定部の後段判定部が前記サーバの過半数から受信した第2の判定結果のうち部分一致しているデータがない場合、前記第1の判定部が前記サーバから受信したデータのうち過半数が一致しているデータを出力することを特徴とするデータ管理システム。 - 請求項3に記載のデータ管理システムであって、
前記組み合わせ部は、
前記第1の判定部が前記サーバから受信したデータのうち過半数が一致しているデータがない場合には、前記第1の判定部または第2の判定部から所定の解決値を取得し、当該解決値を出力することを特徴とするデータ管理システム。 - 請求項2に記載のデータ管理システムであって、
PAXOSアルゴリズムを用いて前記データの一貫性の判定を行う第3の判定部をさらに有し、
前記組み合わせ部は、
前記第2の判定部の後段判定部で前記サーバの過半数から受信した第2の判定結果のうち部分一致しているデータがない場合には、前記第3の判定部の判定結果に基づくデータを出力することを特徴とするデータ管理システム。 - 請求項5に記載のデータ管理システムであって、
前記第3の判定部が所定時間内に予め設定した回数を超えて実行された場合には、前記第1の判定部と第2の判定部の処理を実行せずに、前記第3の判定部が出力したデータを前記データ格納部で格納することを特徴とするデータ管理システム。 - 請求項1に記載のデータ管理システムであって、
前記組み合わせ部は、
前記第1の判定部と第2の判定部の判定結果に優先順位を設定し、前記優先順位が上位の判定結果が取得できた場合には、優先順位が下位の判定結果を破棄し、前記優先順位が上位の判定結果でデータの一貫性を保証することを特徴とするデータ管理システム。 - 請求項1に記載のデータ管理システムであって、
前記組み合わせ部は、
前記第1の判定部と第2の判定部の判定結果に優先順位を設定し、前記優先順位が最上位の判定結果が取得できない場合には、優先順位が下位の判定結果を利用してデータの一貫性を保証することを特徴とするデータ管理システム。 - プロセッサとメモリとストレージ装置を備えたサーバを複数有し、データを前記複数のサーバで受信して格納し、前記データを多重化して保持するデータ管理方法であって、
前記サーバが、前記多重化された前記データの一貫性を判定する第1の判定部で、前記受信したデータの一貫性を判定する第1のステップと、
前記サーバが、前記第1の判定部よりも前記サーバの許容故障数は大きいが、前記データの一貫性を判定するために前記サーバ間の最小通信回数が多い第2の判定部で、前記受信したデータの一貫性を判定する第2のステップと、
前記サーバが、前記第1の判定部または前記第2の判定部から前記データの一貫性の判定結果を受け付けて、前記判定結果が前記一貫性を保証するデータを含む場合には、当該一貫性が保証されたデータを出力する第3のステップと、
前記サーバが、前記一貫性が保証されたデータを格納する第4のステップと、
を含むことを特徴とするデータ管理方法。 - 請求項9に記載のデータ管理方法であって、
前記第2の判定部は、
前記データの一貫性の判定を行って第1の判定結果を出力する前段判定部と、
他のサーバの前記前段判定部から前記第1の判定結果を受信し、複数の前記第1の判定結果から前記データの一貫性を判定し、第2の判定結果を出力する後段判定部と、を含み、
前記第3のステップは、
前記第1の判定部と第2の判定部の双方の判定結果が一貫性を保証できない場合には、前記第2の判定部の後段判定部で前記サーバの過半数から受信した第2の判定結果のうち部分一致しているデータを出力することを特徴とするデータ管理方法。 - 請求項10に記載のデータ管理方法であって、
前記第1の判定部は、
全てのサーバの過半数から受信したデータに基づいて前記データの一貫性を判定し、
前記第3のステップは、
前記第2の判定部の後段判定部が前記サーバの過半数から受信した第2の判定結果のうち部分一致しているデータがない場合、前記第1の判定部が前記サーバから受信したデータのうち過半数が一致しているデータを出力することを特徴とするデータ管理方法。 - 請求項11に記載のデータ管理方法であって、
前記第3のステップは、
前記第1の判定部が前記サーバから受信したデータのうち過半数が一致しているデータがない場合には、前記第1の判定部または第2の判定部から所定の解決値を取得し、当該解決値を出力することを特徴とするデータ管理方法。 - 請求項10に記載のデータ管理方法であって、
前記サーバは、PAXOSアルゴリズムを用いて前記データの一貫性の判定を行う第3の判定部をさらに有し、
前記第3のステップは、
前記第2の判定部の後段判定部で前記サーバの過半数から受信した第2の判定結果のうち部分一致しているデータがない場合には、前記第3の判定部の判定結果に基づくデータを出力することを特徴とするデータ管理方法。 - 請求項13に記載のデータ管理方法であって、
前記第3のステップは、
前記第3の判定部が所定時間内に予め設定した回数を超えて実行された場合には、前記第1の判定部と第2の判定部の処理を実行せずに、前記第3の判定部が出力したデータを格納することを特徴とするデータ管理方法。 - 請求項9に記載のデータ管理方法であって、
前記第3のステップは、
前記第1の判定部と第2の判定部の判定結果に優先順位を設定し、前記優先順位が上位の判定結果が取得できた場合には、優先順位が下位の判定結果を破棄し、前記優先順位が上位の判定結果でデータの一貫性を保証することを特徴とするデータ管理方法。 - 請求項9に記載のデータ管理方法であって、
前記第3のステップは、
前記第1の判定部と第2の判定部の判定結果に優先順位を設定し、前記優先順位が最上位の判定結果が取得できない場合、優先順位が下位の判定結果を利用してデータの一貫性を保証することを特徴とするデータ管理方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/064739 WO2015186191A1 (ja) | 2014-06-03 | 2014-06-03 | データ管理システム及びデータ管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2015186191A1 true JPWO2015186191A1 (ja) | 2017-04-20 |
JP6271003B2 JP6271003B2 (ja) | 2018-01-31 |
Family
ID=54766291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016524971A Active JP6271003B2 (ja) | 2014-06-03 | 2014-06-03 | データ管理システム及びデータ管理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10545949B2 (ja) |
JP (1) | JP6271003B2 (ja) |
WO (1) | WO2015186191A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6804572B2 (ja) * | 2019-01-18 | 2020-12-23 | 株式会社日立製作所 | 分散処理方法及び分散処理システム |
JP6937337B2 (ja) * | 2019-05-14 | 2021-09-22 | 株式会社日立製作所 | 分散処理方法、分散処理システム及びサーバ |
JP7225298B2 (ja) * | 2021-04-07 | 2023-02-20 | 株式会社日立製作所 | 分散合意方法、分散システム及び分散合意プログラム |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006155614A (ja) * | 2004-11-23 | 2006-06-15 | Microsoft Corp | 一般化されたPaxos |
US20080071878A1 (en) * | 2006-09-18 | 2008-03-20 | Reuter James M | Method and system for strong-leader election in a distributed computer system |
JP2010122773A (ja) * | 2008-11-18 | 2010-06-03 | Hitachi Ltd | 分散処理システム、処理割当方法、および情報処理装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5261085A (en) | 1989-06-23 | 1993-11-09 | Digital Equipment Corporation | Fault-tolerant system and method for implementing a distributed state machine |
US20020143724A1 (en) * | 2001-01-16 | 2002-10-03 | International Business Machines Corporation | Method, system and computer program product to partition filter rules for efficient enforcement |
WO2003073206A2 (en) * | 2002-02-22 | 2003-09-04 | Bea Systems, Inc. | System and method for using a data replication service to manage a configuration repository |
US7395279B2 (en) * | 2003-11-17 | 2008-07-01 | International Business Machines Corporation | System and method for achieving different levels of data consistency |
US7353285B2 (en) * | 2003-11-20 | 2008-04-01 | International Business Machines Corporation | Apparatus, system, and method for maintaining task prioritization and load balancing |
US8549180B2 (en) * | 2004-10-22 | 2013-10-01 | Microsoft Corporation | Optimizing access to federation infrastructure-based resources |
JP5213108B2 (ja) * | 2008-03-18 | 2013-06-19 | 株式会社日立製作所 | データ複製方法及びデータ複製システム |
US20110004521A1 (en) * | 2009-07-06 | 2011-01-06 | Yahoo! Inc. | Techniques For Use In Sorting Partially Sorted Lists |
JP2011123817A (ja) * | 2009-12-14 | 2011-06-23 | Fujitsu Ltd | ジョブ振分装置、ジョブ振分プログラム及びジョブ振分方法 |
US8726036B2 (en) * | 2011-09-20 | 2014-05-13 | Wallrust, Inc. | Identifying peers by their interpersonal relationships |
WO2013184712A2 (en) * | 2012-06-04 | 2013-12-12 | Google Inc. | Systems and methods of increasing database access concurrency using granular timestamps |
-
2014
- 2014-06-03 US US15/125,715 patent/US10545949B2/en active Active
- 2014-06-03 JP JP2016524971A patent/JP6271003B2/ja active Active
- 2014-06-03 WO PCT/JP2014/064739 patent/WO2015186191A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006155614A (ja) * | 2004-11-23 | 2006-06-15 | Microsoft Corp | 一般化されたPaxos |
US20080071878A1 (en) * | 2006-09-18 | 2008-03-20 | Reuter James M | Method and system for strong-leader election in a distributed computer system |
JP2010122773A (ja) * | 2008-11-18 | 2010-06-03 | Hitachi Ltd | 分散処理システム、処理割当方法、および情報処理装置 |
Non-Patent Citations (1)
Title |
---|
CAMARGOS 外: "Brief Announcement: Multicoordinated Paxos", PODC '07 PROCEEDINGS OF THE TWENTY-SIXTH ANNUAL ACM SYMPOSIUM ON PRINCIPLES OF DISTRIBUTED COMPUTING, JPN7017004050, 2007, US, pages pp. 316-317 * |
Also Published As
Publication number | Publication date |
---|---|
JP6271003B2 (ja) | 2018-01-31 |
WO2015186191A1 (ja) | 2015-12-10 |
US10545949B2 (en) | 2020-01-28 |
US20170011086A1 (en) | 2017-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10148751B1 (en) | Asymmetric active-active storage for hyper-converged system | |
US10489378B2 (en) | Detection and resolution of conflicts in data synchronization | |
EP3274853B1 (en) | Direct memory access descriptor processing | |
US10430217B2 (en) | High availability using dynamic quorum-based arbitration | |
US10126980B2 (en) | Managing data operations in a quorum-based data replication system | |
US20160179836A1 (en) | Method for updating data table of keyvalue database and apparatus for updating table data | |
US10474377B2 (en) | Optimizing data writes in a distributed computing system | |
US10108605B1 (en) | Natural language processing system and method | |
CN105677673B (zh) | 业务处理方法、装置及系统 | |
US10503415B2 (en) | Snapshot processing method and related device | |
US9141677B2 (en) | Apparatus and method for arranging query | |
EP3312723A1 (en) | Command processing method and server | |
JP6271003B2 (ja) | データ管理システム及びデータ管理方法 | |
US11321350B2 (en) | Managing identifiers for multinodal master systems of unknown or changing size | |
US8972365B2 (en) | Storage system and storage device | |
WO2016101759A1 (zh) | 一种数据路由方法、数据管理装置和分布式存储系统 | |
US20150365474A1 (en) | Computer-readable recording medium, task assignment method, and task assignment apparatus | |
US20130238871A1 (en) | Data processing method and apparatus, pci-e bus system, and server | |
CN108011926B (zh) | 一种报文发送方法、处理方法、服务器及系统 | |
CN106874341B (zh) | 一种数据库同步方法 | |
US20150213102A1 (en) | Synchronous data replication in a content management system | |
US9208114B2 (en) | Storage device, computer-readable recording medium, and storage control method | |
RU2698766C1 (ru) | Способ и устройство для передачи, отправки и получения информации | |
US10402234B2 (en) | Fine-grain synchronization in data-parallel jobs | |
US10394620B2 (en) | Method for changing allocation of data using synchronization token |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20171212 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171226 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6271003 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |