(57)【要約】  実施形態の多重化処理システムは、複数のサーバ装置を備える多重化処理システムである。それぞれのサーバ装置は、記憶部と、処理部と、決定制御部と、復元部と、再実行制御部と、出力部と、を備える。処理部は、決定性出力データ又は非決定性出力データを、第１出力データとして出力する。決定制御部は、自装置から出力された第１出力データ、または、自装置以外の他のいずれかのサーバ装置から出力された第１出力データのひとつを選択し、第２出力データに決定する。再実行制御部は、第２出力データが決定性出力データであり、かつ、第２出力データと自装置から出力された第１出力データとが一致しない場合、第２出力データと再決定された第１出力データとが一致するか、又は、再実行回数が閾値以上になるまで、処理を自装置に再実行させる。
2017042894.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバ装置を備える多重化処理システムであって、
それぞれの前記サーバ装置は、
内部データを記憶する記憶部と、
入力データと処理前の前記内部データとに基づく処理から一意に決定される決定性出力データ、又は、前記処理から一意に決定されない非決定性出力データを、第１出力データとして出力する処理部と、
自装置から出力された前記第１出力データ、または、自装置以外の他のいずれかのサーバ装置から出力された前記第１出力データのひとつを選択し、第２出力データに決定する決定制御部と、
前記第２出力データが非決定性出力データである場合、前記記憶部に記憶されている内部データを処理前の状態に復元する復元部と、
前記第２出力データが決定性出力データであり、かつ、前記第２出力データと自装置から出力された前記第１出力データとが一致しない場合、前記第２出力データと再決定された前記第１出力データとが一致するか、又は、再実行回数が閾値以上になるまで、前記処理を自装置に再実行させる再実行制御部と、
前記第２出力データが非決定性出力データである場合、又は、前記第２出力データが決定性出力データであり、かつ、前記第２出力データと再決定された前記第１出力データとが一致した場合、前記第２出力データを出力する出力部と、
を備える多重化処理システム。
【請求項２】
前記再実行回数が前記閾値以上の場合、前記自装置以外の他のサーバ装置との連携を止める連携制御部、
を更に備える請求項１に記載の多重化処理システム。
【請求項３】
前記再実行回数が前記閾値以上の場合、前記自装置以外の他のサーバ装置の前記処理により得られた処理後の内部データを自装置の前記記憶部にコピーするコピー部、を更に備え、
前記出力部は、前記処理後の内部データが自装置の前記記憶部に記憶された場合、前記第２出力データを出力する、
請求項１に記載の多重化処理システム。
【請求項４】
前記複数のサーバ装置の数はｎ＞３ｂ（ｂは１以上の整数）を満たす整数ｎであり、
前記決定制御部は、誤動作を行う可能性のある障害を許容する前記サーバ装置の数をｂとして、ｂ＋１以上の前記サーバ装置の処理部で出力された前記第１出力データを、前記第２出力データに決定する、
請求項２に記載の多重化処理システム。
【請求項５】
前記複数のサーバ装置の数はｎ＞５ｂ（ｂは１以上の整数）を満たす整数ｎであり、
前記決定制御部は、誤動作を行う可能性のある障害を許容する前記サーバ装置の数をｂとして、２ｂ＋１以上の前記サーバ装置の処理部で出力された前記第１出力データを、前記第２出力データに決定する、
請求項３に記載の多重化処理システム。
【請求項６】
前記複数のサーバ装置の数はｎ＞５ｂ（ｂは１以上の整数）を満たす整数ｎであり、
前記コピー部は、誤動作を行う可能性のある障害を許容する前記サーバ装置の数をｂとして、ｂ＋１以上の前記サーバ装置の記憶部で一致する前記処理後の内部データを、自装置の前記記憶部に記憶する、
請求項３に記載の多重化処理システム。
【請求項７】
内部データを記憶する記憶部を有する複数のサーバ装置を備える多重化処理システムの多重化処理方法であって、
入力データと処理前の前記内部データとに基づく処理から一意に決定される決定性出力データ、又は、前記処理から一意に決定されない非決定性出力データを、第１出力データとして出力するステップと、
自装置から出力された前記第１出力データ、または、自装置以外の他のいずれかのサーバ装置から出力された前記第１出力データのひとつを選択し、第２出力データに決定するステップと、
前記第２出力データが非決定性出力データである場合、前記記憶部に記憶されている内部データを処理前の状態に復元するステップと、
前記第２出力データが決定性出力データであり、かつ、前記第２出力データと自装置から出力された前記第１出力データとが一致しない場合、前記第２出力データと再決定された前記第１出力データとが一致するか、又は、再実行回数が閾値以上になるまで、前記処理を自装置に再実行させるステップと、
前記第２出力データが非決定性出力データである場合、又は、前記第２出力データが決定性出力データであり、かつ、前記第２出力データと再決定された前記第１出力データとが一致した場合、前記第２出力データを出力するステップと、
を含む多重化処理方法。
【請求項８】
内部データを記憶する記憶部を有するサーバ装置を、
入力データと処理前の前記内部データとに基づく処理から一意に決定される決定性出力データ、又は、前記処理から一意に決定されない非決定性出力データを、第１出力データとして出力する処理部と、
自装置から出力された前記第１出力データ、または、自装置以外の他のいずれかのサーバ装置から出力された前記第１出力データのひとつを選択し、第２出力データに決定する決定制御部と、
前記第２出力データが非決定性出力データである場合、前記記憶部に記憶されている内部データを処理前の状態に復元する復元部と、
前記第２出力データが決定性出力データであり、かつ、前記第２出力データと自装置から出力された前記第１出力データとが一致しない場合、前記第２出力データと再決定された前記第１出力データとが一致するか、又は、再実行回数が閾値以上になるまで、前記処理を自装置に再実行させる再実行制御部と、
前記第２出力データが非決定性出力データである場合、又は、前記第２出力データが決定性出力データであり、かつ、前記第２出力データと再決定された前記第１出力データとが一致した場合、前記第２出力データを出力する出力部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は多重化処理システム、多重化処理方法及びプログラムに関する。
【背景技術】
【０００２】
複数のコンピュータ上で同じ処理を重複して実行する多重化処理システムは、コンピュータの信頼性を高める手法として、従来から実用化されている。多重化処理システムでは、複数のコンピュータのうちのいずれかが障害により誤った結果を出力しても、当該誤った結果と、他のコンピュータにより出力された正常な結果と、を比較することにより、誤りの検出又は訂正をすることが可能である。これによりシステム全体としての信頼性が向上する。【０００３】
多重化処理システムを実現する方式として、整列マルチキャストを用いた方式が知られている。例えば処理対象の入力データを複数のコンピュータに送信するとともに、入力データの処理順序を決定する入力整列マルチキャスト処理が知られている。入力整列マルチキャスト処理が実行されることにより、それぞれのコンピュータが、同一の入力データを同一の順序で処理することができる。【０００４】
整列マルチキャストを用いた方式の多重化処理システムでは、多重化される処理に決定性がなければならない。ここで、「決定性がある」とは、入力データと処理前の内部データとから、出力データと処理後の内部データとが一意に決まる性質をいう。この性質により、多重化される処理の内容は一貫性が保たれ、出力データ列が複数のコンピュータ間で同一となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３６５５２６３号公報
【特許文献２】特許第２５３４４３０号公報
【非特許文献】
【０００６】
【非特許文献１】ＺｏｏＫｅｅｐｅｒ、［ｏｎｌｉｎｅ］、［平成２７年５月７日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｚｏｏｋｅｅｐｅｒ．ａｐａｃｈｅ．ｏｒｇ／ｄｏｃ／ｃｕｒｒｅｎｔ／ｚｏｏｋｅｅｐｅｒＩｎｔｅｒｎａｌｓ．ｈｔｍｌ＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来の技術では、多重化される処理は決定性がある処理に限られていた。なぜなら、多重化される処理に決定性がない場合、正常な結果が一意でないため、障害が発生していないときでも各コンピュータの出力結果が異なる可能性があるためである。すなわち従来の技術では、多重化される処理に決定性がない場合、多重化処理システムとして一貫性を担保することができなかった。
【課題を解決するための手段】
【０００８】
実施形態の多重化処理システムは、複数のサーバ装置を備える多重化処理システムである。それぞれの前記サーバ装置は、記憶部と、処理部と、決定制御部と、復元部と、再実行制御部と、出力部と、を備える。記憶部は内部データを記憶する。処理部は、入力データと処理前の前記内部データとに基づく処理から一意に決定される決定性出力データ、又は、前記処理から一意に決定されない非決定性出力データを、第１出力データとして出力する。決定制御部は、自装置から出力された前記第１出力データ、または、自装置以外の他のいずれかのサーバ装置から出力された第１出力データのひとつを選択し、第２出力データに決定する。復元部は、前記第２出力データが非決定性出力データである場合、前記記憶部に記憶されている内部データを処理前の状態に復元する。再実行制御部は、前記第２出力データが決定性出力データであり、かつ、前記第２出力データと自装置から出力された前記第１出力データとが一致しない場合、前記第２出力データと再決定された前記第１出力データとが一致するか、又は、再実行回数が閾値以上になるまで、前記処理を自装置に再実行させる。出力部は、前記第２出力データが非決定性出力データである場合、又は、前記第２出力データが決定性出力データであり、かつ、前記第２出力データと再決定された前記第１出力データとが一致した場合、前記第２出力データを出力する。
【図面の簡単な説明】
【０００９】
【図１】図１は第１実施形態の多重化処理システムの構成の例を示す図である。
【図２】図２は第１実施形態のサーバ装置の構成の例を示す図である。
【図３】図３は第１実施形態の入力整列マルチキャストの例を示す図である。
【図４】図４は第１実施形態の多重化処理方法の例を示すフローチャートである。
【図５】図５は第１実施形態の最終確定処理の例を示すフローチャートである。
【図６】図６は第１実施形態の多重化処理方法による処理例１を示す図である。
【図７】図７は第１実施形態の多重化処理方法による処理例２を示す図である。
【図８】図８は第１実施形態の多重化処理方法による処理例３を示す図である。
【図９】図９は第２実施形態のサーバ装置の構成の例を示す図である。
【図１０】図１０は第２実施形態の最終確定処理の例を示すフローチャートである。
【図１１】図１１は第２実施形態のコピー処理の例を示すフローチャートである。
【図１２】図１２は第２実施形態の多重化処理方法による処理例を示す図である。
【図１３】図１３は第１及び第２実施形態のサーバ装置のハードウェア構成の例を示す図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、多重化処理システム、多重化処理方法及びプログラムの実施形態を詳細に説明する。
【００１１】
（第１実施形態）
図１は第１実施形態の多重化処理システム１００の構成の例を示す図である。第１実施形態の多重化処理システム１００は、サーバ装置１０−１、・・・、サーバ装置１０−ｎ（ｎは４以上の整数）、クライアント装置２０−１、・・・、クライアント装置２０−ｍ（ｍは１以上の整数）、及び、ネットワーク３０を備える。以下、サーバ装置１０−１、・・・、及びサーバ装置１０−ｎを区別しない場合は、単にサーバ装置１０という。同様に、クライアント装置２０−１、・・・、及びクライアント装置２０−ｍを区別しない場合は、単にクライアント装置２０という。
【００１２】
サーバ装置１０及びクライアント装置２０は、ネットワーク３０を介して接続されている。なお各装置間の通信方式は、有線であっても無線であってもよく、また、両方が組み合わされていてもよい。
【００１３】
図２は第１実施形態のサーバ装置１０の構成の例を示す図である。第１実施形態のサーバ装置１０は、入力部１０１、入力整列部１０２、処理部１０３、記憶部１０４、復元部１０５、バッファ１０６、決定制御部１０７、再実行制御部１１０、連携制御部１１１及び出力部１１２を備える。また決定制御部１０７は、出力整列部１０８及び判定部１０９を備える。
【００１４】
入力部１０１は、クライアント装置２０からネットワーク３０を介して、入力データを受信すると、当該入力データを入力整列部１０２に入力する。
【００１５】
入力整列部１０２は、入力部１０１から入力データを受け付けると、当該入力データを自装置以外の他のサーバ装置１０に送信する。また入力整列部１０２は、自装置以外の他のサーバ装置１０により受信された入力データを、自装置以外の他のサーバ装置１０から受信する。入力整列部１０２は、複数の入力データの順序を、入力整列マルチキャストにより決定する。ここで入力整列マルチキャストについて説明する。
【００１６】
図３は第１実施形態の入力整列マルチキャストの例を示す図である。図３の例は、入力データＡ及び入力データＢが、サーバ装置１０−１の入力部１０１−１から入力整列部１０２−１に入力され、入力データＣが、サーバ装置１０−３の入力部１０１−３から入力整列部１０２−３に入力され、入力データＤが、サーバ装置１０−４の入力部１０１−４から入力整列部１０２−４に入力された場合を示す。
【００１７】
入力整列マルチキャスト処理は、自装置の入力部１０１に入力された入力データを、自装置以外の他のサーバ装置１０に送信するとともに、入力データの処理順序を示す順序番号を決定する処理である。各サーバ装置１０の入力整列部１０２は、入力データと順序番号とを対応付ける。この対応付けは各サーバ装置１０で同一となる。図３の例は、入力データの処理順序が、入力データＤ、入力データＡ、入力データＣ、入力データＢの順に決定された場合を示す。入力データの処理順序を決定する処理は、例えば特許文献１に記載の方法を適用できる。
【００１８】
図２に戻り、入力整列部１０２は、入力整列マルチキャストにより決定された入力データを、順番に処理部１０３に入力する。処理部１０３は、入力整列部１０２から入力データを受け付けると、当該入力データを処理することにより得られる第１出力データをバッファ１０６に入力する（第１出力データ出力処理）。具体的には、処理部１０３は、決定性出力データ又は非決定性出力データを、第１出力データとしてバッファ１０６に入力する。
【００１９】
決定性出力データは、入力データと、記憶部１０４に記憶された処理前の内部データと、に基づく処理から一意に決定される出力データである。非決定性出力データは、入力データと、記憶部１０４に記憶された処理前の内部データと、に基づく処理から一意に決定されないことを抽象的に表す出力データである。非決定性出力データには種類が無く、決定性出力データとは重複しない。
【００２０】
ここで非決定性出力データを出力する処理の例について説明する。例えば処理の実行中にリソース不足となり、当該処理を継続できないときに、当該処理をキャンセルするエラー処理は、非決定性出力データを出力する処理に該当する。これはリソース不足（例えばメモリ不足）の発生が、同一装置に隣接して実行されている他のプログラムの状態等の外部要因に依存するためである。
【００２１】
具体的には、例えばオペレーティングシステムへのシステムコールによってリソースを確保する場合、決定性が保てない可能性がある。なぜなら、通常のオペレーティングシステムはリソースの確保に関して決定性を有しておらず、他のプログラムの実行状況等に依存して、確保が成功したり失敗したりするからである。つまり、多重化している処理に関して、あるコンピュータではリソース不足が起きるが、他のコンピュータではリソース不足が起きないという可能性がある。または、リソース不足が起きるプログラム実行位置がサーバ装置１０の間で異なると、記憶部１０４の処理後の内部データの一貫性がなくなる可能性もある。
【００２２】
この課題に対して従来技術では、データ処理プログラムが、リソースをその都度オペレーティングシステムから直接確保しないようにすることで決定性を確保していた。例えば決定性のあるリソース管理プログラムが、あらかじめ所定の量のリソースをオペレーティングシステムから確保してプールしておき、データ処理プログラムはリソース管理プログラムを介してリソースを取得することにより、決定性を確保していた。
【００２３】
なおエラー処理は、通常の処理の流れとは異なるものの、適切に対処されるべき処理であるが、決定性出力データを出力するエラー処理もある。例えば入力データの値が所定の範囲にない場合に、入力データの値が所定の範囲にない旨のメッセージを出力するエラー処理は、入力データにのみ基づいて決定されるので、当該エラー処理は決定性出力データを出力する処理とすることができる。
【００２４】
決定性出力データを出力するエラー処理はあくまでも正常な処理であり、全てのコンピュータで一貫して同一のエラー処理が行われる。一方、例えばコンピュータの誤動作（ビザンチン障害）等の障害では、特定のコンピュータだけが誤った出力データを出力する（または全く出力データを出力しない）。
【００２５】
第１実施形態の説明では、多重化処理システム１００に含まれるサーバ装置１０の数ｎを、ｎ＞３ｂを満たす数とする。ここでｂは、ビザンチン障害を許容するサーバ装置１０の数である。
【００２６】
復元部１０５は、処理部１０３が入力データに基づいて記憶部１０４の内部データを処理する前に、記憶部１０４の当該内部データを保持する。そして復元部１０５は、後述の第２出力データが非決定性出力データである場合、後述の判定部１０９から復元要求を受け付ける。復元部１０５は復元要求を受け付けると、記憶部１０４の当該内部データを処理前の状態に復元する。また復元部１０５は、後述の第２出力データが決定性出力データであり、かつ、第１出力データと後述の第２出力データとが一致しない場合、後述の判定部１０９から復元要求を受け付ける。復元部１０５は復元要求を受け付けると、記憶部１０４の当該内部データを処理前の状態に復元する。
【００２７】
バッファ１０６は、処理部１０３から受け付けた第１出力データを記憶する。出力整列部１０８は、自装置のバッファ１０６に記憶されている第１出力データを、自装置以外の他のサーバ装置１０に送信する。また出力整列部１０８は、自装置以外の他のサーバ装置１０から第１出力データを受け付ける。
【００２８】
そして出力整列部１０８は、出力整列マルチキャスト処理を実行する。出力整列マルチキャスト処理について説明する。出力整列マルチキャスト処理は、各順序番号に関して、ｂ＋１以上のサーバ装置１０のバッファ１０６で記憶されている同一の第１出力データを選択し、第２出力データに決定する。このとき、選択された第２出力データが各サーバ装置において一致するように出力整列マルチキャスト処理は動作する。
【００２９】
ビザンチン障害が発生していない正常なサーバ装置１０では、決定性のある動作によって一意に決定された決定性出力データか、非決定性出力データのどちらかしか第１出力データになり得ない。ｎ＞３ｂが動作条件であるから、どちらかは必ずｂ＋１以上あり、第２出力データの候補は必ずあることに注意する。
【００３０】
具体的には、動作条件がｎ＞３ｂであるから、ビザンチン障害となっているサーバ装置１０を除いた、正常なサーバ装置１０の数は少なくとも２ｂ＋１である。すると、第１出力データとして非決定性出力データを出力したサーバ装置１０の数をｘ、第１出力データとして決定性出力データを出力したサーバ装置１０の数をｙとすると、ｘ＋ｙ≧２ｂ＋１である。これより、ｘかｙの少なくとも一方はｂ＋１以上である。
【００３１】
ここで、ｘとｙの双方がｂ＋１以上である場合には、どちらも選択可能になるが、その選択が各サーバ装置において一致するように出力整列マルチキャスト処理は動作しなければならない。これの具体的な実現方法としては、入力整列マルチキャストの場合と同様に、例えば特許文献１に記載の方法を適用できる。
【００３２】
出力整列部１０８は、第２出力データを、順序番号とともに判定部１０９に入力する。
【００３３】
判定部１０９は、出力整列部１０８から第２出力データ及び順序番号を受け付けると、当該順序番号に対応付けられた第１出力データをバッファ１０６から読み出し、最終確定処理を実行する。
【００３４】
＜第２出力データが非決定性出力データである場合＞
判定部１０９は、第２出力データが非決定性出力データである場合、記憶部１０４の内部データを処理前の状態に復元する復元要求を復元部１０５に入力するとともに、当該第２出力データを出力部１１２に入力する。出力部１１２は、判定部１０９から第２出力データを受け付けると、当該第２出力データを出力する。
【００３５】
＜第２出力データが決定性出力データであり、かつ、第１出力データと第２出力データとが一致しない場合＞
判定部１０９は、第２出力データが決定性出力データであり、かつ、第１出力データと第２出力データとが一致しない場合、処理部１０３による処理を再実行する再実行制御要求を再実行制御部に入力する。
【００３６】
再実行制御部１１０は、判定部１０９から再実行制御要求を受け付けると、復元部１０５に復元要求を入力し、処理部１０３に再実行要求を入力する。処理部１０３は、入力データと、復元部１０５により復元された処理前の内部データと、に基づく処理を再実行し、自装置の第１出力データを再決定する。再実行制御部１１０は、第２出力データと再決定された第１出力データとが一致するか、又は、再実行回数が閾値以上になるまで、入力データと処理前の内部データとに基づく処理を、自装置の処理部１０３に再実行させる。
【００３７】
再実行制御部１１０は、処理部１０３が処理を再実行することにより、第１出力データと第２出力データとが一致した場合、処理結果が一致したことを示す処理結果一致通知を判定部１０９に入力する。判定部１０９は、再実行制御部１１０から処理結果一致通知を受け付けると、第２出力データを出力部１１２から出力することを確定する。そして判定部１０９は第２出力データを出力部１１２に入力する。出力部１１２は、判定部１０９から第２出力データを受け付けると、当該第２出力データを出力する。
【００３８】
また再実行制御部１１０は、再実行回数が閾値以上になった場合、自装置以外の他のサーバ装置１０との連携を停止させる連携停止要求を連携制御部１１１に入力する。連携制御部１１１は、再実行制御部１１０から連携停止要求を受け付けると、自装置以外の他のサーバ装置１０との連携を停止する。すなわち多重化処理システム１００は、当該サーバ装置１０で障害が発生しているとみなし、当該サーバ装置１０を多重化処理に使用しないようにする。
【００３９】
次に第１実施形態の多重化処理方法について説明する。
【００４０】
図４は第１実施形態の多重化処理方法の例を示すフローチャートである。はじめに、入力部１０１が、クライアント装置２０からネットワーク３０を介して、入力データを受信する（ステップＳ１）。次に、入力整列部１０２が、上述の入力整列マルチキャスト処理を実行することにより、複数の入力データの処理順序を決定する（ステップＳ２）。次に、処理部１０３が、上述の第１出力データ出力処理を実行することにより、第１出力データを出力する（ステップＳ３）。次に、出力整列部１０８が、上述の整列マルチキャスト処理を実行することにより、順序番号が等しい複数の第１出力データに基づいて第２出力データを決定する（ステップＳ４）。次に、判定部１０９が、最終確定処理を実行する（ステップＳ５）。最終確定処理の詳細については、図５を参照して後述する。次に、出力部１１２が、ステップＳ５の最終確定処理により確定された第２出力データを出力する（ステップＳ６）。
【００４１】
次に上述のステップＳ５の最終確定処理について説明する。
【００４２】
図５は第１実施形態の最終確定処理の例を示すフローチャートである。はじめに、判定部１０９が、第２出力データが非決定性出力データであるか否かを判定する（ステップＳ１１）。
【００４３】
第２出力データが非決定性出力データである場合（ステップＳ１１、Ｙｅｓ）、復元部１０５が、記憶部１０４の当該内部データを処理前の状態に復元する復元処理を実行する（ステップＳ１２）。次に、判定部１０９が、第２出力データを出力部１１２の出力に確定する（ステップＳ１７）。
【００４４】
第２出力データが非決定性出力データでない場合（ステップＳ１１、Ｎｏ）、すなわち第２出力データが決定性出力データである場合、判定部１０９は、更に、第１出力データと第２出力データが一致するか否かを判定する（ステップＳ１３）。
【００４５】
第１出力データと第２出力データが一致する場合（ステップＳ１３、Ｙｅｓ）、判定部１０９は、第２出力データを出力部１１２の出力に確定する（ステップＳ１７）。
【００４６】
第１出力データと第２出力データが一致しない場合（ステップＳ１３、Ｎｏ）、再実行制御部１１０が、再実行処理を実行する（ステップＳ１４）。具体的には、再実行制御部１１０は、復元部１０５に復元要求を入力し、処理部１０３に再実行要求を入力する。処理部１０３は、入力データと、復元部１０５により復元された処理前の内部データと、に基づく処理を再実行することにより、再度、第１出力データを出力する。
【００４７】
次に、判定部１０９が、再実行回数が閾値以上であるか否かを判定する（ステップＳ１５）。再実行回数が閾値以上の場合（ステップＳ１５、Ｙｅｓ）、連携制御部１１１が、自装置以外の他のサーバ装置１０との連携を停止する連携停止処理を実行する（ステップＳ１６）。再実行回数が閾値未満の場合（ステップＳ１５、Ｎｏ）、処理はステップＳ１３に戻り、判定部１０９が、再度、第１出力データと第２出力データが一致するか否かを判定する。
【００４８】
なお、上記説明では一部省略されているが、すべての、入力データ、第１出力データ、第２出力データにはそれぞれ順序番号が付与される。入力データの順序番号は、入力整列マルチキャストによって付与される順序番号である。第１出力データの順序番号は、それを出力した処理の当該入力データの順序番号が付与される。出力整列マルチキャストは、自身で管理する整列マルチキャストの順序番号と等しい順序番号が付与された第１出力データを受け付け、当該決定した第２出力データにその順序番号を付与する。
【００４９】
上述の図４及び図５で説明したように、各サーバ装置１０は、各順序番号のそれぞれに関して、入力整列マルチキャスト処理（ステップＳ２）、第１出力データ出力処理（ステップＳ３）、出力整列マルチキャスト処理（ステップＳ４）、最終確定処理（ステップＳ５）という一連の処理を行う。このとき、処理部１０３の処理は一連の順序番号の順序にしたがって実行されなければならない。
【００５０】
なお同一の順序番号に関して、処理部１０３の処理の実行は複数のサーバ装置１０間で必ずしも同時でなくてもよい。例えば１台のサーバ装置１０の処理部１０３の処理の実行が遅れ、他のサーバ装置１０に比べて古い順序番号の処理を行っていてもよい。そのような場合でも、入力整列マルチキャストおよび出力整列マルチキャストがその動作条件を満たしている限り、多重化処理の一貫性は保たれる。また入力整列マルチキャストおよび出力整列マルチキャストの動作の一環として、暗黙のうちにコンピュータ間の同期がある程度はとられる。その程度は入力整列マルチキャストおよび出力整列マルチキャストの実装に依存して決まる。
【００５１】
次に第１実施形態の多重化処理方法による処理例について説明する。
【００５２】
図６は第１実施形態の多重化処理方法による処理例１を示す図である。図６の例は、サーバ装置１０の数ｎが４、ビザンチン障害の発生数ｂが１（サーバ装置１０−４にビザンチン障害が発生）の場合を示す。サーバ装置１０−３の入力部１０１が入力データＡを受信すると、サーバ装置１０−３の入力整列部１０２が、当該入力データＡをサーバ装置１０−１、サーバ装置１０−２及びサーバ装置１０−４に送信する。なおサーバ装置１０−４は、ビザンチン障害が発生しているので動作が不定の状態である。サーバ装置１０−１〜サーバ装置１０−３の入力整列部１０２は、入力データＡに同一の順序番号を対応付ける。
【００５３】
サーバ装置１０−１〜サーバ装置１０−３の処理部１０３は、入力データＡと、サーバ装置１０−１〜サーバ装置１０−３のそれぞれの記憶部１０４に記憶された処理前の内部データと、に基づく処理を行うことにより、第１出力データを出力する。図６の例は、サーバ装置１０−１及びサーバ装置１０−２が、非決定性出力データＸを、第１出力データＸとして出力し、サーバ装置１０−３が、決定性出力データＤを、第１出力データＤとして出力し、ビザンチン障害が発生しているサーバ装置１０−４が、不定の出力データ？を、第１出力データ？として出力する場合を示す。それぞれの第１出力データは、各サーバ装置１０のバッファ１０６に記憶される。
【００５４】
サーバ装置１０−１〜サーバ装置１０−３の出力整列部１０８は、非決定性出力データＸを、第２出力データに決定する。これは非決定性出力データＸが、サーバ装置１０−１及びサーバ装置１０−２のバッファ１０６に記憶されており、ｂ＋１＝２であるから、出力整列マルチキャストの選択条件を満たすためである。
【００５５】
サーバ装置１０−１〜サーバ装置１０−３の判定部１０９は、上述の図５のフローチャートのステップＳ１１、ステップＳ１２及びステップＳ１７にしたがって、第２出力データＸを、出力部１１２の出力に確定する。
【００５６】
すなわちサーバ装置１０−１〜サーバ装置１０−３の出力部１１２が、非決定性出力データＸを、第２出力データＸとして出力するので、サーバ装置１０−１〜サーバ装置１０−３の復元部１０５が、記憶部１０４の内部データを処理部１０３により処理される前に復元する。なおサーバ装置１０−４は、ビザンチン障害が発生しているので動作は不定である。
【００５７】
結果として、サーバ装置１０−１及びサーバ装置１０−２が非決定性の動作（例えばオペレーティングシステムへのシステムコールによるリソース確保の失敗等）をし、サーバ装置１０−３が決定性の動作（処理の成功）をした場合でも、多重化処理の一貫性が維持される。つまり、サーバ装置１０−１〜サーバ装置１０−３の記憶部１０４の内部データは、入力データＡを処理しなかった場合と同等の状態に帰着し、そのことを示す非決定性出力データＸが、サーバ装置１０−１〜サーバ装置１０−３から出力される。
【００５８】
なお従来技術の多重化処理では、上述の図６の場合に、サーバ装置１０−１及びサーバ装置１０−２に障害が発生したとみなされ、多重化処理が継続できなくなっていた。
【００５９】
図７は第１実施形態の多重化処理方法による処理例２を示す図である。図７の例は、サーバ装置１０の数ｎが４、ビザンチン障害の発生数ｂが１（サーバ装置１０−４にビザンチン障害が発生）の場合を示す。サーバ装置１０−３の入力部１０１が入力データＡを受信すると、サーバ装置１０−３の入力整列部１０２が、当該入力データＡをサーバ装置１０−１、サーバ装置１０−２及びサーバ装置１０−４に送信する。なおサーバ装置１０−４は、ビザンチン障害が発生しているので動作が不定の状態であるが、図７の例では、第１出力データＤの出力処理までが正常に行われている場合について説明する。
【００６０】
サーバ装置１０−１〜サーバ装置１０−４の入力整列部１０２が、入力データＡに同一の順序番号を対応付ける。
【００６１】
サーバ装置１０−１〜サーバ装置１０−４の処理部１０３は、入力データＡと、サーバ装置１０−１〜サーバ装置１０−４のそれぞれの記憶部１０４に記憶された処理前の内部データと、に基づく処理を行うことにより、第１出力データを出力する。図７の例は、サーバ装置１０−１及びサーバ装置１０−２が、非決定性出力データＸを、第１出力データＸとして出力し、サーバ装置１０−３及びサーバ装置１０−４が、決定性出力データＤを、第１出力データＤとして出力する場合を示す。それぞれの第１出力データは、各サーバ装置１０のバッファ１０６に記憶される。
【００６２】
サーバ装置１０−１〜サーバ装置１０−３の出力整列部１０８は、決定性出力データＤを、第２出力データに決定する。これは決定性出力データＤが、サーバ装置１０−３及びサーバ装置１０−４のバッファ１０６に記憶されており、ｂ＋１＝２であるから、出力整列マルチキャストの選択条件を満たすためである。なお図７の例では、非決定性出力データＸも出力整列マルチキャストの選択条件ｂ＋１＝２を満たすが、第１出力データＤの出力処理及び送信処理の方が早かったため、出力整列マルチキャストの選択条件ｂ＋１＝２を先に満たした第１出力データＤが選択されている。
【００６３】
なおサーバ装置１０−４に、ビザンチン障害が発生している前提ではあるが、サーバ装置１０−１〜サーバ装置１０−３は、サーバ装置１０−４にビザンチン障害が発生していることは知る由もない。そのためサーバ装置１０−４の処理部１０３により出力された第１出力データＤも、正常なサーバ装置１０−１〜サーバ装置１０−３により出力された第１出力データと同様に扱われる。
【００６４】
サーバ装置１０−１及びサーバ装置１０−２の判定部１０９は、上述の図５のフローチャートのステップＳ１１、ステップＳ１３、ステップＳ１４、ステップＳ１５及びステップＳ１７にしたがって、第２出力データＤを、出力部１１２の出力に確定する。このフローの例は、例えばサーバ装置１０−１及びサーバ装置１０−２に一時的なリソース不足が発生し、再実行した際にリソース不足が解消された場合を示す。
【００６５】
サーバ装置１０−３の判定部１０９は、上述の図５のフローチャートのステップＳ１１、ステップＳ１３及びステップＳ１７にしたがって、第２出力データＤを、出力部１１２の出力に確定する。
【００６６】
サーバ装置１０−４の判定部１０９は、サーバ装置１０−４でビザンチン障害が発生しているため、出力部１１２の出力は不定である。
【００６７】
結果として、サーバ装置１０−１及びサーバ装置１０−２が非決定性の動作（例えばオペレーティングシステムへのシステムコールによるリソース確保の失敗等）をし、サーバ装置１０−３及びサーバ装置１０−４が決定性の動作（処理の成功）をした場合でも、多重化処理の一貫性が維持される。つまり、サーバ装置１０−１〜サーバ装置１０−３の記憶部１０４の内部データは、入力データＡを処理した後の状態になる。ここで第２出力データＤは決定性がある処理の結果なので、サーバ装置１０−１〜サーバ装置１０−３の記憶部１０４の内部データも自然に同一となる。
【００６８】
上述の２つの処理例は、本実施形態の多重化処理システム１００の動作を説明するために挙げた。しかしながら非決定性出力データの出力は例外的に発生するものなので、図８を参照して通常の動作について説明する。
【００６９】
図８は第１実施形態の多重化処理方法による処理例３を示す図である。図８の例は、サーバ装置１０の数ｎが４、ビザンチン障害の発生数ｂが１（サーバ装置１０−４にビザンチン障害が発生）の場合を示す。サーバ装置１０−３の入力部１０１が入力データＡを受信すると、サーバ装置１０−３の入力整列部１０２が、当該入力データＡをサーバ装置１０−１、サーバ装置１０−２及びサーバ装置１０−４に送信する。なおサーバ装置１０−４は、ビザンチン障害が発生しているので動作が不定の状態である。
【００７０】
サーバ装置１０−１〜サーバ装置１０−３の入力整列部１０２が、入力データＡに同一の順序番号を対応付ける。
【００７１】
サーバ装置１０−１〜サーバ装置１０−３の処理部１０３は、入力データＡと、サーバ装置１０−１〜サーバ装置１０−３のそれぞれの記憶部１０４に記憶された処理前の内部データと、に基づく処理を行うことにより、第１出力データを出力する。図８の例は、サーバ装置１０−１〜サーバ装置１０−３が、決定性出力データＤを、第１出力データＤとして出力する場合を示す。それぞれの第１出力データは、サーバ装置１０−１〜サーバ装置１０−３のバッファ１０６に記憶される。
【００７２】
サーバ装置１０−１〜サーバ装置１０−３の出力整列部１０８は、決定性出力データＤを、第２出力データに決定する。これは決定性出力データＤが、サーバ装置１０−１〜サーバ装置１０−３のバッファ１０６に記憶されており、ｂ＋１＝２＜３であるから、出力整列マルチキャストの選択条件を満たすためである。なおサーバ装置１０−４の第１出力データ？は、出力整列マルチキャストの選択条件を満たさない。
【００７３】
サーバ装置１０−１〜サーバ装置１０−３の判定部１０９は、上述の図５のフローチャートのステップＳ１１、ステップＳ１３及びステップＳ１７にしたがって、第２出力データＤを、出力部１１２の出力に確定する。
【００７４】
結果として、サーバ装置１０−１〜サーバ装置１０−３で多重化処理の一貫性が維持される。また図８の例のように、非決定性出力データＸが１つも出力されない場合は、本来出力されるべき決定性出力データＤが必ず出力される。
【００７５】
以上説明したように、第１実施形態の多重化処理システム１００では、処理部１０３が、決定性出力データ、又は、非決定性出力データを、第１出力データとして出力する。また決定制御部１０７（出力整列部１０８及び判定部１０９）が、自装置の処理部１０３から出力された第１出力データ、または、自装置以外の他のいずれかのサーバ装置１０の処理部１０３から出力された第１出力データのひとつを選択し、第２出力データに決定する。また復元部１０５が、第２出力データが非決定性出力データである場合、記憶部に記憶された内部データを処理前の状態に復元する。また再実行制御部１１０が、第２出力データが決定性出力データであり、かつ、第２出力データと自装置から出力された第１出力データとが一致しない場合、第２出力データと自装置から出力された第１出力データとが一致するか、又は、再実行回数が閾値以上になるまで、入力データと処理前の内部データとに基づく処理を、自装置の処理部１０３に再実行させる。また出力部１１２が、第２出力データが非決定性出力データである場合、又は、第２出力データが決定性出力データであり、かつ、第２出力データと自装置から出力された第１出力データとが一致した場合、第２出力データを出力する。
【００７６】
第１実施形態の多重化処理システム１００によれば、例えば処理部１０３をリソース不足等のエラーの際に必ずしも決定性を持たないプログラムによって実現しても、多重化処理システム１００の多重化処理の一貫性を維持することができる。具体的には、決定性のないエラー処理が発生した場合に、処理部１０３を実現するプログラムが非決定性出力データを出力するようにする。
【００７７】
また第１実施形態の多重化処理システム１００によれば、ある入力データに対して、全てのサーバ装置１０でリソース不足となる場合（例えば入力データが大きすぎて必ずリソース不足となる場合）、全ての正常なサーバ装置１０の出力は、非決定性出力データとなり、全ての正常なサーバ装置１０の記憶部１０４の内部データは、処理前の状態に復元される。復元された状態は、リソース不足の状態ではないことに注意する。これにより多重化処理システム１００は多重化処理を続行できる。なお従来技術の多重化処理では、この場合は全てのサーバ装置１０で障害が発生した場合として扱っていたため、多重化処理が続行できなくなっていた。
【００７８】
また第１実施形態の多重化処理システム１００によれば、ある入力データに対して、全ての正常なサーバ装置１０でリソース不足等の非決定性の動作とならない場合（つまり通常の場合）、本来出力されるべき決定性出力データが出力されるので、多重化処理を続行できる。
【００７９】
また第１実施形態の多重化処理システム１００によれば、ある入力データに対して、リソース不足等の非決定性の動作となるサーバ装置１０と、決定性の動作となるサーバ装置１０が混在する場合も、全てのサーバ装置１０で多重化処理を続行できる（図７参照）。
【００８０】
第１実施形態の多重化処理システム１００は、いずれの場合においても、多重化処理の一貫性が保たれることが特徴である。なお、ｂ台までのコンピュータがビザンチン障害となったとしても、出力整列マルチキャストの選択条件があるため、正常なサーバ装置１０の出力は決定性出力データ又は非決定性出力データのどちらかである。
【００８１】
なお入力整列マルチキャスト又は出力整列マルチキャストの信頼性を維持するための動作条件として、別の条件が課される場合には、上述のｎ＞３ｂの動作条件に加えて、その条件も動作条件に加える。ただし、第１実施形態の多重化処理システム１００は入力整列マルチキャスト処理及び出力整列マルチキャストの実装の仕方によらずに成立する。
【００８２】
（第２実施形態）
次に第２実施形態について説明する。第２実施形態の多重化処理システム１００では、例えば、ある入力データの処理において、リソース不足となるサーバ装置１０と、リソース不足とならないサーバ装置１０が混在する場合に、リソース不足となるサーバ装置１０が多重化処理システム１００から切り離される可能性があった。具体的には、処理部１０３による処理の再実行回数が閾値以上の場合、連携制御部１１１により自装置以外の他のサーバ装置１０との連携が停止される。
【００８３】
第２実施形態の多重化処理システム１００は、第１実施形態の多重化処理システム１００の連携制御部１１１に代えて、コピー部１１３を備える。第２実施形態の説明では、第１実施形態の説明と同様の説明については省略する。
【００８４】
図９は第２実施形態のサーバ装置１０の構成の例を示す図である。第２実施形態のサーバ装置１０は、入力部１０１、入力整列部１０２、処理部１０３、記憶部１０４、復元部１０５、バッファ１０６、決定制御部１０７、再実行制御部１１０、出力部１１２及びコピー部１１３を備える。また決定制御部１０７は、出力整列部１０８及び判定部１０９を備える。
【００８５】
第２実施形態の多重化処理システム１１０の動作条件は、サーバ装置１０の数をｎ、信頼性を維持するために許容されるビザンチン障害のサーバ装置１０の数をｂとするとき、ｎ＞５ｂである。この動作条件は、コピー部１１３が正常なサーバ装置１０の処理後の内部データを特定するために必要となる。
【００８６】
出力整列部１０８による出力整列マルチキャスト処理は、第１実施形態と選択条件が少し異なる。出力整列マルチキャスト処理は、各順序番号に関して、２ｂ＋１以上のサーバ装置１０のバッファ１０６で記憶されている同一の第１出力データを選択し、第２出力データに決定する。このとき、選択された第２出力データが各サーバ装置において一致するように出力整列マルチキャスト処理は動作する。
【００８７】
具体的には、動作条件がｎ＞５ｂであるから、ビザンチン障害となっているサーバ装置１０を除いた、正常なサーバ装置１０の数は少なくとも４ｂ＋１である。すると、第１出力データとして非決定性出力データを出力したサーバ装置１０の数をｘ、第１出力データとして決定性出力データを出力したサーバ装置１０の数をｙとすると、ｘ＋ｙ≧４ｂ＋１である。これより、ｘかｙの少なくとも一方は２ｂ＋１以上である。
【００８８】
コピー部１１３は、処理部１０３による順序番号Ｎの入力データの処理の再実行回数が閾値以上の場合、正常なサーバ装置１０の処理部１０３の当該順序番号の入力データの処理により得られた記憶部１０４の処理後の内部データを、自装置の記憶部１０４にコピーする。このときコピー部１１３は、ｂ＋１以上のサーバ装置１０の記憶部１０４で記憶されている同一の内部データを、自装置の記憶部１０４にコピーする。
【００８９】
図１０は第２実施形態の最終確定処理の例を示すフローチャートである。ステップＳ２６が、第１実施形態の最終確定処理と異なる。ステップＳ２６のコピー処理は、コピー部１１３により行われる。
【００９０】
コピー部１１３のコピー処理について説明する。ビザンチン障害が発生しているサーバ装置１０の存在を前提とする場合、ビザンチン障害が発生しているサーバ装置１０をすぐに特定することはできない。コピー部１１３は、処理部１０３による順序番号Ｎの入力データの処理の再実行回数が閾値以上の場合、正常なサーバ装置１０の記憶部１０４から、当該順序番号の入力データに関する処理後の内部データを、自装置の記憶部１０４にコピーしなければならない。しかしながら、その実現方法は自明ではない。以下にステップＳ２６のコピー処理の例とその正当性を示す。この部分が第２実施形態の特徴である。
【００９１】
図１１は第２実施形態のコピー処理の例を示すフローチャートである。はじめに、コピー部１１３は、自装置の処理部１０３による順序番号Ｎの入力データの処理の再実行回数が閾値以上の場合、当該順序番号Ｎの入力データに関する処理後の内部データの送信要求を、全てのサーバ装置１０に送信する（ステップＳ３１）。ここで、順序番号Ｎの入力データに関する処理後の内部データの送信要求を受信したサーバ装置１０は、当該サーバ装置１０の最終確定処理が終了した後に、当該サーバ装置１０の記憶部１０４に記憶された順序番号Ｎの入力データに関する処理後の内部データを返信する。
【００９２】
次に、コピー部１１３は、順序番号Ｎの入力データに関する処理後の内部データの送信要求を受信したサーバ装置１０から、順序番号Ｎの入力データに関する処理後の内部データを受信する（ステップＳ３２）。次に、コピー部１１３は、ステップＳ３２で受信された複数の受信データ（順序番号Ｎの入力データに関する処理後の内部データ）を比較する（ステップＳ３３）。
【００９３】
次に、コピー部１１３は、同じ受信データがｂ＋１以上あるか否かを判定する（ステップＳ３４）。同じ受信データがｂ＋１以上ない場合（ステップＳ３４、Ｎｏ）、処理は、ステップＳ３２に戻る。同じ受信データがｂ＋１以上ある場合（ステップＳ３４、Ｙｅｓ）、コピー部１１３は、当該受信データを自装置の記憶部１０４にコピーする（ステップＳ３５）。
【００９４】
ステップＳ３４及びステップＳ３５の処理の正当性について説明する。ｂ＋１以上のサーバ装置１０から、同じ内容の受信データが得られたとすれば、そのうち少なくとも１つの受信データは、正常なサーバ装置１０から送信されている。正常なサーバ装置１０を特定できなくても、この受信データ（順序番号Ｎの入力データに関する処理後の内部データ）は正しい状態であるといえる。
【００９５】
コピー部１１３は、第２出力データが決定性出力データである場合に動作する。その第２出力データをＤとする。すると、出力整列マルチキャストの第２出力データの選択条件より、この第２出力データＤは、２ｂ＋１以上のサーバ装置１０の処理部１０３の処理により得られた第１出力データＤである。
【００９６】
ビザンチン障害が発生しているサーバ装置１０の数はｂ以下の前提なので、そのうち正常なサーバ装置１０の数は、（２ｂ＋１）−ｂにより少なくともｂ＋１である。したがって第１出力データと第２出力データとが一致している正常なサーバ装置１０の数はｂ＋１以上ある。
【００９７】
第１出力データと第２出力データとが一致している正常なサーバ装置１０の決定制御部１０７（判定部１０９）では、直ちに、当該第２出力データを出力部１１２の出力に確定することができる。したがって正常なサーバ装置１０は、順序番号Ｎの入力データに関する処理後の内部データの送信要求に応答することができる。その結果、要求元のサーバ装置１０は、少なくともｂ＋１以上の正常なサーバ装置１０から、順序番号Ｎの入力データに関する同じ内容の処理後の内部データを必ず取得できる。したがって、上述の図１１に示すコピー処理のアルゴリズムは必ず完了する。
【００９８】
図１２は第２実施形態の多重化処理方法による処理例を示す図である。図１２の例は、サーバ装置１０の数ｎが６、ビザンチン障害の発生数ｂが１（サーバ装置１０−６にビザンチン障害が発生）の場合を示す。サーバ装置１０−２の入力部１０１が入力データＡを受信すると、サーバ装置１０−２の入力整列部１０２が、当該入力データＡを自装置以外の他のサーバ装置１０に送信する。なおサーバ装置１０−６は、ビザンチン障害が発生しているので動作が不定の状態であるが、図１２の例では入力データＡの処理については正常に動作しているものとして扱う。サーバ装置１０−１〜サーバ装置１０−６の入力整列部１０２は、入力データＡに同一の順序番号を対応付ける。
【００９９】
サーバ装置１０−１〜サーバ装置１０−６の処理部１０３は、入力データＡと、サーバ装置１０−１〜サーバ装置１０−６のそれぞれの記憶部１０４に記憶された処理前の内部データと、に基づく処理を行うことにより、第１出力データを出力する。図１２の例は、サーバ装置１０−１〜サーバ装置１０−３が、非決定性出力データＸを、第１出力データＸとして出力し、サーバ装置１０−４〜サーバ装置１０−６が、決定性出力データＤを、第１出力データＤとして出力する場合を示す。それぞれの第１出力データは、各サーバ装置１０のバッファ１０６に記憶される。
【０１００】
サーバ装置１０−１〜サーバ装置１０−６の出力整列部１０８は、決定性出力データＤを、第２出力データに決定する。これは決定性出力データＤが、サーバ装置１０−４〜サーバ装置１０−６のバッファ１０６に記憶されており、２ｂ＋１＝３であるから、出力整列マルチキャストの選択条件を満たすためである。
【０１０１】
図１２の例は、サーバ装置１０−１及びサーバ装置１０−２は、再実行回数が閾値以上になる前に、第２出力データＤが得られた場合を示す。またサーバ装置１０−３は、再実行回数が閾値以上になった場合を示す。すなわちサーバ装置１０−３では、コピー部１１３のコピー処理が動作し、ｂ＋１＝２以上のサーバ装置１０で同じ内容の処理後の内部データが、サーバ装置１０−３の記憶部１０４にコピーされる。図１２の例は、全てのサーバ装置１０の出力部１１２から決定性出力データＤが出力される場合を示す。
【０１０２】
最後に、第１及び第２実施形態のサーバ装置１０のハードウェア構成の例について説明する。図１３は、第１及び第２実施形態のサーバ装置１０のハードウェア構成の例を示す図である。なおクライアント装置２０のハードウェア構成の例もサーバ装置１０と同様である。
【０１０３】
第１及び第２実施形態のサーバ装置１０は、制御装置３０１、主記憶装置３０２、補助記憶装置３０３、表示装置３０４、入力装置３０５及び通信装置３０６を備える。制御装置３０１、主記憶装置３０２、補助記憶装置３０３、表示装置３０４、入力装置３０５及び通信装置３０６は、バス３１０を介して接続されている。
【０１０４】
制御装置３０１は補助記憶装置３０３から主記憶装置３０２に読み出されたプログラムを実行する。主記憶装置３０２はＲＯＭ及びＲＡＭ等のメモリである。補助記憶装置３０３はメモリカード及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等である。
【０１０５】
表示装置３０４は情報を表示する。表示装置３０４は、例えば液晶ディスプレイである。入力装置３０５は、情報の入力を受け付ける。入力装置３０５は、例えばキーボード等である。なお表示装置３０４及び入力装置３０５は、表示機能と入力機能とを有する液晶タッチパネル等でもよい。通信装置３０６は他の装置と通信する。
【０１０６】
サーバ装置１０で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、メモリカード、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータ・プログラム・プロダクトとして提供される。
【０１０７】
またサーバ装置１０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。またサーバ装置１０が実行するプログラムを、ダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【０１０８】
またサーバ装置１０のプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１０９】
サーバ装置１０で実行されるプログラムは、上述の実施形態のサーバ装置１０の構成（機能ブロック）のうち、プログラムにより実現可能な機能ブロックを含むモジュール構成となっている。プログラムにより実現可能な機能ブロックは、例えば入力部１０１、入力整列部１０２、処理部１０３、復元部１０５、バッファ１０６、決定制御部１０７（出力整列部１０８及び判定部１０９）、再実行制御部１１０、連携制御部１１１及び出力部１１２である。
【０１１０】
プログラムにより実現される機能ブロックは、制御装置３０１が補助記憶装置３０３等の記憶媒体からプログラムを読み出して実行することにより、プログラムにより実現される機能ブロックが主記憶装置３０２にロードされる。すなわちプログラムにより実現される機能ブロックは、主記憶装置３０２上に生成される。
【０１１１】
なお実施形態のサーバ装置１０の機能ブロックを、プログラムと、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のハードウェアと、を組み合わせることにより実現してもよい。
【０１１２】
以上説明したように、第２実施形態の多重化処理システム１００では、再実行回数が閾値以上になったサーバ装置１０を、多重化処理システム１００から切り離すことなく、多重化処理に利用できる。
【０１１３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【図１】
2017042894.tif 000003
【図２】
2017042894.tif 000004
【図３】
2017042894.tif 000005
【図４】
2017042894.tif 000006
【図５】
2017042894.tif 000007
【図６】
2017042894.tif 000008
【図７】
2017042894.tif 000009
【図８】
2017042894.tif 000010
【図９】
2017042894.tif 000011
【図１０】
2017042894.tif 000012
【図１１】
2017042894.tif 000013
【図１２】
2017042894.tif 000014
【図１３】
2017042894.tif 000015
【国際調査報告】
2017042894.tif 000016
2017042894.tif 000017
2017042894.tif 000018
2017042894.tif 000019