JP2005011365A - 分散システムおよび同システムの時刻管理方法 - Google Patents

分散システムおよび同システムの時刻管理方法 Download PDF

Info

Publication number
JP2005011365A
JP2005011365A JP2004204670A JP2004204670A JP2005011365A JP 2005011365 A JP2005011365 A JP 2005011365A JP 2004204670 A JP2004204670 A JP 2004204670A JP 2004204670 A JP2004204670 A JP 2004204670A JP 2005011365 A JP2005011365 A JP 2005011365A
Authority
JP
Japan
Prior art keywords
input
computer
time
candidate
computers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004204670A
Other languages
English (en)
Other versions
JP4054323B2 (ja
Inventor
Kotaro Endo
浩太郎 遠藤
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 JP2004204670A priority Critical patent/JP4054323B2/ja
Publication of JP2005011365A publication Critical patent/JP2005011365A/ja
Application granted granted Critical
Publication of JP4054323B2 publication Critical patent/JP4054323B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】スプリットブレインの防止と故障発生時におけるリアルタイム性の確保とを両立させることを可能とした分散システムを提供する。
【解決手段】この分散システムは、n台のコンピュータで多重化を構成し、f台までの故障停止を許容する。そして、各コンピュータは、内部ネットワークBを介して入力候補を送受信し合い、その一覧を作成する。そして、その中に(n−f)個の同一の入力候補が現れるまで、それぞれがこの一覧作成を繰り返し、この条件を満たしたものから、他のコンピュータの状態に関わらずに、その処理を実行する。つまり、この分散システムは、故障検出をまったく行わないことによって、スプリットブレインを原理的に発生させず、タイムアウトによる故障発生時の処理の中断も発生させることがない。
【選択図】 図1

Description

この発明は、4台以上のコンピュータがネットワークで接続された分散システムおよび同システムの時刻管理方法に係り、特に、スプリットブレインの防止と故障発生時におけるリアルタイム性の確保とを両立させることを可能とした分散システムおよび同システムの時刻管理方法に関する。
近年、コンピュータ技術やネットワーク技術の向上は目覚ましく、これに伴って、業務の電算化が広く行われている。また、その業務の内容によっては、故障などによる中断が許されないものも多く、最近では、複数のコンピュータをネットワークで結合した分散システムを構築することが一般的になりつつある。そして、この分散システムの運用手法の1つに、整列マルチキャストを用いた決定性のプログラムの実行の多重化が存在する。
まず、「整列マルチキャスト」、「決定性のプログラム」および「多重化」について説明する。
・整列マルチキャスト
複数のコンピュータが結合した分散システムのような環境では、各コンピュータが独立して動作する。したがって、これらのコンピュータを同期的に動作させるためには、特別な仕組みが必要である。整列マルチキャストは、分散システムへの入力をすべてのコンピュータに配送する仕組みであり、データの到着順序がすべてのコンピュータで同じであることを保証するものである。
・決定性のプログラム
プログラムの実行は、コンピュータに入力が与えられると、その時のコンピュータの状態によって、出力と次の状態とを決めるものであると考えることができる。そして、決定性(deterministic)のプログラムは、与えられた入力にしたがって、出力と次の状態とが一意的に決まるプログラムとして定義される。具体的には、不定値や乱数の参照等がないプログラムのことをいう。決定性のプログラムの特徴は、初期状態と入力列とが決まれば、その実行が一意的であることである。以下、本明細書でプログラムと称するとき、決定性のプログラムのことをさすものとする。
・多重化
分散システムでは、各コンピュータが独立に故障する可能性がある。仮に、1つのコンピュータが故障しただけでシステム全体が機能しない場合は、分散システムの稼働率は、1台のコンピュータの稼働率よりも低くなってしまう。かかる事態を防止するために、システム全体に係わる処理は多重化することが必要である。逆に、多重化することによって、分散システムの稼働率を1台のコンピュータの稼働率よりも高くすることが可能である。たとえば、稼働率99パーセントのコンピュータ10台で構成する分散システムが、まったく多重化されていないとすると、その分散システムの稼働率は90%程度である。もし、これが多重化によって3台の故障まで耐え得るとすると、稼働率は、99.9998%程度となる。
次に、整列マルチキャストを用いた決定性のプログラムの実行の多重化について説明する。ここでは、複数台のコンピュータによって構成される分散システムであって、多重化を構成するそれぞれのコンピュータが、同一のプログラムを有していると想定する。
まず、すべてのコンピュータは、同一の初期状態からはじまる。その後、入力されるデータは、必ず整列マルチキャストを通して、すべてのコンピュータに同一順序で配送され、それぞれのプログラムが実行される。
各プログラムへの入力列は、この整列マルチキャストにより、同一順序となっているので、決定性のプログラムの特徴により、すべてのコンピュータの状態が同一に保たれ、出力列もすべて同じとなる。つまり、プログラムの実行が多重化される。
ここで、整列マルチキャストの実現方法について、その概要を説明する。
特別なハードウェアによらずに整列マルチキャストを実現するためには、コンピュータ間で適切なアルゴリズムにしたがってメッセージをやり取りすること、つまりプロトコルが用いられる。アルゴリズムを具体的に説明する前に、注意すべき点を列挙する。
すべてのコンピュータが、いつでも故障停止する可能性があることを前提としており、多重化として成立するためには、特定のコンピュータに全体の処理が依存してはならない。したがって、次のことに注意する必要がある。
(1)分散システムへの入力の受け付けを特定のコンピュータに固定しない。
たとえば、特定のコンピュータに入力の受付を固定し、すべての入力をそのコンピュータにいったん転送することによって入力の順序を決定し、その順序で配送するといった単純なアルゴリズムは使えない。このアルゴリズムでは、入力受付を固定したコンピュータが故障停止すると、その時点で入力の順序が決定できなくなってしまう。
(2)入力の配送の完了まちあわせを特定のコンピュータに固定しない。
たとえば、特定のコンピュータが、停止していないすべてのコンピュータに配送を行うようにする、といった単純なアルゴリズムは使えない。このアルゴリズムでは、配送コンピュータが配送の途中で故障停止してしまうと、一部のコンピュータにのみ配送されたまま、配送が完了しなくなってしまう。
以上を踏まえて、前述のアルゴリズムを具体的に説明する。
従来では、故障検出が重要な役割を果たす。典型的には、故障検出はハートビート・タイムアウト・アルゴリズムによって行われる。このアルゴリズムは、各コンピュータが定期的に送出するハートビート(心拍)が一定時間以上確認できない場合に、当該コンピュータの故障を判定するというものである。
また、各コンピュータは、入力受付キューをもつ。第1ステップとして、それぞれのコンピュータは、入力受付キューの先頭にある入力をそのコンピュータにおける「入力候補」として他のすべてのコンピュータに配送する。また、入力受付キューが空のコンピュータでは、他のコンピュータの第1ステップとして最初に得られた「入力候補」を自分の「入力候補」として他のすべてのコンピュータに配送する。
第1ステップの最終的な結果として、各コンピュータは、すべてのコンピュータについて、「入力候補」を得るか、「故障検出」を得るか、または、その双方を得る。ここでは、すべてのコンピュータについての「入力候補」および「故障検出」の一覧を単に「一覧」と呼ぶことにする。
第2ステップとして、それぞれのコンピュータは、自分の「一覧」を他のすべてのコンピュータに配送する。ここで注意すべき点は、これらの「一覧」が、各コンピュータごとに異なっているかも知れないということである。なぜなら、第1ステップの途中で故障停止が発生した場合には、「入力候補」が部分的にしか配送されていないかも知れない。また、第2ステップの開始の時点で、「故障検出」にはずれがあるかも知れないからである。
第2ステップの結果として、各コンピュータは、他のコンピュータから得られた「一覧」が自分の「一覧」と異なっている場合、これらを合併して自分の「一覧」にし、第2ステップを繰り返し実行する。すると、この第2ステップの最終的な結果として、故障していない他のコンピュータがもつ「一覧」がすべて自分の「一覧」と一致する。この時点で、プロトコルは完了する。
なお、整列マルチキャストとして配送される入力は、その「一覧」にある「入力候補」の中から各自が同一の決まったルールで選べばよい(たとえば先頭にあるもの)。そして、最後に、その選んだ入力を入力受付キューから取り除く。
以上の手順により、複数のコンピュータをネットワークで結合した分散システムにおける、整列マルチキャストを用いた決定性のプログラムの実行の多重化が実現される。
ところで、前述した手順では、次のような問題点があった。
(1)スプリットブレイン
スプリットブレインは、実行のコンテキスト(状態)が2つ以上に分かれてしまうことをさす。このスプリットブレインは、故障検出が誤って行われたときに発生する。たとえば、システムを構成するコンピュータが、2つのコンピュータ群の間で互いに通信できない状態となった場合(ネットワークパーティショニング)、それぞれのコンピュータ群は、互いに故障検出し、独立して動作をはじめる。あるいは、一時的な高負荷のために、ハートビートの送受信が中断して故障の誤検出が発生し、スプリットブレインに陥る場合もある。
多重化された処理は、システムの中で重要な処理であるはずである。ここでスプリットブレインが起きると、その処理に一貫性がなくなり、システム全体に致命的な影響を及ぼすことになる。
スプリットブレインを起きにくくするためには、故障の誤検出を起きにくくする必要がある。そのためには、ハートビートのタイムアウトを十分に長くする必要がある。実用上は、10秒〜1分ぐらいのタイムアウト値が使われるのが一般的である。
(2)故障発生時の処理のリアルタイム性
ところが、タイムアウトを長く設定すると、故障の発生から故障検出までの時間が長くなることになる。すると、その間は、整列マルチキャストのプロトコル中で、故障したコンピュータの故障検出を待ち、整列マルチキャストの実行が一時的に停止する。その結果、多重化の実行が一時的に停止することになる。
これは、一般的にはシステムに致命的な影響を与えるものではないが、リアルタイム性が重要なシステムでは、故障発生時にその要件を満たさなくなる場合もある。つまり、ハートビートのタイムアウト値は、リアルタイム性の要件から上限が抑えられており、むやみに長く設定できない。
結局、このハートビートのタイムアウト値の設定は、スプリットブレインとリアルタイム性の間でトレードオフの関係に陥ってしまうという問題があった。
この発明は、このような事情を考慮してなされたものであり、スプリットブレインの防止と故障発生時におけるリアルタイム性の確保とを両立させることを可能とした分散システムおよび同システムの時刻管理方法を提供することを目的とする。
前述した目的を達成するために、この発明は、この発明は、故障検出をまったく行わないことによって、スプリットブレインを原理的に発生させず、タイムアウトによる故障発生時の処理の中断も発生させないようにしたものである。そして、そのために、この発明は、少なくとも(n−f)台のコンピュータが動作していれば、他のf台の動作に関わらず、入力をそれらに配送するようにした。
より具体的には、この発明は、ネットワークで接続されたn台のコンピュータを同期的に動作させる分散システムであって、少なくとも(n−f)台以上での多重化を保証する分散システムにおいて、前記各コンピュータは、前記n台のコンピュータそれぞれが次に処理する候補として選択した入力データを前記ネットワークを介して収集する入力候補収集手段と、前記入力候補収集手段により収集された入力データが(n−f)個以上存在する場合に、その中に同一内容の入力データが(n−f)個以上あるか否かを判定し、(n−f)個以上あったときに、その入力データを次に処理する対象として確定する第1の入力候補選定制御手段と、前記収集された入力データの中に同一内容の入力データが(n−f)個以上ないと前記第1の入力候補選定制御手段で判定されたときに、前記収集された入力データ数の過半数を占める同一内容の入力データが存在するか否かを判定し、存在したときに、その入力データを自候補とするとともにそれ以外の他の候補の入力データをすべて破棄した上で前記入力候補収集手段に入力データの収集を再実行させる第2の入力候補選定制御手段と、前記収集された入力データ数の過半数を占める同一内容の入力データが存在しないと前記第2の入力候補選定手段で判定されたときに、前記収集された入力データの中からいずれかの入力データを任意に選択して自候補とするとともに、それ以外の他の候補の入力データをすべて破棄した上で前記入力候補収集手段に入力データの収集を再実行させる第3の入力候補選定制御手段とを具備することを特徴とする分散システムを提供する。
この分散システムにおいては、故障検出をまったく行わないで、整列マルチキャストを実現し、特に、故障発生時でも配送の中断を発生させることがない。
この発明によれば、n台のコンピュータで多重化を構成し、f台までの故障停止が許容される場合に、少なくとも(n−f)台のコンピュータが動作していれば、他のf台の動作に関わらず、入力がそれらに配送されるようになる。つまり、故障検出をまったく行わないことによって、スプリットブレインを原理的に発生させず、タイムアウトによる故障発生時の処理の中断も発生させることがない。
また、最大でf台のコンピュータで、プログラムの多重化の実行が遅延する可能性があることを考慮し、この遅延された実行がスプリットブレインを起こさないように追い付く仕組みも実現する。
以下、図面を参照してこの発明の一実施形態を説明する。
(第1実施形態)
まず、この実施形態に係る分散システムの前提条件を説明する。ここでは、多重化を構成するコンピュータの数をnとし、f台までの故障停止が許容されるものと想定する。つまり、多重化されるプログラムは、少なくとも(n−f)台のコンピュータ上で実行される。また、(f+1)台以上の故障停止が発生した場合には、多重化は継続しないものとする(いわゆるフェイルストップ)。
また、ここでは、このfを3f<nとなる最大の整数とする。たとえばn=4ならば、f=1である。n=10ならばf=3である。この前提は、システムの稼働率に制限を設けるものであるが、たとえば、n=10の場合には、前述の稼働率の計算より、実用上まったく問題ないといえる。
また、多重化されるプログラムの入力および出力は、信頼性のないデータグラム(Unreliable Datagram)であるとする。これは、入出力のパケットについて、欠落、重複および順序の交換を許容するものである。信頼性のないデータグラムの例としては、IP(Internet Protocl)が挙げられる。
なお、この信頼性のないデータグラムの非決定性と多重化されるプログラムの決定性とは矛盾するものではない。プログラムの決定性は、入力が決まれば一意的に次の状態と出力が決まることを示し、プログラムの内部動作に関する決定性を意味している。一方、信頼性のないデータグラムは、あるプログラムの出力が他のプログラムの入力へ渡される途中で、欠落、重複または順序の交換があり得ることを示し、プログラム間の入出力に関する非決定性を意味している。
次に、図1および図2を参照して、この分散システムの構成を説明する。
図1に示すように、この分散システム1000は、n台のコンピュータ100により多重化されており、それぞれのコンピュータ100が、外部ネットワークAを介して複数のクライアント装置2000と接続されている。また、このコンピュータ100間は、内部ネットワークBを介して接続されている。そして、この分散システム1000における各コンピュータ100は、外部ネットワークAを介してクライアント装置2000から受け取った入力パケット(入力)を他のコンピュータ100と同じ順序で処理していく。なお、クライアント装置2000からの入力パケットは、n台のコンピュータ100の中のいずれかのコンピュータに入力される。
また、この処理により生成される出力パケットは、外部ネットワークAを介してクライアント装置2000に返却される(出力)。
図2は、コンピュータ100の構成を示す図である。入力受付キュー部1で受け付けられた入力パケットは、整列マルチキャスト部2によってアプリケーションプログラム3に配送されることになる。配送された入力パケットの入力によって、このアプリケーションプログラム3は、プログラム状態管理部4に保存されている状態にしたがって実行し、出力パケットを生成する。出力パケットは、出力フィルター部5で選別されてから出力される。
次に、整列マルチキャスト部2の各構成要素について説明する。
入力順序番号記憶部21は、整列マルチキャストによってそのコンピュータへ次に配送される入力パケットの順序番号を記憶する。入力パケットジャーナル記憶部22は、整列マルチキャストによってそのコンピュータへ配送が確定した入力パケットの列を最近のものから一定の量だけ記憶する。プロトコルデータ送受信部23は、他のコンピュータのプロトコルデータ送受信部23とプロトコルデータをやり取りする。
また、ステップ番号記憶部24、候補パケット記憶部25および入力パケット確定判定部26は、整列マルチキャストによってそのコンピュータへ次に配送される入力パケットを決定するアルゴリズムで用いられる。ステップ番号記憶部24は、プロトコルのステップ番号を記憶する。候補パケット記憶部25は、そのステップにおける各コンピュータの「入力候補」となる入力パケットを計n個記憶する。入力パケット確定判定部26は、候補パケット記憶部25の情報から入力パケットの確定の判定および次ステップの「入力候補」の決定を行う。
最大確定入力順序番号記憶部27は、他のコンピュータも含め、配送が確定したことがわかっている最大の入力順序番号を記憶する。遅延記憶部28は、(n−1)個のフラグで構成され、他コンピュータより遅延しているかどうかを記憶する。そして、スキップ判定部29は、遅延記憶部28の情報からスキップ動作の必要性を判定、実行する。
以降、該当入力順序番号とは、入力順序番号記憶部21に記憶された入力順序番号のことを指し、該当ステップ番号とは、ステップ番号記憶部24に記憶されたステップ番号のことを指し、該当最大確定入力順序番号とは、最大確定入力順序番号記憶部27に記憶された入力順序番号のことを指し、自候補とは、候補パケット記憶部25における自コンピュータに対応する「入力候補」を指し、他候補とは、候補パケット記憶部25における自候補以外の「入力候補」を指すものとする。
図3は、プロトコルデータ送受信部23によって送受信されるプロトコルデータのレイアウトを示す図である。
図3に示すように、プロトコルデータ送受信部23によって送受信されるプロトコルデータは、種類、送信者、入力順序番号、ステップ番号、最大確定入力順序番号および入力パケットの各フィールドを含んでいる。そして、先頭の種類フィールドによって、このプロトコルデータは、次の3つに使い分けられる。
(1)候補種類:入力順序番号フィールド、ステップ番号フィールド、入力パケットフィールドには、それぞれ、送信者の送信時における該当入力順序番号、該当ステップ番号、自候補が格納される。
(2)確定種類:その入力順序番号に対応する入力パケットが、送信者の送信時における入力パケットジャーナル記憶部26にあることを示し、入力パケットフィールドにはその入力パケットが格納される。この場合、ステップ番号フィールドは使用しない。
(3)遅延種類:その入力順序番号に対応する入力パケットが、送信者の送信時における入力パケットジャーナル記憶部26にないことを示す。この場合、ステップ番号フィールド、入力パケットフィールドは使用しない。
いずれの種類においても、最大確定入力順序番号フィールドには、送信者の送信時における該当最大確定入力順序番号を格納する。また、該当最大確定入力順序番号は、そのコンピュータで確定した入力パケットの順序番号と、受信したプロトコルデータ中の最大確定入力順序番号とのうち、最も大きいものに更新するものとする。
ここで、図4を参照して、整列マルチキャスト部2によって実行される整列マルチキャストの主要部の概要について説明する。
いま、多重化を構成するコンピュータの数、つまりnを4とする。また、前述したように、fは3f<nとなる最大の整数であるから、f=1となる。したがって、この例では、少なくとも(n−f)、つまり3台以上で一貫性を保ちながら処理を実行していくことになる。
第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を自候補として再選択する。
この要領で、コンピュータ(2)は、コンピュータ(1)の入力候補Aとコンピュータ(4)の入力候補Cを収集した後、Aを自候補として再選択し、コンピュータ(3)は、コンピュータ(2)の入力候補Aとコンピュータ(4)の入力候補Cを収集した後、Cを自候補として再選択し、コンピュータ(4)は、コンピュータ(1)の入力候補Aとコンピュータ(2)の入力候補Aを収集した後、Aを自候補として再選択したとする。
第4に、コンピュータ(1)は、コンピュータ(2)の入力候補Aとコンピュータ(4)の入力候補Aを収集したとする。つまり、コンピュータ(1)は、再度、自候補および他候補を(n−f)個収集したことになる。この時、コンピュータ(1)は、コンピュータ(3)の入力候補の収集を待たずに、入力候補の判定を試みる。そして、ここでは、(n−f)個のAが存在するため、第5に、コンピュータ(1)は、入力をAに決定する。
一方、コンピュータ(2)は、コンピュータ(1)の入力候補Aとコンピュータ(3)の入力候補Cを収集したとする。しかしながら、(n−f)個の同一の候補は依然として存在しないことから、コンピュータ(2)は、入力候補の再選択を実行し、その中の過半数を占めるAを自候補として選択する。同様に、コンピュータ(3)は、コンピュータ(1)の入力候補Aとコンピュータ(2)の入力候補Aを収集した後、コンピュータ(4)は、コンピュータ(2)の入力候補Aとコンピュータ(3)の入力候補Aを収集した後、それぞれAを自候補として再選択したとする。
第6に、コンピュータ(2)は、コンピュータ(1)の入力候補Aとコンピュータ(3)の入力候補Aを収集したとする。ここでのコンピュータ(1)の入力候補Aは、既に候補ではなく確定済みの入力であるため、第7に、コンピュータ(2)は、入力をAに決定する。
一方、コンピュータ(3)は、コンピュータ(2)の入力候補Aとコンピュータ(4)の入力候補Aを収集し、コンピュータ(4)は、コンピュータ(2)の入力候補Aとコンピュータ(3)の入力候補Aを収集したとする。そして、ここでは、双方とも(n−f)個のAが存在するため、コンピュータ(3),(4)は、入力をAに決定する。
つまり、この分散システムは、従来のように、各コンピュータがハートビートのやり取りによって他のコンピュータとの間で正常稼働を確認し合うようなことを一切行わないことにより、スプリットブレインを原理的に発生させず、タイムアウトによる故障発生時の処理の中断も発生させないようにし、かつ、少なくとも(n−f)台以上のコンピュータによる多重化を保証する。
次に、整列マルチキャスト部2の動作原理について具体的に説明する。
まず、初期状態として、入力順序番号記憶部21は初期入力順序番号(たとえば1)を記憶する。入力パケットジャーナル記憶部22は空の状態であり、ステップ番号記憶部24は初期ステップ番号(たとえば1)を記憶する。また、候補パケット記憶部25も空の状態であり、最大確定入力順序番号記憶部27は初期入力順序番号を記憶し、さらに、遅延記憶部28のすべてのフラグはリセットされている。
そして、この整列マルチキャスト部2が実行する整列マルチキャストによって各コンピュータへ配送される入力パケットを決定するアルゴリズムの概要は次のようになる。
(アルゴリズム1)
該当ステップ番号が初期ステップ番号である場合に、入力受付キュー部1に入力パケットがあれば、該当ステップ番号を次に進め、自候補をその入力パケットにし、他候補を空にし、候補種類のプロトコルデータを他のすべてのコンピュータに送信する。
(アルゴリズム2)
該当入力順序番号に一致する入力順序番号を持つ候補種類のプロトコルデータを受信した場合で、そのプロトコルデータが該当ステップ番号より大きいステップ番号を持つ場合、該当ステップ番号をそのステップ番号にし、自候補および送信者に対応する他候補をプロトコルデータ中の入力パケットにし、それら以外の他候補を空にし、候補種類のプロトコルデータを他のすべてのコンピュータに送信する。
(アルゴリズム3)
該当入力順序番号に一致する入力順序番号を持つ候補種類のプロトコルデータを受信した場合で、そのプロトコルデータが該当ステップ番号と等しいステップ番号を持つ場合、送信者に対応する他候補をプロトコルデータ中の入力パケットにする。
(アルゴリズム4)
候補パケット記憶部25における空でない「入力候補」が(n−f)個以上あるとき、入力パケット確定判定部26は次の動作をする。
もし、(n−f)個以上の同一内容の「入力候補」があれば、それを該当入力順序番号における入力パケットとして確定し、入力パケットジャーナル記憶部22に記憶し、入力受付キュー部1にそれがあれば削除し、アプリケーションプログラム3に配送し、該当入力順序番号を次に進め、該当ステップ番号を初期ステップ番号にし、候補パケット記憶部25を空にし、遅延記憶部28のすべてのフラグをリセットする。
それ以外で、もし、候補パケット記憶部25の中で過半数以上の同一内容の「入力候補」があれば、該当ステップ番号を次に進め、候補パケット記憶部25における自候補をその入力パケットにし、他候補を空にし、候補種類のプロトコルデータを他のすべてのコンピュータに送信する。
さらに、それ以外であれば、候補パケット記憶部25の中からランダムに入力パケットを選択し、該当ステップ番号を次に進め、候補パケット記憶部25における自候補をその入力パケットにし、他候補を空にし、候補種類のプロトコルデータを他のすべてのコンピュータに送信する。
(アルゴリズム5)
該当入力順序番号より小さい入力順序番号を持つ候補種類のプロトコルデータを受信した場合で、その入力順序番号に対応する入力データが入力パケットジャーナル記憶部22にある場合、確定種類のプロトコルデータを送信者のコンピュータに返信する。
(アルゴリズム6)
該当入力順序番号に一致する入力順序番号を持つ確定種類のプロトコルデータを受信した場合、それを該当入力順序番号における入力パケットとして確定し、入力パケットジャーナル記憶部26に記憶し、入力受付キュー部1にそれがあれば削除し、アプリケーションプログラム3に配送し、該当入力順序番号を次に進め、該当ステップ番号を初期ステップ番号にし、候補パケット記憶部を空にし、遅延記憶部28のすべてのフラグをリセットする。
(アルゴリズム7)
該当入力順序番号より小さい入力順序番号を持つ候補種類のプロトコルデータを受信した場合で、その入力順序番号に対応する入力データが入力パケットジャーナル記憶部22にない場合、遅延種類のプロトコルデータを送信者のコンピュータに返信する。
(アルゴリズム8)
該当入力順序番号に一致する入力順序番号を持つ遅延種類のプロトコルデータを受信した場合に、遅延記憶部28における送信者に対応するフラグをセットする。
(アルゴリズム9)
遅延記憶部28においてフラグがたっている数と、それ以外で候補パケット記憶部25における空でない入力候補数の和が(n−f)以上であるときで、候補パケット記憶部25における空でない入力候補数が(n−f)個未満であるときに、スキップ判定部29は、以下のスキップ動作を行う。
スキップ動作は、該当入力順序番号を該当最大確定入力順序番号にし、該当ステップ番号を初期ステップ番号にし、候補パケット記憶部25を空にし、遅延記憶部28のすべてのフラグをリセットし、プログラム状態管理部4にスキップを通知する。
なお、以上の(アルゴリズム1)〜(アルゴリズム9)の順序は、必ずしもこの順序で実行されるというものではない。つまり、これらは、その条件が成立すれば独立して実行されるものである。
また、プログラム状態管理部4は、スキップが通知されると、該当入力順序番号の直前の状態を他のコンピュータのプログラム状態管理部4からコピーする。このために、プログラム状態管理部4は、各入力順序番号の直前の状態を最近のものから一定の量だけ保持している。
ここで、上述したアルゴリズムの動作の概要を説明しながら、このアルゴリズムの有効性を証明する。
(アルゴリズム1)〜(アルゴリズム4)は、整列マルチキャストの1回の配送を行う基本的な部分である。従来では、故障していない全コンピュータで一致するまで繰り返していたのに対して、この分散システムでは、(n−f)台で一致するまで繰り返す。
また、(アルゴリズム5)〜(アルゴリズム6)は、短い多重化実行の遅延を解消するため、すでに確定している入力パケットを回送するものである。
そして、(アルゴリズム7)〜(アルゴリズム9)は、長い多重化実行の遅延を一足飛びに解消するため、スキップ動作を行うものである。
まず、(アルゴリズム1)〜(アルゴリズム6)が整列マルチキャストの要件を満たすことを説明する。これには、各入力順序番号で同一の入力パケットが確定されることを示せばよい。
入力パケットを確定するのは、(アルゴリズム4)か(アルゴリズム6)であるが、(アルゴリズム6)の場合は、確定した入力パケットを回送したものなので、最初に(アルゴリズム4)によって入力パケットを確定したコンピュータが必ず存在する。確定した時の入力パケットをP、ステップ番号をSとする。
まず、ステップS+1では、すべてのコンピュータで「入力候補」はP以外にはあり得ないことを示す。
自分の「入力候補」を決定するのは、(アルゴリズム1)、(アルゴリズム2)または(アルゴリズム4)であるが、ステップ番号Sは初期ステップ番号ではあり得ないので、ステップS+1での「入力候補」は、(アルゴリズム2)か(アルゴリズム4)で決定される。(アルゴリズム2)は「入力候補」を回送したものなので、結局、(アルゴリズム4)で決定するステップS+1での「入力候補」がP以外にはあり得ないことを示せばよい。
ステップ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であるから、これが証明される。
結局、ステップS+1では、すべてのコンピュータで「入力候補」はP以外にはあり得ないのだから、この入力順序番号で確定するとすれば、必ずPで確定することになる。これで、整列マルチキャストの要件を満たすことが証明された。
次に、(アルゴリズム5)〜(アルゴリズム9)で行う遅延の解消について説明する。
この遅延は、(n−f)台よりも多い台数で多重化を実行している場合に発生する。遅延しているコンピュータは、その時点では多重化として不要であるが、進んでいるコンピュータが故障停止した場合などに、多重化を継続するために必要になる。つまり、その場合には、遅延しているコンピュータは、最終入力順序番号まで追いつかなければならない。
(アルゴリズム5)〜(アルゴリズム6)で行う短い多重化実行の遅延の解消は、単純に、進んでいるコンピュータで確定した入力パケットを回送する。入力パケットの到着順序は同じになるので、整列マルチキャストの要件は満たされている。
一方、(アルゴリズム7)〜(アルゴリズム9)で行う長い多重化実行の遅延の解消は、いわゆる「おいてけぼり」の概念を用いる。「おいてけぼり」は、進んでいるコンピュータが確定した入力パケットを忘れてしまうほど長く遅延したときに発生する。そして、この「おいてけぼり」が判定されると、スキップ動作が行われる。スキップ動作では、入力順序番号をスキップするので、入力パケットの系列が中抜けになり、整列マルチキャストの要件を満たさなくなる。
そこで、この中抜けになった入力パケットの系列を補うため、プログラム状態管理部4により一致化コピーを行う。これによって、多重化は矛盾なく続行することができる。
次に、信頼性のないデータグラムとの関係に触れる。
出力に関しては、信頼性のないデータグラムなので、出力フィルタ部5の動作は任意でよい。たとえば、無選別で出力すると、出力パケットが多重化を実行するコンピュータの数だけ出力されることになるが、信頼性のないデータグラムでは、パケットの重複を許すので、この範囲内である。
また、この分散システムでは、多重化実行の遅延が発生するため、特に出力パケットに関して順序の交換が発生する可能性がある。これは、進んでいるコンピュータが出力した後、遅延しているコンピュータが意味的にはそれ以前の出力を実行するためである。
しかしながら、性能面などにおいて、出力フィルタ部5の設定は重要であり、たとえば、(アルゴリズム4)で入力パケットが確定したときは、出力フィルタを開、(アルゴリズム6)で入力パケットが確定したときは、出力フィルタを閉と設定すれば、順序の交換を低減することができる。また、(アルゴリズム4)で入力パケットが確定し、その入力パケットが入力受付キュー1から取り除かれた場合にのみ、出力フィルタを開、それ以外では閉とすれば、重複を低減することができる。
すなわち、この分散システムは、すくなくともn−f台のコンピュータが動作していれば、他のf台の動作に関係なく入力をそれらに配送することにより、整列マルチキャストを故障検出を使わないで実現し、特に、故障発生時でも、配送の中断が発生しない。
また、最大でf台のコンピュータで、プログラムの多重化の実行が遅延する可能性があることを考慮し、この遅延された実行がスプリットブレインを起こさないように追い付く仕組みを実現する。
次に、図5乃至図10を参照して、整列マルチキャスト部2の動作手順について説明する。
図5および図6は、整列マルチキャストの1回の配送を行う基本的な部分の動作手順を示すフローチャートである。
整列マルチキャスト部2は、まず、候補一覧作成処理を実行する(図5のステップA1)。この候補一覧作成は、該当ステップ番号が初期値のときは(図6のステップB1のYES)、受付キューに入力パケットが存在するかどうかを調べて(図6のステップB2)、存在すれば(図6のステップB2のYES)、該当ステップ番号を次に進め(図6のステップB3)、受付キューの入力パケットを自候補とし、かつ、この自候補を他のすべてのコンピュータに送信する(図6のステップB4)。
一方、該当ステップ番号が初期値でないか(図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)。
ここで、整列マルチキャスト部2は、記憶した候補数が(n−f)個以上になったかどうかを調べ(図6のステップB11)、なっていなければ(図6のステップB11のNO)、ステップB1からの処理を繰り返し、なっていれば(図6のステップB11のYES)、この処理を終了する。
候補一覧作成処理が終了すると、整列マルチキャスト部2は、(n−f)個以上の同一の候補が存在するかどうかを調べ(図5のステップA2)、存在すれば(図5のステップA2のYES)、その候補を入力パケットとして確定する(図5のステップA3)。つまり、この入力パケットを受付キューから削除するとともに、アプリケーションプログラム3に投入する。そして、整列マルチキャスト部2は、次工程へ移行すべく、入力順序番号を次に進め、該当ステップ番号を初期化し、記憶したすべての候補を破棄し、遅延フラグをリセットする(図5のステップA4)。
一方、(n−f)個以上の同一の候補が存在しなかった場合(図5のステップA2)、整列マルチキャスト部2は、今度は、過半数以上の同一の候補が存在するかどうかを調べ(図5のステップA5のYES)、存在すれば(図5のステップA5のYES)、その候補を自候補とし、かつ、この自候補を他のすべてのコンピュータに送信した上で(図5のステップA6)、ステップA1からの処理を繰り返す。この時、整列マルチキャスト部2は、記憶していた他候補をすべて破棄する。また、過半数以上の同一の候補が存在しなければ(図5のステップA5のNO)、整列マルチキャスト部2は、ランダムに自候補を選択し、かつ、この自候補を他のすべてのコンピュータに送信した上で(図5のステップA7)、ステップA1からの処理を繰り返す。この時も、整列マルチキャスト部2は、記憶していた他候補をすべて破棄する。
以上の手順で、各コンピュータは、故障検知を行わず、(n−f)台以上の一致を確認しながら処理を進めていく。
また、図7乃至図10は、多重化実行の遅延を解消するための動作手順を示すフローチャートである。
整列マルチキャスト部2は、該当入力順序番号より小さい入力順序番号を持つ候補種類のプロトコルデータを受信した場合、その入力順序番号に対応する入力パケットがジャーナルに存在するかどうかを調べる(図7のステップC1)。そして、整列マルチキャスト部2は、ジャーナルに存在すれば(図7のステップC1のYES)、その入力パケットをセットした確定種類のプロトコルデータを送信者に返送し(図7のステップC2)、一方、存在しなければ(図7のステップC1のNO)、遅延種類のプロトコルデータを送信者に返送する(図7のステップC3)。
また、整列マルチキャスト部2は、該当入力順序番号に一致する入力番号を持つ確定種類のプロトコルデータを受信した場合、その受信データ内の入力パケットを入力パケットとして確定する(図8のステップD1)。つまり、この入力パケットを受付キューから削除するとともに、アプリケーションプログラム3に投入する。そして、整列マルチキャスト部2は、次工程へ移行すべく、入力順序番号を次に進め、該当ステップ番号を初期化し、記憶したすべての候補を破棄し、遅延フラグをリセットする(図8のステップD2)。
また、整列マルチキャスト部2は、該当入力順序番号に一致する入力順序番号を持つ遅延種類のプロトコルデータを受信した場合、送信者に対応する遅延フラグをセットする(図9のステップE1)。
また、整列マルチキャスト部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にスキップを通知する。
以上の手順で、各コンピュータは、スプリットブレインを起こさないよう、遅延された実行が追い付く仕組みを実現する。
(第2実施形態)
次に、この発明の第2実施形態について説明する。
第1実施形態で説明したような整列マルチキャストを行う分散システムでは、すべてのコンピュータ100が同じ時刻を用いてアプリケーションプログラム3を実行することが必要である。つまり、アプリケーションプログラム3の実行時に用いる時刻をすべてのコンピュータ100間で調整する機能が必要である。そこで、第2実施形態では、整列マルチキャストを行う分散システムにおいて、このアプリケーションプログラム3の実行時に用いる時刻をすべてのコンピュータ100間で調整する仕組みを説明する。
図11は、アプリケーションプログラム3の実行時に用いる時刻をすべてのコンピュータ100間で調整する仕組みを説明するための概念図である。
図11に示すように、分散システム1000を構成するn台のコンピュータ100は、それぞれ実時計101、つまりシステム時計を有しており、この実時計101により、システム時刻をカウントしている。そして、従来では、この実時計101をn台のコンピュータ100間で如何に調整するかについて、種々の工夫がなされてきた。すなわち、従来では、アプリケーションプログラム3の実行時に用いる時刻は、依然として、各々の実時計101でカウントされるシステム時刻であった。これに対して、この実施形態の分散システム1000では、これらの実時計101とは別に、システム全体で仮想時計102を管理し、この仮想時計102がカウントする仮想時刻102を用いてアプリケーションプログラム3を実行する。
図12は、この仮想時刻102がカウントする仮想時刻を管理する原理を説明するためのコンピュータ100の構成図である。
図12に示すように、このコンピュータ100は、いわゆるシステム時刻を計数するシステム時計6(図11の実時計101に対応)の他に、アプリケーションプログラム3の実行時に用いる仮想時刻を計数する仮想時刻カウンタ7(図11の仮想時計102に対応)と、この仮想時刻カウンタ7を管理する仮想時刻マネージャ8とを備える。
仮想時刻マネージャ8は、たとえば1秒ごとに、この仮想時刻カウンタ7をインクリメントするタイミングを与えるための入力パケットを高い優先度を付して入力受付キュー部1に投入する。この入力パケットは、その優先度から直後の入力順序で整列マルチキャスト部2に取り込まれ、自コンピュータの入力候補である自候補となる。整列マルチキャスト部2の動作の結果、入力パケット確定判定部26が、この入力パケットを確定すると、このパケットを仮想時刻マネージャ8に投入する。
このとき、他のコンピュータ100においても、入力パケット確定判定部26は、この入力パケットを確定し、仮想時刻マネージャ8に投入する。
そして、この入力パケットの投入を受けた仮想時刻マネージャ8は、仮想時刻カウンタ7を所定の値(通常は1秒間)だけインクリメントする。
また、仮想時刻マネージャ8は、この入力パケットを入力受付キュー1から削除し、この時点から1秒後に入力受付キュー1に再投入するよう準備する。
このとき、他のコンピュータ100においても、仮想時刻マネージャ8は、入力受付キュー1にこのパケットがもし存在すれば、それを削除し、いずれにしても、この時点から1秒後に入力受付キュー1に再投入するよう準備する。
つまり、仮想時刻マネージャ8は、他の仮想時刻マネージャ8が投入した入力パケットが確定した場合でも、区別することなく、あたかも自分自身で入力パケットを投入し、それが確定したかのように動作し、その時点から1秒後まで入力パケットを投入しない。
これにより、すべてのコンピュータ100が同じタイミングで仮想時刻を計数していくことが実現される。
また、この仮想時刻マネージャ8は、コンピュータ100の起動時および例えば1時間ごとに、システム時刻と仮想時刻とを比較するタイミングを与えるための入力パケットを高い優先度を付して入力受付キュー部1に投入する。この時、仮想時刻マネージャ8は、この入力パケット内にシステム時計6が計数するシステム時刻を格納する。この入力パケットは、プロトコルデータ送受信部23によって他のコンピュータに送信されるため、結果的に、自コンピュータのシステム時刻が他のコンピュータに通知されることになる。同様に、他のコンピュータの仮想時刻マネージャ8がこの入力パケットを発生させた場合には、この入力パケットによって、他のコンピュータのシステム時刻の通知を受けることになる。
また、この入力パケットは、その優先度から直後の入力順序で整列マルチキャスト部2に取り込まれ、自コンピュータの入力候補である自候補となる。整列マルチキャスト部2の動作の結果、入力パケット確定判定部26が、この入力パケットを確定すると、このパケットを仮想時刻マネージャ8に投入する。このパケットの投入を受けると、仮想時刻マネージャ8は、この入力パケット内に格納された自コンピュータまたは他のコンピュータのシステム時刻と仮想時刻カウンタ7により計数された仮想時刻とを比較する。仮想時刻カウンタ7が未設定状態の場合、仮想時刻カウンタ7をシステム時刻に設定する。また、仮想時刻カウンタ7が未設定状態でなく、システム時刻の方が進んでいる場合には、仮想時刻マネージャ8は、仮想時刻を通常時よりも速く進めるための処理を行う。一つの例としては、先に説明した仮想時刻カウンタ7をインクリメントするタイミングを与えるための入力パケットが投入された際の仮想時刻カウンタ7のインクリメント幅を通常時よりも大きく設定するなどが挙げられる。
つまり、n台のコンピュータの中で最も進んだシステム時刻に合わせるように各コンピュータの仮想時刻を調整するわけであり、たとえn台のコンピュータのシステム時刻がばらばらであっても、各コンピュータがアプリケーションプログラム3の実行時に用いる仮想時刻を一致させることが実現される。
図13は、仮想時刻カウンタ7をインクリメントする動作手順を示すフローチャートである。
仮想時刻マネージャ8は、前回の仮想時刻カウンタ7のインクリメントから所定の時間が経過し(ステップG1のYES)、かつ、仮想時刻カウンタ7をインクリメントするタイミングを与えるための入力パケットを入力受付キュー部1に未投入のとき(ステップG2のYES)、当該入力パケットを入力受付キュー部1に投入する(ステップG3)。また、整列マルチキャスト実行により、この入力パケットが確定されると(ステップG4,ステップG5のYES)、仮想時刻マネージャ8は、仮想時刻カウンタ7を所定の値だけインクリメントし(ステップG6)、この入力パケットが入力受付キュー部1に存在していれば(ステップG7のYES)、その入力パケットを入力受付キュー部1から削除する(ステップG8)。
また、図14は、仮想時刻カウンタ7を調整する動作手順を示すフローチャートである。
仮想時刻マネージャ8は、前回の仮想時刻カウンタ7の自発的な調整から所定の時間が経過し(ステップH1のYES)、かつ、システム時刻と仮想時刻とを比較するタイミングを与えるための入力パケットを入力受付キュー部1に未投入のとき(ステップH2のYES)、当該入力パケットを入力受付キュー部1に投入する(ステップH3)。また、整列マルチキャスト実行により、この入力パケットが確定されると(ステップH4,ステップH5のYES)、仮想時刻マネージャ8は、入力パケット内のシステム時刻と仮想時刻カウンタ7の仮想時刻とを比較する(ステップH6)。そして、仮想時刻マネージャ8は、システム時刻の方が進んでいれば(ステップH7のYES)、仮想時刻カウンタ7のインクリメント幅を通常時よりも大きく設定し(ステップH8)、一方、仮想時刻の方が進んでいれば(ステップH7のNO)、仮想時刻カウンタ7のインクリメント幅を所定の値に再設定する(ステップH9)。
このように、この実施形態の分散システムでは、各コンピュータ100の実時計101とは別に、システム全体で仮想時計102を管理することにより、整列マルチキャストを行う分散システムにおいて、このアプリケーションプログラム3の実行時に用いる時刻をすべてのコンピュータ100間で調整する仕組みを実現する。
なお、ここでは、システム時刻と仮想時刻とを比較し、システム時刻の方が進んでいたときに、仮想時刻のインクリメント幅を通常時よりも大きくする例を説明した。このような場合、通常時の仮想時刻のインクリメント幅は、実時刻よりも少しずつ遅れていくように設定することが好ましい。これにより、仮想時計102がすべての実時計101よりも進む方向に無限にずれていくことを防止するとともに、実時間101と仮想時計102との誤差を事前に予想される範囲内に収めることが可能となる。逆に、システム時刻の方が遅れていたときに、仮想時刻のインクリメント幅を通常時よりも小さくする場合には、通常時の仮想時刻のインクリメント幅を実時刻よりも少しずつ進んでいくように設定すればよい。
ところで、この仮想時計102の管理は、前述した整列マルチキャストの機構を使ってすべてのコンピュータ100が各々行う必要は必ずしもない。例えば図15に示すように、いずれか1つのコンピュータ100上で管理し(A)、このコンピュータ100に障害が発生した場合に、その他のいずれか1つのコンピュータ100が引き継ぐようにしても構わない(B)。つまり、各コンピュータ100が各々の実時計101を用いてアプリケーションプログラム3を実行するのではなく、システム全体で仮想時計102を設定し、その1つの仮想時計102をすべてのコンピュータ100が用いてアプリケーションプログラム3を実行するという本発明の手法は、この仮想時計102をどのような方法で管理する場合であっても有用である。
つまり、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
この発明の第1実施形態に係る分散システムの構成を示す図 同第1実施形態の分散システムを構成するコンピュータの機能ブロック図 同第1実施形態の分散システムを構成するコンピュータ間で送受信されるプロトコルデータのレイアウトを示す図 同第1実施形態の分散システムが実行する整列マルチキャストの主要部の概要について説明するための図 同第1実施形態の分散システムが実行する整列マルチキャストの1回の配送を行う基本的な部分の動作手順を示す第1のフローチャート 同第1実施形態の分散システムが実行する整列マルチキャストの1回の配送を行う基本的な部分の動作手順を示す第2のフローチャート 同第1実施形態の分散システムが実行する、多重化実行の遅延を解消するための動作手順を示す第1のフローチャート 同第1実施形態の分散システムが実行する、多重化実行の遅延を解消するための動作手順を示す第2のフローチャート 同第1実施形態の分散システムが実行する、多重化実行の遅延を解消するための動作手順を示す第3のフローチャート 同第1実施形態の分散システムが実行する、多重化実行の遅延を解消するための動作手順を示す第4のフローチャート 同第2実施形態においてアプリケーションプログラムの実行時に用いる時刻をすべてのコンピュータ間で調整する仕組みを説明するための概念図 同第2実施形態において仮想時刻がカウントする仮想時刻を管理する原理を説明するためのコンピュータの構成図 同第2実施形態において仮想時刻カウンタをインクリメントする動作手順を示すフローチャート 同第2実施形態において仮想時刻カウンタを調整する動作手順を示すフローチャート 同第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…内部ネットワーク。

Claims (6)

  1. ネットワークで接続されたn台のコンピュータを同期的に動作させる分散システムにおいて、
    データ処理に用いる仮想時刻を計数するカウンタと、
    前記各コンピュータのシステム時刻と前記カウンタにより計数された仮想時刻とを比較し、システム時刻の方が進んでいたときに、前記カウンタの値のインクリメント幅を大きく設定する仮想時刻調整手段と、
    を具備することを特徴とする分散システム。
  2. 前記カウンタおよび仮想時刻調整手段は、前記n台のコンピュータそれぞれに設けられることを特徴とする請求項1記載の分散システム。
  3. 前記カウンタおよび仮想時刻調整手段は、前記n台のコンピュータの中のいずれか1台に設けられることを特徴とする請求項1記載の分散システム。
  4. 前記カウンタおよび仮想時刻調整手段が設けられたコンピュータに障害が発生した場合に、前記カウンタおよび仮想時刻調整手段を他のいずれかのコンピュータに引き継がせる引継手段を具備することを特徴とする請求項3記載の分散システム。
  5. 前記カウンタの値の通常時のインクリメント幅は、当該カウンタにより計数される仮想時刻が実時刻よりも少しずつ遅れていくように設定されることを特徴とする請求項1、2、3または4記載の分散システム。
  6. ネットワークで接続されたn台のコンピュータを同期的に動作させる分散システムの時刻管理方法であって、
    データ処理に用いる仮想時刻を計数するカウンタステップと、
    前記各コンピュータのシステム時刻と前記カウンタステップにより計数された仮想時刻とを比較し、システム時刻の方が進んでいたときに、前記カウンタステップによるインクリメント幅を大きく設定する仮想時刻調整ステップと、
    を具備することを特徴とする分散システムの時刻管理方法。
JP2004204670A 2001-06-15 2004-07-12 分散システムおよび同システムの時刻管理方法 Expired - Lifetime JP4054323B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004204670A JP4054323B2 (ja) 2001-06-15 2004-07-12 分散システムおよび同システムの時刻管理方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2001181791 2001-06-15
JP2004204670A JP4054323B2 (ja) 2001-06-15 2004-07-12 分散システムおよび同システムの時刻管理方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2002171715A Division JP3655263B2 (ja) 2001-06-15 2002-06-12 分散システムおよび同システムの多重化制御方法

Publications (2)

Publication Number Publication Date
JP2005011365A true JP2005011365A (ja) 2005-01-13
JP4054323B2 JP4054323B2 (ja) 2008-02-27

Family

ID=34106149

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004204670A Expired - Lifetime JP4054323B2 (ja) 2001-06-15 2004-07-12 分散システムおよび同システムの時刻管理方法

Country Status (1)

Country Link
JP (1) JP4054323B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009506889A (ja) * 2005-09-07 2009-02-19 エスピーエックス、コーポレーション 使い捨ての衛生的な混合装置及び方法
JP2013506892A (ja) * 2009-09-15 2013-02-28 シカゴ マーカンタイル エクスチェンジ,インク. フォールトトレラント動作をする金融取引所用突き合わせサーバ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009506889A (ja) * 2005-09-07 2009-02-19 エスピーエックス、コーポレーション 使い捨ての衛生的な混合装置及び方法
JP2013506892A (ja) * 2009-09-15 2013-02-28 シカゴ マーカンタイル エクスチェンジ,インク. フォールトトレラント動作をする金融取引所用突き合わせサーバ

Also Published As

Publication number Publication date
JP4054323B2 (ja) 2008-02-27

Similar Documents

Publication Publication Date Title
US10693957B2 (en) System and method for adding node in blockchain network
KR102170345B1 (ko) 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법
JP4818349B2 (ja) 分散システムおよび同システムの多重化制御方法
Amir et al. Membership algorithms for multicast communication groups
Jalalzai et al. Proteus: A scalable BFT consensus protocol for blockchains
KR102170347B1 (ko) 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법
Birman et al. Bimodal multicast
US7162524B2 (en) Gapless delivery and durable subscriptions in a content-based publish/subscribe system
US8743881B2 (en) Link data transmission method, node and system
CN110708175B (zh) 分布式网络中消息同步的方法
US20200059376A1 (en) Eventually consistent data replication in queue-based messaging systems
JP3655263B2 (ja) 分散システムおよび同システムの多重化制御方法
US8842524B2 (en) Redundant ring automatic recovery
CN110324166B (zh) 一种在多个节点中同步目标信息的方法、装置及系统
EP2611109B1 (en) System for high reliability and high performance application message delivery
Jalalzai et al. The hermes BFT for blockchains
Widder et al. Booting clock synchronization in partially synchronous systems with hybrid process and link failures
JP4054323B2 (ja) 分散システムおよび同システムの時刻管理方法
US20020194276A1 (en) Distributed system and multiplexing control method for the system
Berket et al. Overview of the InterGroup protocols
JP2010198442A (ja) フェイルオーバ機能を持つ分散システムおよび同システムにおけるフェイルオーバ方法
Wang et al. Non-blocking message total ordering protocol
JP4806044B2 (ja) フェイルオーバ機能を持つ分散システムおよび同システムにおけるフェイルオーバ方法
JP2011118747A (ja) 分散システムおよび論理時間調整方法
Arnon et al. An Analysis of a Virtually Synchronous Protocol

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070418

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071207

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

Free format text: PAYMENT UNTIL: 20101214

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4054323

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101214

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111214

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121214

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20131214

Year of fee payment: 6

EXPY Cancellation because of completion of term