(57)【要約】      （修正有）【課題】動的かつ自律的に、情報処理装置の処理状態のキャッチアップが可能となる分散コンピューティングシステムを提供する。【解決手段】各情報処理装置Ｌ，Ａ，Ｂは、送信元最大操作通番データが、自己最大操作通番データより大きいときに、送信元の前記情報処理装置に対して、キャッチアップデータの返信を要求するキャッチアップデータ要求手段５１と、前記キャッチアップデータの返信要求をうけ、当該キャッチアップデータを返信するキャッチアップデータ返信手段５４とを備え、前記キャッチアップデータを受信した前記各情報処理装置は、前記操作実行手段により、前記キャッチアップ操作通番データに対応した操作コマンドを、データベースのデータに適用することにより、データベースのキャッチアップ処理を行う。【選択図】図３
2011253390.tif 000002
【特許請求の範囲】
【請求項１】
各々がネットワークで接続されている複数の情報処理装置から構成され、
前記各情報処理装置は、同一の初期状態であるデータベースと、
操作の順番を示す操作通番と当該操作通番に一対一で対応する操作コマンドに対応して、前記データベースに格納されているデータに対して処理を実行するための操作実行手段と、を備え、
前記各情報処理装置が同一の前記操作コマンドを実行することにより同一のタスクを行う分散コンピューティングシステムにおいて、
さらに、前記各情報処理装置は、
前記ネットワークを介して、自身以外の前記各情報処理装置に対して所望の時間間隔で
送信時間データと、自身が処理した最新の前記操作コマンドに対応する操作通番である自己最大操作通番データとを含む発信データを送信するための発信データ送信手段と、
前記ネットワークを介して、前記自身以外の前記各情報処理装置から所望の時間間隔で送信された、
送信時間データと、前自身以外の各情報処理装置が処理した最新の前記操作コマンドに対応する操作通番である送信元最大操作通番データとを含む被発信データを受信するための被発信データ受信手段と、
自身以外の前記情報処理装置から送信された前記送信元最大操作通番データと、前記被発信データを受信した時点における自己最大操作通番データとを比較する操作通番比較手段と、
前記送信元最大操作通番データが、前記自己最大操作通番データより大きいときに、送信元の前記情報処理装置に対して、処理状態のキャッチアップに必要となるキャッチアップ操作通番データ及び前記キャッチアップ操作通番データに対応するキャッチアップ操作コマンドを有するキャッチアップデータの返信を要求するキャッチアップデータ要求手段と、
前記キャッチアップデータの返信要求をうけ、当該キャッチアップデータを返信するキャッチアップデータ返信手段とを備え、
前記キャッチアップデータを受信した前記情報処理装置は、前記操作実行手段により、前記キャッチアップ操作通番データに対応した操作コマンドを、前記情報処理装置の処理状態に適用することにより、前記送信元の前記情報処理装置の処理状態を複製し、キャッチアップすることを特徴とする分散コンピューティングシステム。
【請求項２】
前記キャッチアップ操作通番データと、前記キャッチアップ操作通番データに対応する操作コマンドが、前記情報処理装置のキャッシュメモリに記憶させられるようになっていることを特徴とする請求項１に記載の分散コンピューティングシステム。
【請求項３】
前記パケットデータ送信手段は、一定時間間隔で、前記各情報処理装置との間で、前記発信データを送信していることを特徴とする請求項１又は請求項２に記載の分散コンピューティングシステム。
【請求項４】
前記キャッチアップを行っている前記情報処理装置は、前記キャッチアップの終了後に、キャッチアップ終了データを前記送信元の前記情報処理装置に送信することができるようになっており、
前記送信元の前記情報処理装置は、当該キャッチアップデータの受信後から前記キャッチアップ終了データを受信する間、自身の処理状態に対する前記操作コマンドの実行を中断するように構成されていることを特徴とする請求項１乃至請求項３のいずれか１項に記載の分散コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータベース等の状態のキャッチアップが可能である分散コンピューティングシステムに関する。
【背景技術】
【０００２】
クラウドコンピューティングに代表されるように、近年では、通信ネットワークの発達により、分散コンピューティングシステムが発達している。この分散コンピューティングシステムでは、複数のサーバが、同時並行的にそれぞれの処理を実行し、ネットワークを介して互いに通信しあうことにより、その処理を行っている。
このような分散コンピューティングシステムにおいては、当該システムを構成するサーバに障害が発生した場合であっても、提供するサービスを継続することが求められているため、現行系サーバと待機系サーバ群を備える冗長構成が採用されていることが一般的である。
【０００３】
上記冗長構成の分散コンピューティングシステムでは、現行系サーバに障害等が発生した場合、待機系サーバに切り替えることによってサービスを継続させることが可能となる。そのような耐障害性を高めるためには、各待機系サーバが現行系サーバのオリジナルデータベース等の状態と、同一のレプリカデータベース等の状態を保持している必要がある。そのため、いずれかの待機系サーバに障害が生じた場合には、レプリカデータベース等の状態の復旧を行い、オリジナルデータベース等の状態と同一性を保つ、すなわちキャッチアップしておく必要がある。
【０００４】
従来のデータベースのキャッチアップ方法の１つとしては、以下の方法が存在する。すなわち、バックアップ時におけるデータベースと、当該バックアップ時と次の時点のバックアップ時までにデータベースに対して行った操作コマンド列をジャーナルとして永続化保存する。そして、障害等発生時には、バックアップ時を初期状態とし、当該初期状態のデータに、順次、記憶されている操作コマンド列を実行することにより、所定の状態にまでデータベースを回復する方法である。
【０００５】
ところで、上記方法では、キャッチアップをしている間に、現行系サーバが処理を実行してしまっている場合には、さらに、最新の状態となるまで、データベースのキャッチアップをしなければならない。そこで、オリジナルデータベースを有するサーバ（情報処理装置）からレプリカデータベースを有するサーバへと更新情報（データベース更新情報）を順次に通知し、更新情報が通知されたサーバのデータベースに当該更新情報を反映させることにより、順次、データベースを同一内容に更新するデータベースのキャッチアップ技術が存在している（特許文献１）。
【０００６】
【特許文献１】特開平１１−２９６４２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、従来のキャッチアップシステムでは、複製先情報を各サーバのみにおいて管理しているため、更新情報を通知した先のサーバに障害が発生しているような場合、該障害の発生しているサーバ及びその先のサーバではデータベースの更新ができなくなってしまうため、更新が必要な全てのデータベース等の状態を更新することができないことがあった。
また、上記キャッチアップでは、現行系サーバがキャッチアップの指示を統括することになるため、自律的なキャッチアップをするものではなく、また、キャッチアップ時には、他の全てのサーバの動作を停止し、操作列を同期させてから再始動を行うという静的な処理を行うことができるにすぎないという課題が存在していた。
【０００８】
本発明は、上記の問題点を解決するためになされたものであり、高速かつ自律的に、情報処理装置の処理状態に対する動的なキャッチアップが可能となる分散コンピューティングシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の分散コンピューティングシステムは、各々がネットワークで接続されている複数の情報処理装置から構成され、前記各情報処理装置は、同一の初期状態であるデータベースと、操作の順番を示す操作通番と当該操作通番に一対一で対応する操作コマンドに対応して、前記データベースに格納されているデータに対して処理を実行するための操作実行手段と、を備え、前記各情報処理装置が同一の前記操作コマンドを実行することにより同一のタスクを行う分散コンピューティングシステムにおいて、さらに、前記各情報処理装置は、前記ネットワークを介して、自身以外の前記各情報処理装置に対して所望の時間間隔で送信時間データと、自身が処理した最新の前記操作コマンドに対応する操作通番である自己最大操作通番データとを含む発信データを送信するための発信データ送信手段と、前記ネットワークを介して、前記自身以外の前記各情報処理装置から所望の時間間隔で送信された、送信時間データと、前自身以外の各情報処理装置が処理した最新の前記操作コマンドに対応する操作通番である送信元最大操作通番データとを含む被発信データを受信するための被発信データ受信手段と、自身以外の前記情報処理装置から送信された前記送信元最大操作通番データと、前記被発信データを受信した時点における自己最大操作通番データとを比較する操作通番比較手段と、前記送信元最大操作通番データが、前記自己最大操作通番データより大きいときに、送信元の前記情報処理装置に対して、処理状態のキャッチアップに必要となるキャッチアップ操作通番データ及び前記キャッチアップ操作通番データに対応するキャッチアップ操作コマンドを有するキャッチアップデータの返信を要求するキャッチアップデータ要求手段と、前記キャッチアップデータの返信要求をうけ、当該キャッチアップデータを返信するキャッチアップデータ返信手段とを備え、前記キャッチアップデータを受信した前記情報処理装置は、前記操作実行手段により、前記キャッチアップ操作通番データに対応した操作コマンドを、前記情報処理装置の処理状態に適用することにより、前記送信元の前記情報処理装置の処理状態を複製して、キャッチアップすることを特徴としている。
【００１０】
ここで、キャッチアップとは、自身の情報処理装置の処理状態（例えば、データベースに格納されているデータ等の処理状態）が、自身以外の他の情報処理装置の処理状態と比較して遅れている場合において、先行する情報処理装置の処理状態に追いつくように自身の処理状態に対して操作コマンドの実行を行い、自身の情報処理装置の処理状態と、自身以外の他の情報処理装置の処理状態を同一化することをいう。
また、上記情報処理装置の処理状態は、ある一時点における処理状態に操作コマンド列を実行させることにより変化していくものであり、データベースのみならずメモリ上の対象となる状態（例えば排他用資源）をも含む概念である。
【００１１】
本発明によれば、各情報処理装置は、自身以外の総ての前記各情報処理装置に対して、発信データ送信手段及び被発信データ受信手段を備え、発信データ及び被発信データを送受信することにより、自身以外の各情報処理装置のタスクの処理状況を把握することができる。そして、キャッチアップデータ要求手段により、自身以外の情報処理装置の最新のタスクの処理状況を示す送信元最大操作通番データが、自己最大操作通番データより大きいときに、自身の情報処理装置のキャッチアップの必要性を認識し、キャッチアップ操作通番データを他の情報処理装置から送信を受けることができる。その後、当該キャッチアップ操作通番データに対応した操作コマンドを自身の処理状態に適用することにより、処理状態のキャッチアップを行うことができる。このように、情報処理装置の処理状態のキャッチアップを自律的かつ動的に行うことができる。
【００１２】
また、前記分散コンピューティングシステムにおいて、前記キャッチアップ操作通番データと、前記キャッチアップ操作通番データに対応する操作コマンドが、前記情報処理装置のキャッシュメモリに記憶させられるようになっていることが好適である。
【００１３】
本発明によれば、前記キャッチアップ操作通番データ等が、キャッシュメモリに記憶させられるようになっているため、処理状態のキャッチアップを迅速に行うことができる。
【００１４】
前記分散コンピューティングシステムにおいて、前記発信データ送信手段は、一定時間間隔で、前記各情報処理装置との間で、前記発信データを送受信していることが好適である。
【００１５】
本発明によれば、発信データ送信手段は、一定時間間隔で各情報処理装置との間で発信データを送信し、被発信データを受信することにより、常時、各情報処理装置のタスクの進行状況を確認しているため、自身のタスクが他の情報処理装置のタスクから遅れたことを即座に認識し、自律的かつ迅速に、処理状態のキャッチアップを実行できる。
【００１６】
前記分散コンピューティングシステムにおいて、前記キャッチアップ処理を行っている前記情報処理装置（以下、「キャッチアップ実行情報処理装置」という。）は、前記キャッチアップ処理の終了後に、キャッチアップ終了データを前記送信元の前記情報処理装置（以下、「被キャッチアップ情報処理装置」という。）に送信することができるようになっており、前記送信元の前記情報処理装置は、当該キャッチアップデータの受信後から前記キャッチアップ終了データを受信する間、自身の処理状態に対する前記操作コマンドの実行を中断するように構成されていることが好適である。
【００１７】
本発明によれば、キャッチアップデータの返信の要求を受けた被キャッチアップ情報処理装置は、キャッチアップデータを返信した後からキャッチアップ終了データを受信する間、自身のデータベースに対する操作コマンドの実行を中断するように構成されているため、キャッチアップ実行情報処理装置のキャッチアップ作業中に、被キャッチアップ情報処理装置のタスクが進行することを抑止することができる。
【発明の効果】
【００１８】
本発明によれば、高速かつ自律的に、情報処理装置の処理状態に対する動的なキャッチアップが可能となる分散コンピューティングシステムを提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の分散コンピューティングシステムを示す概要図である。
【図２】本発明の分散コンピューティングシステムを示す全体構成図である。
【図３】本発明の分散コンピューティングシステムの構成要素であるサーバの構成図である。
【図４】（ａ）発信パケットデータの概念図である。  （ｂ）キャッチアップ終了データの概念図である。  （ｃ）キャッチアップ要求データの概念図である。  （ｄ）キャッチアップ応答データの概念図である。
【図５】本発明の分散コンピューティングシステムの動作を示すフロー図である。
【発明を実施するための形態】
【００２０】
本発明を実施するための一形態（以下、「実施形態」という。）について、図面を参照して詳細に説明する。
本発明の分散コンピューティングシステムＳ（以下、「本システム」という。）は、複数台のコンピューティングデバイス（情報処理装置）がインターネット及びＬＡＮ等の通信ネットワークＮを介して接続されていることにより構成されている。以下、説明の便宜上、一台のリーダサーバＬと、２台のエージェントサーバＡ，Ｂ（以下、３台のサーバを総称して「各サーバ」という場合がある。）を例とし、処理状態として、データベースＤのキャッチアップを行う場合について説明する。
【００２１】
なお、上記各サーバＬ，Ａ，Ｂは、名称を変えて説明しているが、その構成は同様であり、それぞれがクライアントＫの要求に応じて他のサーバの役割を担える装置となっている。そのため、同一の構成要素を説明するに際し、当該構成要素を総称する場合には同一の符号を付すことを原則とするが、サーバの違いによる構成要素の違いを表す際には当該符号の末尾にさらに、Ｌ，Ａ，Ｂを付して区別するものとする（但し、符号は図示していない場合がある）。
【００２２】
また、以下は、説明の便宜上、特に断らない限り、送信元をリーダサーバＬとし、受信元及び返信元をエージェントサーバＡ，Ｂとする。また、エージェントサーバＡ，Ｂのうち、リーダサーバＬと比較してタスクが遅れている装置は、エージェントサーバＡとし、当該エージェントサーバＡが、リーダサーバＬに対して、データベースＤＡのキャッチアップ（以下、単に「キャッチアップ」という。）を行う場合を想定して説明を行う。
なお、各エージェントサーバＡ，Ｂの間でもタスクの遅れが生じることがありうるが、本システムＳでは、そのような場合にも各装置が動作して、同様のキャッチアップが可能となっている。
【００２３】
〔本システムＳの全体構成〕
図１及び図２に示すように、本実施形態の分散コンピューティングシステムＳは、３台のサーバＬ，Ａ，Ｂから構成されている。各サーバＬ，Ａ，Ｂは、互いに通信可能に接続され、それらのＩＰアドレスを把握するクライアントＫにネットワークＮを介して接続されている。各サーバＬ，Ａ，Ｂは、同一のデータベースＤＬ，ＤＡ，ＤＢ（初期データベース）に格納されているデータに対して、クライアントＫからの指示を受け、操作実行手段（図示せず）を介して、演算処理等の操作コマンド（列）を実行することにより所望のタスク（以下、「本件タスク」という。）を行うことができるようになっている。
【００２４】
上記操作コマンドを実行するためのアプリケーションプログラム及び本件タスクを分散処理するための分散コンピューティング用のプログラムは、ここでは各サーバＬ，Ａ，Ｂのそれぞれにインストールされている。
各サーバＬ，Ａ，Ｂは、それぞれ汎用コンピュータであり、ＣＰＵ（図示せず）、キャッシュメモリＭ等を備えているが、説明の便宜上は、図２に示すように、そのＣＰＵ、記憶装置等のプロセッサ能力、ストレージ能力を合意形成部４Ｌ，４Ａ，４Ｂと実行部５Ｌ，５Ａ，５Ｂに分けることができるように構成されている。
【００２５】
合意形成部４Ｌ，４Ａ，４Ｂは、セルの内部で既知であるＰａｘｏｓにより合意を形成するためのＰａｘｏｓ装置Ｐを構成する。Ｐａｘｏｓ装置Ｐにおいては、上記分散コンピューティング用プログラムに従って、過半数以上のサーバにより合意形成された操作コマンドを実行し、本件タスクを行うことができるようになっている。すなわち、操作コマンドは、上記Ｐａｘｓｏｓ装置Ｐにより決定され、実行部５Ｌ，５Ａ，５Ｂは当該操作コマンドを上記アプリケーションプログラムに適用することにより、本件タスクを実行することができるようになっている（この点に関しては詳述せず）。
【００２６】
上記操作コマンドには、操作通番（整数値が１ずつ増加するように設定されているシーケンス番号）のデータが操作コマンドに一対一で対応するように付加されており、これらの操作コマンドデータは、後記消去時刻まで、キャッシュメモリＭに記録されている。
【００２７】
〔キャッチアップシステム〕
図３に示すように、本システムＳでは、各サーバＬ，Ａ，Ｂは、キャッチアップシステムを構成するために、通信データ制御手段１０、キャッチアップ制御手段３０等を備えている。
【００２８】
（通信データ制御手段１０）
通信データ制御手段１０は、通信手段７０であるデータ送信装置８０及びデータ受信装置８５（パケットデータ受信手段）を介して、各種データの送受信を制御するための手段であり、ＨＢ通信制御装置２０（但し、ＨＢは「ハートビート」の略である。）を備えている。このＨＢ通信制御装置２０は、各種の通信データのうち、自身以外の総てのサーバとの双方向通信を維持するためのハートビート通信を制御する装置であり、さらに、ＨＢ通信データ作成装置２１、ＨＢ通信状態確認装置２２及びＨＢ通信データ記憶装置２３を備えている。
【００２９】
ＨＢ通信データ作成装置２１は、ハートビート通信を行うための発信パケットデータを作成するための装置である。
「発信パケットデータ」は、予め割り当てられている送信元サーバ装置番号（例えば、リーダサーバＬの装置番号）及び送信先サーバ装置番号（例えば、エージェントサーバＡ，Ｂの装置番号）、送信元サーバの計時機能に基づく送信時刻タイムスタンプ（送信時間データ）（以下、「送信時刻タイムスタンプ」という。）、送信先サーバが、後記ＨＢ通信データ記憶装置２３に記憶している、発信パケットデータの送信元サーバから一時点前に送られてきた送信時刻タイムスタンプ（以下、「記憶済送信時刻タイムスタンプ」という。）（但し、初回の通信時には存在しないため「０」）（詳細は後記）及び自身が既に処理している最新の操作コマンドの操作通番（以下、「自己最大操作通番」という。）のデータを少なくとも含んでいる（図４（ａ））。
【００３０】
なお、各サーバＬ，Ａ，Ｂは、同一の構成を有する装置であり、各々のサーバＬ，Ａ，Ｂが相互に通信を行っているため、各エージェントサーバＡ，Ｂから送信された発信パケットデータの基本構造は、リーダサーバＬから送信された発信パケットデータと同じである。各サーバは、それぞれが、上記発信パケットデータの送受信を行っており、当該発信パケットデータを送信する又は受信することになる。そのため、説明の便宜上、各サーバが自ら発信したパケットデータを発信パケットデータ、送信先のサーバから送信されたパケットデータを「被発信パケットデータ」と称して、区別することとする。
そして、特段の説明がない場合には、送信先と称した場合は、各種のデータを発信したサーバからみた相手方サーバのことを言い、送信元と称した場合は、各種データを送信した自身のサーバ、或いは、各種データを受信したサーバからみた相手方サーバのことを言うこととする。
【００３１】
また、被発信パケットデータにおける自己最大操作通番は、送信元のサーバが既に処理している最新の操作コマンドの操作通番であり、特許請求の範囲における「送信元最大操作通番」となる。
【００３２】
ＨＢ通信データ送信装置８１（発信パケットデータ送信手段）は、データ送信装置８０の一部を形成しており、ＨＢ通信データ作成装置２１により作成された発信パケットデータを、自身以外の各サーバに送信するための装置である。本実施形態では、リーダサーバＬは、所定時間間隔（Δｔ）で、自身以外の各エージェントサーバＡ，Ｂに発信パケットデータを送信し続けるようになっている。また、他のエージェントサーバＡ，Ｂも、リーダサーバＬと同様に、自身以外の各サーバＬ，Ｂ（又はＡ）に被発信パケットデータを送信し続けるようになっている。
【００３３】
ＨＢ通信データ受信装置８６（被発信パケットデータ受信手段）は、データ受信装置８５の一部を形成しており、自身以外のサーバのＨＢ通信データ送信装置８１から送信された被発信パケットデータを受信するために、常時動作している装置である。
【００３４】
ＨＢ通信データ記憶装置２３は、送信元の各サーバから送信された被発信パケットデータを、ＨＢ通信データ受信装置８６を介して受信し、一時的に、かつ、読出し自在に記憶するための装置である。
エージェントサーバＡのＨＢ通信データ記憶装置２３Ａでは、発信パケットデータの送信元であり、被発信パケットデータの送信先であるリーダサーバＬの送信時刻タイムスタンプを記憶済送信時刻タイムスタンプとして、リーダサーバＬの装置番号と関連づけて記憶するとともに、当該リーダサーバＬの送信元最大操作通番を記憶することができるようになっている。
また、リーダサーバＬのＨＢ通信データ記憶装置２３Ｌでは、エージェントサーバＡ，Ｂの送信時刻タイムスタンプを記憶済送信時刻タイムスタンプとして、エージェントサーバＡ，Ｂの装置番号と関連づけて記憶するとともに、エージェントサーバＡ，Ｂの送信元最大操作通番を記憶することができるようになっている。
【００３５】
また、ＨＢ通信データ記憶装置２３は、自身以外の各サーバＡ，Ｂから送信される被発信パケットデータを常に監視し、受信した各送信元最大操作通番のうちで最大の通番のデータを通信最大操作通番として、その発信元の装置番号と関連して保存、更新し続けることができるようになっている。
【００３６】
ＨＢ通信状態確認装置２２は、ＨＢ通信データ送信装置８１とＨＢ通信データ受信装置８６と協働して、自身と自身以外の各サーバとの間に双方向の通信が確立されているか否かを判断するための装置である。
上記の通り、例えば、リーダサーバＬのＨＢ通信データ送信装置８１Ｌは、所定時間間隔（Δｔ）で、自身以外の各エージェントサーバＡ，Ｂに発信パケットデータを送信している。送信先のエージェントサーバＡ，Ｂは、障害等が生じて受信不可能な状態になっていない限りは、当該発信パケットデータを受信し続けているとともに、自らも、送信元のリーダサーバＬに対して、同一の時間間隔（Δｔ）で発信パケットデータを送信し続けている（但し、送信開始時刻は一致していなくてもよい）。
【００３７】
このような状況の中、ＨＢ通信状態確認装置２２は、以下の判断を行うことにより、各サーバ間において、ＨＢ通信が確立されているか否かを判断できるようになっている。
すなわち、各サーバは、同一の時間間隔（Δｔ）で通信を行っているため、予め定められている各サーバ間の通信時間（以下、「サーバ間通信時間」という。）をΔｄとすると、通信が確立されている場合には、リーダサーバＬが発信パケットデータの送信を行った後、２Δｄ乃至Δｔ＋２Δｄの時間の間に、エージェントサーバＡ，Ｂから被発信パケットデータが送信されることになる。
【００３８】
ところで、被発信パケットデータには、当該被発信パケットデータの送信先であるリーダサーバＬの一時点前の送信時刻である記憶済送信時刻タイムスタンプが記録されており、当該記憶済送信時刻タイムスタンプと、被発信パケットデータの受信時刻の差を便宜上、ＨＢ応答時間と定義すると、当該ＨＢ応答時間が、Δｔ＋２Δｄ＋所定余裕時間（この値を、「ＨＢ通信状態判別基準時間値」という。）以下であるか否かにより、ＨＢ通信が確立されているか否かを判断することができる。したがって、本装置では、ＨＢ応答時間がＨＢ通信状態判別基準時間値以下であれば、各サーバ間での双方向通信が確保されていると判断し、それより大きければ双方向通信が遮断されていると判断することができるようになっている。
【００３９】
なお、記憶済送信時刻タイムスタンプと、被発信パケットデータの受信時刻は、同一サーバの計時機能により記録されているため、両時刻の差をとることにより、容易にＨＢ間隔を算出できるようになっている。
【００４０】
（キャッチアップ制御手段３０）
キャッチアップ制御手段３０は、各サーバのデータベースＤ（作業用データベースＤ’も含む）をキャッチアップさせるための処理を行うための手段であり、キャッチアップ判定装置４０及びキャッチアップ統括装置５０を備えている。
【００４１】
１）キャッチアップ判定装置４０
キャッチアップ判定装置４０は、各サーバＬ，Ａ，Ｂに関して、キャッチアップが必要か否かを判断するための装置であり、操作通番比較装置４１及びキャッチアップ状態判定装置４２を備えている。
【００４２】
操作通番比較装置４１は、何れかのサーバに対して、キャッチアップ要求を行うか否かの判断をするための装置であり、以下の処理を行うことができるように構成されている。すなわち、操作通番比較装置４１は、上記通信最大操作通番の値と、コマンド実行部（図示せず）から送られる自己最大操作通番の値とを比較し、通信最大操作通番の値が大きい場合には、送信元のサーバの操作コマンドの進度が自身の操作コマンドの進度と比較して先行していると判断し、後記キャッチアップ操作通番データ要求装置５１に対して、送信元サーバに向けたキャッチアップ要求データの発生を要求することができるようになっている。その一方で、通信最大操作通番の値が自己最大操作通番の値以下の場合には、自身の操作コマンドの進度が、送信元サーバの操作コマンドの進度と比較して先行していないと判断し、それ以降の処理を行わないようになっている。
【００４３】
キャッチアップ状態判定装置４２は、各サーバＬ，Ａ，Ｂがキャッチアップのための操作コマンド（以下、「キャッチアップ操作コマンド」という。）を行っている際に、キャッチアップが完了したか否かを判定する装置であり、キャッチアップ時における自己最大操作通番の値が、通信最大操作通番の値に達したか否かを判断するとともに、当該自己最大操作通番の値が通信最大操作通番の値に達した場合（以下、「キャッチアップ終了時」という。）には、例えば、エージェントサーバＡが、後記するキャッチアップ要求データを送信した送信先のリーダサーバＬに対して、データ送信装置８０Ａを介して、キャッチアップ終了データを送信するための装置である。
【００４４】
「キャッチアップ終了データ」は、送信元サーバの装置番号（例えば、エージェントサーバＡの装置番号）、送信先サーバの装置番号（例えば、リーダサーバＬの装置番号）、キャッチアップが終了したことを示す識別データ（以下、「キャッチアップ終了タイプ」という。）を少なくとも含むデータである（図４（ｂ））。
【００４５】
２）キャッチアップ統括装置５０
キャッチアップ統括装置５０は、各エージェントサーバＡ，Ｂがキャッチアップを行う場合に必要なデータを算出することや、キャッチアップの実行を行わせること、キャッチアップ実行中の自身の処理の中断及び再開等を制御することなどを行う装置である。
このキャッチアップ統括装置５０は、キャッチアップデータ要求装置５１（キャッチアップデータ要求手段）、抑止要求時間算出装置５２、タスク中断時刻設定装置５３、キャッチアップデータ返信装置５４（キャッチアップデータ返信手段）、キャッチアップ命令装置５５を備えている。
【００４６】
○キャッチアップデータ要求装置５１
キャッチアップデータ要求装置５１は、操作通番比較装置４１からキャッチアップ要求データの発生要求があった場合に、操作コマンドの進度が先行しているサーバ（例えば、リーダサーバＬ）に対して、当該データを作成し、データ送信装置８０により送信する装置である。
【００４７】
「キャッチアップ要求データ」は、キャッチアップを実行するサーバが送信するものであり、送信元サーバの装置番号（例えば、エージェントサーバＡの装置番号）、送信先サーバの装置番号（例えば、リーダサーバＬの装置番号）、相手の操作コマンドに対応するようにキャッチアップを行いたいことを示す識別データ（以下、「キャッチアップ要求タイプ」という。）、キャッチアップ要求コマンドの操作通番（以下、「キャッチアップ要求操作通番」という。）及び後記タスク抑止要求時間のデータを少なくとも含むデータである（図４（ｃ））。
【００４８】
ここで、キャッチアップ要求操作通番とは、自身の処理が遅れている対象となっているコマンドに対応する操作通番であり、例えば、送信元のエージェントサーバＡにおける自己最大操作通番に１を加えた値から通信最大操作通番までの値である。そのため、キャッチアップ要求データの数は、（通信最大操作通番−既処理操作通番）の個数が必要となる。
なお、このキャッチアップ要求データは、個々の操作コマンド毎に送信してもよいが、通信処理の負荷を軽減するためには、キャッチアップを行うことが必要な操作コマンドの数（操作コマンド列）毎にまとめて送信することが好適である。
【００４９】
○抑止要求時間算出装置５２
本システムＳでは、キャッチアップを実行しているサーバ（以下、「キャッチアップ実行サーバ」という。）のキャッチアップ実行時において、キャッチアップされているサーバ（以下、「被キャッチアップサーバ」という。）が新たな操作コマンドを実行しないように、当該被キャッチアップサーバのタスクの処理を中断させることができるように構成されている。
タスクの処理を中断させるための時間は、操作コマンドの種類及び数により異なってくるが、抑止要求時間算出装置５２では、それらを考慮して、必要となるタスクの抑止要求時間を算出するための手段である。
例えば、抑止要求時間として、上記サーバ間通信時間（Δｄ）、操作コマンドの実行時間（Σn△ｌn×ｎ）（但し、Σは、（△ｌn×ｎ）につき１〜ｎまでの総和をする演算子、Δｌnはｎ番目の操作コマンドの実行時間、ｎは実行が必要な操作コマンドの数を示す整数値）の和を与えることができる。
【００５０】
このように、抑止要求時間算出装置５２は、操作通番比較装置４１によりキャッチアップが必要であると判断された場合に、予め定められているサーバ間通信時間及び操作コマンドの処理時間によりタスク抑止要求時間を計算し、キャッチアップ要求データの一部として受け渡すことができるようになっている。
なお、上記タスク抑止要求時間は、キャッチアップ終了時には、初期設定値である「０」となるように構成されている。
【００５１】
○タスク中断時刻設定装置５３
タスク中断時刻設定装置５３は、送信された上記タスク抑止要求時間に対応するように、被キャッチアップサーバに、タスクの中断時刻（以下、「タスク中断時刻」という。）を設定し、当該タスク中断時刻に達するまで、操作コマンドの実行を中断させるための手段である。
本装置では、通常時には、タスク中断時刻は「０」に初期設定されているが、被キャッチアップサーバ（例えば、リーダサーバＬ）がキャッチアップ要求データを受信すると、当該被キャッチアップサーバの計時機能に基づく現在時刻にタスク抑止要求時間を加算することにより、タスク中断時刻が設定されるようになっている。
【００５２】
上記タスク中断時刻が設定された被キャッチアップサーバでは、現在時刻がタスク中断時刻を上回る（キャッチアップが終了し、タスク中断時刻が初期設定値である「０」に戻った場合も含む）まで、作業用データベースＤに対し、操作コマンドによる処理が実行できないように、演算処理装置に対して、操作コマンド実行中止命令を発することができるようになっている。
これにより、被キャッチアップサーバは、キャッチアップ実行サーバ（例えば、エージェントサーバＡ）から送信されるキャッチアップ終了データを受信するまで自らの操作コマンドの実行が停止するようになっており、キャッチアップ実行サーバがキャッチアップするまでの間に被キャッチアップサーバのタスクが進行することを抑止することが可能となっている。
【００５３】
なお、このタスク中断時刻は、キャッチアップが終了する、すなわち、キャッチアップ終了データが受信されると、初期設定値である「０」となるように構成されている。
【００５４】
○キャッチアップデータ返信装置５４
キャッチアップデータ返信装置５４は、データ受信装置８５を介して、送信元のサーバ（キャッチアップ実行サーバ、例えば、エージェントサーバＡ）からキャッチアップ要求データを受信した場合に、キャッチアップ応答データを作成し、データ送信装置８０を介して、当該キャッチアップ要求データの送信元のサーバ（被キャッチアップサーバ）に対して返信するための装置である。
【００５５】
「キャッチアップ応答データ」は、例えば、送信元サーバの装置番号（例えば、リーダサーバＬの装置番号）、送信先サーバの装置番号（例えば、エージェントサーバＡの装置番号）、被キャッチアップサーバが要求に対応したキャッチアップを許可すること示す識別データ（以下、「キャッチアップ許可タイプ」という。）、キャッチアップ対象コマンドの操作通番（以下、「キャッチアップ許可操作通番」という。）及び当該キャッチアップ許可操作通番に対応する操作コマンド（以下、「キャッチアップ操作コマンド」という。）のデータを少なくとも含むデータである（図４（ｄ））。
なお、キャッチアップ許可操作通番及び当該キャッチアップ許可操作通番に対応する操作コマンドは、自身のキャッシュメモリＭに記録されている当該データを複写することで作成されるように構成されている。
【００５６】
○キャッチアップ命令装置５５
キャッチアップ命令装置５５は、データ受信装置８５を介して、送信先のサーバ（例えば、リーダサーバＬ）から返信されたキャッチアップ応答データを受信し、キャッチアップ許可操作通番が昇順となるようにキャッシュメモリＭに記録させるとともに、作業用データベースＤＬ’のデータに対して、当該キャッチアップ許可操作通番の小さい順にキャッチアップ操作コマンドを実行させるように命令するための装置である。
【００５７】
（その他）
本発明を構成する各サーバは、上記装置の他に、通信手段７０、データベース複製装置６１及びキャッシュメモリ消去装置６２を備えている。
【００５８】
通信手段７０は、データ送信装置８０及びデータ受信装置８５を備え、通信ネットワークＮを介して、発信（被発信）パケットデータ、キャッチアップ要求データ、キャッチアップ応答データ、キャッチアップ終了データ等の各種データの通信を行うための手段である。
【００５９】
データベース複製装置６１は、タスクの実行開始時において、作業領域に初期のデータベースＤを作業用データベースＤ’として複製することができるようになっている。また、データベース複製装置６１は、所定間隔ごと、若しくは、所定の指示を受けることにより、データベースＤの複製すること、若しくは、キャッシュメモリＭ上の状態の永続化を行うとともに、当該永続化を行ったデータベースＤ、若しくは、キャッシュメモリＭ上の状態を復元することができるようになっている。
【００６０】
キャッシュメモリ消去装置６２は、キャッシメモリＭの容量の減少を解消するために、当該キャッシュメモリＭに記録されている不要なデータ等を適時消去するための装置である。上記のように、データベース複製装置６１が作動して、データベースＤの複製が行われた後において、それ以前に行われた操作コマンド及び操作通番（以下、「消去予定操作コマンド等データ」という。）を消去することができるように構成されている。
【００６１】
ところで、本システムＳにおいて、一台のサーバを除いた各サーバが同一のタスクを行っているが、当該一台のサーバの処理が大幅に遅れていて（以下、「遅延状態サーバ」という。）、キャッチアップが必要な場合が存在する場合を想定すると、遅延状態サーバ以外のサーバのデータベースＤの複製が行われ、キャッシュメモリＭに記録されていた消去予定操作コマンド等データが消去されてしまった場合には、遅延状態サーバはキャッチアップを行うことができないことになってしまう。
【００６２】
そこで、このような状態を回避するため、少なくとも、前回データベースの消去が行われてから今回消去が行われるまでに実行された操作コマンドを消去しないこととしておくとともに、消去予定操作コマンド等データに消去時刻データを付加することにより、現在時刻が消去時刻となるまで、キャッシュメモリ消去装置６２により、消去予定操作コマンド等データが消去できないようになっている。
なお、消去時刻データは、キャッチアップが可能となる充分な余裕時間を考慮して、予め定められているものである。
【００６３】
［動作］
図５を参照して、本システムＳの動作について説明する。
なお、以下の説明では、各サーバＬ，Ａ，Ｂの間で、ＨＢ通信が確立していることを前提とする。
【００６４】
初期状態であるリーダサーバＬと各エージェントサーバＡ，Ｂは、クライアントＫからの要求に応じて、所定のアプリケーションに従って、操作コマンド（列）が実行され本件タスクを開始する。本件タスクの実行の前に、作業領域に初期のデータベースＤＬ，ＤＡを複製した作業用データベースＤＬ’，ＤＡ’が作成される。そして、当該作業用データベースＤＬ’，ＤＡ’に対して、操作コマンドが実行され、自己最大操作通番がキャッシュメモリＭＬ，ＭＡに記録、更新される（Ｓ１）。このとき、各サーバ間Ｌ，Ａ，Ｂにおいて、発信・被発信パケットデータの送受信が行われており、各送信元最大操作通番のうちで最大の通番のデータが通信最大操作通番として更新されている（Ｓ２〜Ｓ４）。このとき、自己最大操作通番と通信最大操作通番が、操作通番比較装置４１で監視されている。
【００６５】
その後、所定時間が経過し、リーダサーバＬと比較して、エージェントサーバＡの操作コマンドの進度に遅れが発生し始めたとする。
リーダサーバＬのＨＢ通信データ送信装置８１Ｌは、エージェントサーバＡに、発信パケットデータを送信し、エージェントサーバＡはＨＢ通信データ受信装置８６Ａにより、当該被発信パケットデータを受信する。操作通番比較装置４１Ａは、被発信パケットデータの通信最大操作通番の値と、自己最大操作通番の値とを比較し、通信最大操作通番の値が大きいと判断する（Ｓ５）。そして、キャッチアップデータ要求装置５１に対して、リーダサーバＬに対するキャッチアップ要求データの送信等を要求する。
【００６６】
要求を受けたキャッチアップデータ要求装置５１Ａは、エージェントサーバＡがリーダサーバＬと比較して、操作コマンドの進度が遅れていることを認識する。そして、キャッチアップするために必要となるキャッチアップ要求操作通番を決定するとともに、抑止要求時間算出装置５２Ａから算出されたタスク抑止要求時間からデータの引渡しを受けることにより、当該リーダサーバＬに対するキャッチアップ要求データを作成し、データ送信装置８０Ａにより送信する（Ｓ６）。
【００６７】
キャッチアップ要求データを受信したリーダサーバＬは、自身のキャッシュメモリＭＬに記録されている自己最大操作通番と、当該自己最大操作通番に対応する操作コマンドを複写することにより、キャッチアップ応答データを作成し、キャッチアップデータ返信装置５４Ｌ及びデータ送信装置８０Ｌを介して、送信元であるエージェントサーバＡに返信する（Ｓ７）。
【００６８】
また、タスク中断時刻設定装置５３Ｌにより、キャッチアップ要求データに記録されているタスク抑止要求時間と、キャッチアップに必要な要求コマンドの総数を考慮し、タスク中断時刻を算出する。そして、演算処理装置（図示せず）に対して、操作コマンド実行中止命令を発し、データベースＤＬ’に対する操作コマンドの実行を停止する（Ｓ８）。
【００６９】
データ受信装置８５Ａを介して、送信先のリーダサーバＬから返信されたキャッチアップ応答データを受信したエージェントサーバＡは、自身のキャッシュメモリＭＡに、キャッチアップ許可操作通番が昇順となるように記録する。そして、キャッチアップ命令装置５５Ａは作業用データベースＤＡ’のデータに対して、キャッチアップ許可操作通番の小さい順にキャッチアップ操作コマンドを実行させるように命令し、操作実行手段（図示せず）を介して、演算処理等の操作コマンドを実行することにより本件タスクを行い、自身のデータベースＤＡ’の状態をリーダサーバＬのデータベースＤＬ’の状態に一致させることになる（Ｓ９）。
【００７０】
その後、キャッチアップ状態判定装置４２Ａは、自己最大操作通番の値がキャッチアップ許可操作通番の最大値に達した場合には、キャッチアップを終了し、キャッチアップ要求データを送信したリーダサーバＬに対して、データ送信装置８０Ａを介して、キャッチアップ終了データを送信する（Ｓ１０，Ｓ１１）。
なお、このとき、抑止時間が初期設定値である「０」にリセットされる。
【００７１】
また、被キャッチアップサーバであるリーダサーバＬが、キャッチアップ終了データを受信したときは、タスク中断時刻が初期設定値である「０」とリセットされ、演算処理装置に対する操作コマンド実行中止命令が解除される（Ｓ１２）。これにより、リーダサーバＬの操作コマンドは通常通りの実行を開始し、タスクが進行することになる。
【００７２】
なお、本システムＳの動作中において、データベース複製装置６１Ｌ，６１Ａにより、一定の期間毎に、その時点での作業用データベースＤＬ’，ＤＡ’の複製が行われ、消去時刻になった場合には、キャッシュメモリＭＬ，ＭＡに保存されていた、消去予定操作コマンド等のデータも消去されることになる。
【００７３】
［作用効果］
上記のように、本システムＳによれば、各サーバＬ，Ａ，Ｂは、自身以外の総てのサーバに対して、ＨＢ通信データ送信装置８１及びＨＢ通信データ受信装置８６により、一定時間間隔で、各サーバＬ，Ａ，Ｂ間において、発信パケットデータ及び被発信パケットデータを送受信している。このように、常時、各サーバのタスクの進行状況を確認しているため、自身のタスクが他のサーバのタスクから遅れたことを即座に認識することができる。そして、発信パケットデータ及び被発信パケットデータを送受信することにより、自身以外の各サーバＬ，Ａ，Ｂの操作コマンドの実行状況（タスクの処理状況）を把握することができ、キャッチアップデータ要求装置５１により、通信最大操作通番の値が、自己最大操作通番の値より大きいときに、自身のサーバのキャッチアップの必要性を認識し、キャッチアップ操作通番データに対応した操作を、上記データベースＤのデータに適用することができる。これらの一連の動作により、データベースＤの動的なキャッチアップ処理を、自律的にかつ非常に迅速に行うことができる。
【００７４】
各サーバＬ，Ａ，Ｂは、同一のデータベースＤＬ，ＤＡ，ＤＢを有しており、本発それらの各サーバのうち１台でも稼働していれば、他のサーバはキャッチアップを実行することができる。ここで、サーバ数をＮ、各サーバの１台当たりの故障率をｒとすれば、本システムがキャッチアップ不能な状態となる確率は、１−ｒN（Ｐａｘｏｓの場合には、１−ｒＮ／２）であるが、現実的に各サーバの故障率が小さいことからすれば、非常に高確率でシステム全体の耐障害性を高めることができる。
【００７５】
また、上記のようにキャッチアップ要求データを受信したリーダサーバＬは、それ以降からキャッチアップ終了データを受信する間、自身のデータベースＤＬに対する操作を中断することになるため、キャッチアップ作業中に、被キャッチアップサーバであるリーダサーバＬのタスクが進行することを抑止できる。
【００７６】
また、本システムＳによれば、キャッチアップ操作通番データ等が、キャッシュメモリＭに記憶させられるようになっているため、キャッチアップを迅速に行うことができる。
【００７７】
さらに、データベースＤのバックアップを行う際に、キャッシュメモリＭに記録されていた消去予定操作コマンド等データが不用意に消去されることを回避するため、消去予定操作コマンド等データに消去時刻データが付加されている。これにより、現在時刻が消去時刻となるまで、キャッシュメモリ消去装置６２により、消去予定操作コマンド等データが消去されることを防止することができる。
【００７８】
［Ｐａｘｏｓ装置との関係］
本発明は、Ｐａｘｏｓ装置Ｐに使用の有無に関わらず適用可能であるが、上記実施形態にように、Ｐａｘｏｓ装置Ｐを使用した場合には、特有の事象が生じ得ることになる。
すなわち、Ｐａｘｏｓ装置Ｐにおいては、上記分散コンピューティング用プログラムに従って、過半数以上のサーバにより合意形成された操作コマンドを実行し、本件タスクを行うことができるようになっている。一方、キャッチアップ実行サーバがキャッチアップを行っている場合において、当該キャッチアップ実行サーバと被キャッチアップサーバ（以下、「キャッチアップ関連サーバ」という。）はこの合意形成には関与せず、他のサーバにより合意形成がなされて、本システムＳが実行すべき操作コマンドが決定される場合が生じ得る。このときには、キャッチアップ関連サーバの処理とは無関係に、他のサーバのタスクが進行してしまう事態が生じてしまうことになる。この場合において、当該キャッチアップ関連サーバは、他のサーバに対して、タスクの進度が遅れてしまうことが生じ得るが、上記説明と同様な方法によりキャッチアップ関連サーバのキャッチアップが行われることにより対応可能であるため、特段の問題が生じることはない。
【００７９】
以上、本発明について、好適な実施形態についての一例を説明したが、本発明は当該実施形態に限られず、本発明の趣旨を逸脱しない範囲で適宜設計変更が可能である。
上記実施形態では、情報処理装置は、３台のサーバの場合を例として説明したが、複数台のコンピューティングデバイスであれば、その種類や数はこれに限られるものではない。また、複数台の情報処理装置は、インターネットやＬＡＮ以外にも、どのような接続手段により接続されているものであってもよい。
【００８０】
また、上記実施形態では、通信データ制御手段において通信方式としてＵＤＰを使用することを前提とした場合について説明したが、通信方式は上記のようにハートビートの送受信をする技術に限らず、ＴＣＰ等の通信方式を使用したものであってもよい。
また、通信最大操作通番などのキャッチアップに必要となるデータは、発信パケットデータ及び被発信パケットデータ以外の、各サーバ間における通信データに記録させるものであってもよいことは勿論である。
【符号の説明】
【００８１】
Ｓ      分散コンピューティングシステム
Ｎ      ネットワーク
Ｋ      クライアント
Ｌ      リーダサーバ
Ａ，Ｂ      エージェントサーバ
Ｐ      Ｐａｘｏｓ装置
４Ｌ，４Ａ，４Ｂ      合意形成部
５Ｌ，５Ａ，５Ｂ      実行部
ＤＬ，ＤＡ，ＤＢ      データベース（初期データベース）
Ｄ’    作業用データベース
Ｍ      キャッシュメモリ
１０    通信データ制御手段
２０    ＨＢ通信制御装置
２１    ＨＢ通信データ作成装置
２２    ＨＢ通信状態確認装置
２３    ＨＢ通信データ記憶装置
３０    キャッチアップ制御手段
４０    キャッチアップ判定装置
４１    操作通番比較装置（操作通番比較手段）
４２    キャッチアップ状態判定装置
５０    キャッチアップ統括装置
５１    キャッチアップデータ要求装置（キャッチアップデータ要求手段）
５２    抑止要求時間算出装置
５３    タスク中断時刻設定装置
５４    キャッチアップデータ返信装置（キャッチアップデータ返信手段）
５５    キャッチアップ命令装置
６１    データベース複製装置
６２    キャッシュメモリ消去装置
７０    通信手段
８０    データ送信装置
８１    ＨＢ通信データ送信装置（発信パケットデータ送信手段）
８５    データ受信装置
８６    ＨＢ通信データ受信装置（被発信パケットデータ受信手段）
【図１】
2011253390.tif 000003
【図２】
2011253390.tif 000004
【図３】
2011253390.tif 000005
【図４】
2011253390.tif 000006
【図５】
2011253390.tif 000007