以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係る分散システムの構成を示すブロック図である。図1において、分散システム10は、t−耐故障ビザンチン合意アルゴリズム(t>0)による多重化を保証するのに必要な台数以上のコンピュータ、例えば4(n=4)台のコンピュータ100-1(#1)〜100-4(#4)から構成されているものとする。また本実施形態では、tは1であるものとする。
コンピュータ100-1〜100-4は、ネットワークAを介してクライアント装置200と接続されている。コンピュータ100-1〜100-4は、クライアント装置200以外のクライアント装置(図示せず)ともネットワークAを介して接続されているものとする。本実施形態においてネットワークAはパブリックネットワーク(外部ネットワーク)である。コンピュータ100-1〜100-4間は、ネットワークBを介して接続されている。本実施形態においてネットワークBはプライベートネットワーク(内部ネットワーク)である。
コンピュータ100-1〜100-4は、前記特許文献1に記載された分散システムにおけるコンピュータと同様に、ネットワークAを介して合意に必要な情報を送受信し、合意の判定を行っている。t−耐故障ビザンチン合意アルゴリズムでは、t台までの故障停止が許容されるものとし、(n−t)台以上のコンピュータで合意が得られた時点で、合意情報を確定する。そのため、故障や停滞などにより合意に間に合わなかったコンピュータが存在しても、この条件を満たした時点で先に進むため、タイムアウトによる合意の遅延が発生せず、リアルタイム性が確保される。ただし、(t+1)台以上のコンピュータが一時的に停滞したり、ネットワークの負荷により合意情報の授受に時間がかかったりした場合は、合意情報を確定するのに時間がかかるため、合意処理が遅延することになる。
コンピュータ100-1〜100-4は、それぞれ同一のアプリケーションプログラム3(図2参照)を有している。コンピュータ100-1〜100-4は、同一の初期状態から始まる。その後、クライアント装置200から分散システムに入力されるデータは、必ず整列マルチキャストを通して、コンピュータ100-1〜100-4に同一順序で配送される。これにより、コンピュータ100-1〜100-4においてそれぞれのアプリケーションプログラム3が実行される。
コンピュータ100-1〜100-4がそれぞれ有するアプリケーションプログラム3への入力データ列は、整列マルチキャストにより同一順序となっている。このため、前記特許文献1に記載されているような整列マルチキャストを用いた決定性のプログラムの特徴により、コンピュータ100-1〜100-4の状態が同一に保たれ、出力データ列もすべて同じとなる。つまり、プログラムの実行が多重化される。
図2は、図1に示されるコンピュータ100-i(i=1,2,…4)の構成を示すブロック図である。図2において、クライアント装置200からネットワークAを介してコンピュータ100-iに送信されて、当該コンピュータ100-iの入力受付キュー部(以下、受付キューと称する)1で受け付けられたパケットは候補パケットとして、当該受付キュー1に受付順に積まれる。受付キュー1に積まれた候補パケットは、整列マルチキャスト部2(内の入力パケット確定判定部26に含まれている合意部262)によってアプリケーションプログラム3または後述する論理時間管理部6に入力パケットとして配送される。なお、受付キュー1に積まれる候補パケットには、クライアント装置200から送られる処理種別が「アプリケーション」の候補パケットの他に、論理時間管理部6から送られる処理種別が「論理時間」の候補パケットがある。
アプリケーションプログラム3は、配送された入力パケットを受けて、プログラム状態管理部4に保存されている状態に従って当該入力パケットを処理し、出力パケットを生成する。生成された出力パケットは、出力フィルタ部5で選別されてから、ネットワークAを介してクライアント装置200に返却される(出力)。
次に、コンピュータ100-iの整列マルチキャスト部2の構成について説明する。整列マルチキャスト部2は、前記特許文献1に記載された整列マルチキャスト部と同様に、入力順序番号記憶部21、入力パケットジャーナル記憶部22、整列マルチキャストプロトコルデータ送受信部(以下、プロトコルデータ送受信部と称する)23、ステップ番号記憶部24、候補パケット記憶部25、入力パケット確定判定部26、最大確定入力順序番号記憶部27、遅延記憶部28およびスキップ判定部29の周知の構成を含んでいる。
入力順序番号記憶部21は、整列マルチキャストによってコンピュータ100-iへ次に配送される入力パケットの順序番号(つまり整列マルチキャストにシリアルに付される最新の順序番号)を格納する。入力パケットジャーナル記憶部22は、整列マルチキャストによってコンピュータ100-iへの配送が確定した入力パケットの列を最近のものから一定の量だけ格納する。このため、入力パケットジャーナル記憶部22に一定の量の入力パケットの列が格納されている状態で、最新の確定済み入力パケットを当該記憶部22に格納する場合には、その時点で最も古い確定済み入力パケットが当該記憶部22から削除される。
プロトコルデータ送受信部23は、他のコンピュータのプロトコルデータ送受信部23とネットワークBを介して整列マルチキャストプロトコルデータを授受する。プロトコルデータ送受信部23は、候補パケットブロードキャスト部230を含む。候補パケットブロードキャスト部230は、候補パケット(後述する候補種類の整列マルチキャストプロトコルデータ)を、他のすべてのコンピュータにブロードキャスト送信する。
本実施形態では、クライアント装置200とコンピュータ100-iとの間のデータの授受と、コンピュータ100-i相互間のデータの授受とで、使用するネットワークが切り替えられる。これによりネットワーク負荷が軽減される。しかし、クライアント装置200とコンピュータ100-iとの間のデータの授受と、コンピュータ100-i相互間のデータの授受とが、例えばネットワークAを介して行われる構成であっても構わない。またネットワークAが必ずしもパブリックネットワークである必要はない。
ステップ番号記憶部24、候補パケット記憶部25および入力パケット確定判定部26は、整列マルチキャストによってコンピュータ100-iのアプリケーションプログラム3へ次に配送される入力パケットを決定するアルゴリズムで用いられる。
ステップ番号記憶部24は、プロトコルのステップを示すステップ番号を格納する。候補パケット記憶部25は、そのステップにおける各コンピュータの「入力候補」となる入力パケットを計n個格納する。
入力パケット確定判定部26は、候補パケット記憶部25の情報から入力パケットの確定の判定および次ステップの「入力候補」の決定を行う。入力パケット確定判定部26はさらに、入力パケットをアプリケーションプログラム3および論理時間管理部6のいずれに渡すかを決定する。この決定のために、受付キュー1に積まれる候補パケットには、処理種別を示す処理種別情報が付加される。入力パケット確定判定部26は、入力候補収集部261および合意部262を含む。
図3は受付キュー1に積まれるデータ(入力パケットデータ)のデータ構造例を示す。図3に示されるように、入力パケットデータは、処理種別および入力パケットの各フィールドを含む。入力パケットフィールドには入力パケットが格納(設定)され、処理種別フィールドには処理種別情報が格納される。
本実施形態において処理種別情報は、入力パケットフィールドに格納されている入力パケットをアプリケーションプログラム3または論理時間管理部6のいずれに渡すかを入力パケット確定判定部26の合意部262が決定するための処理種別を示す。そのため、処理種別情報の示す処理種別は、(1)アプリケーションと(2)論理時間とに分けられる。処理種別が「アプリケーション」の場合、入力パケットが外部のクライアント装置20から入力されたものであることをも示し、処理種別が「論理時間」の場合、入力パケットが分散システム10を構成するいずれかのコンピュータの論理時間管理部6から当該いずれかのコンピュータの受付キュー1に入力されたものであることをも示す。
再び図2を参照すると、最大確定入力順序番号記憶部27は、他のコンピュータも含め、配送が確定したことがわかっている最大の入力順序番号を格納する。遅延記憶部28は、他の(n−1)台(n=4)のコンピュータよりも遅延しているかどうかを示す(n−1)個の遅延フラグ(n=4の本実施形態では、3個のフラグ)を格納する。スキップ判定部29は、遅延記憶部28の情報からスキップ動作の必要性を判定およびスキップ動作を実行する。
以降の説明では、入力順序番号記憶部21に格納された入力順序番号を該当入力順序番号と呼び、ステップ番号記憶部24に格納されたステップ番号を該当ステップ番号と呼ぶ。最大確定入力順序番号記憶部27に格納された入力順序番号を、該当最大確定入力順序番号と呼ぶ。コンピュータ100-iの整列マルチキャスト部2に含まれている候補パケット記憶部25に格納されているn個の「入力候補」のうち、当該コンピュータ100-i自身(自コンピュータ)に対応する「入力候補」を自候補と呼び、当該自候補以外の「入力候補」を他候補と呼ぶ。
次に、プロトコルデータ送受信部23によって送受信される整列マルチキャストプロトコルデータについて説明する。
図4は、整列マルチキャストプロトコルデータのレイアウトを示す図である。図4に示されるように、プロトコルデータ送受信部23によって送受信される整列マルチキャストプロトコルデータは、種類、送信者、入力順序番号、ステップ番号(整列マルチキャストステップ番号)、最大確定入力順序番号、処理種別および入力パケットの各フィールドを含む。図4に示される整列マルチキャストプロトコルデータが前記特許文献1に記載されているプロトコルデータと相違するのは、前述の処理種別フィールドが追加されている点にある。
整列マルチキャストプロトコルデータは先頭の種類フィールドによって、次の3つに使い分けられる。
(1)候補種類
入力順序番号フィールド、ステップ番号フィールド、入力パケットフィールドには、それぞれ、送信者(送信側コンピュータ)の送信時における該当入力順序番号、該当ステップ番号、自候補が格納される。
(2)確定種類
その入力順序番号(入力順序番号フィールドに格納されている入力順序番号)に対応する入力パケットが、送信者の送信時における入力パケットジャーナル記憶部22にあることを示し、入力パケットフィールドには、その入力パケットが格納される。この場合、ステップ番号フィールドは使用されない。
(3)遅延種類
その入力順序番号に対応する入力パケットが、送信者の送信時における入力パケットジャーナル記憶部22にないことを示す。この場合、ステップ番号フィールドおよび入力パケットフィールドは使用されない。
いずれの種類の整列マルチキャストプロトコルデータにおいても、最大確定入力順序番号フィールドには、送信者(送信側コンピュータ)からの整列マルチキャストプロトコルデータ送信時における該当最大確定入力順序番号が格納される。また、整列マルチキャストプロトコルデータの受信側コンピュータにおける該当最大確定入力順序番号は、当該受信側コンピュータで確定された入力パケットの順序番号と、当該受信側コンピュータで受信された整列マルチキャストプロトコルデータ中の最大確定入力順序番号とのうち、最も大きいものに更新される。
本実施形態では、分散システム10のコンピュータ100-iは、前記特許文献1に記載されたコンピュータと異なり、分散システム10が起動してからの経過時間である論理時間を調整するための新規の構成を含む。即ちコンピュータ100-iは、図2に示されるように、論理時間管理部6、論理時間記憶部7、更新時刻記憶部8およびシステム時計9をさらに有する。
論理時間管理部6は、論理時間をインクリメントするのに用いられるインクリメント値の候補となる値を計算し、整列マルチキャストを用いてインクリメント値を決定する。論理時間管理部6は、決定したインクリメント値に基づいて論理時間を更新する。論理時間記憶部7は、論理時間管理部6によって更新された最新の論理時間の情報を格納する。更新時刻記憶部8は、論理時間管理部6によって前回に論理時間が更新された時刻(第1の時刻)と前々回に論理時間が更新された時刻(第2の時刻)の情報を格納する。システム時計9は、分散システム10の実時刻であるシステム時刻を計時する。
次に、本実施形態で適用される論理時間の調整方法の手順について図5のフローチャートを参照して説明する。
コンピュータ100-iの論理時間管理部6は、ステップ番号記憶部24に格納されている該当ステップ番号が初期値であるときは受付キュー1を監視しており、前回論理時間を更新してから第1の所定時間が経過していて(ステップ501のYES)、かつ当該受付キュー1に論理時間のインクリメントを要求する候補パケット(以下、論理時間更新要求パケットと称することもある)が存在するかを判定する(ステップ502)。第1の所定時間は、論理時間更新のタイミングを決定するための、予め設定されている基準となる更新時間間隔である。
もし、前回論理時間を更新してから第1の所定時間が経過していて(ステップ501のYES)、かつ受付キュー1に論理時間更新要求パケットが候補パケットとして存在しない場合(ステップ502のNO)、論理時間管理部6は論理時間更新要求パケットを作成する(ステップ503)。作成された論理時間更新要求パケットの処理種別フィールドおよび入力パケットフィールドには、それぞれ、論理時間を示す処理種別情報およびインクリメント値の候補が設定されている。本実施形態では、論理時間を更新するのに用いられるインクリメント値の候補には、前回の合意にかかった時間、つまり前々回に論理時間が更新された時刻(以下、前々回更新時刻と称する)と前回に論理時間が更新された時刻(以下、前回更新時刻と称する)との時間間隔(以下、合意時間間隔)が用いられる。そのため論理時間管理部6は、更新時刻記憶部8から前回と前々回の更新時刻を取得し、その差をインクリメント値の候補とする。
論理時間管理部6は論理時間更新要求パケットを作成すると(ステップ503)、当該作成した論理時間更新要求パケットを候補パケットとして受付キュー1に投入する(ステップ504)。受付キュー1に投入された候補パケット(論理時間更新要求パケット)は、従来技術においてクライアント装置200からのアプリケーションの候補パケットが受付キュー1に積まれた場合と同様に、コンピュータ100-iの入力パケット確定判定部26内の合意部262による合意処理の対象となり、例えば前記特許文献1に記載されているアルゴリズム1〜4(特許文献1の図5および6参照)を利用して次のように処理される。
入力パケット確定判定部26の入力候補収集部261は、当該入力パケット確定判定部26の合意部262による合意処理に際し、前記特許文献1に記載されているアルゴリズム1〜3(特許文献1の図6参照)を実行する候補一覧作成手段として機能して、合意処理の対象となる(n−t)個以上の候補パケットを候補パケット記憶部25に収集するための周知の候補一覧作成処理を行う。収集すべき(n−t)個以上の候補パケットは、(n−t)個以上のコンピュータがそれぞれ次に処理する候補として選択したパケット(ここでは、論理時間更新要求パケット)である。
候補一覧作成処理において入力候補収集部261は、ステップ番号記憶部24に格納されている該当ステップ番号を次に進める一方、受付キュー1に積まれている論理時間の候補パケットを自候補として候補パケット記憶部25に格納し、かつ、この自候補が入力パケットフィールドに設定された候補種類の整列マルチキャストプロトコルデータをプロトコルデータ送受信部23内の候補パケットブロードキャスト部230によりネットワークBを介して他のすべてのコンピュータ(つまり分散システム10を構成するコンピュータ100-1〜100-4のうち、コンピュータ100-i自身を除くすべてのコンピュータ)にブロードキャスト送信させる。このとき入力候補収集部261は、候補パケット記憶部25内のすべての他候補を空にする。
コンピュータ100-iのプロトコルデータ送受信部23内の候補パケットブロードキャスト部230によってブロードキャストされた候補種類の整列マルチキャストプロトコルデータは、他のコンピュータのプロトコルデータ送受信部23で受信されて、当該他のコンピュータの入力候補収集部261によって収集される。つまり他のコンピュータの入力候補収集部261は、該当ステップ番号が初期値でないか、または受付キュー1に候補パケットがないとき、入力順序番号記憶部21に格納されている該当入力順序番号に一致する入力順序番号(が設定された入力順序番号フィールド)を持つ候補種類の整列マルチキャストプロトコルデータであって、当該整列マルチキャストプロトコルデータのステップ番号フィールドに設定されているステップ番号が該当ステップ番号よりも大きい候補種類の整列マルチキャストプロトコルデータがプロトコルデータ送受信部23によって受信されているならば、当該受信された整列マルチキャストプロトコルデータ内の入力パケットフィールドに設定されているパケットを自候補として候補パケット記憶部25に格納する。また他のコンピュータの入力候補収集部261は、自候補とした候補パケットが入力パケットフィールドに設定された候補種類の整列マルチキャストプロトコルデータを当該他のコンピュータのプロトコルデータ送受信部23内の候補パケットブロードキャスト部230によりネットワークBを介してブロードキャストさせる。このとき上記他のコンピュータの入力候補収集部261は、自候補とした候補パケットを、当該候補パケットを含んでいた受信された整列マルチキャストプロトコルデータの送信者に対応する他候補として、候補パケット記憶部25に格納する。
コンピュータ100-iの入力候補収集部261は、他のコンピュータのプロトコルデータ送受信部23内の候補パケットブロードキャスト部230によってブロードキャスト送信された候補種類の整列マルチキャストプロトコルデータが当該コンピュータ100-iのプロトコルデータ送受信部23によって受信された場合、当該受信された整列マルチキャストプロトコルデータに含まれている候補パケット(ここでは、論理時間更新要求パケット)を収集する。即ち入力候補収集部261は、他のコンピュータから受信された整列マルチキャストプロトコルデータ内のステップ番号フィールドに設定されているステップ番号が該当ステップ番号よりも大きくなく、かつ当該受信された整列マルチキャストプロトコルデータ内のステップ番号と該当ステップ番号とが等しいならば、当該受信された整列マルチキャストプロトコルデータ内の候補パケットを、当該受信された整列マルチキャストプロトコルデータの送信者に対応する他候補として候補パケット記憶部25に格納する。
コンピュータ100-iの合意部262は、入力候補収集部261による上述の候補一覧作成処理によって(n−t)個以上(n=4、t=1の本実施形態では3個以上)の候補パケット(空でない入力候補)が候補パケット記憶部25に収集されると、前記特許文献1に記載されているアルゴリズム4(特許文献1の図5参照)を利用した処理(以下、合意処理と称する)を次のように実行する。まず、合意部262は第1の入力候補選定制御手段として機能して、収集された(n−t)個以上の候補パケットの中に(n−t)個以上の同一内容の候補パケットが存在するかを判定する。
もし、(n−t)個以上の同一内容の候補パケットが存在するならば、合意部262は、その候補パケットを次に処理する入力パケットとして確定する。つまり合意部262は、論理時間管理部6によって受付キュー1に投入された候補パケットについて、(n−t)台以上のコンピュータの整列マルチキャスト部2によって合意を取ることにより、入力パケットとして確定する。このとき合意部262は、最大確定入力順序番号記憶部27に格納されている該当最大確定入力順序番号を該当入力順序番号に更新する。また合意部262は、確定された入力パケットが候補パケットとして受付キュー1に存在するならば、当該候補パケットを受付キュー1から削除する。
これに対し、(n−t)個以上の同一内容の候補パケットが存在せず、つまり(n−t)個以上の候補パケットの合意が取れず、したがって次に処理する入力パケットを確定できない場合、合意部262は第1の入力候補選定制御手段として機能する。そして合意部262は、収集された(n−t)個以上の候補パケットの中に過半数以上の同一の候補が存在するかによって、次のように自候補を決定する。
まず、収集された(n−t)個以上の候補パケットの中に過半数以上の同一の候補パケットが存在するならば、合意部262は、その過半数以上の同一の候補パケットを選択して自候補として候補パケット記憶部25に格納し、かつ、この自候補が入力パケットフィールドに設定された候補種類の整列マルチキャストプロトコルデータをプロトコルデータ送受信部23内の候補パケットブロードキャスト部230によりネットワークBを介して他のすべてのコンピュータにブロードキャスト送信させる。このとき合意部262は、候補パケット記憶部25に格納されているすべての他候補を破棄して、入力候補収集部261による候補パケットの収集を再実行させる。
これに対し、過半数以上の同一の候補パケットが存在しないならば、合意部262は第3の入力候補選定制御手段として機能する。そして合意部262は、候補パケット記憶部25に格納されている入力候補の中からランダムに候補(入力パケット)を自候補として選択し、かつ、この自候補が入力パケットフィールドに設定された候補種類の整列マルチキャストプロトコルデータをプロトコルデータ送受信部23内の候補パケットブロードキャスト部230によりネットワークBを介して他のすべてのコンピュータに送信させる。このとき合意部262は、候補パケット記憶部25に格納されているすべての他候補を破棄する。
合意部262は、該当入力順序番号における入力パケットを確定すると、つまり該当入力順序番号における入力パケットに関して合意が取られて、整列マルチキャストが確定すると、候補出力先切り替え手段として機能して次の処理を実行する。即ち合意部262は、確定された入力パケットに付されている処理種別情報の示す処理種別が「論理時間」であるか否(「アプリケーション」である)か、つまり確定された入力パケットが論理時間のインクリメントを要求する論理時間更新要求パケットであるかを判定する。
もし、処理種別が「論理時間」であるならば、合意部262は確定された入力パケットを論理時間管理部6に渡すとともに、当該入力パケットを入力パケットジャーナル記憶部22に格納する。これに対し、処理種別が「アプリケーション」であるならば、合意部262は確定された入力パケットをアプリケーションプログラム3に配送するとともに、当該入力パケットを入力パケットジャーナル記憶部22に格納する。このように入力パケットが、処理種別に応じて論理時間管理部6またはアプリケーションプログラム3に選択的に渡される点で、入力パケットがアプリケーションプログラム3に渡される特許文献1とは相違する。
論理時間管理部6は、論理時間更新要求パケットを候補パケットとして受付キュー1に投入すると(ステップ504)、ステップ505に進む。ステップ505において論理時間管理部6は、当該論理時間管理部6に合意部262から論理時間更新要求パケットが入力パケットとして配送されたかによって、当該論理時間更新要求パケットが入力パケットとして確定されたかを判定する。
論理時間管理部6はまた、前回論理時間を更新してから第1の所定時間が経過していない場合には(ステップ501のNO)、ステップ502乃至504をスキップして、候補パケットを作成することなくステップ505に進む。また論理時間管理部6は、前回論理時間を更新してから第1の所定時間が経過し(ステップ501のYES)、かつ論理時間更新要求パケットが受付キュー1に候補パケットとして存在する場合には(ステップ502のYes)、ステップ503乃至504をスキップして、候補パケットを作成することなくステップ505に進む。
論理時間管理部6はステップ505において、論理時間更新要求パケットが入力パケットとして確定されたかを、合意部262から論理時間更新要求パケットが配送されたかによって判定する。論理時間管理部6は、論理時間更新要求パケットが入力パケットとして確定されたと判定した場合(ステップ505のYES)、当該確定された入力パケット(論理時間更新要求パケット)に設定されているインクリメント値の候補を、合意確定がなされたインクリメント値として決定する。
このように論理時間管理部6は、インクリメント値の候補となる値を計算し、整列マルチキャストを用いてインクリメント値を決定する。論理時間管理部6は、決定したインクリメント値が第2の所定時間以上であるかを判定する(ステップ506)。本実施形態において第2の所定時間は、第1の所定時間と同一の時間に設定される。
もし、決定したインクリメント値が第2の所定時間未満であるならば(ステップ506のNO)、論理時間管理部6は入力パケットを無視し、論理時間を更新することなくステップ501に戻る。決定したインクリメント値が第2の所定時間未満となるのは、つまり基準となる更新時間間隔(第1の所定時間)よりも短くなるのは、例えば、停滞していたコンピュータ100-iが後述する追いかけ処理により、合意時間間隔が短くなった場合である。
本実施形態では上述のように、第2の所定時間が、第1の所定時間と同一の時間に設定される。一方、合意時間間隔は、後述するように、コンピュータ100-iが停滞しなくても、基準となる更新時間間隔(ここでは1秒)に対して誤差が生じる。この誤差により、合意時間間隔が基準となる更新時間間隔よりも短くなる可能性がある。そこで、第2の所定時間を、例えば基準となる更新時間間隔に対する許容される誤差Δだけ、第1の所定時間よりも短い時間に設定してもよい。
次に、決定したインクリメント値が第2の所定時間以上であるものとする(ステップ506のYES)。この場合、論理時間管理部6は、その時点において論理時間記憶部7に格納されている論理時間の情報を、当該論理時間が当該インクリメント値だけインクリメントされるように更新する(ステップ507)。つまり論理時間管理部6は、決定したインクリメント値だけ、論理時間を進める。このとき論理時間管理部6は、更新時刻記憶部8に格納されている前々回の更新時刻を示す情報を、当該更新時刻記憶部8に格納されている前回の更新時刻を示す情報で更新する(ステップ508)。即ち論理時間管理部6は、前回の更新時刻を前々回の更新時刻として設定する。ステップ508において論理時間管理部6は、更新時刻記憶部8に格納されている前回の更新時刻を示す情報を、システム時計9によって示される現在の時刻で更新する。即ち論理時間管理部6は、現在の時刻を前回の時刻として設定する。
次に論理時間管理部6は、確定された入力パケットが候補パケットとして受付キュー1に存在するかを判定する(ステップ509)。確定された入力パケットが候補パケットとして受付キュー1に存在するのは、他のコンピュータの論理時間管理部6によって作成された候補パケットが入力パケットとして確定された場合である。論理時間管理部6は、確定された入力パケットが候補パケットとして受付キュー1に存在する場合(ステップ509のYES)、当該受付キュー1に存在する候補パケットを削除する(ステップ510)。
これにより、他のコンピュータの論理時間管理部6によって作成された候補パケットが入力パケットとして確定された場合、コンピュータ100-iでは、当該コンピュータ100-iの論理時間管理部6によって作成された候補パケットによる合意処理は行われなくなる。つまりコンピュータ100-iでは、他のコンピュータの論理時間管理部6によって作成されて、一番最初に合意された候補パケットが、入力パケットとして用いられる。
インクリメント値の候補、即ち合意時間間隔の候補値は、コンピュータ100-1〜100-5の各々で、システム時計9に基づいてそのコンピュータでの論理時間の更新時刻から計算される。このため、ネットワーク遅延などにより合意処理自体に時間を要しても、論理時間とシステム時間との差は数ミリ秒のオーダーの範囲に収まる。この誤差は、(t+1)台以上のコンピュータの停滞が発生したために発生する合意処理の遅延時間(一般に数秒〜数分)に比べて極めて小さい。
コンピュータ100-iの論理時間管理部6は、図5のフローチャートに従う上述の処理を繰り返し行うことにより、論理時間とシステム時間との差をできるだけ少なくし、フェイルオーバ時間やタイムアウト時間の精度を高くすることができる。
なお、分散システム10の起動後における各コンピュータ100-iでの最初の合意処理では、前回の合意時間間隔は得られない。このため、図5のフローチャートでは省略されているが本実施形態では、前回の合意時間間隔が得られるまでは、前記第1の所定時間がインクリメント値として用いられる。また本実施形態では、前回の合意時間間隔がインクリメント値として用いられるため、実際の時間とは1回分ずれが生じる。しかし、合意時間間隔が短い場合はずれも小さいため、問題にはならない。
ところで、各コンピュータ100-iの整列マルチキャスト部2は、前記特許文献1に記載されているアルゴリズム5および6(特許文献1の図7および8参照)を用いて実現される追いかけ機能を有している。追いかけ機能とは、短い時間停滞していたコンピュータが停滞(つまりt−耐故障ビザンチン合意アルゴリズムを用いた合意処理に参加できない状態)から復帰した場合に、多重化実行の短い遅延を解消するための機能である。
追いかけ機能に基づく追いかけ処理について、短い時間停滞していたコンピュータがコンピュータ100-4である場合を例に以下に詳述する。ここで短い時間とは、停滞していたコンピュータの復帰時の該当入力番号に対応する入力パケットが他のコンピュータの入力パケットジャーナル記憶部22から削除されずに当該記憶部22に残されている程度の時間を指す。
今、コンピュータ100-4が短い停滞から復帰して、候補種類の整列マルチキャストプロトコルデータを当該コンピュータ100-4のプロトコルデータ送受信部23内の候補パケットブロードキャスト部230によりブロードキャストしたものとする。
コンピュータ100-4以外のコンピュータ100-j(j=1,2,3)の整列マルチキャスト部2内の合意部262は、該当入力順序番号より小さい入力順序番号を持つ候補種類の整列マルチキャストプロトコルデータがプロトコルデータ送受信部23によって受信された場合に、その入力順序番号に対応する入力パケットが入力パケットジャーナル記憶部22に存在するかを判定する。このような候補種類の整列マルチキャストプロトコルデータの送信者は、短い停滞から復帰したコンピュータである可能性が高い。
もし、短い多重化実行の遅延のために、該当入力順序番号より小さい入力順序番号に対応する確定済みの入力パケットが入力パケットジャーナル記憶部22に存在するならば、コンピュータ100-jの合意部262は、その入力パケットが入力パケットフィールドに設定された確定種類の整列マルチキャストプロトコルデータをプロトコルデータ送受信部23により上記候補種類の整列マルチキャストプロトコルデータの送信者であるコンピュータ100-jに返送させる。
コンピュータ100-4の合意部262は、該当入力順序番号に一致する入力順序番号を持つ確定種類の整列マルチキャストプロトコルデータが返送された場合、その確定種類の整列マルチキャストプロトコルデータ内の入力パケットを入力パケットとして確定する。つまり候補種類の整列マルチキャストプロトコルデータの送信者の合意部262は、短い停滞の期間に他の(n−t)台以上のコンピュータ間で合意が取られた入力パケットを取得して、入力パケットとして確定する。もし、確定した入力パケットが受付キュー1に存在するならば、合意部262は当該入力パケットを受付キュー1から削除すると共に、当該入力パケットを処理種別に応じてアプリケーションプログラム3または論理時間管理部6に配送する。また合意部262は、次工程へ移行すべく、入力順序番号記憶部21に格納されている該当入力順序番号を次に進め(1インクリメントし)、ステップ番号記憶部24に格納されている該当ステップ番号を初期化する。また合意部262は、候補パケット記憶部25に格納されているすべての候補を破棄し、遅延記憶部28に格納されている(n−1)個の遅延フラグをすべてリセットする。
論理時間管理部6は、合意部262から確定した入力パケットが配送された場合(ステップ505のYES)、当該確定した入力パケットを取得する。論理時間管理部6は、取得した確定した入力パケットに設定されているインクリメント値が第2の所定時間以上であるならば(ステップ506のYES)、論理時間を当該インクリメント値だけ進める(ステップ507)。
一方、アプリケーションプログラム3は合意部262から確定した入力パケットが配送された場合、当該確定した入力パケットを処理する。
以上の追いかけ処理が繰り返されることで、コンピュータ100-4は、多重化実行の遅延を解消し、論理時間を含めて、他のコンピュータ100-1〜100-3における最終入力順序番号の状態に追いつくことができる。つまりコンピュータ100-4は、t−耐故障ビザンチン合意アルゴリズムを用いた合意処理に参加できない状態から復帰した場合に、その間に他のコンピュータ100-1〜100-3で合意が確定されたパケットを追いかけ処理によって取得することにより、インクリメント値を含めて、他のコンピュータ100-1〜100-3に同期した状態に追いつくことができる。
次に、上述の合意時間間隔をインクリメント値の候補とする候補パケットを用いた合意処理について、コンピュータ100-1〜100-4のうちの(t+1)台、つまり2台が停滞する期間が発生した場合を例に図6および図7を参照して説明する。なお、図6は、このような期間が発生した場合の、各コンピュータ100-i(i=1,2,3,4)における合意時間間隔の一例を示す。また図7は、このような場合の各コンピュータ100-iにおける、システム時間と論理時間との関係の一例を簡略化して示す。
まず、図7の例のように、分散システム10の起動時t0から合意時間間隔に関して、基準となる更新時間間隔である第1の所定時間間隔、例えば1秒間隔で合意処理が行われて、合意が確定したものとする(1回目の合意確定)。ここでは、図6の例のように、コンピュータ100-1〜100-4のすべてで合意処理が行われて、合意が確定したものとする。そして1回目の合意確定の後、図6に示すようにコンピュータ100-4が停滞したものとする。
tが1である本実施形態では、コンピュータ100-4が停滞しても、残りのコンピュータ100-1〜100-3でt−耐故障ビザンチン合意アルゴリズムを用いた合意処理を行って合意を確定することができる。これによりコンピュータ100-1〜100-3で、図7に示すように、1回目の合意確定時から第1の所定時間間隔である1秒後に2回目の合意確定がなされる。この2回目の合意確定の後、図6に示すようにコンピュータ100-3が新たに停滞したものとする。このときコンピュータ100-4は依然として停滞しているものとする。
このように、コンピュータ100-3および100-4の2台が停滞している場合、t=1の本実施形態では、残りのコンピュータ100-1および100-2だけでt−耐故障ビザンチン合意アルゴリズムを用いた合意処理を行うことができない。このため、合意処理は遅延する。
その後、図6に示すようにコンピュータ100-3が停滞から復帰したものとする。これによりコンピュータ100-1〜100-3の3台で、合意時間間隔に関して再びt−耐故障ビザンチン合意アルゴリズムを用いた合意処理が行われる。その結果、図7に示すように、2回目の合意確定時よりも3秒後に3回目の合意確定がなされたものとする。ここでは、説明の簡略化のためにシステム時刻の誤差を考慮せずに、前回の合意時間間隔、即ち2回目(前回)の合意確定時の論理時間の更新時刻と1回目(前々回)の合意確定時の論理時間の更新時刻との時間間隔が、第1の所定時間に一致する1秒であるものとする。この場合、コンピュータ100-1〜100-3の論理時間は、図7に示すように、2回目の合意確定時の2秒から3秒に更新される。
前述したように更新時刻は、各コンピュータ100-iのシステム時計9の示すシステム時刻に基づいて決定される。このため各コンピュータ100-iが停滞しなくても、合意時間間隔は1秒に対して誤差が生じる。この誤差はコンピュータ100-i毎に異なるため、候補パケットに設定されるインクリメント値の候補に用いられる合意時間間隔はコンピュータ100-i毎に異なる。そして一番最初に合意された候補パケットに設定されているインクリメント値の候補が、合意に参加した各コンピュータ100-iの論理時間を更新するためのインクリメント値として用いられる。
3回目の合意確定時の論理時間は、2回目の合意確定時以降のコンピュータ100-3および100-4の停滞による遅延が反映されないため、図7に示されるように、システム時間から、ほぼ「実際の遅延時間−第1の所定時間(1秒)」だけずれる。しかし、このずれは、以下に述べるように、次の4回目の合意確定時に解消される。
ここで、3回目の合意確定の後、図7に示すようにコンピュータ100-4が停滞から復帰したものとする。するとコンピュータ100-4は、上述の追いかけ処理により、当該コンピュータ100-4が停滞している間に他のコンピュータ100-1〜100-3によって合意が取られた、確定済みの入力パケットの列を入力順序番号順に取得する。取得した確定済みの入力パケットの列には、インクリメント値に関する確定済みの入力パケット(ここでは2つの入力パケット)が含まれている。
コンピュータ100-4の論理時間管理部6は、インクリメント値に関する確定済みの入力パケットを取得する毎に、当該確定済みの入力パケットに設定されているインクリメント値に基づいて、論理時間を当該インクリメント値だけ進める(ステップ506,507)。
このように本実施形態においては、コンピュータ100-4が短い時間停滞していた間に他のコンピュータ100-1〜100-3で行われた、インクリメント値(つまり合意時間間隔)に関する2回目の合意確定と3回目の合意確定とを、図6に示すように、当該コンピュータ100-4が停滞から復帰した際に追いかけ処理を利用して実行している。これによりコンピュータ100-4の論理時間を他のコンピュータ100-1〜100-3の論理時間に同期させることができる。
またコンピュータ100-4の論理時間管理部6は論理時間を更新する毎に、前回の更新時刻を前々回の更新時刻として設定すると共に、システム時計9の示す現在の時刻を前回の更新時刻として設定する(ステップ508)。追いかけ処理を用いて行われる、合意時間間隔に関する合意の確定(より詳細には、合意の確定に基づく論理時間の更新)は、図7に示されるように、通常状態における合意時間間隔に関する合意の確定よりも短い時間間隔で行われる。
さて、コンピュータ100-4が、論理時間を含めて、他のコンピュータ100-1〜100-3における最終入力順序番号の状態に追いつくと、再びコンピュータ100-1〜100-4で、合意時間間隔に関する合意の確定が行われる。この合意確定のための合意処理に用いられる候補パケットに設定されているインクリメント値の候補には、3回目(前回)の合意確定時の論理時間の更新時刻と2回目(前々回)の合意確定時の論理時間の更新時刻との時間間隔が用いられる。もし、一番最初に合意された候補パケット(論理時間更新要求パケット)が、コンピュータ100-1〜100-3のいずれかの論理時間管理部6によって作成されたものであるならば、インクリメント値の候補には、誤差を考慮しないものとすると3秒が用いられる。これに対し、一番最初に合意された候補パケットが、コンピュータ100-4の論理時間管理部6によって作成されたものであるならば、インクリメント値の候補には、上述の追いかけ処理に起因して、通常状態における合意時間間隔に関する合意の確定よりも十分短い時間間隔、つまり第2の所定時間よりも短い時間間隔が用いられる。
このため、一番最初に合意された候補パケットが、コンピュータ100-4の論理時間管理部6によって作成されたものである場合、当該候補パケットに設定されているインクリメント値の候補は第2の所定時間未満となる(ステップ506のNO)。この場合、前述のように論理時間は更新されず、ステップ506からステップ501に戻る。
その後、コンピュータ100-1〜100-3のいずれかの論理時間管理部6によって作成された候補パケットに基づいて、コンピュータ100-1〜100-4の4台で、合意時間間隔に関して合意処理が行われ、例えば3回目の合意確定時よりも1秒後に、入力パケットとして、図6に示すように4回目の合意確定がなされたものとする(ステップ505のYES)。この場合、コンピュータ100-1〜100-4の論理時間管理部6は、確定された入力パケットに設定されているインクリメント値の候補である3秒を、確定されたインクリメント値として決定し、当該インクリメント値に基づいて、自身が管理する論理時間を更新する(ステップ506,507)。これによりコンピュータ100-1〜100-4の論理時間は、図7に示すように、3回目の合意確定時の3秒から6秒に更新され、システム時間に同期する。
ところで、複数のコンピュータで時刻合わせをする仕組みとして、ネットワークタイムプロトコル(Network Time Protocol: NTP)のように通信時間を考慮して調整する方法などが知られている。このような方法と異なり、本実施形態では、t−耐故障ビザンチン合意アルゴリズムを用いてインクリメント値を決定するため、分散システム内のどのコンピュータが故障、あるいは停滞しても正確な時間に調整することが可能になる。また本実施形態では、インクリメント値の候補として、各コンピュータで前回と前々回に論理時間が更新されたシステム時刻から計算される合意時間間隔を用いているため、各コンピュータ間でシステム時刻が異なっていても問題とならない。
一般に、各コンピュータで合意が開始されてから合意が確定するまでに数ミリ秒程度時間がかかり、その時間はコンピュータ毎に異なる。しかし、この数ミリ秒程度の時間は、停滞により遅延する時間(数秒、あるいはそれ以上)と比較すると十分無視できる値である。このため本実施形態では説明の簡略化のために、各コンピュータでの合意処理に要する時間はゼロとし、ほぼ同時に合意が確定するものとしている。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。