JP3655263B2 - Distributed system and multiplexing control method for the same - Google Patents

Distributed system and multiplexing control method for the same Download PDF

Info

Publication number
JP3655263B2
JP3655263B2 JP2002171715A JP2002171715A JP3655263B2 JP 3655263 B2 JP3655263 B2 JP 3655263B2 JP 2002171715 A JP2002171715 A JP 2002171715A JP 2002171715 A JP2002171715 A JP 2002171715A JP 3655263 B2 JP3655263 B2 JP 3655263B2
Authority
JP
Japan
Prior art keywords
input data
input
candidate
computer
collected
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002171715A
Other languages
Japanese (ja)
Other versions
JP2003067215A (en
Inventor
浩太郎 遠藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2002171715A priority Critical patent/JP3655263B2/en
Publication of JP2003067215A publication Critical patent/JP2003067215A/en
Application granted granted Critical
Publication of JP3655263B2 publication Critical patent/JP3655263B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Description

【0001】
【発明の属する技術分野】
この発明は、4台以上のコンピュータがネットワークで接続された分散システムおよび同システムの多重化制御方法に係り、特に、スプリットブレインの防止と故障発生時におけるリアルタイム性の確保とを両立させることを可能とした分散システムおよび同システムの多重化制御方法に関する。
【0002】
【従来の技術】
近年、コンピュータ技術やネットワーク技術の向上は目覚ましく、これに伴って、業務の電算化が広く行われている。また、その業務の内容によっては、故障などによる中断が許されないものも多く、最近では、複数のコンピュータをネットワークで結合した分散システムを構築することが一般的になりつつある。そして、この分散システムの運用手法の1つに、整列マルチキャストを用いた決定性のプログラムの実行の多重化が存在する。
【0003】
まず、「整列マルチキャスト」、「決定性のプログラム」および「多重化」について説明する。
【0004】
・整列マルチキャスト
複数のコンピュータが結合した分散システムのような環境では、各コンピュータが独立して動作する。したがって、これらのコンピュータを同期的に動作させるためには、特別な仕組みが必要である。整列マルチキャストは、分散システムへの入力をすべてのコンピュータに配送する仕組みであり、データの到着順序がすべてのコンピュータで同じであることを保証するものである。
【0005】
・決定性のプログラム
プログラムの実行は、コンピュータに入力が与えられると、その時のコンピュータの状態によって、出力と次の状態とを決めるものであると考えることができる。そして、決定性(deterministic)のプログラムは、与えられた入力にしたがって、出力と次の状態とが一意的に決まるプログラムとして定義される。具体的には、不定値や乱数の参照等がないプログラムのことをいう。決定性のプログラムの特徴は、初期状態と入力列とが決まれば、その実行が一意的であることである。以下、本明細書でプログラムと称するとき、決定性のプログラムのことをさすものとする。
【0006】
・多重化
分散システムでは、各コンピュータが独立に故障する可能性がある。仮に、1つのコンピュータが故障しただけでシステム全体が機能しない場合は、分散システムの稼働率は、1台のコンピュータの稼働率よりも低くなってしまう。かかる事態を防止するために、システム全体に係わる処理は多重化することが必要である。逆に、多重化することによって、分散システムの稼働率を1台のコンピュータの稼働率よりも高くすることが可能である。たとえば、稼働率99パーセントのコンピュータ10台で構成する分散システムが、まったく多重化されていないとすると、その分散システムの稼働率は90%程度である。もし、これが多重化によって3台の故障まで耐え得るとすると、稼働率は、99.9998%程度となる。
【0007】
次に、整列マルチキャストを用いた決定性のプログラムの実行の多重化について説明する。ここでは、複数台のコンピュータによって構成される分散システムであって、多重化を構成するそれぞれのコンピュータが、同一のプログラムを有していると想定する。
【0008】
まず、すべてのコンピュータは、同一の初期状態からはじまる。その後、入力されるデータは、必ず整列マルチキャストを通して、すべてのコンピュータに同一順序で配送され、それぞれのプログラムが実行される。
【0009】
各プログラムへの入力列は、この整列マルチキャストにより、同一順序となっているので、決定性のプログラムの特徴により、すべてのコンピュータの状態が同一に保たれ、出力列もすべて同じとなる。つまり、プログラムの実行が多重化される。
【0010】
ここで、整列マルチキャストの実現方法について、その概要を説明する。
【0011】
特別なハードウェアによらずに整列マルチキャストを実現するためには、コンピュータ間で適切なアルゴリズムにしたがってメッセージをやり取りすること、つまりプロトコルが用いられる。アルゴリズムを具体的に説明する前に、注意すべき点を列挙する。
【0012】
すべてのコンピュータが、いつでも故障停止する可能性があることを前提としており、多重化として成立するためには、特定のコンピュータに全体の処理が依存してはならない。したがって、次のことに注意する必要がある。
【0013】
(1)分散システムへの入力の受け付けを特定のコンピュータに固定しない。
【0014】
たとえば、特定のコンピュータに入力の受付を固定し、すべての入力をそのコンピュータにいったん転送することによって入力の順序を決定し、その順序で配送するといった単純なアルゴリズムは使えない。このアルゴリズムでは、入力受付を固定したコンピュータが故障停止すると、その時点で入力の順序が決定できなくなってしまう。
【0015】
(2)入力の配送の完了まちあわせを特定のコンピュータに固定しない。
【0016】
たとえば、特定のコンピュータが、停止していないすべてのコンピュータに配送を行うようにする、といった単純なアルゴリズムは使えない。このアルゴリズムでは、配送コンピュータが配送の途中で故障停止してしまうと、一部のコンピュータにのみ配送されたまま、配送が完了しなくなってしまう。
【0017】
以上を踏まえて、前述のアルゴリズムを具体的に説明する。
【0018】
従来では、故障検出が重要な役割を果たす。典型的には、故障検出はハートビート・タイムアウト・アルゴリズムによって行われる。このアルゴリズムは、各コンピュータが定期的に送出するハートビート(心拍)が一定時間以上確認できない場合に、当該コンピュータの故障を判定するというものである。
【0019】
また、各コンピュータは、入力受付キューをもつ。第1ステップとして、それぞれのコンピュータは、入力受付キューの先頭にある入力をそのコンピュータにおける「入力候補」として他のすべてのコンピュータに配送する。また、入力受付キューが空のコンピュータでは、他のコンピュータの第1ステップとして最初に得られた「入力候補」を自分の「入力候補」として他のすべてのコンピュータに配送する。
【0020】
第1ステップの最終的な結果として、各コンピュータは、すべてのコンピュータについて、「入力候補」を得るか、「故障検出」を得るか、または、その双方を得る。ここでは、すべてのコンピュータについての「入力候補」および「故障検出」の一覧を単に「一覧」と呼ぶことにする。
【0021】
第2ステップとして、それぞれのコンピュータは、自分の「一覧」を他のすべてのコンピュータに配送する。ここで注意すべき点は、これらの「一覧」が、各コンピュータごとに異なっているかも知れないということである。なぜなら、第1ステップの途中で故障停止が発生した場合には、「入力候補」が部分的にしか配送されていないかも知れない。また、第2ステップの開始の時点で、「故障検出」にはずれがあるかも知れないからである。
【0022】
第2ステップの結果として、各コンピュータは、他のコンピュータから得られた「一覧」が自分の「一覧」と異なっている場合、これらを合併して自分の「一覧」にし、第2ステップを繰り返し実行する。すると、この第2ステップの最終的な結果として、故障していない他のコンピュータがもつ「一覧」がすべて自分の「一覧」と一致する。この時点で、プロトコルは完了する。
【0023】
なお、整列マルチキャストとして配送される入力は、その「一覧」にある「入力候補」の中から各自が同一の決まったルールで選べばよい(たとえば先頭にあるもの)。そして、最後に、その選んだ入力を入力受付キューから取り除く。
【0024】
以上の手順により、複数のコンピュータをネットワークで結合した分散システムにおける、整列マルチキャストを用いた決定性のプログラムの実行の多重化が実現される。
【0025】
【発明が解決しようとする課題】
ところで、前述した手順では、次のような問題点があった。
【0026】
(1)スプリットブレイン
スプリットブレインは、実行のコンテキスト(状態)が2つ以上に分かれてしまうことをさす。このスプリットブレインは、故障検出が誤って行われたときに発生する。たとえば、システムを構成するコンピュータが、2つのコンピュータ群の間で互いに通信できない状態となった場合(ネットワークパーティショニング)、それぞれのコンピュータ群は、互いに故障検出し、独立して動作をはじめる。あるいは、一時的な高負荷のために、ハートビートの送受信が中断して故障の誤検出が発生し、スプリットブレインに陥る場合もある。
【0027】
多重化された処理は、システムの中で重要な処理であるはずである。ここでスプリットブレインが起きると、その処理に一貫性がなくなり、システム全体に致命的な影響を及ぼすことになる。
【0028】
スプリットブレインを起きにくくするためには、故障の誤検出を起きにくくする必要がある。そのためには、ハートビートのタイムアウトを十分に長くする必要がある。実用上は、10秒〜1分ぐらいのタイムアウト値が使われるのが一般的である。
【0029】
(2)故障発生時の処理のリアルタイム性
ところが、タイムアウトを長く設定すると、故障の発生から故障検出までの時間が長くなることになる。すると、その間は、整列マルチキャストのプロトコル中で、故障したコンピュータの故障検出を待ち、整列マルチキャストの実行が一時的に停止する。その結果、多重化の実行が一時的に停止することになる。
【0030】
これは、一般的にはシステムに致命的な影響を与えるものではないが、リアルタイム性が重要なシステムでは、故障発生時にその要件を満たさなくなる場合もある。つまり、ハートビートのタイムアウト値は、リアルタイム性の要件から上限が抑えられており、むやみに長く設定できない。
【0031】
結局、このハートビートのタイムアウト値の設定は、スプリットブレインとリアルタイム性の間でトレードオフの関係に陥ってしまうという問題があった。
【0032】
この発明は、このような事情を考慮してなされたものであり、スプリットブレインの防止と故障発生時におけるリアルタイム性の確保とを両立させることを可能とした分散システムおよび同システムの多重化制御方法を提供することを目的とする。
【0033】
【課題を解決するための手段】
前述した目的を達成するために、この発明は、故障検出をまったく行わないことによって、スプリットブレインを原理的に発生させず、タイムアウトによる故障発生時の処理の中断も発生させないようにしたものである。そして、そのために、この発明は、少なくとも(n−f)台のコンピュータが動作していれば、他のf台の動作に関わらず、入力をそれらに配送するようにした。
【0034】
より具体的には、この発明は、ネットワークで接続されたn台のコンピュータを同期的に動作させる分散システムであって、少なくとも(n−f)台以上での多重化を保証する分散システムにおいて、前記各コンピュータは、前記n台のコンピュータそれぞれが次に処理する候補として選択した入力データを前記ネットワークを介して収集する入力候補収集手段と、前記入力候補収集手段により収集された入力データが(n−f)個以上存在する場合に、その中に同一内容の入力データが(n−f)個以上あるか否かを判定し、(n−f)個以上あったときに、その入力データを次に処理する対象として確定する第1の入力候補選定制御手段と、前記収集された入力データの中に同一内容の入力データが(n−f)個以上ないと前記第1の入力候補選定制御手段で判定されたときに、前記収集された入力データ数の過半数を占める同一内容の入力データが存在するか否かを判定し、存在したときに、その入力データを自候補とするとともにそれ以外の他の候補の入力データをすべて破棄した上で前記入力候補収集手段に入力データの収集を再実行させる第2の入力候補選定制御手段と、前記収集された入力データ数の過半数を占める同一内容の入力データが存在しないと前記第2の入力候補選定手段で判定されたときに、前記収集された入力データの中からいずれかの入力データを任意に選択して自候補とするとともに、それ以外の他の候補の入力データをすべて破棄した上で前記入力候補収集手段に入力データの収集を再実行させる第3の入力候補選定制御手段とを具備することを特徴とする分散システムを提供する。
【0035】
この分散システムにおいては、故障検出をまったく行わないで、整列マルチキャストを実現し、特に、故障発生時でも配送の中断を発生させることがない。
【0036】
【発明の実施の形態】
以下、図面を参照してこの発明の一実施形態を説明する。
【0037】
(第1実施形態) まず、この実施形態に係る分散システムの前提条件を説明する。ここでは、多重化を構成するコンピュータの数をnとし、f台までの故障停止が許容されるものと想定する。つまり、多重化されるプログラムは、少なくとも(n−f)台のコンピュータ上で実行される。また、(f+1)台以上の故障停止が発生した場合には、多重化は継続しないものとする(いわゆるフェイルストップ)。
【0038】
また、ここでは、このfを3f<nとなる最大の整数とする。たとえばn=4ならば、f=1である。n=10ならばf=3である。この前提は、システムの稼働率に制限を設けるものであるが、たとえば、n=10の場合には、前述の稼働率の計算より、実用上まったく問題ないといえる。
【0039】
また、多重化されるプログラムの入力および出力は、信頼性のないデータグラム(Unreliable Datagram)であるとする。これは、入出力のパケットについて、欠落、重複および順序の交換を許容するものである。信頼性のないデータグラムの例としては、IP(Internet Protocl)が挙げられる。
【0040】
なお、この信頼性のないデータグラムの非決定性と多重化されるプログラムの決定性とは矛盾するものではない。プログラムの決定性は、入力が決まれば一意的に次の状態と出力が決まることを示し、プログラムの内部動作に関する決定性を意味している。一方、信頼性のないデータグラムは、あるプログラムの出力が他のプログラムの入力へ渡される途中で、欠落、重複または順序の交換があり得ることを示し、プログラム間の入出力に関する非決定性を意味している。
【0041】
次に、図1および図2を参照して、この分散システムの構成を説明する。
【0042】
図1に示すように、この分散システム1000は、n台のコンピュータ100により多重化されており、それぞれのコンピュータ100が、外部ネットワークAを介して複数のクライアント装置2000と接続されている。また、このコンピュータ100間は、内部ネットワークBを介して接続されている。そして、この分散システム1000における各コンピュータ100は、外部ネットワークAを介してクライアント装置2000から受け取った入力パケット(入力)を他のコンピュータ100と同じ順序で処理していく。なお、クライアント装置2000からの入力パケットは、n台のコンピュータ100の中のいずれかのコンピュータに入力される。
【0043】
また、この処理により生成される出力パケットは、外部ネットワークAを介してクライアント装置2000に返却される(出力)。
【0044】
図2は、コンピュータ100の構成を示す図である。入力受付キュー部1で受け付けられた入力パケットは、整列マルチキャスト部2によってアプリケーションプログラム3に配送されることになる。配送された入力パケットの入力によって、このアプリケーションプログラム3は、プログラム状態管理部4に保存されている状態にしたがって実行し、出力パケットを生成する。出力パケットは、出力フィルター部5で選別されてから出力される。
【0045】
次に、整列マルチキャスト部2の各構成要素について説明する。
【0046】
入力順序番号記憶部21は、整列マルチキャストによってそのコンピュータへ次に配送される入力パケットの順序番号を記憶する。入力パケットジャーナル記憶部22は、整列マルチキャストによってそのコンピュータへ配送が確定した入力パケットの列を最近のものから一定の量だけ記憶する。プロトコルデータ送受信部23は、他のコンピュータのプロトコルデータ送受信部23とプロトコルデータをやり取りする。
【0047】
また、ステップ番号記憶部24、候補パケット記憶部25および入力パケット確定判定部26は、整列マルチキャストによってそのコンピュータへ次に配送される入力パケットを決定するアルゴリズムで用いられる。ステップ番号記憶部24は、プロトコルのステップ番号を記憶する。候補パケット記憶部25は、そのステップにおける各コンピュータの「入力候補」となる入力パケットを計n個記憶する。入力パケット確定判定部26は、候補パケット記憶部25の情報から入力パケットの確定の判定および次ステップの「入力候補」の決定を行う。
【0048】
最大確定入力順序番号記憶部27は、他のコンピュータも含め、配送が確定したことがわかっている最大の入力順序番号を記憶する。遅延記憶部28は、(n−1)個のフラグで構成され、他コンピュータより遅延しているかどうかを記憶する。そして、スキップ判定部29は、遅延記憶部28の情報からスキップ動作の必要性を判定、実行する。
【0049】
以降、該当入力順序番号とは、入力順序番号記憶部21に記憶された入力順序番号のことを指し、該当ステップ番号とは、ステップ番号記憶部24に記憶されたステップ番号のことを指し、該当最大確定入力順序番号とは、最大確定入力順序番号記憶部27に記憶された入力順序番号のことを指し、自候補とは、候補パケット記憶部25における自コンピュータに対応する「入力候補」を指し、他候補とは、候補パケット記憶部25における自候補以外の「入力候補」を指すものとする。
【0050】
図3は、プロトコルデータ送受信部23によって送受信されるプロトコルデータのレイアウトを示す図である。
【0051】
図3に示すように、プロトコルデータ送受信部23によって送受信されるプロトコルデータは、種類、送信者、入力順序番号、ステップ番号、最大確定入力順序番号および入力パケットの各フィールドを含んでいる。そして、先頭の種類フィールドによって、このプロトコルデータは、次の3つに使い分けられる。
【0052】
(1)候補種類:入力順序番号フィールド、ステップ番号フィールド、入力パケットフィールドには、それぞれ、送信者の送信時における該当入力順序番号、該当ステップ番号、自候補が格納される。
【0053】
(2)確定種類:その入力順序番号に対応する入力パケットが、送信者の送信時における入力パケットジャーナル記憶部26にあることを示し、入力パケットフィールドにはその入力パケットが格納される。この場合、ステップ番号フィールドは使用しない。
【0054】
(3)遅延種類:その入力順序番号に対応する入力パケットが、送信者の送信時における入力パケットジャーナル記憶部26にないことを示す。この場合、ステップ番号フィールド、入力パケットフィールドは使用しない。
【0055】
いずれの種類においても、最大確定入力順序番号フィールドには、送信者の送信時における該当最大確定入力順序番号を格納する。また、該当最大確定入力順序番号は、そのコンピュータで確定した入力パケットの順序番号と、受信したプロトコルデータ中の最大確定入力順序番号とのうち、最も大きいものに更新するものとする。
【0056】
ここで、図4を参照して、整列マルチキャスト部2によって実行される整列マルチキャストの主要部の概要について説明する。
【0057】
いま、多重化を構成するコンピュータの数、つまりnを4とする。また、前述したように、fは3f<nとなる最大の整数であるから、f=1となる。したがって、この例では、少なくとも(n−f)、つまり3台以上で一貫性を保ちながら処理を実行していくことになる。
【0058】
第1に、コンピュータ(1),(2)はA、コンピュータ(3)はB、コンピュータ(4)はCをそれぞれ入力候補として選択したとする。また、第2に、コンピュータ(1)は、コンピュータ(2)の入力候補Aとコンピュータ(3)の入力候補Bを収集したとする。つまり、コンピュータ(1)は、自候補および他候補を(n−f)個収集したことになる。この時、コンピュータ(1)は、コンピュータ(4)の入力候補の収集を待たずに、入力候補の判定を試みる。しかしながら、その中に(n−f)個の同一の候補は存在しないことから、コンピュータ(1)は、入力候補の再選択を実行する。再選択は、収集された入力候補数の過半数を占める候補があればその候補を選択し、なければその中からランダムに選択する。ここではAが過半数を占めるので、コンピュータ(1)は、第3に、Aを自候補として再選択する。
【0059】
この要領で、コンピュータ(2)は、コンピュータ(1)の入力候補Aとコンピュータ(4)の入力候補Cを収集した後、Aを自候補として再選択し、コンピュータ(3)は、コンピュータ(2)の入力候補Aとコンピュータ(4)の入力候補Cを収集した後、Cを自候補として再選択し、コンピュータ(4)は、コンピュータ(1)の入力候補Aとコンピュータ(2)の入力候補Aを収集した後、Aを自候補として再選択したとする。
【0060】
第4に、コンピュータ(1)は、コンピュータ(2)の入力候補Aとコンピュータ(4)の入力候補Aを収集したとする。つまり、コンピュータ(1)は、再度、自候補および他候補を(n−f)個収集したことになる。この時、コンピュータ(1)は、コンピュータ(3)の入力候補の収集を待たずに、入力候補の判定を試みる。そして、ここでは、(n−f)個のAが存在するため、第5に、コンピュータ(1)は、入力をAに決定する。
【0061】
一方、コンピュータ(2)は、コンピュータ(1)の入力候補Aとコンピュータ(3)の入力候補Cを収集したとする。しかしながら、(n−f)個の同一の候補は依然として存在しないことから、コンピュータ(2)は、入力候補の再選択を実行し、その中の過半数を占めるAを自候補として選択する。同様に、コンピュータ(3)は、コンピュータ(1)の入力候補Aとコンピュータ(2)の入力候補Aを収集した後、コンピュータ(4)は、コンピュータ(2)の入力候補Aとコンピュータ(3)の入力候補Aを収集した後、それぞれAを自候補として再選択したとする。
【0062】
第6に、コンピュータ(2)は、コンピュータ(1)の入力候補Aとコンピュータ(3)の入力候補Aを収集したとする。ここでのコンピュータ(1)の入力候補Aは、既に候補ではなく確定済みの入力であるため、第7に、コンピュータ(2)は、入力をAに決定する。
【0063】
一方、コンピュータ(3)は、コンピュータ(2)の入力候補Aとコンピュータ(4)の入力候補Aを収集し、コンピュータ(4)は、コンピュータ(2)の入力候補Aとコンピュータ(3)の入力候補Aを収集したとする。そして、ここでは、双方とも(n−f)個のAが存在するため、コンピュータ(3),(4)は、入力をAに決定する。
【0064】
つまり、この分散システムは、従来のように、各コンピュータがハートビートのやり取りによって他のコンピュータとの間で正常稼働を確認し合うようなことを一切行わないことにより、スプリットブレインを原理的に発生させず、タイムアウトによる故障発生時の処理の中断も発生させないようにし、かつ、少なくとも(n−f)台以上のコンピュータによる多重化を保証する。
【0065】
次に、整列マルチキャスト部2の動作原理について具体的に説明する。
【0066】
まず、初期状態として、入力順序番号記憶部21は初期入力順序番号(たとえば1)を記憶する。入力パケットジャーナル記憶部22は空の状態であり、ステップ番号記憶部24は初期ステップ番号(たとえば1)を記憶する。また、候補パケット記憶部25も空の状態であり、最大確定入力順序番号記憶部27は初期入力順序番号を記憶し、さらに、遅延記憶部28のすべてのフラグはリセットされている。
【0067】
そして、この整列マルチキャスト部2が実行する整列マルチキャストによって各コンピュータへ配送される入力パケットを決定するアルゴリズムの概要は次のようになる。
【0068】
(アルゴリズム1)
該当ステップ番号が初期ステップ番号である場合に、入力受付キュー部1に入力パケットがあれば、該当ステップ番号を次に進め、自候補をその入力パケットにし、他候補を空にし、候補種類のプロトコルデータを他のすべてのコンピュータに送信する。
【0069】
(アルゴリズム2)
該当入力順序番号に一致する入力順序番号を持つ候補種類のプロトコルデータを受信した場合で、そのプロトコルデータが該当ステップ番号より大きいステップ番号を持つ場合、該当ステップ番号をそのステップ番号にし、自候補および送信者に対応する他候補をプロトコルデータ中の入力パケットにし、それら以外の他候補を空にし、候補種類のプロトコルデータを他のすべてのコンピュータに送信する。
【0070】
(アルゴリズム3)
該当入力順序番号に一致する入力順序番号を持つ候補種類のプロトコルデータを受信した場合で、そのプロトコルデータが該当ステップ番号と等しいステップ番号を持つ場合、送信者に対応する他候補をプロトコルデータ中の入力パケットにする。
【0071】
(アルゴリズム4)
候補パケット記憶部25における空でない「入力候補」が(n−f)個以上あるとき、入力パケット確定判定部26は次の動作をする。
【0072】
もし、(n−f)個以上の同一内容の「入力候補」があれば、それを該当入力順序番号における入力パケットとして確定し、入力パケットジャーナル記憶部22に記憶し、入力受付キュー部1にそれがあれば削除し、アプリケーションプログラム3に配送し、該当入力順序番号を次に進め、該当ステップ番号を初期ステップ番号にし、候補パケット記憶部25を空にし、遅延記憶部28のすべてのフラグをリセットする。
【0073】
それ以外で、もし、候補パケット記憶部25の中で過半数以上の同一内容の「入力候補」があれば、該当ステップ番号を次に進め、候補パケット記憶部25における自候補をその入力パケットにし、他候補を空にし、候補種類のプロトコルデータを他のすべてのコンピュータに送信する。
【0074】
さらに、それ以外であれば、候補パケット記憶部25の中からランダムに入力パケットを選択し、該当ステップ番号を次に進め、候補パケット記憶部25における自候補をその入力パケットにし、他候補を空にし、候補種類のプロトコルデータを他のすべてのコンピュータに送信する。
【0075】
(アルゴリズム5)
該当入力順序番号より小さい入力順序番号を持つ候補種類のプロトコルデータを受信した場合で、その入力順序番号に対応する入力データが入力パケットジャーナル記憶部22にある場合、確定種類のプロトコルデータを送信者のコンピュータに返信する。
【0076】
(アルゴリズム6)
該当入力順序番号に一致する入力順序番号を持つ確定種類のプロトコルデータを受信した場合、それを該当入力順序番号における入力パケットとして確定し、入力パケットジャーナル記憶部26に記憶し、入力受付キュー部1にそれがあれば削除し、アプリケーションプログラム3に配送し、該当入力順序番号を次に進め、該当ステップ番号を初期ステップ番号にし、候補パケット記憶部を空にし、遅延記憶部28のすべてのフラグをリセットする。
【0077】
(アルゴリズム7)
該当入力順序番号より小さい入力順序番号を持つ候補種類のプロトコルデータを受信した場合で、その入力順序番号に対応する入力データが入力パケットジャーナル記憶部22にない場合、遅延種類のプロトコルデータを送信者のコンピュータに返信する。
【0078】
(アルゴリズム8)
該当入力順序番号に一致する入力順序番号を持つ遅延種類のプロトコルデータを受信した場合に、遅延記憶部28における送信者に対応するフラグをセットする。
【0079】
(アルゴリズム9)
遅延記憶部28においてフラグがたっている数と、それ以外で候補パケット記憶部25における空でない入力候補数の和が(n−f)以上であるときで、候補パケット記憶部25における空でない入力候補数が(n−f)個未満であるときに、スキップ判定部29は、以下のスキップ動作を行う。
【0080】
スキップ動作は、該当入力順序番号を該当最大確定入力順序番号にし、該当ステップ番号を初期ステップ番号にし、候補パケット記憶部25を空にし、遅延記憶部28のすべてのフラグをリセットし、プログラム状態管理部4にスキップを通知する。
【0081】
なお、以上の(アルゴリズム1)〜(アルゴリズム9)の順序は、必ずしもこの順序で実行されるというものではない。つまり、これらは、その条件が成立すれば独立して実行されるものである。
【0082】
また、プログラム状態管理部4は、スキップが通知されると、該当入力順序番号の直前の状態を他のコンピュータのプログラム状態管理部4からコピーする。このために、プログラム状態管理部4は、各入力順序番号の直前の状態を最近のものから一定の量だけ保持している。
【0083】
ここで、上述したアルゴリズムの動作の概要を説明しながら、このアルゴリズムの有効性を証明する。
【0084】
(アルゴリズム1)〜(アルゴリズム4)は、整列マルチキャストの1回の配送を行う基本的な部分である。従来では、故障していない全コンピュータで一致するまで繰り返していたのに対して、この分散システムでは、(n−f)台で一致するまで繰り返す。
【0085】
また、(アルゴリズム5)〜(アルゴリズム6)は、短い多重化実行の遅延を解消するため、すでに確定している入力パケットを回送するものである。
【0086】
そして、(アルゴリズム7)〜(アルゴリズム9)は、長い多重化実行の遅延を一足飛びに解消するため、スキップ動作を行うものである。
【0087】
まず、(アルゴリズム1)〜(アルゴリズム6)が整列マルチキャストの要件を満たすことを説明する。これには、各入力順序番号で同一の入力パケットが確定されることを示せばよい。
【0088】
入力パケットを確定するのは、(アルゴリズム4)か(アルゴリズム6)であるが、(アルゴリズム6)の場合は、確定した入力パケットを回送したものなので、最初に(アルゴリズム4)によって入力パケットを確定したコンピュータが必ず存在する。確定した時の入力パケットをP、ステップ番号をSとする。
【0089】
まず、ステップS+1では、すべてのコンピュータで「入力候補」はP以外にはあり得ないことを示す。
【0090】
自分の「入力候補」を決定するのは、(アルゴリズム1)、(アルゴリズム2)または(アルゴリズム4)であるが、ステップ番号Sは初期ステップ番号ではあり得ないので、ステップS+1での「入力候補」は、(アルゴリズム2)か(アルゴリズム4)で決定される。(アルゴリズム2)は「入力候補」を回送したものなので、結局、(アルゴリズム4)で決定するステップS+1での「入力候補」がP以外にはあり得ないことを示せばよい。
【0091】
ステップS+1での「入力候補」を(アルゴリズム4)で決定するには、ステップSでの「入力候補」が(n−f)個必要である。この集合をXとする。一方、ステップSでは、(アルゴリズム4)によって入力パケットを確定したコンピュータがあるのだから、少なくとも(n−f)個の「入力候補」がPである。この集合をYとする。すると、
Xの要素数≧n−f
Yの要素数≧n−f
X∪Yの要素数≦n
Xの要素数−X∩Yの要素数=X∪Yの要素数−Yの要素数≦n−(n−f)=f
となり、XのうちPでないのは、多くともf個しかない。後は、fがXの中で半数未満であることがいえれば、Xの中でPが過半数を占めることになり、(アルゴリズム4)によってPに決定することがわかる。ここで、
Xの要素数−2f≧(n−f)−2f=n−3f
となり、前述の通り、n−3f>0であるから、これが証明される。
【0092】
結局、ステップS+1では、すべてのコンピュータで「入力候補」はP以外にはあり得ないのだから、この入力順序番号で確定するとすれば、必ずPで確定することになる。これで、整列マルチキャストの要件を満たすことが証明された。
【0093】
次に、(アルゴリズム5)〜(アルゴリズム9)で行う遅延の解消について説明する。
【0094】
この遅延は、(n−f)台よりも多い台数で多重化を実行している場合に発生する。遅延しているコンピュータは、その時点では多重化として不要であるが、進んでいるコンピュータが故障停止した場合などに、多重化を継続するために必要になる。つまり、その場合には、遅延しているコンピュータは、最終入力順序番号まで追いつかなければならない。
【0095】
(アルゴリズム5)〜(アルゴリズム6)で行う短い多重化実行の遅延の解消は、単純に、進んでいるコンピュータで確定した入力パケットを回送する。入力パケットの到着順序は同じになるので、整列マルチキャストの要件は満たされている。
【0096】
一方、(アルゴリズム7)〜(アルゴリズム9)で行う長い多重化実行の遅延の解消は、いわゆる「おいてけぼり」の概念を用いる。「おいてけぼり」は、進んでいるコンピュータが確定した入力パケットを忘れてしまうほど長く遅延したときに発生する。そして、この「おいてけぼり」が判定されると、スキップ動作が行われる。スキップ動作では、入力順序番号をスキップするので、入力パケットの系列が中抜けになり、整列マルチキャストの要件を満たさなくなる。
【0097】
そこで、この中抜けになった入力パケットの系列を補うため、プログラム状態管理部4により一致化コピーを行う。これによって、多重化は矛盾なく続行することができる。
【0098】
次に、信頼性のないデータグラムとの関係に触れる。
【0099】
出力に関しては、信頼性のないデータグラムなので、出力フィルタ部5の動作は任意でよい。たとえば、無選別で出力すると、出力パケットが多重化を実行するコンピュータの数だけ出力されることになるが、信頼性のないデータグラムでは、パケットの重複を許すので、この範囲内である。
【0100】
また、この分散システムでは、多重化実行の遅延が発生するため、特に出力パケットに関して順序の交換が発生する可能性がある。これは、進んでいるコンピュータが出力した後、遅延しているコンピュータが意味的にはそれ以前の出力を実行するためである。
【0101】
しかしながら、性能面などにおいて、出力フィルタ部5の設定は重要であり、たとえば、(アルゴリズム4)で入力パケットが確定したときは、出力フィルタを開、(アルゴリズム6)で入力パケットが確定したときは、出力フィルタを閉と設定すれば、順序の交換を低減することができる。また、(アルゴリズム4)で入力パケットが確定し、その入力パケットが入力受付キュー1から取り除かれた場合にのみ、出力フィルタを開、それ以外では閉とすれば、重複を低減することができる。
【0102】
すなわち、この分散システムは、すくなくともn−f台のコンピュータが動作していれば、他のf台の動作に関係なく入力をそれらに配送することにより、整列マルチキャストを故障検出を使わないで実現し、特に、故障発生時でも、配送の中断が発生しない。
【0103】
また、最大でf台のコンピュータで、プログラムの多重化の実行が遅延する可能性があることを考慮し、この遅延された実行がスプリットブレインを起こさないように追い付く仕組みを実現する。
【0104】
次に、図5乃至図10を参照して、整列マルチキャスト部2の動作手順について説明する。
【0105】
図5および図6は、整列マルチキャストの1回の配送を行う基本的な部分の動作手順を示すフローチャートである。
【0106】
整列マルチキャスト部2は、まず、候補一覧作成処理を実行する(図5のステップA1)。この候補一覧作成は、該当ステップ番号が初期値のときは(図6のステップB1のYES)、受付キューに入力パケットが存在するかどうかを調べて(図6のステップB2)、存在すれば(図6のステップB2のYES)、該当ステップ番号を次に進め(図6のステップB3)、受付キューの入力パケットを自候補とし、かつ、この自候補を他のすべてのコンピュータに送信する(図6のステップB4)。
【0107】
一方、該当ステップ番号が初期値でないか(図6のステップB1のNO)、または受付キューに入力パケットがないとき(図6のステップB2のNO)、整列マルチキャスト部2は、同一の入力順序番号を持つプロトコルデータを受信しているかどうか判定し(図6のステップB5)、受信していれば(図6のステップB5のYES)、今度は、受信データ内のステップ番号は該当ステップ番号よりも大きいかどうかを判定する(図6のステップB6)。そして、該当ステップ番号よりも大きければ(図6のステップB6のYES)、整列マルチキャスト部2は、該当ステップを受信データ内のステップ番号に更新した後(図6のステップB7)、受信データ内の入力パケットを自候補とし、かつ、この自候補を他のすべてのコンピュータに送信する(図6のステップB8)。このとき、整列マルチキャスト部2は、この入力パケットを他候補として記憶しておく。また、受信データ内のステップ番号と該当ステップ番号とが等しければ(図6のステップB6のNO,ステップB9のYES)、受信データ内の入力パケットを他候補として記憶する(図6のステップB10)。
【0108】
ここで、整列マルチキャスト部2は、記憶した候補数が(n−f)個以上になったかどうかを調べ(図6のステップB11)、なっていなければ(図6のステップB11のNO)、ステップB1からの処理を繰り返し、なっていれば(図6のステップB11のYES)、この処理を終了する。
【0109】
候補一覧作成処理が終了すると、整列マルチキャスト部2は、(n−f)個以上の同一の候補が存在するかどうかを調べ(図5のステップA2)、存在すれば(図5のステップA2のYES)、その候補を入力パケットとして確定する(図5のステップA3)。つまり、この入力パケットを受付キューから削除するとともに、アプリケーションプログラム3に投入する。そして、整列マルチキャスト部2は、次工程へ移行すべく、入力順序番号を次に進め、該当ステップ番号を初期化し、記憶したすべての候補を破棄し、遅延フラグをリセットする(図5のステップA4)。
【0110】
一方、(n−f)個以上の同一の候補が存在しなかった場合(図5のステップA2)、整列マルチキャスト部2は、今度は、過半数以上の同一の候補が存在するかどうかを調べ(図5のステップA5のYES)、存在すれば(図5のステップA5のYES)、その候補を自候補とし、かつ、この自候補を他のすべてのコンピュータに送信した上で(図5のステップA6)、ステップA1からの処理を繰り返す。この時、整列マルチキャスト部2は、記憶していた他候補をすべて破棄する。また、過半数以上の同一の候補が存在しなければ(図5のステップA5のNO)、整列マルチキャスト部2は、ランダムに自候補を選択し、かつ、この自候補を他のすべてのコンピュータに送信した上で(図5のステップA7)、ステップA1からの処理を繰り返す。この時も、整列マルチキャスト部2は、記憶していた他候補をすべて破棄する。
【0111】
以上の手順で、各コンピュータは、故障検知を行わず、(n−f)台以上の一致を確認しながら処理を進めていく。
【0112】
また、図7乃至図10は、多重化実行の遅延を解消するための動作手順を示すフローチャートである。
【0113】
整列マルチキャスト部2は、該当入力順序番号より小さい入力順序番号を持つ候補種類のプロトコルデータを受信した場合、その入力順序番号に対応する入力パケットがジャーナルに存在するかどうかを調べる(図7のステップC1)。そして、整列マルチキャスト部2は、ジャーナルに存在すれば(図7のステップC1のYES)、その入力パケットをセットした確定種類のプロトコルデータを送信者に返送し(図7のステップC2)、一方、存在しなければ(図7のステップC1のNO)、遅延種類のプロトコルデータを送信者に返送する(図7のステップC3)。
【0114】
また、整列マルチキャスト部2は、該当入力順序番号に一致する入力番号を持つ確定種類のプロトコルデータを受信した場合、その受信データ内の入力パケットを入力パケットとして確定する(図8のステップD1)。つまり、この入力パケットを受付キューから削除するとともに、アプリケーションプログラム3に投入する。そして、整列マルチキャスト部2は、次工程へ移行すべく、入力順序番号を次に進め、該当ステップ番号を初期化し、記憶したすべての候補を破棄し、遅延フラグをリセットする(図8のステップD2)。
【0115】
また、整列マルチキャスト部2は、該当入力順序番号に一致する入力順序番号を持つ遅延種類のプロトコルデータを受信した場合、送信者に対応する遅延フラグをセットする(図9のステップE1)。
【0116】
また、整列マルチキャスト部2は、セットされた遅延フラグ数と記憶された候補数との和が(n−f)個以上に達したかどうかを監視し(図10のステップF1)、(n−f)個以上に達していれば(図10のステップF1のYES)、その記憶された候補数が(n−f)個未満かどうかを調べる(図10のステップF2)。そして、(n−f)個未満であれば(図10のステップF2のYES)、整列マルチキャスト部2は、スキップ動作を行なう(図10のステップF3)。つまり、該当入力順序番号を該当最大確定入力順序番号にし、該当ステップ番号を初期ステップ番号にし、候補パケット記憶部25を空にし、遅延記憶部28のすべてのフラグをリセットした上で、プログラム状態管理部4にスキップを通知する。
【0117】
以上の手順で、各コンピュータは、スプリットブレインを起こさないよう、遅延された実行が追い付く仕組みを実現する。
【0118】
(第2実施形態)
次に、この発明の第2実施形態について説明する。
【0119】
第1実施形態で説明したような整列マルチキャストを行う分散システムでは、すべてのコンピュータ100が同じ時刻を用いてアプリケーションプログラム3を実行することが必要である。つまり、アプリケーションプログラム3の実行時に用いる時刻をすべてのコンピュータ100間で調整する機能が必要である。そこで、第2実施形態では、整列マルチキャストを行う分散システムにおいて、このアプリケーションプログラム3の実行時に用いる時刻をすべてのコンピュータ100間で調整する仕組みを説明する。
【0120】
図11は、アプリケーションプログラム3の実行時に用いる時刻をすべてのコンピュータ100間で調整する仕組みを説明するための概念図である。
【0121】
図11に示すように、分散システム1000を構成するn台のコンピュータ100は、それぞれ実時計101、つまりシステム時計を有しており、この実時計101により、システム時刻をカウントしている。そして、従来では、この実時計101をn台のコンピュータ100間で如何に調整するかについて、種々の工夫がなされてきた。すなわち、従来では、アプリケーションプログラム3の実行時に用いる時刻は、依然として、各々の実時計101でカウントされるシステム時刻であった。これに対して、この実施形態の分散システム1000では、これらの実時計101とは別に、システム全体で仮想時計102を管理し、この仮想時計102がカウントする仮想時刻102を用いてアプリケーションプログラム3を実行する。
【0122】
図12は、この仮想時刻102がカウントする仮想時刻を管理する原理を説明するためのコンピュータ100の構成図である。
【0123】
図12に示すように、このコンピュータ100は、いわゆるシステム時刻を計数するシステム時計6(図11の実時計101に対応)の他に、アプリケーションプログラム3の実行時に用いる仮想時刻を計数する仮想時刻カウンタ7(図11の仮想時計102に対応)と、この仮想時刻カウンタ7を管理する仮想時刻マネージャ8とを備える。
【0124】
仮想時刻マネージャ8は、たとえば1秒ごとに、この仮想時刻カウンタ7をインクリメントするタイミングを与えるための入力パケットを高い優先度を付して入力受付キュー部1に投入する。この入力パケットは、その優先度から直後の入力順序で整列マルチキャスト部2に取り込まれ、自コンピュータの入力候補である自候補となる。整列マルチキャスト部2の動作の結果、入力パケット確定判定部26が、この入力パケットを確定すると、このパケットを仮想時刻マネージャ8に投入する。
【0125】
このとき、他のコンピュータ100においても、入力パケット確定判定部26は、この入力パケットを確定し、仮想時刻マネージャ8に投入する。
【0126】
そして、この入力パケットの投入を受けた仮想時刻マネージャ8は、仮想時刻カウンタ7を所定の値(通常は1秒間)だけインクリメントする。
【0127】
また、仮想時刻マネージャ8は、この入力パケットを入力受付キュー1から削除し、この時点から1秒後に入力受付キュー1に再投入するよう準備する。
【0128】
このとき、他のコンピュータ100においても、仮想時刻マネージャ8は、入力受付キュー1にこのパケットがもし存在すれば、それを削除し、いずれにしても、この時点から1秒後に入力受付キュー1に再投入するよう準備する。
【0129】
つまり、仮想時刻マネージャ8は、他の仮想時刻マネージャ8が投入した入力パケットが確定した場合でも、区別することなく、あたかも自分自身で入力パケットを投入し、それが確定したかのように動作し、その時点から1秒後まで入力パケットを投入しない。
【0130】
これにより、すべてのコンピュータ100が同じタイミングで仮想時刻を計数していくことが実現される。
【0131】
また、この仮想時刻マネージャ8は、コンピュータ100の起動時および例えば1時間ごとに、システム時刻と仮想時刻とを比較するタイミングを与えるための入力パケットを高い優先度を付して入力受付キュー部1に投入する。この時、仮想時刻マネージャ8は、この入力パケット内にシステム時計6が計数するシステム時刻を格納する。この入力パケットは、プロトコルデータ送受信部23によって他のコンピュータに送信されるため、結果的に、自コンピュータのシステム時刻が他のコンピュータに通知されることになる。同様に、他のコンピュータの仮想時刻マネージャ8がこの入力パケットを発生させた場合には、この入力パケットによって、他のコンピュータのシステム時刻の通知を受けることになる。
【0132】
また、この入力パケットは、その優先度から直後の入力順序で整列マルチキャスト部2に取り込まれ、自コンピュータの入力候補である自候補となる。整列マルチキャスト部2の動作の結果、入力パケット確定判定部26が、この入力パケットを確定すると、このパケットを仮想時刻マネージャ8に投入する。このパケットの投入を受けると、仮想時刻マネージャ8は、この入力パケット内に格納された自コンピュータまたは他のコンピュータのシステム時刻と仮想時刻カウンタ7により計数された仮想時刻とを比較する。仮想時刻カウンタ7が未設定状態の場合、仮想時刻カウンタ7をシステム時刻に設定する。また、仮想時刻カウンタ7が未設定状態でなく、システム時刻の方が進んでいる場合には、仮想時刻マネージャ8は、仮想時刻を通常時よりも速く進めるための処理を行う。一つの例としては、先に説明した仮想時刻カウンタ7をインクリメントするタイミングを与えるための入力パケットが投入された際の仮想時刻カウンタ7のインクリメント幅を通常時よりも大きく設定するなどが挙げられる。
【0133】
つまり、n台のコンピュータの中で最も進んだシステム時刻に合わせるように各コンピュータの仮想時刻を調整するわけであり、たとえn台のコンピュータのシステム時刻がばらばらであっても、各コンピュータがアプリケーションプログラム3の実行時に用いる仮想時刻を一致させることが実現される。
【0134】
図13は、仮想時刻カウンタ7をインクリメントする動作手順を示すフローチャートである。
【0135】
仮想時刻マネージャ8は、前回の仮想時刻カウンタ7のインクリメントから所定の時間が経過し(ステップG1のYES)、かつ、仮想時刻カウンタ7をインクリメントするタイミングを与えるための入力パケットを入力受付キュー部1に未投入のとき(ステップG2のYES)、当該入力パケットを入力受付キュー部1に投入する(ステップG3)。また、整列マルチキャスト実行により、この入力パケットが確定されると(ステップG4,ステップG5のYES)、仮想時刻マネージャ8は、仮想時刻カウンタ7を所定の値だけインクリメントし(ステップG6)、この入力パケットが入力受付キュー部1に存在していれば(ステップG7のYES)、その入力パケットを入力受付キュー部1から削除する(ステップG8)。
【0136】
また、図14は、仮想時刻カウンタ7を調整する動作手順を示すフローチャートである。
【0137】
仮想時刻マネージャ8は、前回の仮想時刻カウンタ7の自発的な調整から所定の時間が経過し(ステップH1のYES)、かつ、システム時刻と仮想時刻とを比較するタイミングを与えるための入力パケットを入力受付キュー部1に未投入のとき(ステップH2のYES)、当該入力パケットを入力受付キュー部1に投入する(ステップH3)。また、整列マルチキャスト実行により、この入力パケットが確定されると(ステップH4,ステップH5のYES)、仮想時刻マネージャ8は、入力パケット内のシステム時刻と仮想時刻カウンタ7の仮想時刻とを比較する(ステップH6)。そして、仮想時刻マネージャ8は、システム時刻の方が進んでいれば(ステップH7のYES)、仮想時刻カウンタ7のインクリメント幅を通常時よりも大きく設定し(ステップH8)、一方、仮想時刻の方が進んでいれば(ステップH7のNO)、仮想時刻カウンタ7のインクリメント幅を所定の値に再設定する(ステップH9)。
【0138】
このように、この実施形態の分散システムでは、各コンピュータ100の実時計101とは別に、システム全体で仮想時計102を管理することにより、整列マルチキャストを行う分散システムにおいて、このアプリケーションプログラム3の実行時に用いる時刻をすべてのコンピュータ100間で調整する仕組みを実現する。
【0139】
なお、ここでは、システム時刻と仮想時刻とを比較し、システム時刻の方が進んでいたときに、仮想時刻のインクリメント幅を通常時よりも大きくする例を説明した。このような場合、通常時の仮想時刻のインクリメント幅は、実時刻よりも少しずつ遅れていくように設定することが好ましい。これにより、仮想時計102がすべての実時計101よりも進む方向に無限にずれていくことを防止するとともに、実時間101と仮想時計102との誤差を事前に予想される範囲内に収めることが可能となる。逆に、システム時刻の方が遅れていたときに、仮想時刻のインクリメント幅を通常時よりも小さくする場合には、通常時の仮想時刻のインクリメント幅を実時刻よりも少しずつ進んでいくように設定すればよい。
【0140】
ところで、この仮想時計102の管理は、前述した整列マルチキャストの機構を使ってすべてのコンピュータ100が各々行う必要は必ずしもない。例えば図15に示すように、いずれか1つのコンピュータ100上で管理し(A)、このコンピュータ100に障害が発生した場合に、その他のいずれか1つのコンピュータ100が引き継ぐようにしても構わない(B)。つまり、各コンピュータ100が各々の実時計101を用いてアプリケーションプログラム3を実行するのではなく、システム全体で仮想時計102を設定し、その1つの仮想時計102をすべてのコンピュータ100が用いてアプリケーションプログラム3を実行するという本発明の手法は、この仮想時計102をどのような方法で管理する場合であっても有用である。
【0141】
つまり、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0142】
【発明の効果】
以上、詳述したように、この発明によれば、n台のコンピュータで多重化を構成し、f台までの故障停止が許容される場合に、少なくとも(n−f)台のコンピュータが動作していれば、他のf台の動作に関わらず、入力がそれらに配送されるようになる。つまり、故障検出をまったく行わないことによって、スプリットブレインを原理的に発生させず、タイムアウトによる故障発生時の処理の中断も発生させることがない。
【0143】
また、最大でf台のコンピュータで、プログラムの多重化の実行が遅延する可能性があることを考慮し、この遅延された実行がスプリットブレインを起こさないように追い付く仕組みも実現する。
【図面の簡単な説明】
【図1】この発明の第1実施形態に係る分散システムの構成を示す図。
【図2】同第1実施形態の分散システムを構成するコンピュータの機能ブロック図。
【図3】同第1実施形態の分散システムを構成するコンピュータ間で送受信されるプロトコルデータのレイアウトを示す図。
【図4】同第1実施形態の分散システムが実行する整列マルチキャストの主要部の概要について説明するための図。
【図5】同第1実施形態の分散システムが実行する整列マルチキャストの1回の配送を行う基本的な部分の動作手順を示す第1のフローチャート。
【図6】同第1実施形態の分散システムが実行する整列マルチキャストの1回の配送を行う基本的な部分の動作手順を示す第2のフローチャート。
【図7】同第1実施形態の分散システムが実行する、多重化実行の遅延を解消するための動作手順を示す第1のフローチャート。
【図8】同第1実施形態の分散システムが実行する、多重化実行の遅延を解消するための動作手順を示す第2のフローチャート。
【図9】同第1実施形態の分散システムが実行する、多重化実行の遅延を解消するための動作手順を示す第3のフローチャート。
【図10】同第1実施形態の分散システムが実行する、多重化実行の遅延を解消するための動作手順を示す第4のフローチャート。
【図11】同第2実施形態においてアプリケーションプログラムの実行時に用いる時刻をすべてのコンピュータ間で調整する仕組みを説明するための概念図。
【図12】同第2実施形態において仮想時刻がカウントする仮想時刻を管理する原理を説明するためのコンピュータの構成図。
【図13】同第2実施形態において仮想時刻カウンタをインクリメントする動作手順を示すフローチャート。
【図14】同第2実施形態において仮想時刻カウンタを調整する動作手順を示すフローチャート。
【図15】同第2実施形態における仮想時計の管理方法の一変形例を示す図。
【符号の説明】
1…入力受付キュー
2…整列マルチキャスト部
3…アプリケーションプログラム
4…プログラム状態管理部
5…出力フィルタ部
6…システム時計
7…仮想時刻カウンタ
8…仮想時刻マネージャ
21…入力順序番号記憶部
22…入力パケットジャーナル記憶部
23…プロトコルデータ送受信部
24…ステップ番号記憶部
25…候補パケット記憶部
26…入力パケット確定判定部
27…最大確定入力順序番号記憶部
28…遅延記憶部
29…スキップ判定部
100…コンピュータ
101…実時計
102…仮想時計
1000…分散システム
2000…クライアント装置
A…外部ネットワーク
B…内部ネットワーク
[0001]
BACKGROUND OF THE INVENTION
The present invention is a distributed system in which four or more computers are connected via a network. and Multiplexing control method of the same system To the law In particular, a distributed system that makes it possible to achieve both prevention of split brain and real-time performance in the event of a failure. and Multiplexing control method of the same system To the law Related.
[0002]
[Prior art]
In recent years, computer technology and network technology have been remarkably improved, and along with this, computerization of business has been widely performed. In addition, depending on the contents of the business, there are many things that cannot be interrupted due to a failure or the like, and recently, it is becoming common to construct a distributed system in which a plurality of computers are connected via a network. One of the distributed system operation techniques is multiplexing of execution of a deterministic program using ordered multicast.
[0003]
First, “aligned multicast”, “deterministic program”, and “multiplexing” will be described.
[0004]
・ Aligned multicast
In an environment such as a distributed system in which a plurality of computers are combined, each computer operates independently. Therefore, a special mechanism is required to operate these computers synchronously. The ordered multicast is a mechanism for delivering the input to the distributed system to all computers, and guarantees that the arrival order of data is the same on all computers.
[0005]
・ Deterministic program
Execution of a program can be considered to determine an output and a next state depending on the state of the computer at the time when an input is given to the computer. A deterministic program is defined as a program in which an output and a next state are uniquely determined according to a given input. Specifically, it refers to a program that has no indefinite value or random number reference. A characteristic of a deterministic program is that the execution is unique if the initial state and the input sequence are determined. Hereinafter, when the term “program” is used in the present specification, it refers to a deterministic program.
[0006]
·Multiplexing
In a distributed system, each computer may fail independently. If one computer fails and the entire system does not function, the operating rate of the distributed system will be lower than the operating rate of one computer. In order to prevent such a situation, it is necessary to multiplex processes related to the entire system. Conversely, by multiplexing, it is possible to make the operating rate of the distributed system higher than the operating rate of one computer. For example, if a distributed system composed of 10 computers with an operating rate of 99% is not multiplexed at all, the operating rate of the distributed system is about 90%. If this can withstand up to three failures due to multiplexing, the operating rate will be about 99.99998%.
[0007]
Next, multiplexing of execution of a deterministic program using ordered multicast will be described. Here, it is assumed that each of the computers that are a distributed system constituted by a plurality of computers and that constitute the multiplexing has the same program.
[0008]
First, all computers start from the same initial state. Thereafter, the input data is always delivered to all computers in the same order through the ordered multicast, and the respective programs are executed.
[0009]
Since the input sequences to each program are in the same order by this ordered multicast, the state of all computers is kept the same and the output sequences are all the same due to the characteristics of the deterministic program. That is, program execution is multiplexed.
[0010]
Here, an outline of a method for realizing ordered multicast will be described.
[0011]
In order to implement ordered multicast without using special hardware, a message is exchanged between computers according to an appropriate algorithm, that is, a protocol is used. Before describing the algorithm in detail, the points to be noted are listed.
[0012]
All computers are premised on the possibility of failure at any time, and the entire processing must not depend on a specific computer in order to be established as multiplexing. Therefore, it should be noted that:
[0013]
(1) The acceptance of input to the distributed system is not fixed to a specific computer.
[0014]
For example, it is not possible to use a simple algorithm that fixes input reception to a specific computer, determines the order of input by once transferring all the inputs to the computer, and distributes the input in that order. In this algorithm, if a computer with fixed input reception fails, the input order cannot be determined at that time.
[0015]
(2) Do not fix the completion of input delivery to a specific computer.
[0016]
For example, a simple algorithm that allows a specific computer to deliver to all computers that are not stopped cannot be used. In this algorithm, if the delivery computer stops in the middle of delivery, the delivery will not be completed while being delivered only to some computers.
[0017]
Based on the above, the above algorithm will be specifically described.
[0018]
Conventionally, fault detection plays an important role. Typically, fault detection is performed by a heartbeat timeout algorithm. In this algorithm, when a heartbeat (heartbeat) periodically transmitted by each computer cannot be confirmed for a predetermined time or more, a failure of the computer is determined.
[0019]
Each computer has an input reception queue. As a first step, each computer delivers the input at the head of the input reception queue to all other computers as “input candidates” in that computer. Further, in a computer with an empty input reception queue, the “input candidates” first obtained as the first step of other computers are delivered to all other computers as their “input candidates”.
[0020]
As a final result of the first step, each computer gets “input candidates”, “failure detection”, or both for all computers. Here, the list of “input candidates” and “failure detection” for all computers is simply referred to as “list”.
[0021]
As a second step, each computer delivers its “list” to all other computers. It should be noted that these “lists” may be different for each computer. This is because if a failure stop occurs during the first step, the “input candidates” may be delivered only partially. Further, there is a possibility that there is a difference in “failure detection” at the start of the second step.
[0022]
As a result of the second step, if the “list” obtained from another computer is different from its own “list”, each computer merges them into its own “list” and repeats the second step. Execute. Then, as a final result of the second step, all “lists” of other computers that are not in failure coincide with their own “lists”. At this point, the protocol is complete.
[0023]
The input distributed as the ordered multicast may be selected from the “input candidates” in the “list” according to the same fixed rule (for example, the one at the top). Finally, the selected input is removed from the input reception queue.
[0024]
By the above procedure, the deterministic program execution multiplexing using ordered multicast is realized in a distributed system in which a plurality of computers are connected by a network.
[0025]
[Problems to be solved by the invention]
By the way, the procedure described above has the following problems.
[0026]
(1) Split brain
Split brain means that the execution context (state) is divided into two or more. This split brain occurs when a failure is detected by mistake. For example, when computers constituting the system become unable to communicate with each other between two computer groups (network partitioning), the respective computer groups detect a fault with each other and start operating independently. Or, due to a temporary high load, transmission / reception of heartbeats is interrupted, and erroneous detection of a failure may occur, resulting in a split brain.
[0027]
Multiplexed processes should be important processes in the system. If a split brain occurs here, the process becomes inconsistent, which has a fatal effect on the entire system.
[0028]
In order to make it difficult for split brain to occur, it is necessary to make it difficult for false detection of failure. For this purpose, the heartbeat timeout needs to be sufficiently long. In practice, a timeout value of about 10 seconds to 1 minute is generally used.
[0029]
(2) Real-time processing when a failure occurs
However, if the timeout is set to be long, the time from the occurrence of the failure to the failure detection becomes longer. In the meantime, during the ordered multicast protocol, the failure of the failed computer is detected, and the ordered multicast execution is temporarily stopped. As a result, the execution of multiplexing temporarily stops.
[0030]
In general, this does not have a fatal effect on the system. However, in a system in which real-time performance is important, the requirement may not be satisfied when a failure occurs. In other words, the upper limit of the time-out value of the heartbeat is suppressed because of real-time requirements, and cannot be set too long.
[0031]
After all, the setting of the time-out value of this heartbeat has a problem that it falls into a trade-off relationship between split brain and real-time characteristics.
[0032]
The present invention has been made in consideration of such circumstances, and is a distributed system capable of achieving both prevention of split brain and securing real-time performance when a failure occurs. and Multiplexing control method of the same system The law The purpose is to provide.
[0033]
[Means for Solving the Problems]
In order to achieve the above-described object, the present invention does not generate a split brain in principle by not performing failure detection at all, and does not interrupt processing when a failure occurs due to a timeout. . For this reason, according to the present invention, if at least (n−f) computers are operating, the input is delivered to them regardless of the operation of the other f computers.
[0034]
More specifically, the present invention relates to a distributed system that operates n computers connected by a network synchronously, and guarantees multiplexing of at least (n−f) or more computers. Each of the computers includes input candidate collection means for collecting input data selected as a candidate to be processed next by each of the n computers via the network, and input data collected by the input candidate collection means (n -F) When there are more than n pieces, it is determined whether or not there are (n−f) or more input data with the same contents, and when there are (n−f) or more, the input data is The first input candidate selection control means to be determined as the next processing target and the first input candidate if the collected input data does not contain (n−f) or more input data having the same contents. When it is determined by the candidate selection control means, it is determined whether or not there is input data having the same content that occupies a majority of the collected number of input data. And a second input candidate selection control means for causing the input candidate collection means to re-execute the collection of input data after discarding all other candidate input data, and a majority of the collected number of input data. When the second input candidate selection means determines that there is no input data having the same content, the input candidate is arbitrarily selected from the collected input data to be a self-candidate And third input candidate selection control means for causing the input candidate collection means to re-execute the collection of input data after discarding all other candidate input data. Providing a distributed system characterized.
[0035]
This distributed system realizes ordered multicast without performing any fault detection, and in particular, does not cause a delivery interruption even when a fault occurs.
[0036]
DETAILED DESCRIPTION OF THE INVENTION
An embodiment of the present invention will be described below with reference to the drawings.
[0037]
First Embodiment First, preconditions for a distributed system according to this embodiment will be described. Here, it is assumed that the number of computers constituting the multiplexing is n, and up to f failure stops are allowed. That is, the multiplexed program is executed on at least (n−f) computers. Further, when (f + 1) or more failure stops occur, multiplexing is not continued (so-called fail stop).
[0038]
Also, here, let f be the maximum integer that satisfies 3f <n. For example, if n = 4, f = 1. If n = 10, f = 3. This premise is to limit the system operation rate. For example, in the case of n = 10, it can be said that there is no practical problem at all from the above-described calculation of the operation rate.
[0039]
Also, it is assumed that the input and output of the multiplexed program are unreliable datagrams (Unreliable Datagrams). This allows missing, duplicated, and exchanged sequences for input and output packets. An example of an unreliable datagram is IP (Internet Protocol).
[0040]
Note that the non-determinism of unreliable datagrams does not contradict the determinism of the multiplexed program. The determinism of the program indicates that the next state and output are uniquely determined when the input is determined, and means determinism regarding the internal operation of the program. On the other hand, unreliable datagrams indicate that the output of one program may be missing, duplicated, or exchanged in the middle of passing the output of another program, meaning nondeterminism regarding input / output between programs doing.
[0041]
Next, the configuration of this distributed system will be described with reference to FIG. 1 and FIG.
[0042]
As shown in FIG. 1, this distributed system 1000 is multiplexed by n computers 100, and each computer 100 is connected to a plurality of client devices 2000 via an external network A. The computers 100 are connected via an internal network B. Each computer 100 in the distributed system 1000 processes the input packet (input) received from the client apparatus 2000 via the external network A in the same order as the other computers 100. Note that an input packet from the client device 2000 is input to one of the n computers 100.
[0043]
Further, the output packet generated by this processing is returned to the client apparatus 2000 via the external network A (output).
[0044]
FIG. 2 is a diagram illustrating the configuration of the computer 100. The input packet received by the input reception queue unit 1 is delivered to the application program 3 by the ordered multicast unit 2. In response to the input of the delivered input packet, the application program 3 executes according to the state stored in the program state management unit 4 and generates an output packet. The output packet is output after being sorted by the output filter unit 5.
[0045]
Next, each component of the ordered multicast unit 2 will be described.
[0046]
The input sequence number storage unit 21 stores the sequence number of the input packet that is next delivered to the computer by ordered multicast. The input packet journal storage unit 22 stores a certain amount of input packet trains that have been confirmed to be delivered to the computer by ordered multicast from the most recent one. The protocol data transmission / reception unit 23 exchanges protocol data with the protocol data transmission / reception unit 23 of another computer.
[0047]
Further, the step number storage unit 24, the candidate packet storage unit 25, and the input packet confirmation determination unit 26 are used in an algorithm for determining the next input packet to be delivered to the computer by ordered multicast. The step number storage unit 24 stores a protocol step number. The candidate packet storage unit 25 stores a total of n input packets that are “input candidates” for each computer in that step. The input packet confirmation determination unit 26 determines input packet confirmation from the information in the candidate packet storage unit 25 and determines “input candidates” in the next step.
[0048]
The maximum confirmed input sequence number storage unit 27 stores the maximum input sequence number that is known to have been delivered, including other computers. The delay storage unit 28 is composed of (n−1) flags and stores whether or not it is delayed from another computer. Then, the skip determining unit 29 determines and executes the necessity of the skip operation from the information in the delay storage unit 28.
[0049]
Hereinafter, the corresponding input sequence number refers to the input sequence number stored in the input sequence number storage unit 21, and the corresponding step number refers to the step number stored in the step number storage unit 24. The maximum confirmed input sequence number refers to the input sequence number stored in the maximum confirmed input sequence number storage unit 27, and the own candidate refers to an “input candidate” corresponding to the own computer in the candidate packet storage unit 25. The other candidate means an “input candidate” other than the own candidate in the candidate packet storage unit 25.
[0050]
FIG. 3 is a diagram showing a layout of protocol data transmitted / received by the protocol data transmitting / receiving unit 23.
[0051]
As shown in FIG. 3, the protocol data transmitted / received by the protocol data transmitting / receiving unit 23 includes fields of type, sender, input sequence number, step number, maximum determined input sequence number, and input packet. The protocol data is divided into the following three types according to the head type field.
[0052]
(1) Candidate type: The input order number field, the step number field, and the input packet field respectively store the corresponding input order number, the corresponding step number, and the own candidate at the time of transmission by the sender.
[0053]
(2) Confirmed type: Indicates that the input packet corresponding to the input sequence number is in the input packet journal storage unit 26 at the time of transmission by the sender, and the input packet is stored in the input packet field. In this case, the step number field is not used.
[0054]
(3) Delay type: Indicates that there is no input packet corresponding to the input sequence number in the input packet journal storage unit 26 at the time of transmission by the sender. In this case, the step number field and the input packet field are not used.
[0055]
In any type, the maximum determined input order number field stores the corresponding maximum determined input order number at the time of transmission by the sender. Further, the corresponding maximum confirmed input sequence number is updated to the largest one of the sequence number of the input packet confirmed by the computer and the maximum confirmed input sequence number in the received protocol data.
[0056]
Here, with reference to FIG. 4, the outline | summary of the principal part of the ordered multicast performed by the ordered multicast part 2 is demonstrated.
[0057]
Now, the number of computers constituting the multiplexing, that is, n is 4. As described above, since f is the maximum integer that satisfies 3f <n, f = 1. Therefore, in this example, at least (n−f), that is, three or more units, the process is executed while maintaining consistency.
[0058]
First, suppose that computers (1) and (2) have selected A, computer (3) has selected B, and computer (4) has selected C as input candidates. Second, it is assumed that the computer (1) collects the input candidate A of the computer (2) and the input candidate B of the computer (3). That is, the computer (1) has collected (n−f) self candidates and other candidates. At this time, the computer (1) tries to determine the input candidate without waiting for the input candidate to be collected by the computer (4). However, since there are no (n−f) identical candidates among them, the computer (1) performs reselection of input candidates. In the reselection, if there is a candidate that occupies a majority of the number of input candidates collected, that candidate is selected, and if not, it is selected at random. Here, since A accounts for the majority, the computer (1) thirdly re-selects A as its own candidate.
[0059]
In this manner, the computer (2) collects the input candidate A of the computer (1) and the input candidate C of the computer (4), and then reselects A as its own candidate. The computer (3) ) Input candidate A and computer (4) input candidate C, C is reselected as its own candidate, and computer (4) inputs input candidate A of computer (1) and input candidate of computer (2). Assume that after collecting A, A is reselected as its own candidate.
[0060]
Fourthly, it is assumed that the computer (1) collects the input candidate A of the computer (2) and the input candidate A of the computer (4). That is, the computer (1) has collected (n−f) self candidates and other candidates again. At this time, the computer (1) tries to determine the input candidate without waiting for the input candidate to be collected by the computer (3). Here, since there are (n−f) A's, fifthly, the computer (1) determines the input as A.
[0061]
On the other hand, it is assumed that the computer (2) collects the input candidate A of the computer (1) and the input candidate C of the computer (3). However, since (n−f) identical candidates still do not exist, the computer (2) performs reselection of the input candidates and selects A, which occupies the majority among them, as its own candidate. Similarly, after the computer (3) collects the input candidate A of the computer (1) and the input candidate A of the computer (2), the computer (4) receives the input candidate A of the computer (2) and the computer (3). , And A is reselected as its own candidate.
[0062]
Sixth, it is assumed that the computer (2) collects the input candidate A of the computer (1) and the input candidate A of the computer (3). Here, the input candidate A of the computer (1) is not a candidate but a confirmed input, and seventhly, the computer (2) determines the input as A.
[0063]
On the other hand, the computer (3) collects the input candidate A of the computer (2) and the input candidate A of the computer (4), and the computer (4) inputs the input candidate A of the computer (2) and the input of the computer (3). Assume that candidate A is collected. Since both (n−f) A exist here, the computers (3) and (4) determine the input as A.
[0064]
In other words, this distributed system generates split brain in principle by preventing each computer from confirming normal operation with other computers by exchanging heartbeats as in the past. In addition, the processing is not interrupted when a failure occurs due to a timeout, and multiplexing by at least (n−f) or more computers is guaranteed.
[0065]
Next, the operation principle of the ordered multicast unit 2 will be specifically described.
[0066]
First, as an initial state, the input sequence number storage unit 21 stores an initial input sequence number (for example, 1). The input packet journal storage unit 22 is empty, and the step number storage unit 24 stores an initial step number (for example, 1). The candidate packet storage unit 25 is also empty, the maximum determined input sequence number storage unit 27 stores the initial input sequence number, and all the flags in the delay storage unit 28 are reset.
[0067]
The outline of the algorithm for determining the input packet delivered to each computer by the ordered multicast executed by the ordered multicast unit 2 is as follows.
[0068]
(Algorithm 1)
If the corresponding step number is the initial step number and there is an input packet in the input reception queue unit 1, the corresponding step number is advanced, the self candidate is set as the input packet, the other candidates are emptied, and the protocol of the candidate type Send data to all other computers.
[0069]
(Algorithm 2)
When candidate type protocol data having an input sequence number that matches the input sequence number is received and the protocol data has a step number larger than the corresponding step number, the corresponding step number is set to that step number, Other candidates corresponding to the sender are set as input packets in the protocol data, other candidates other than those are emptied, and candidate type protocol data is transmitted to all other computers.
[0070]
(Algorithm 3)
When candidate type protocol data having an input sequence number that matches the corresponding input sequence number is received and the protocol data has a step number equal to the corresponding step number, another candidate corresponding to the sender is included in the protocol data. Make it an input packet.
[0071]
(Algorithm 4)
When there are (n−f) or more non-empty “input candidates” in the candidate packet storage unit 25, the input packet confirmation determination unit 26 performs the following operation.
[0072]
If there are (n−f) or more “input candidates” having the same contents, they are determined as input packets in the corresponding input sequence number, stored in the input packet journal storage unit 22, and stored in the input reception queue unit 1. If there is, delete it, deliver it to the application program 3, advance the corresponding input sequence number, set the corresponding step number to the initial step number, empty the candidate packet storage unit 25, and set all the flags in the delay storage unit 28. Reset.
[0073]
Otherwise, if there are more than a majority of “input candidates” having the same contents in the candidate packet storage unit 25, the corresponding step number is advanced, and the self-candidate in the candidate packet storage unit 25 is set as the input packet. The other candidates are emptied, and the candidate type protocol data is transmitted to all other computers.
[0074]
Otherwise, an input packet is randomly selected from the candidate packet storage unit 25, the corresponding step number is advanced, the self-candidate in the candidate packet storage unit 25 is set as the input packet, and other candidates are empty. The candidate type protocol data is transmitted to all other computers.
[0075]
(Algorithm 5)
When candidate type protocol data having an input sequence number smaller than the corresponding input sequence number is received and the input data corresponding to the input sequence number is in the input packet journal storage unit 22, the determined type protocol data is sent to the sender. Reply to your computer.
[0076]
(Algorithm 6)
When protocol data of a definite type having an input sequence number that matches the corresponding input sequence number is received, it is determined as an input packet in the corresponding input sequence number, stored in the input packet journal storage unit 26, and input acceptance queue unit 1 Are deleted, delivered to the application program 3, the corresponding input sequence number is advanced, the corresponding step number is set to the initial step number, the candidate packet storage unit is emptied, and all the flags of the delay storage unit 28 are set. Reset.
[0077]
(Algorithm 7)
When candidate type protocol data having an input sequence number smaller than the corresponding input sequence number is received and there is no input data corresponding to the input sequence number in the input packet journal storage unit 22, the delay type protocol data is sent to the sender. Reply to your computer.
[0078]
(Algorithm 8)
When a delay type protocol data having an input sequence number matching the corresponding input sequence number is received, a flag corresponding to the sender in the delay storage unit 28 is set.
[0079]
(Algorithm 9)
A non-empty input candidate in the candidate packet storage unit 25 when the sum of the number of flags in the delay storage unit 28 and the number of non-empty input candidates in the candidate packet storage unit 25 is (n−f) or more. When the number is less than (n−f), the skip determination unit 29 performs the following skip operation.
[0080]
In the skip operation, the corresponding input sequence number is set to the corresponding maximum confirmed input sequence number, the corresponding step number is set to the initial step number, the candidate packet storage unit 25 is emptied, all the flags in the delay storage unit 28 are reset, and the program state management is performed. Notify part 4 of the skip.
[0081]
Note that the order of the above (Algorithm 1) to (Algorithm 9) is not necessarily executed in this order. That is, these are executed independently if the condition is satisfied.
[0082]
When the skip is notified, the program state management unit 4 copies the state immediately before the corresponding input sequence number from the program state management unit 4 of another computer. For this reason, the program state management unit 4 holds the state immediately before each input sequence number by a certain amount from the latest one.
[0083]
Here, the effectiveness of the algorithm will be proved while explaining the outline of the operation of the algorithm described above.
[0084]
(Algorithm 1) to (Algorithm 4) are basic parts that perform one-time delivery of ordered multicast. Conventionally, the process is repeated until all the computers that have not failed are matched, but in this distributed system, the process is repeated until they are matched in (n−f) units.
[0085]
In addition, (Algorithm 5) to (Algorithm 6) are to forward an input packet that has already been determined in order to eliminate a short delay in multiplexing execution.
[0086]
(Algorithm 7) to (Algorithm 9) perform a skip operation in order to eliminate a long multiplexing execution delay.
[0087]
First, it will be described that (Algorithm 1) to (Algorithm 6) satisfy the requirements for ordered multicast. For this, it is only necessary to show that the same input packet is determined by each input sequence number.
[0088]
The input packet is determined by (Algorithm 4) or (Algorithm 6). In the case of (Algorithm 6), since the input packet that has been determined is forwarded, the input packet is first determined by (Algorithm 4). There is always a computer. Assume that the input packet at the time of confirmation is P and the step number is S.
[0089]
First, in step S + 1, it is shown that “input candidates” can only be P in all computers.
[0090]
It is (Algorithm 1), (Algorithm 2), or (Algorithm 4) that determines its own “input candidate”, but step number S cannot be an initial step number. "Is determined by (algorithm 2) or (algorithm 4). Since (algorithm 2) is the “input candidate” forwarded, it is only necessary to show that “input candidate” in step S + 1 determined in (algorithm 4) cannot be other than P.
[0091]
In order to determine “input candidates” in step S + 1 by (algorithm 4), (n−f) “input candidates” in step S are required. Let X be this set. On the other hand, in step S, since there is a computer that has confirmed the input packet by (algorithm 4), at least (n−f) “input candidates” are P. Let this set be Y. Then
Number of elements of X ≧ n−f
Number of elements of Y ≧ n−f
Number of elements of X∪Y ≦ n
Number of elements of X−number of elements of X∩Y = number of elements of X∪Y−number of elements of Y ≦ n− (n−f) = f
Thus, there are at most f pieces of X that are not P. After that, if it can be said that f is less than half of X, P occupies a majority in X, and it is understood that P is determined by (Algorithm 4). here,
Number of elements of X-2f ≧ (n−f) −2f = n−3f
As described above, since n-3f> 0, this is proved.
[0092]
After all, in step S + 1, since “input candidates” cannot be other than P in all computers, if it is determined with this input sequence number, it is always determined with P. This proved to meet the requirements of ordered multicast.
[0093]
Next, the delay elimination performed in (Algorithm 5) to (Algorithm 9) will be described.
[0094]
This delay occurs when multiplexing is performed with more than (n−f) units. The delayed computer is not necessary for multiplexing at that time, but is necessary for continuing multiplexing when the computer in progress is out of order. That is, in that case, the delayed computer must catch up to the last input sequence number.
[0095]
The elimination of the short multiplexing execution delay performed in (Algorithm 5) to (Algorithm 6) simply forwards the input packet determined by the advanced computer. Since the arrival order of the input packets is the same, the requirements for ordered multicast are satisfied.
[0096]
On the other hand, the elimination of the long multiplexing execution delay performed in (Algorithm 7) to (Algorithm 9) uses the concept of so-called “kakebori”. “Kakebori” occurs when the advanced computer is delayed so long that it forgets the input packet determined. Then, when this “defocusing” is determined, a skip operation is performed. In the skip operation, the input sequence number is skipped, so that the sequence of input packets is lost and the ordered multicast requirement is not satisfied.
[0097]
Therefore, the program state management unit 4 performs matching copying in order to compensate for this missing series of input packets. This allows multiplexing to continue without contradiction.
[0098]
Next, let us touch on the relationship with unreliable datagrams.
[0099]
Regarding the output, since the datagram is not reliable, the operation of the output filter unit 5 may be arbitrary. For example, if output is performed without sorting, output packets are output by the number of computers that perform multiplexing. However, in an unreliable datagram, duplication of packets is allowed, and this is within this range.
[0100]
Further, in this distributed system, there is a possibility of exchanging the order especially with respect to the output packets because of the delay of multiplexing execution. This is because the delayed computer performs the previous output semantically after the advanced computer outputs.
[0101]
However, in terms of performance, the setting of the output filter unit 5 is important. For example, when the input packet is determined in (Algorithm 4), the output filter is opened, and when the input packet is determined in (Algorithm 6). If the output filter is set to be closed, order exchange can be reduced. Further, duplication can be reduced by opening the output filter only when the input packet is confirmed in (algorithm 4) and the input packet is removed from the input reception queue 1 and closed otherwise.
[0102]
In other words, this distributed system realizes aligned multicast without using fault detection by delivering inputs to them regardless of the operation of other f computers if at least n-f computers are operating. In particular, even when a failure occurs, the delivery is not interrupted.
[0103]
Also, considering that there is a possibility that execution of program multiplexing may be delayed by a maximum of f computers, a mechanism for catching up so that the delayed execution does not cause split brain is realized.
[0104]
Next, an operation procedure of the ordered multicast unit 2 will be described with reference to FIGS.
[0105]
FIG. 5 and FIG. 6 are flowcharts showing an operation procedure of a basic portion that performs one delivery of ordered multicast.
[0106]
The ordered multicast unit 2 first executes candidate list creation processing (step A1 in FIG. 5). In this candidate list creation, when the corresponding step number is an initial value (YES in step B1 in FIG. 6), it is checked whether an input packet exists in the reception queue (step B2 in FIG. 6). Step B2 in FIG. 6 is followed by the corresponding step number (step B3 in FIG. 6), and the input packet in the reception queue is set as a self-candidate, and this self-candidate is transmitted to all other computers (FIG. 6). 6 step B4).
[0107]
On the other hand, when the corresponding step number is not the initial value (NO in step B1 in FIG. 6) or there is no input packet in the reception queue (NO in step B2 in FIG. 6), the ordered multicast unit 2 uses the same input sequence number. Is determined (step B5 in FIG. 6), and if received (YES in step B5 in FIG. 6), the step number in the received data is now greater than the corresponding step number. It is determined whether it is larger (step B6 in FIG. 6). If it is larger than the corresponding step number (YES in step B6 in FIG. 6), the aligned multicast unit 2 updates the corresponding step to the step number in the received data (step B7 in FIG. 6), and then in the received data. The input packet is set as a self-candidate, and the self-candidate is transmitted to all other computers (step B8 in FIG. 6). At this time, the ordered multicast unit 2 stores this input packet as another candidate. If the step number in the received data is equal to the corresponding step number (NO in step B6 in FIG. 6, YES in step B9), the input packet in the received data is stored as another candidate (step B10 in FIG. 6). .
[0108]
Here, the ordered multicast unit 2 checks whether or not the number of stored candidates is (n−f) or more (step B11 in FIG. 6), and if not (NO in step B11 in FIG. 6), the step If the process from B1 is repeated (YES in step B11 in FIG. 6), this process ends.
[0109]
When the candidate list creation process ends, the ordered multicast unit 2 checks whether there are (n−f) or more identical candidates (step A2 in FIG. 5), and if they exist (in step A2 in FIG. 5). YES), the candidate is determined as an input packet (step A3 in FIG. 5). That is, the input packet is deleted from the reception queue and is input to the application program 3. Then, in order to proceed to the next process, the ordered multicast unit 2 advances the input order number, initializes the corresponding step number, discards all stored candidates, and resets the delay flag (step A4 in FIG. 5). ).
[0110]
On the other hand, when (n−f) or more identical candidates do not exist (step A2 in FIG. 5), the ordered multicast unit 2 checks whether or not a majority or more of the same candidates exist ( If YES (YES in step A5 in FIG. 5) (YES in step A5 in FIG. 5), the candidate is set as a self-candidate and the self-candidate is transmitted to all other computers (step in FIG. 5). A6) The processing from step A1 is repeated. At this time, the ordered multicast unit 2 discards all other candidates stored. If more than half of the same candidates do not exist (NO in step A5 in FIG. 5), the ordered multicast unit 2 randomly selects its own candidate and transmits this own candidate to all other computers. After that (step A7 in FIG. 5), the processing from step A1 is repeated. Also at this time, the ordered multicast unit 2 discards all other candidates stored.
[0111]
With the above procedure, each computer proceeds with processing without confirming failure, while confirming the coincidence of (n−f) or more units.
[0112]
FIGS. 7 to 10 are flowcharts showing an operation procedure for eliminating the multiplexing execution delay.
[0113]
When the ordered multicast unit 2 receives candidate type protocol data having an input order number smaller than the corresponding input order number, it checks whether an input packet corresponding to the input order number exists in the journal (step in FIG. 7). C1). If the ordered multicast unit 2 exists in the journal (YES in step C1 in FIG. 7), the fixed type protocol data in which the input packet is set is returned to the sender (step C2 in FIG. 7). If it does not exist (NO in Step C1 in FIG. 7), the delay type protocol data is returned to the sender (Step C3 in FIG. 7).
[0114]
When the ordered multicast unit 2 receives protocol data of a definite type having an input number that matches the corresponding input sequence number, the ordered multicast unit 2 determines an input packet in the received data as an input packet (step D1 in FIG. 8). That is, the input packet is deleted from the reception queue and is input to the application program 3. The ordered multicast unit 2 then advances the input sequence number to proceed to the next step, initializes the corresponding step number, discards all stored candidates, and resets the delay flag (step D2 in FIG. 8). ).
[0115]
When the ordered multicast unit 2 receives delay type protocol data having an input sequence number that matches the input sequence number, it sets a delay flag corresponding to the sender (step E1 in FIG. 9).
[0116]
The ordered multicast unit 2 monitors whether the sum of the set number of delay flags and the number of stored candidates has reached (n−f) or more (step F1 in FIG. 10), and (n− f) If the number has reached or exceeded (YES in step F1 in FIG. 10), it is checked whether the number of stored candidates is less than (n−f) (step F2 in FIG. 10). If the number is less than (n−f) (YES in step F2 in FIG. 10), aligned multicast unit 2 performs a skip operation (step F3 in FIG. 10). That is, the corresponding input sequence number is set to the corresponding maximum confirmed input sequence number, the corresponding step number is set to the initial step number, the candidate packet storage unit 25 is emptied, and all the flags of the delay storage unit 28 are reset, and then the program state management is performed. Notify part 4 of the skip.
[0117]
With the above procedure, each computer realizes a mechanism for catching up with delayed execution so as not to cause split brain.
[0118]
(Second Embodiment)
Next explained is the second embodiment of the invention.
[0119]
In the distributed system that performs the ordered multicast as described in the first embodiment, it is necessary that all the computers 100 execute the application program 3 using the same time. That is, a function for adjusting the time used when executing the application program 3 among all the computers 100 is necessary. Therefore, in the second embodiment, a mechanism for adjusting the time used when executing the application program 3 among all the computers 100 in a distributed system that performs ordered multicast will be described.
[0120]
FIG. 11 is a conceptual diagram for explaining a mechanism for adjusting the time used when the application program 3 is executed among all the computers 100.
[0121]
As shown in FIG. 11, each of the n computers 100 constituting the distributed system 1000 has a real clock 101, that is, a system clock, and the real clock 101 counts the system time. Conventionally, various ideas have been made on how to adjust the real clock 101 among the n computers 100. That is, conventionally, the time used when executing the application program 3 is still the system time counted by each real clock 101. On the other hand, in the distributed system 1000 of this embodiment, the virtual clock 102 is managed by the entire system separately from these real clocks 101, and the application program 3 is executed using the virtual time 102 counted by the virtual clock 102. Execute.
[0122]
FIG. 12 is a configuration diagram of the computer 100 for explaining the principle of managing the virtual time counted by the virtual time 102.
[0123]
As shown in FIG. 12, in addition to the system clock 6 (corresponding to the real clock 101 in FIG. 11) that counts the so-called system time, the computer 100 includes a virtual time counter that counts the virtual time used when the application program 3 is executed. 7 (corresponding to the virtual clock 102 in FIG. 11) and a virtual time manager 8 for managing the virtual time counter 7.
[0124]
The virtual time manager 8 gives an input packet for giving a timing for incrementing the virtual time counter 7 to the input reception queue unit 1 with high priority, for example, every second. This input packet is taken into the ordered multicast unit 2 in the input order immediately after the priority, and becomes the own candidate that is the input candidate of the own computer. As a result of the operation of the ordered multicast unit 2, when the input packet confirmation determination unit 26 confirms this input packet, the packet is input to the virtual time manager 8.
[0125]
At this time, also in the other computer 100, the input packet determination determination unit 26 determines this input packet and inputs it to the virtual time manager 8.
[0126]
Upon receiving this input packet, the virtual time manager 8 increments the virtual time counter 7 by a predetermined value (usually 1 second).
[0127]
Further, the virtual time manager 8 deletes the input packet from the input reception queue 1 and prepares to input it again into the input reception queue 1 one second after this point.
[0128]
At this time, also in the other computer 100, the virtual time manager 8 deletes the packet if it exists in the input reception queue 1, and in any case, the virtual time manager 8 enters the input reception queue 1 one second after this point. Prepare to re-enter.
[0129]
In other words, the virtual time manager 8 operates as if the input packet is input by itself and is confirmed without distinction even when the input packet input by another virtual time manager 8 is determined. The input packet is not input until 1 second after that point.
[0130]
Thereby, it is realized that all the computers 100 count the virtual time at the same timing.
[0131]
Further, the virtual time manager 8 gives an input packet for giving a timing for comparing the system time and the virtual time with high priority when the computer 100 is started up and every hour, for example, to the input reception queue unit 1. In At this time, the virtual time manager 8 stores the system time counted by the system clock 6 in this input packet. Since this input packet is transmitted to the other computer by the protocol data transmission / reception unit 23, as a result, the system time of the own computer is notified to the other computer. Similarly, when the virtual time manager 8 of another computer generates this input packet, the system time of the other computer is notified by this input packet.
[0132]
In addition, the input packet is taken into the ordered multicast unit 2 in the input order immediately after the priority, and becomes an own candidate that is an input candidate of the own computer. As a result of the operation of the ordered multicast unit 2, when the input packet confirmation determination unit 26 confirms this input packet, the packet is input to the virtual time manager 8. Upon receiving this packet input, the virtual time manager 8 compares the system time of the local computer or another computer stored in the input packet with the virtual time counted by the virtual time counter 7. When the virtual time counter 7 is not set, the virtual time counter 7 is set to the system time. Further, when the virtual time counter 7 is not set and the system time is advanced, the virtual time manager 8 performs a process for advancing the virtual time faster than the normal time. As one example, the increment width of the virtual time counter 7 when the input packet for giving the timing for incrementing the virtual time counter 7 described above is input is set larger than the normal time.
[0133]
That is, the virtual time of each computer is adjusted so as to match the most advanced system time among the n computers, and even if the system time of the n computers varies, each computer can execute the application program. 3 is realized by matching the virtual time used at the time of execution.
[0134]
FIG. 13 is a flowchart showing an operation procedure for incrementing the virtual time counter 7.
[0135]
The virtual time manager 8 receives an input packet for giving a timing for incrementing the virtual time counter 7 when a predetermined time has elapsed since the previous increment of the virtual time counter 7 (YES in step G1). Is not input (YES in step G2), the input packet is input to the input reception queue unit 1 (step G3). When this input packet is confirmed by execution of the ordered multicast (YES in steps G4 and G5), the virtual time manager 8 increments the virtual time counter 7 by a predetermined value (step G6). Is present in the input reception queue unit 1 (YES in step G7), the input packet is deleted from the input reception queue unit 1 (step G8).
[0136]
FIG. 14 is a flowchart showing an operation procedure for adjusting the virtual time counter 7.
[0137]
The virtual time manager 8 receives an input packet for giving a timing for comparing the system time with the virtual time after a predetermined time has elapsed since the last spontaneous adjustment of the virtual time counter 7 (YES in step H1). When the input reception queue unit 1 is not yet input (YES in step H2), the input packet is input to the input reception queue unit 1 (step H3). When this input packet is confirmed by execution of ordered multicast (YES in steps H4 and H5), the virtual time manager 8 compares the system time in the input packet with the virtual time of the virtual time counter 7 ( Step H6). If the system time has advanced (YES in step H7), the virtual time manager 8 sets the increment width of the virtual time counter 7 to be larger than the normal time (step H8), while the virtual time manager 8 Is advanced (NO in step H7), the increment width of the virtual time counter 7 is reset to a predetermined value (step H9).
[0138]
As described above, in the distributed system of this embodiment, in addition to the real clock 101 of each computer 100, the virtual clock 102 is managed by the entire system, so that in the distributed system that performs aligned multicast, A mechanism for adjusting the time to be used among all the computers 100 is realized.
[0139]
Here, the system time is compared with the virtual time, and when the system time is advanced, the example in which the increment width of the virtual time is larger than that in the normal time has been described. In such a case, it is preferable to set the increment width of the virtual time in the normal time so that it is gradually delayed from the actual time. As a result, the virtual clock 102 is prevented from shifting indefinitely in the advancing direction with respect to all the real clocks 101, and the error between the real time 101 and the virtual clock 102 can be kept within an expected range. It becomes possible. On the other hand, when the system time is delayed and the increment of the virtual time is made smaller than the normal time, the increment of the virtual time of the normal time is gradually advanced from the actual time. You only have to set it.
[0140]
Incidentally, the management of the virtual clock 102 is not necessarily performed by all the computers 100 using the above-described ordered multicast mechanism. For example, as shown in FIG. 15, management may be performed on any one computer 100 (A), and when a failure occurs in this computer 100, any other computer 100 may take over ( B). That is, each computer 100 does not execute the application program 3 using each real clock 101, but sets the virtual clock 102 in the entire system, and all the computers 100 use the one virtual clock 102 for the application program. The method of the present invention of executing step 3 is useful regardless of how the virtual clock 102 is managed.
[0141]
That is, the present invention is not limited to the above-described embodiment, and various modifications can be made without departing from the scope of the invention in the implementation stage. Further, the above embodiments include inventions at various stages, and various inventions can be extracted by appropriately combining a plurality of disclosed constituent elements. For example, even if some constituent requirements are deleted from all the constituent requirements shown in the embodiment, the problem described in the column of the problem to be solved by the invention can be solved, and the effect described in the column of the effect of the invention Can be obtained as an invention.
[0142]
【The invention's effect】
As described above in detail, according to the present invention, when n computers are used for multiplexing and up to f faults are allowed to stop, at least (n−f) computers operate. If so, the input will be delivered to them regardless of the operation of the other f units. That is, by not performing failure detection at all, split brain is not generated in principle, and processing is not interrupted when a failure occurs due to timeout.
[0143]
Further, considering that there is a possibility that execution of program multiplexing may be delayed by a maximum of f computers, a mechanism for catching up so that the delayed execution does not cause split brain is also realized.
[Brief description of the drawings]
FIG. 1 is a diagram showing a configuration of a distributed system according to a first embodiment of the present invention.
FIG. 2 is a functional block diagram of a computer constituting the distributed system of the first embodiment.
FIG. 3 is a view showing a layout of protocol data transmitted and received between computers constituting the distributed system of the first embodiment;
FIG. 4 is a diagram for explaining an outline of a main part of the ordered multicast executed by the distributed system of the first embodiment;
FIG. 5 is a first flowchart showing an operation procedure of a basic part that performs one delivery of ordered multicast executed by the distributed system of the first embodiment;
FIG. 6 is a second flowchart showing an operation procedure of a basic part that performs one delivery of ordered multicast executed by the distributed system of the first embodiment;
FIG. 7 is a first flowchart showing an operation procedure for eliminating the delay of multiplexing execution, which is executed by the distributed system of the first embodiment;
FIG. 8 is a second flowchart showing an operation procedure for eliminating the delay of multiplexing execution, which is executed by the distributed system of the first embodiment;
FIG. 9 is a third flowchart showing an operation procedure for eliminating the multiplexing execution delay executed by the distributed system of the first embodiment;
FIG. 10 is a fourth flowchart showing an operation procedure for eliminating the multiplexing execution delay executed by the distributed system of the first embodiment;
FIG. 11 is a conceptual diagram for explaining a mechanism for adjusting a time used when executing an application program among all computers in the second embodiment;
FIG. 12 is a configuration diagram of a computer for explaining the principle of managing virtual time counted by virtual time in the second embodiment.
FIG. 13 is a flowchart showing an operation procedure for incrementing a virtual time counter in the second embodiment.
FIG. 14 is a flowchart showing an operation procedure for adjusting a virtual time counter in the second embodiment;
FIG. 15 is a view showing a modification of the virtual timepiece management method in the second embodiment.
[Explanation of symbols]
1 ... Input acceptance queue
2 ... Aligned multicast part
3. Application program
4. Program status management unit
5 ... Output filter section
6 ... System clock
7 ... Virtual time counter
8. Virtual time manager
21 ... Input sequence number storage unit
22 ... Input packet journal storage unit
23 ... Protocol data transmitter / receiver
24 ... Step number storage unit
25 ... Candidate packet storage unit
26: Input packet confirmation determination unit
27: Maximum determined input sequence number storage unit
28: Delay storage unit
29 ... Skip determination unit
100: Computer
101 ... Real clock
102 ... Virtual clock
1000 ... distributed system
2000: Client device
A ... External network
B ... Internal network

Claims (8)

ネットワークで接続されたn台のコンピュータを同期的に動作させる分散システムであって、少なくとも(n−f(fは、3f<nを満たす最大の整数))台以上での多重化を保証する分散システムにおいて、
前記各コンピュータは、
前記n台のコンピュータそれぞれが次に処理する候補として選択した入力データを前記ネットワークを介して収集する入力候補収集手段と、
前記入力候補収集手段により収集された入力データが(n−f)個以上存在する場合に、その中に同一内容の入力データが(n−f)個以上あるか否かを判定し、(n−f)個以上あったときに、その入力データを次に処理する対象として確定する第1の入力候補選定制御手段と、
前記収集された入力データの中に同一内容の入力データが(n−f)個以上ないと前記第1の入力候補選定制御手段で判定されたときに、前記収集された入力データ数の過半数を占める同一内容の入力データが存在するか否かを判定し、存在したときに、その入力データを自候補とするとともにそれ以外の他の候補の入力データをすべて破棄した上で前記入力候補収集手段に入力データの収集を再実行させる第2の入力候補選定制御手段と、
前記収集された入力データ数の過半数を占める同一内容の入力データが存在しないと前記第2の入力候補選定手段で判定されたときに、前記収集された入力データの中からいずれかの入力データを任意に選択して自候補とするとともに、それ以外の他の候補の入力データをすべて破棄した上で前記入力候補収集手段に入力データの収集を再実行させる第3の入力候補選定制御手段と
を具備することを特徴とする分散システム。
A distributed system that operates n computers connected in a network synchronously, and guarantees multiplexing at least (n−f (f is the maximum integer satisfying 3f <n) ) or more. In the system,
Each computer is
Input candidate collecting means for collecting input data selected as candidates to be processed next by each of the n computers via the network;
When there are (n−f) or more input data collected by the input candidate collecting means, it is determined whether or not there are (n−f) or more input data having the same contents in the (n−f) items, (n -F) first input candidate selection control means for determining the input data as the next processing target when there are more than one,
When the first input candidate selection control means determines that there are not (n−f) or more input data having the same content in the collected input data, a majority of the collected input data is determined. It is determined whether or not there is input data having the same content, and when it exists, the input data is set as its own candidate and all other candidate input data is discarded and the input candidate collecting means Second input candidate selection control means for causing the input data collection to be re-executed;
When the second input candidate selection unit determines that there is no input data having the same content that occupies a majority of the collected input data, any one of the collected input data is selected. A third input candidate selection control unit that arbitrarily selects the self candidate and discards all the other candidate input data and causes the input candidate collection unit to re-execute the collection of the input data; A distributed system comprising:
前記各コンピュータは、
入力データの候補の収集、入力データの確定および確定したデータの処理を1つの工程として動作し、
前記第1の入力候補確定制御手段により確定された入力データを保持するジャーナル手段と、
自コンピュータで既に前記入力データの確定がなされた確定済みの工程の入力データを他のコンピュータが収集しているときに、前記ジャーナル手段に保持された入力データを確定済みの入力データとして送信する第1の入力候補調整制御手段と、
前記入力候補収集手段による入力データの収集時に、他のコンピュータから確定済みの入力データが送信されたときに、その入力データを次に処理する対象として確定する第2の入力候補調整制御手段と
をさらに具備することを特徴とする請求項記載の分散システム。
Each computer is
Collecting input data candidates, finalizing input data and processing the finalized data operate as one process,
Journal means for holding input data confirmed by the first input candidate confirmation control means;
When another computer is collecting input data of a confirmed process in which the input data has already been confirmed in its own computer, the input data held in the journal means is transmitted as confirmed input data. 1 input candidate adjustment control means;
Second input candidate adjustment control means for determining the input data as a target to be processed next when input data already determined is transmitted from another computer when the input candidate collecting means collects the input data; distributed system according to claim 1, characterized by further comprising.
前記ジャーナル手段は、前記入力データを最新のものから予め定められた工程数だけ保持し、
前記第1の入力候補調整制御手段は、他のコンピュータに送信すべき確定済みの入力データが前記ジャーナル手段に保持されていないときに、その旨を通知する手段を具備し、
前記各コンピュータは、
自コンピュータで既に確定済み各工程での直前の状態を予め定められた工程分まで保持する状態保持手段と、
前記状態保持手段に保持された各工程での直前の状態を他のコンピュータとの間で送受信する状態送受信手段と、
前記入力候補収集手段による入力データの収集時に、その収集された入力データ数と他のコンピュータから確定済みの入力データが前記ジャーナル手段にも既に保持されていない旨を通知された数との和が(n−f)以上であって、前記収集された入力データ数が(n−f)未満であったときに、他のすべてのコンピュータの中で確定済みの工程が最も進んだ他のコンピュータにおける最新の確定済みの工程での直前の状態を前記状態送受信手段により取得して自コンピュータに複製するスキップ手段と
をさらに具備することを特徴とする請求項記載の分散システム。
The journal means holds the input data for a predetermined number of steps from the latest one,
The first input candidate adjustment control means comprises means for notifying that when the confirmed input data to be transmitted to another computer is not held in the journal means,
Each computer is
A state holding means for holding up to the process content that has already established a state immediately before the at definite of each step in advance in its own computer,
State transmitting / receiving means for transmitting / receiving the state immediately before each process held in the state holding means to / from another computer;
When collecting input data by the input candidate collecting means, the sum of the collected input data number and the number notified from other computers that the confirmed input data is not already held in the journal means is When the number of collected input data is less than (n−f) and the number of collected input data is less than (n−f) 3. The distributed system according to claim 2 , further comprising: a skip unit that obtains a state immediately before the latest confirmed step by the state transmission / reception unit and copies it to a local computer.
前記各コンピュータは、
データ処理に用いる仮想時刻を計数するカウンタと、
前記カウンタの値をインクリメントする処理を行わせるための第1の入力データを、前記入力候補収集手段が収集する入力データの候補として周期的に発生させる第1の入力データ発生手段と、
自コンピュータのシステム時刻が格納され、このシステム時刻と前記カウンタにより計数される仮想時刻とを比較し、システム時刻の方が進んでいたときに、前記カウンタの値のインクリメント幅を大きく設定する処理を行わせるための第2の入力データを、前記入力候補収集手段が収集する入力データの候補として発生させる第2の入力データ発生手段と、
前記第2の入力データから得られたシステム時刻と前記カウンタにより計数された仮想時刻とを比較し、当該システム時刻の方が進んでいたときに、前記第1の入力データ処理時における前記カウンタの値のインクリメント幅を大きく設定する仮想時刻調整手段と
をさらに具備することを特徴とする請求項1記載の分散システム。
Each computer is
A counter for counting virtual time used for data processing;
First input data generating means for periodically generating first input data for performing a process of incrementing the value of the counter as input data candidates collected by the input candidate collecting means ;
The system time of the own computer is stored, the system time is compared with the virtual time counted by the counter, and when the system time is advanced, a process of setting a larger increment width of the counter value is performed. the second input data for causing a second input data generating means for generating a candidate of the input data by the input candidate collection means for collecting,
The system time obtained from the second input data is compared with the virtual time counted by the counter, and when the system time has advanced, the counter of the counter at the time of the first input data processing The distributed system according to claim 1, further comprising virtual time adjusting means for setting a large increment width of the value.
ネットワークで接続されたn台のコンピュータを同期的に動作させる分散システムであって、少なくとも(n−f(fは、3f<nを満たす最大の整数))台以上での多重化を保証する分散システムの多重化制御方法であって、
前記各コンピュータは、
前記n台のコンピュータそれぞれが次に処理する候補として選択した入力データを前記ネットワークを介して収集する入力候補収集ステップと、
前記入力候補収集ステップにより収集された入力データが(n−f)個以上存在する場合に、その中に同一内容の入力データが(n−f)個以上あるか否かを判定し、(n−f)個以上あったときに、その入力データを次に処理する対象として確定する第1の入力候補選定制御ステップと、
前記収集された入力データの中に同一内容の入力データが(n−f)個以上ないと前記第1の入力候補選定制御手段で判定されたときに、前記収集された入力データ数の過半数を占める同一内容の入力データが存在するか否かを判定し、存在したときに、その入力データを自候補とするとともにそれ以外の他の候補の入力データをすべて破棄した上で前記入力候補収集ステップに入力データの収集を再実行させる第2の入力候補選定制御ステップと、
前記収集された入力データ数の過半数を占める同一内容の入力データが存在しないと前記第2の入力候補選定手段で判定されたときに、前記収集された入力データの中からいずれかの入力データを任意に選択して自候補とするとともに、それ以外の他の候補の入力データをすべて破棄した上で前記入力候補収集手段に入力データの収集を再実行させる第3の入力候補選定制御ステップと
を具備することを特徴とする分散システムの多重化制御方法。
A distributed system that operates n computers connected in a network synchronously, and guarantees multiplexing at least (n−f (f is the maximum integer satisfying 3f <n) ) or more. A system multiplexing control method comprising:
Each computer is
An input candidate collecting step for collecting, via the network, input data selected as candidates to be processed next by each of the n computers;
When there are (n−f) or more input data collected in the input candidate collecting step, it is determined whether or not there are (n−f) or more input data having the same contents in the (n−f) items, (n -F) a first input candidate selection control step for determining the input data as the next processing target when there are more than
When the first input candidate selection control means determines that there are not (n−f) or more input data having the same content in the collected input data, a majority of the collected input data is determined. It is determined whether or not there is input data having the same content, and when it exists, the input data is set as its own candidate and all other candidate input data is discarded and the input candidate collecting step A second input candidate selection control step for causing the input data collection to be re-executed;
When the second input candidate selection unit determines that there is no input data having the same content that occupies a majority of the collected input data, any one of the collected input data is selected. A third input candidate selection control step of arbitrarily selecting the self candidate and discarding all other candidate input data and causing the input candidate collecting means to re-execute the collection of the input data; A multiplexing control method for a distributed system, comprising:
前記各コンピュータは、
入力データの候補の収集、入力データの確定および確定したデータの処理を1つの工程として動作し、
前記第1の入力候補確定制御ステップにより確定された入力データを保持するジャーナルステップと、
自コンピュータで既に前記入力データの確定がなされた確定済みの工程の入力データを他のコンピュータが収集しているときに、前記ジャーナルステップにより保持された入力データを確定済みの入力データとして送信する第1の入力候補調整制御ステップと、
前記入力候補収集ステップによる入力データの収集時に、他のコンピュータから確定済みの入力データが送信されたときに、その入力データを次に処理する対象として確定する第2の入力候補調整制御ステップと
をさらに具備することを特徴とする請求項記載の分散システムの多重化制御方法。
Each computer is
Collecting input data candidates, finalizing input data and processing the finalized data operate as one process,
A journal step for holding the input data determined by the first input candidate determination control step;
When another computer is collecting input data of a confirmed process in which the input data has already been confirmed by its own computer, the input data held by the journal step is transmitted as confirmed input data. 1 input candidate adjustment control step;
A second input candidate adjustment control step for determining when the input data is collected by the input candidate collecting step, and when the input data that has been confirmed is transmitted from another computer, the input data is confirmed as a target to be processed next; 6. The method for controlling multiplexing of a distributed system according to claim 5, further comprising:
前記ジャーナルステップは、前記入力データを最新のものから予め定められた工程数だけ保持し、
前記第1の入力候補調整制御ステップは、他のコンピュータに送信すべき確定済みの入力データが前記ジャーナルステップにより保持されていないときに、その旨を通知するステップを具備し、
前記各コンピュータは、
自コンピュータで既に確定済み各工程での直前の状態を予め定められた工程分まで保持する状態保持ステップと、
前記状態保持ステップにより保持された各工程での直前の状態を他のコンピュータとの間で送受信する状態送受信ステップと、
前記入力候補収集ステップによる入力データの収集時に、その収集された入力データ数と他のコンピュータから確定済みの入力データが前記ジャーナルステップによっても既に保持されていない旨を通知された数との和が(n−f)以上であって、前記収集された入力データ数が(n−f)未満であったときに、他のすべてのコンピュータの中で確定済みの工程が最も進んだ他のコンピュータにおける最新の確定済みの工程での直前の状態を前記状態送受信ステップにより取得して自コンピュータに複製するスキップステップと
をさらに具備することを特徴とする請求項記載の分散システムの多重化制御方法。
The journal step holds the input data for a predetermined number of steps from the latest one,
The first input candidate adjustment control step includes a step of notifying that when confirmed input data to be transmitted to another computer is not held by the journal step ,
Each computer is
A state holding step of holding up to the process content that has already established a state immediately before the at definite of each step in advance in its own computer,
A state transmission / reception step for transmitting / receiving the previous state in each step held by the state holding step to / from another computer;
When the input data is collected by the input candidate collecting step, the sum of the collected input data number and the number notified from other computers that the confirmed input data is not already held by the journal step is When the number of collected input data is less than (n−f) and the number of collected input data is less than (n−f) 6. The multiplexing control method for a distributed system according to claim 5 , further comprising: a skip step of acquiring a state immediately before the latest confirmed step by the state transmission / reception step and copying it to a local computer.
前記各コンピュータは、
データ処理に用いる仮想時刻を計数するカウンタの値をインクリメントする処理を行わせるための第1の入力データを、前記入力候補収集ステップが収集する入力データの候補として周期的に発生させる第1の入力データ発生ステップと、
自コンピュータのシステム時刻が格納され、このシステム時刻と前記カウンタにより計数される仮想時刻とを比較し、システム時刻の方が進んでいたときに、前記カウンタの値のインクリメント幅を大きく設定する処理を行わせるための第2の入力データを、前記入力候補収集ステップが収集する入力データの候補として発生させる第2の入力データ発生ステップと、
前記第2の入力データから得られたシステム時刻と前記カウンタにより計数された仮想時刻とを比較し、当該システム時刻の方が進んでいたときに、前記第1の入力データ処理時における前記カウンタの値のインクリメント幅を大きく設定する仮想時刻調整ステップと
をさらに具備することを特徴とする請求項記載の分散システムの多重化制御方法。
Each computer is
First input for periodically generating first input data for performing a process of incrementing a counter value for counting virtual time used for data processing as a candidate of input data collected by the input candidate collection step A data generation step;
The system time of the own computer is stored, the system time is compared with the virtual time counted by the counter, and when the system time is advanced, a process of setting a larger increment width of the counter value is performed. A second input data generation step for generating second input data to be performed as input data candidates to be collected by the input candidate collection step ;
The system time obtained from the second input data is compared with the virtual time counted by the counter, and when the system time has advanced, the counter of the counter at the time of the first input data processing 6. The multiplexing control method for a distributed system according to claim 5 , further comprising a virtual time adjustment step of setting a large increment width of the value.
JP2002171715A 2001-06-15 2002-06-12 Distributed system and multiplexing control method for the same Expired - Fee Related JP3655263B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002171715A JP3655263B2 (en) 2001-06-15 2002-06-12 Distributed system and multiplexing control method for the same

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2001-181791 2001-06-15
JP2001181791 2001-06-15
JP2002171715A JP3655263B2 (en) 2001-06-15 2002-06-12 Distributed system and multiplexing control method for the same

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2004204670A Division JP4054323B2 (en) 2001-06-15 2004-07-12 Distributed system and time management method for the same

Publications (2)

Publication Number Publication Date
JP2003067215A JP2003067215A (en) 2003-03-07
JP3655263B2 true JP3655263B2 (en) 2005-06-02

Family

ID=26617002

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002171715A Expired - Fee Related JP3655263B2 (en) 2001-06-15 2002-06-12 Distributed system and multiplexing control method for the same

Country Status (1)

Country Link
JP (1) JP3655263B2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011118747A (en) * 2009-12-04 2011-06-16 Toshiba Corp Distributed system and logical time adjustment method
US10303565B2 (en) 2014-03-18 2019-05-28 Kabushiki Kaisha Toshiba Multicasting system voting on server data
US10489239B2 (en) 2015-09-08 2019-11-26 Kabushiki Kaisha Toshiba Multiplexing system, multiplexing method, and computer program product

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3808874B2 (en) 2004-03-12 2006-08-16 東芝ソリューション株式会社 Distributed system and multiplexing control method
JP4818349B2 (en) * 2008-12-24 2011-11-16 株式会社東芝 Distributed system and multiplexing control method for the same
JP4818379B2 (en) * 2009-02-26 2011-11-16 株式会社東芝 Distributed system having failover function and failover method in the same system
JP4806044B2 (en) * 2009-03-06 2011-11-02 株式会社東芝 Distributed system having failover function and failover method in the same system
WO2015033410A1 (en) 2013-09-04 2015-03-12 株式会社東芝 Information processing system, server device, information processing method and program
JP6203407B2 (en) * 2014-08-05 2017-09-27 株式会社東芝 Alignment apparatus, data processing apparatus, program, alignment method, and multiplexing system
JP2019012415A (en) * 2017-06-30 2019-01-24 株式会社bitFlyer Method for building consensus in network and nodes constituting network

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001053744A (en) * 1999-08-06 2001-02-23 Toshiba Corp Parallel distribution system
JP3831154B2 (en) * 1999-08-13 2006-10-11 株式会社東芝 Program multiplexing expansion method

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011118747A (en) * 2009-12-04 2011-06-16 Toshiba Corp Distributed system and logical time adjustment method
US10303565B2 (en) 2014-03-18 2019-05-28 Kabushiki Kaisha Toshiba Multicasting system voting on server data
US10489239B2 (en) 2015-09-08 2019-11-26 Kabushiki Kaisha Toshiba Multiplexing system, multiplexing method, and computer program product

Also Published As

Publication number Publication date
JP2003067215A (en) 2003-03-07

Similar Documents

Publication Publication Date Title
US10693958B2 (en) System and method for adding node in blockchain network
Amir et al. Membership algorithms for multicast communication groups
JP4818349B2 (en) Distributed system and multiplexing control method for the same
US5704032A (en) Method for group leader recovery in a distributed computing environment
US5787249A (en) Method for managing membership of a group of processors in a distributed computing environment
US5696896A (en) Program product for group leader recovery in a distributed computing environment
US7162524B2 (en) Gapless delivery and durable subscriptions in a content-based publish/subscribe system
US5748958A (en) System for utilizing batch requests to present membership changes to process groups
KR102170347B1 (en) System and method for terminating view change protocol
US5799146A (en) Communications system involving groups of processors of a distributed computing environment
Sarin et al. Discarding obsolete information in a replicated database system
EP0805393B1 (en) Method and apparatus for managing membership of a group of processors in a distributed computing environment
JP3589378B2 (en) System for Group Leader Recovery in Distributed Computing Environment
US8743881B2 (en) Link data transmission method, node and system
US5793962A (en) System for managing membership of a group of processors in a distributed computing environment
CN110708175B (en) Method for synchronizing messages in a distributed network
US5790772A (en) Communications method involving groups of processors of a distributed computing environment
EP1543420A2 (en) Consistent message ordering for semi-active and passive replication
JP3655263B2 (en) Distributed system and multiplexing control method for the same
US6216150B1 (en) Program product for an application programming interface unifying multiple mechanisms
US5764875A (en) Communications program product involving groups of processors of a distributed computing environment
US6026426A (en) Application programming interface unifying multiple mechanisms
Jalalzai et al. The hermes BFT for blockchains
Widder et al. Booting clock synchronization in partially synchronous systems with hybrid process and link failures
US5787250A (en) Program product for managing membership of a group of processors in a distributed computing environment

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040415

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040712

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050302

R151 Written notification of patent or utility model registration

Ref document number: 3655263

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080311

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090311

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100311

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100311

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110311

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120311

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130311

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140311

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees