(57)【要約】【課題】クラスタシステムにおいて、実行系における更新処理の処理効率を向上させ、待機系の計算機資源を活用する。【解決手段】業務処理の要求を受け付け、業務処理を実行するとともに使用されるデータを保持する第１の計算機と、第１の計算機に保持されるデータの複製を保持する第２の計算機とを備え、第２の計算機は第１の計算機との通信により第１の計算機を停止すると判断した場合は、当該第１の計算機を停止して第２の計算機が処理要求を受け取って処理するクラスタシステムで、第１の計算機は、要求毎に別の昇順のユニークな番号が割り付けられた要求識別情報を含む処理要求として少なくとも更新要求を受け取り、保持するデータを更新し、第２の計算機に要求識別情報を含む更新要求を送信し、第２の計算機は、送られた参照要求及び更新要求を処理要求として記憶し、各処理要求に含まれるユニークな番号の昇順に処理要求を処理する。【選択図】図１
2010044553.tif 000002
【特許請求の範囲】
【請求項１】
業務処理への処理要求を受け付け、前記業務処理を実行するとともに使用されるデータを保持する第１の計算機と、前記第１の計算機に保持されるデータの複製を保持する第２の計算機とを備え、前記第２の計算機は前記第１の計算機との通信により第１の計算機を停止すると判断した場合は、当該第１の計算機を停止して前記第２の計算機が前記処理要求を受け取り、該処理要求を処理するクラスタシステムにおけるデータ処理方法であって、
前記第１の計算機は、要求毎に別の昇順のユニークな番号が割り付けられた要求識別情報を含む前記処理要求として少なくとも更新要求を受け取り、当該保持するデータについて更新を行い、前記第２の計算機に当該要求識別情報を含む更新要求を送信し、
前記第２の計算機は、前記ユニークな番号を含むとともに送られた参照要求および前記第１の計算機から送られた更新要求を受け取り処理要求として記憶し、該受け取って記憶している各処理要求に含まれる前記ユニークな番号の昇順に、処理要求を処理することを特徴とするデータ処理方法。
【請求項２】
前記ユニークな番号は、時刻情報であることを特徴とする請求項１に記載のデータ処理方法。
【請求項３】
さらに、前記クラスタシステムは、前記第１の計算機に保持されるデータの複製を保持する第３の計算機とを備え、第１の計算機からの通信として第２の計算機および第３の計算機にマルチキャスト通信を行い、
前記第１の計算機は、要求毎に別々の昇順の前記ユニークな番号が割り付けられた要求識別情報を含む前記処理要求として少なくとも更新要求を受け取り、当該保持するデータについて更新を行い、前記第３の計算機および前記第２の計算機に当該要求識別情報を含む更新要求を送信し、
前記第３の計算機は、前記ユニークな番号を含むとともに送られた参照要求および前記第１の計算機から送られた更新要求を受け取り処理要求として記憶し、該受け取って記憶している各処理要求に含まれるユニークな番号の昇順に、前記処理要求を処理することを特徴とする請求項１に記載のデータ処理方法。
【請求項４】
前記クラスタシステムは、前記第１の計算機及び前記第２の計算機に負荷情報を含むシステム情報を格納し、
前記システム情報に基づいて、前記第１の計算機の負荷が所定の負荷量よりも小さいか否かを判定し、
前記第１の計算機の負荷が前記所定の負荷量よりも小さい場合には、前記第１の計算機が前記参照要求を処理することを特徴とする請求項１に記載のデータ処理方法。
【請求項５】
前記クラスタシステムは、前記業務処理を要求するクライアントと、前記クライアントによる要求を前記第１の計算機及び前記第２の計算機の少なくとも一方に振り分ける要求振分け部とを備え、
前記要求振分け部は、
前記クライアントによる要求が更新要求であるか参照要求であるかを判定し、
前記クライアントによる要求が更新要求である場合には、前記クライアントによる要求を前記第１の計算機に送信し、
前記クライアントによる要求が参照要求である場合には、前記クライアントによる要求を前記第２の計算機に送信することを特徴とする請求項１に記載のデータ処理方法。
【請求項６】
前記要求振分け部は、前記クライアントに備わり、
前記クライアントが、前記クライアントによる要求を振り分けることを特徴とする請求項５に記載のデータ処理方法。
【請求項７】
前記要求振分け部は、前記第１の計算機に備わり、
前記第１の計算機が、前記クライアントによる要求の種別に応じて振り分けることを特徴とする請求項５に記載のデータ処理方法。
【請求項８】
業務処理への処理要求を受け付け、前記業務処理を実行するとともに使用されるデータを保持する第１の計算機と、前記第１の計算機に保持されるデータの複製を保持する第２の計算機とを備え、前記第２の計算機は前記第１の計算機との通信により第１の計算機を停止すると判断した場合は、当該第１の計算機を停止して前記第２の計算機が前記処理要求を受け取り、該処理要求を処理するクラスタシステムであって、
前記第１の計算機は、要求毎に別の昇順のユニークな番号が割り付けられた要求識別情報を含む前記処理要求として少なくとも更新要求を受け取り、当該保持するデータについて更新を行い、前記第２の計算機に当該要求識別情報を含む更新要求を送信し、
前記第２の計算機は、前記ユニークな番号を含むとともに送られた参照要求および前記第１の計算機から送られた更新要求を受け取り処理要求として記憶し、該受け取って記憶している各処理要求に含まれる前記ユニークな番号の昇順に処理要求を処理することを特徴とするクラスタシステム。
【請求項９】
業務処理への処理要求を受け付け、前記業務処理を実行するとともに使用されるデータを保持する第１の計算機と、前記第１の計算機に保持されるデータの複製を保持する第２の計算機とを備え、前記第２の計算機は前記第１の計算機との通信により第１の計算機を停止すると判断した場合は、当該第１の計算機を停止して前記第２の計算機が前記処理要求を受け取り、該処理要求を処理するクラスタシステムにおいて、前記第１の計算機で実行されるプログラムであって、
前記処理要求毎に別の昇順のユニークな番号が割り付けられた要求識別情報を含む前記処理要求として少なくとも更新要求を受け取る手順と、
前記更新要求に基づいて、前記保持するデータについて更新を行う手順と、
前記第２の計算機に当該要求識別情報を含む更新要求を送信する手順と、を含むことを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行系と待機系を含む計算機システムに関し、特に、計算機システムに管理されるデータを提供する技術に関する。
【背景技術】
【０００２】
従来、実行系及び待機系の計算機、及び不揮発性記録媒体の共有ディスクによって処理データを複製するクラスタシステムでは、実行系に障害が発生した場合には、不揮発性記録媒体に保持された処理データに待機系がアクセスすることによって系を切り替え、障害を回復させて処理を継続させていた。
【０００３】
近年、Ｉ／Ｏ処理速度の向上のために処理データを、不揮発性記録媒体の共有ディスクの代わりに揮発性記録媒体である揮発性メモリを利用するクラスタシステムが登場している。このようなクラスタシステムにおいては、揮発性メモリ上に保持された処理データを実行系及び待機系で共有することはできないため、実行系の障害時には処理データが失われてしまう。そのため、実行系では揮発性メモリ上に保持された処理データの更新情報を待機系に転送し、待機系は受信した更新情報を自系の揮発性メモリ上に保持された処理データに反映することによって処理データを複製し、冗長性を確保する。また、高い障害許容性が要求される場合には、複数の待機系を備え、実行系は複数の待機系に同時に処理データを転送する。
【０００４】
しかし、障害時に系切り替え先として、待機系を有するクラスタシステムでは、実行系が正常に稼動している間は待機系がデータ処理に活用されないため、リソースの使用効率が良くないという問題がある。
【０００５】
そこで、待機系を障害時の切り替え先とする用途以外に、参照要求の処理を複数の待機系で行い、更新要求の処理を実行系で行うことでシステム全体としてのデータ処理性能を向上させ、待機系のリソースを効率的に使用することが考えられる。特許文献１には、揮発性記録媒体にデータを格納するクラスタシステムにおいて、更新要求、参照要求の処理を複数の計算機に分散させて処理する技術が開示されている。
【特許文献１】特開２００２−６３０５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示された技術では、振分け装置が参照要求の入力電文を、参照処理性能が高い参照用計算機と、参照処理性能が低い更新処理用計算機のすべての計算機に送信し、参照処理を実行させる。したがって、更新処理用計算機にはすべての更新要求、参照要求が処理されることになり、頻繁に更新又は参照が要求されるシステムでは、更新処理用計算機での参照処理性能の低下がシステム全体の処理性能の低下を招く可能性がある。また、更新処理用計算機の処理データを揮発性メモリに格納した場合に障害時の処理データ複製方法が考慮されていない。
【０００７】
本発明の目的は、揮発性メモリにデータを格納するクラスタシステムにおいて、参照要求を待機系に振分けることによって、実行系における更新処理の処理効率を向上させ、待機系の計算機資源を活用することである。
【課題を解決するための手段】
【０００８】
本発明の代表的な一形態では、業務処理への処理要求を受け付け、前記業務処理を実行するとともに使用されるデータを保持する第１の計算機と、前記第１の計算機に保持されるデータの複製を保持する第２の計算機とを備え、前記第２の計算機は前記第１の計算機との通信により第１の計算機を停止すると判断した場合は、当該第１の計算機を停止して前記第２の計算機が前記処理要求を受け取り、該処理要求を処理するクラスタシステムにおけるデータ処理方法であって、前記第１の計算機は、要求毎に別の昇順のユニークな番号が割り付けられた要求識別情報を含む前記処理要求として少なくとも更新要求を受け取り、当該保持するデータについて更新を行い、前記第２の計算機に当該要求識別情報を含む更新要求を送信し、前記第２の計算機は、前記ユニークな番号を含むとともに送られた参照要求および前記第１の計算機から送られた更新要求を受け取り処理要求として記憶し、該受け取って記憶している各処理要求に含まれる前記ユニークな番号の昇順に処理要求を処理する。
【発明の効果】
【０００９】
本発明の一形態によれば、クラスタシステムで管理されるデータの参照処理を待機系の計算機（第２の計算機）で実行することによって、実行系の計算機（第１の計算機）の負荷を低減することによって更新処理の処理効率を向上させ、待機系の計算機資源を有効に活用することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態を、図面を参照して説明する。
【００１１】
＜第１の実施の形態＞
図１は、本発明の第１の実施の形態のクラスタシステムの一例を示すシステム構成図である。
【００１２】
本発明第１の実施の形態のクラスタシステムは、実行系の計算機１、及び、複数の待機系の計算機２〜ｎを含む。また、複数のクライアント１０１は、クラスタシステムに処理要求を送信する。実行系及び待機系の計算機（１〜ｎ）とクライアントとは、ネットワークを介して接続される。以下、実行系の計算機１は単に「実行系」、待機系の計算機２〜ｎは特に指定しない限り、単に「待機系」と記述する。
【００１３】
クライアント１０１は、クラスタシステムに処理を要求する入力電文３０１を送信する要求送信管理部１０２を備える。要求送信管理部１０２は、入力電文３０１がクラスタシステムに受信された旨の応答を受信する。また、要求送信管理部１０２は、入力電文３０１の処理結果を受信する。
【００１４】
さらに、要求送信管理部１０２は、入力電文３０１に基づいて要求先を振分ける機能を有する要求振分け部１０３を含む。具体的には、入力電文３０１が更新要求の場合にはマルチキャスト通信を用いて複数の計算機、実行系と全待機系に入力電文３０１を送信する。また、参照処理の場合には、実行系、又は、待機系２〜ｎ台の計算機のうち、いずれか１台に対して入力電文３０１を送信する。さらに、要求振分け部１０３は、各計算機が実行系であるか又は待機系であるかを認識するために、クラスタシステムの実行系又は待機系のいずれか一台の計算機の状態管理テーブル１２４を参照する。
【００１５】
実行系及び待機系の各計算機は、処理データ管理部１１１及びクラスタ情報管理部１２１を有する。実行系及び待機系の各計算機は、同じ構成である。また、実行系が障害による系切り替えによって待機系に処理が引き継がれると、処理を引き継いだ待機系は、以降、実行系として稼働する。
【００１６】
処理データ管理部１１１は、要求受信部１１２、処理実行部１１３、データ転送部１１４、処理データ１１５、仮登録キューバッファ１１６、処理キューバッファ１１７、及び更新情報バッファ１１８を有する。なお、要求受信部１１２、処理実行部１１３及びデータ転送部１１４は、後述する計算機のＣＰＵ２１によって実行されるプログラムである。
【００１７】
以下、処理データ管理部１１１の各構成による処理を、実行系の場合と、待機系の場合とに分けて説明する。
【００１８】
まず、実行系における処理の概要について説明する。実行系の要求受信部１１２は、クライアント１０１の要求振分け部１０３から送信された入力電文３０１を受信する。さらに、入力電文３０１が更新要求の場合には、待機系からの入力電文３０１の受信完了通知を受信する。さらに、受信した入力電文３０１にユニークな処理キュー通番４０２を付与し、処理キューバッファ１１７に受信済み入力電文４１１として格納する。
【００１９】
処理キューバッファ１１７は、受信済み入力電文４１１を格納する領域である。処理実行部１１３は、処理キューバッファ１１７に格納された受信済み入力電文４１１から処理データ１１５を更新又は参照する。さらに、処理実行部１１３は、処理データ１１５に更新した更新情報４０１を更新情報バッファ１１８に格納する。また、処理実行部１１３は、自系のリソース使用状態を取得し、リソース管理テーブル１２５に格納する。
【００２０】
更新情報バッファ１１８は、処理データ１１５の更新情報４０１を格納する領域である。処理データ１１５は、処理実行部１１３によって実行される処理に必要なデータである。また、処理データ１１５は、処理を高速化させるために揮発性のメモリに記憶されている。なお、処理実行部１１３、処理データ１１５、及び更新情報バッファ１１８は、データベース管理システムのような処理データ管理部１１１と異なるアプリケーションを利用してもよい。
【００２１】
処理データ管理部１１１は、さらに、待機系にデータを送信するデータ転送部１１４を有する。データ転送部１１４は、処理実行部１１３によって更新された更新情報４０１を待機系に転送する。なお、本発明の第１の実施の形態では、実行系の揮発性メモリに格納されている処理データ１１５の更新情報４０１は、すべての待機系に転送され、当該計算機の揮発性メモリの処理データ１１５に反映される。
【００２２】
データ転送部１１４による更新情報４０１の転送方法は、各計算機に個別にデータを送信するユニキャストであってもよいし、システム内のすべての計算機に対して同時にデータを送信するマルチキャスト送信であってもよい。マルチキャスト送信を用いた場合には、転送データ量の削減を図ることができる。
【００２３】
また、データ転送部１１４は、データ転送量に応じて、事前又は転送時にデータを圧縮することなどによって転送量を抑制したり、転送経路を複数使用することによって転送経路を他の処理よりも優先的に利用したりしてもよい。
【００２４】
さらに、本発明の第１の実施の形態では、データ転送部１１４によって他系に更新情報４０１を同期転送する。ここでの同期転送とは待機系が更新情報４０１の受信を完了した応答を意味する。更新情報４０１を非同期で転送する場合には、障害発生時に一部の更新情報４０１が失われる可能性がある。したがって、データの再生が可能な場合など一部の更新情報４０１の欠損が許容されるシステムである場合、又は、さらに上位のシステムなどから更新情報４０１の再送が可能であれば適用可能である。非同期転送の場合には、他系に更新情報４０１を転送後、受信の完了を待たずに自系の処理を継続できるため、処理性能を向上させることができる。
【００２５】
前述したように、本発明の第１の実施の形態のクラスタシステムでは、参照要求が待機系によって処理される。しかし、揮発性メモリにデータが格納されるシステムにおいて待機系で参照要求を処理させる場合には、以下の問題が生じる可能性がある。
【００２６】
実行系は、更新要求を受け付けると、更新情報を全待機系に同期転送し、要求元に処理結果を送信する。この場合の同期転送では、待機系が更新情報の受信を完了した旨が応答されまで待機するのであって、待機系の揮発性メモリ上の処理データに更新情報が反映されるまで待機するのではない。したがって、同じ要求元（クライアント１０１）から更新要求と参照要求を連続して送信した場合、前回要求した更新要求による処理データの反映が遅れている場合、反映前の古いデータを参照してしまう可能性がある。
【００２７】
以下、待機系における処理の概要について説明する。なお、実行系と同様の処理の場合には説明を省略する。
【００２８】
待機系の要求受信部１１２は、クライアント１０１の要求振分け部１０３によって送信された入力電文３０１を受信する。また、入力電文３０１が更新処理の場合には、実行系に入力電文３０１の受信完了通知を送信する。さらに、受信した入力電文３０１が更新要求の場合には、実行系の要求受信部１１２で割り当てられた処理キュー通番４０２を付与した後に仮登録キューバッファ１１６に受信済み入力電文４１１として格納する。
【００２９】
一方、待機系の要求受信部１１２は、入力電文３０１が参照要求の場合には、参照要求を受信する前に仮登録キューバッファ１１６に格納されている受信済み入力電文４１１から、同一クライアントからの更新要求を検索する。同一クライアントからの更新要求が存在する場合には、同一クライアントの受信済み入力電文４１１が処理キューバッファ１１７に移動するまで待機してから処理キューバッファ１１７に格納する。
【００３０】
さらに、実行系と待機系の参照結果が一致する必要があるシステムの場合には、待機系の要求受信部１１２は、仮登録キューバッファ１１６に格納されているすべての入力電文３０１が処理キューバッファ１１７に格納されるまで待機する。すなわち、待機系で参照要求の入力電文を受け付ける前に実行系で処理されている更新要求が存在する場合には、すべての更新要求が完了してから参照要求を処理する。
【００３１】
なお、待機系の要求受信部１１２は、同一クライアントからの更新要求を検索した結果、同一クライアントからの更新要求が仮登録キューバッファ１１６に含まれていない場合には、待機せずに参照要求を処理キューバッファ１１７に格納してもよい。
【００３２】
仮登録キューバッファ１１６は、待機系において更新要求の受信済み入力電文４１１を格納する領域である。
【００３３】
処理実行部１１３は、処理キューバッファ１１７に格納された受信済み入力電文４１１から処理データ１１５を参照する。また、受信済み入力電文４１１が更新要求の場合には、更新情報バッファ１１８に格納されている更新情報４０１を処理データ１１５に反映する。さらに、処理実行部１１３は、自系のリソース使用状態を取得し、リソース管理テーブル１２５に格納する。処理データ１１５は、処理実行部１１３によって実行される処理に必要なデータである。
【００３４】
データ転送部１１４は、実行系の処理実行部１１３によって処理された更新情報４０１を受信する。さらに、受信した実行系の更新情報４０１を更新情報バッファ１１８に格納し、更新情報４０１と対応する仮登録キューバッファ１１６に格納されている受信済み入力電文４１１を処理キューバッファ１１７に移動させる。
【００３５】
以上のように、待機系で参照要求が処理されることによって、更新要求に続けて参照要求が送信された場合であっても、更新後の処理データ１１５を参照することができる。
【００３６】
続いて、クラスタ情報管理部１２１について説明する。クラスタ情報管理部１２１は、実行系及び待機系で同じ機能を有する。
【００３７】
クラスタ情報管理部１２１は、クラスタ情報転送部１２２、参照処理判定部１２３、状態管理テーブル１２４、及びリソース管理テーブル１２５を有する。
【００３８】
クラスタ情報転送部１２２は、クラスタ情報を他系に転送したり、他系から転送されたクラスタ情報を受信したりする。状態管理テーブル１２４は、各計算機の稼働状態を格納する。リソース管理テーブル１２５は、各計算機のリソースの使用状況を格納する。参照処理判定部１２３は、自系が実行系である場合にリソース管理テーブル１２５を参照し、参照処理を実施すべきか否かを判定し、結果を状態管理テーブル１２４に格納する。
【００３９】
ここで、クラスタ情報管理部の動作について、実行系と待機系における各処理を関連づけて説明する。
【００４０】
まず、クラスタ情報管理部１２１は、処理データ管理部１１１を監視することによって、自系のプロセス障害を検出し、他系の計算機に状態を通知することができる。さらに、実行系に障害が発生した場合には、稼動中の待機系から１台の待機系を実行系として動作するように系切り替えを実行する。処理データ管理部１１１による監視は、リソース使用状況を表すリソース管理テーブル１２５を通信することによって使用状況を測定できたか否かを検出する方法であってもよいし、他の通信によって直接的又は間接的に処理データ管理部１１１を監視する方法であってもよい。さらに、実行系のクラスタ情報管理部１２１は、リソース管理テーブル１２５のリソース使用率に基づいて実行系と待機系を比較し、待機系の負荷が実行系よりも高い場合に状態管理テーブル１２４の参照処理判定を「可」に変更し、実行系においても参照処理を実行させる。待機系のクラスタ情報管理部１２１は、リソース管理テーブル１２５のリソース使用率に基づいて自系のリソース使用率が高い場合に状態管理テーブル１２４の参照処理判定を「否」に変更し、他の計算機に参照処理を実行させる。
【００４１】
図２Ａは、本発明の第１の実施の形態の計算機のハードウェア構成を示す図である。
【００４２】
実行系及び待機系の各計算機は、前述したように同じ構成である。各計算機は、ＣＰＵ２１、ディスプレイ装置２２、キーボード２３、マウス２４、ネットワークインタフェースカード（ＮＩＣ）２５、ハードディスク装置２６及びメモリ２７を備える。ＣＰＵ２１、ディスプレイ装置２２、キーボード２３、マウス２４、ＮＩＣ２５、ハードディスク装置２６及びメモリ２７は、バス２８によって接続される。
【００４３】
実行系及び待機系の各計算機は、ＮＩＣ２５を介してネットワークに接続し、他の計算機と相互に通信する。
【００４４】
ＣＰＵ２１は、メモリ２７に記憶されたプログラムを実行する。メモリ２７は、ＣＰＵ２１によって実行されるプログラム及び当該プログラムの実行に必要なデータを記憶する。メモリ２７は、処理管理部１００、オペレーティングシステム３０、処理データ管理部１１１及びクラスタ情報管理部１２１を記憶する。メモリ２７は、前述のように、揮発性記録媒体である。
【００４５】
処理データ管理部１１１は、図１にて説明したように、要求受信部１１２、処理実行部１１３、データ転送部１１４、処理データ１１５、仮登録キューバッファ１１６、処理キューバッファ１１７、及び更新情報バッファ１１８を含む。要求受信部１１２、処理実行部１１３及びデータ転送部１１４は、ＣＰＵ２１によって実行されるプログラムである。
【００４６】
クラスタ情報管理部１２１は、図１にて説明したように、クラスタ情報転送部１２２、参照処理判定部１２３、状態管理テーブル１２４、及びリソース管理テーブル１２５を含む。クラスタ情報転送部１２２及び参照処理判定部１２３は、ＣＰＵ２１によって実行されるプログラムである。
【００４７】
処理管理部１００は、オペレーティングシステム３０上で実行されるプログラムである。処理データ管理部１１１及びクラスタ情報管理部１２１に含まれるプログラムは、処理管理部１００によって呼び出される。処理データ管理部１１１及びクラスタ情報管理部１２１に含まれるプログラムによって、図１にて説明した処理が実行される。
【００４８】
処理データ１１５は、業務処理で使用されるデータである。処理データ１１５は、図１にて説明したように、データベース管理システムのような処理データ管理部１１１とは異なるアプリケーションを用いてもよい。この場合、データベース管理システムは、メモリ２７に記憶される。
【００４９】
仮登録キューバッファ１１６は、図１にて説明したように、待機系において更新要求の入力電文３０１を格納する領域である。処理キューバッファ１１７は、図１にて説明したように、入力電文３０１を格納する領域である。更新情報バッファ１１８は、図１にて説明したように、処理データ１１５の更新情報４０１を格納する領域である。
【００５０】
状態管理テーブル１２４は、図１にて説明したように、各計算機の稼働状態を格納する。リソース管理テーブル１２５は、図１にて説明したように、各計算機のリソース使用状況を格納する。
【００５１】
ディスプレイ装置２２は、業務処理の実行結果など各種情報を表示する。キーボード２３及びマウス２４は、利用者からの入力を受け付ける。ＮＩＣ２５は、ネットワークに接続する。ハードディスク装置２６は、メモリ２７に格納される処理データ、及びメモリ２７にロードされるプログラムなどを格納する。
【００５２】
また、クライアント１０１のハードウェア構成は、図２に示した計算機のハードウェア構成と同様であって、ＣＰＵ、メモリ、ＮＩＣ及び入出力装置などを備える。なお、クライアント１０１は、仮想計算機上で実行されるプログラムによって実現されてもよい。
【００５３】
図２Ｂは、本発明の第１の実施の形態のクライアントのハードウェア構成を示す図である。
【００５４】
各クライアントは、ＣＰＵ４１、ディスプレイ装置４２、キーボード４３、マウス４４、ネットワークインタフェースカード（ＮＩＣ）４５、ハードディスク装置４６及びメモリ４７を備える。ＣＰＵ４１、ディスプレイ装置４２、キーボード４３、マウス４４、ＮＩＣ４５、ハードディスク装置４６及びメモリ４７は、バス４８によって接続される。
【００５５】
各クライアントは、ＮＩＣ２５を介してネットワークに接続し、実行系及び待機系の各計算機と通信する。
【００５６】
ＣＰＵ４１は、メモリ４７に記憶されたプログラムを実行する。メモリ４７は、ＣＰＵ４１によって実行されるプログラム及び当該プログラムの実行に必要なデータを記憶する。メモリ４７は、要求送信管理部１０２を記憶する。メモリ２７は、前述のように、揮発性記録媒体である。
【００５７】
要求送信管理部１０２には、要求振分け部１０３が含まれる。要求振分け部１０３は、前述したように、オペレーティングシステム５０上でＣＰＵ４１によって実行されるプログラムである。
【００５８】
図３は、本発明の第１の実施の形態のクライアント１０１がクラスタシステムに対して送信する入力電文３０１の一例を示す図である。
【００５９】
入力電文３０１は、クライアント識別子３０２、送信元ＩＰアドレス３０３、要求種別３０４、送信時刻３０５、及び要求内容３０６を含む。なお、入力電文を統括して説明する場合には、入力電文３０１とし、個別の入力電文について言及する場合には、入力電文３０１Ａなどとする。
【００６０】
クライアント識別子３０２は、送信元のクライアント１０１を一意に示す識別情報である。送信元ＩＰアドレス３０３は、送信元のＩＰアドレスを示す情報である。要求種別３０４は、入力電文３０１が更新要求か参照要求かを示す情報である。
【００６１】
送信時刻３０５は、入力電文３０１を送信した時刻である。ここで、送信時刻３０５は、クライアントが送信した順序を表す情報であればよく、例えば、送信順序を表す通番などであってもよい。要求内容３０６は、処理データ１１５を更新又は参照するための具体的な情報である。
【００６２】
図４Ａは、本発明の第１の実施の形態の仮登録キューバッファ１１６及び処理キューバッファ１１７に格納される受信済み入力電文４１１の一例を示す図である。
【００６３】
受信済み入力電文４１１は、処理キュー通番４０２、及び入力電文３０１の構成情報３０２〜３０６を含む。なお、図４Ａに示した受信済み入力電文４１１Ａは入力電文３０１Ａに、受信済み入力電文４１１Ｂは入力電文３０１Ｂに対応する。なお、受信済み入力電文を統括して説明する場合には、受信済み入力電文４１１とし、個別の受信済み入力電文について言及する場合には、受信済み入力電文４１１Ａなどとする。
【００６４】
処理キュー通番４０２は、実行系の要求受信部１１２で更新要求の入力電文３０１の受信を完了するたびにインクリメントされた通番が格納される。
【００６５】
図４Ｂは、本発明の第１の実施の形態の更新情報バッファ１１８に格納される更新情報４０１の一例を示す図である。
【００６６】
更新情報４０１は、処理キュー通番４０２、コミット通番４０３、行ＩＤ４０４、操作種別４０５、及び行データ４０６を含む。
【００６７】
コミット通番４０３は、実行系の処理実行部１１３で更新要求を処理するトランザクション単位に通番が割り当てられる。同一のトランザクション内で複数の行が挿入、更新又は削除された場合には、同一のコミット通番が割り当てられる。
【００６８】
行ＩＤ４０４は、操作された行を特定する識別子である。操作種別４０５は、操作された行に対して実行された操作の種類である。操作種別４０５は、「挿入」、「更新」又は「削除」のいずれかの値が格納される。行データ４０６は、更新されるデータの内容である。操作種別４０５が挿入である場合には、挿入された行のデータが格納される。また、操作種別４０５が更新である場合には、更新後の行データ４０６が格納される。
【００６９】
図５Ａは、本発明の第１の実施の形態の処理データ１１５に格納されるデータベースデータ５０１の一例を示す図である。
【００７０】
データベースデータ５０１は、行ＩＤ５０３、列１〜ｎ（５０４）を含む。行ＩＤ５０３は、各行を一意に識別する値である。列１〜ｎ（５０４）は、更新又は参照されるデータが格納されている。
【００７１】
図５Ｂは、本発明の第１の実施の形態のコミット通番を格納する表の一例である。
【００７２】
コミット通番５０２は、トランザクションのコミットの順序を示す値を表し、実行系コミットされる度にインクリメントされる。
【００７３】
図６は、本発明の第１の実施の形態の状態管理テーブル１２４の一例を示す図である。
【００７４】
状態管理テーブル１２４は、クラスタ情報管理部１２１によって管理される。状態管理テーブル１２４は、サーバ識別子６０２、ＩＰアドレス６０３、状態６０４、及び参照処理可否６０５を含む。
【００７５】
サーバ識別子６０２は、各計算機を一意に識別する識別情報である。ＩＰアドレス６０３は、各計算機のＩＰアドレスである。状態６０４は、各計算機が実行系であるか、又は待機系であるかを示す情報である。
【００７６】
参照処理可否６０５は、参照処理を実行する場合には「可」、参照処理を実行しない場合には「否」が格納される。
【００７７】
図７は、本発明の第１の実施の形態のリソース管理テーブル１２５の一例を示す図である。
【００７８】
リソース管理テーブル１２５は、サーバ識別子７０２、状態７０３、ＣＰＵ使用率７０４、メモリ使用率７０５、及びネットワーク使用率７０６を含む。リソース管理テーブル１２５は、クラスタ情報管理部１２１によって管理される。
【００７９】
サーバ識別子７０２は、各計算機を一意に表す識別情報である。状態７０３は、各計算機が実行系であるか、又は、待機系であるかを示す情報である。
【００８０】
ＣＰＵ使用率７０４、メモリ使用率７０５、及びネットワーク使用率７０６は、各計算機のＣＰＵ使用率、メモリ使用率、及びネットワーク使用率を示す情報である。なお、図７に示すリソースは一例であり、処理データ管理部１１１の動作に影響を与える計算機のリソースであれば、他のリソースを含んでもよい。さらに、すべてのリソースを含む必要はなく、少なくとも一つのリソースの使用率が含まれていればよい。
【００８１】
図８は、本発明の第１実施の形態のクラスタシステムに処理要求を送信するクライアント１０１の処理手順を示すフローチャートである。
【００８２】
本処理は、クライアント１０１がクラスタシステムに処理を要求する際に、要求送信管理部１０２によって実行される。
【００８３】
クライアント１０１は、まず、クラスタシステムのいずれか一台の計算機から状態管理テーブル１２４を取得する（Ｓ８０２）。さらに、取得された状態管理テーブル１２４を参照し、実行系及び待機系のＩＰアドレス６０３を取得する。なお、処理要求を送信するたびに状態管理テーブル１２４を取得するのではなく、事前に取得しておいてもよい。この場合には、周期的に状態管理テーブル１２４の更新を確認する必要がある。
【００８４】
次に、クライアント１０１は、要求振分け部１０３によって、要求種別を判定する（Ｓ８０３）。要求種別は、更新要求又は参照要求のいずれかである。
【００８５】
クライアント１０１は、要求種別が更新要求の場合には（Ｓ８０３の結果が「更新要求」）、入力電文３０１を実行系とすべての待機系にマルチキャスト送信する（Ｓ８０４）。
【００８６】
クライアント１０１は、実行系から入力電文３０１の送達確認を受信する（Ｓ８０５）。その後、処理結果を受信し（Ｓ８０８）、本処理を終了する。
【００８７】
クライアント１０１は、要求種別が参照要求の場合には（Ｓ８０３の結果が「参照要求」）、状態管理テーブル１２４から参照処理可否６０５の値が「可」の実行系又は待機系のいずれか一台の計算機を選択し、入力電文３０１を送信する（Ｓ８０６）。送信先は、クラスタシステムを構成する各計算機間で分散されればよく、例えば、ラウンドロビンで決定されてもよいし、業務内容によって送信先を決定されるようにしてもよい。
【００８８】
クライアント１０１は、その後、送信先の実行系又は待機系から入力電文３０１の送達確認を受信する（Ｓ８０７）。さらに、処理結果を受信し（Ｓ８０８）、本処理を終了する。
【００８９】
図９は、本発明の第１の実施の形態によるクライアント１０１から送信された入力電文３０１を受信する実行系及び待機系の要求受信部１１２の処理手順を示す図である。
【００９０】
まず、実行系の処理について説明する。
【００９１】
実行系のＣＰＵ２１は、クライアント１０１から送信された入力電文３０１を受信すると（Ｓ９０２）、すべての待機系から入力電文３０１を受信した旨のメッセージＴ１０１を受信するまで待機する（Ｓ９０３）。
【００９２】
実行系のＣＰＵ２１は、すべての待機系から入力電文３０１を受信した旨のメッセージＴ１０１を受信すると、クライアント１０１に入力電文３０１の送達確認を送信する（Ｓ９０４）。
【００９３】
実行系のＣＰＵ２１は、次に、すべての待機系に入力電文３０１の確定通知メッセージＴ１０２を送信する（Ｓ９０５）。その後、待機系から入力電文確定済みメッセージＴ１０３を受信する（Ｓ９０６）。すべての待機系から入力電文確定済みメッセージＴ１０３を受信した後、入力電文３０１を処理キューバッファ１１７に受信済み入力電文４１１として格納し（Ｓ９０７）、本処理を終了する。
【００９４】
次に、待機系の処理について説明する。なお、以下の説明では、１台の待機系の処理手順を示しているが、他の待機系の処理手順についても同様である。
【００９５】
待機系のＣＰＵ２１は、クライアント１０１から送信された入力電文３０１を受信すると（Ｓ９２２）、入力電文３０１の要求種別３０４に基づいて、更新要求か参照要求かを判定する（Ｓ９２３）。
【００９６】
待機系のＣＰＵ２１は、クライアント１０１から送信された入力電文３０１が更新要求の場合には（Ｓ９２３の結果が「更新要求」）、実行系に入力電文３０１の受信が完了したことを通知するメッセージＴ１０１を送信する（Ｓ９２４）。その後、実行系から入力電文３０１の確定通知メッセージＴ１０２が送信されるまで待機する（Ｓ９２５）。
【００９７】
待機系のＣＰＵ２１は、実行系から入力電文３０１の確定通知メッセージＴ１０２を受信すると、すべての実行系及び待機系で入力電文３０１が受信されたことが保証され、入力電文３０１を受信済み入力電文４１１として仮登録キューバッファ１１６に格納する（Ｓ９２６）。障害による系切り替え発生の際には、仮登録キューバッファ１１６に登録された受信済み入力電文４１１が処理キューバッファ１１７に移されて、実行される。
【００９８】
なお、更新要求に対応する入力電文３０１を待機系が受信したタイミングでは、実行系で付与される処理キュー通番４０２を取得することができない。そこで、入力電文３０１の確定通知メッセージＴ１０２に、当該更新要求に対応する受信済み入力電文４１１の処理キュー通番４０２を含めることによって、実行系から待機系に受信済み入力電文４１１の処理キュー通番４０２を通知する。
【００９９】
待機系のＣＰＵ２１は、次に、実行系に入力電文確定済みメッセージＴ１０３を送信し（Ｓ９２７）、本処理を終了する（Ｓ９３２）。
【０１００】
待機系のＣＰＵ２１は、クライアント１０１から送信された入力電文３０１が参照要求の場合には（Ｓ９２３の結果が「参照要求」）、クライアント１０１に入力電文３０１の送達確認を送信する（Ｓ９２８）。
【０１０１】
待機系のＣＰＵ２１は、次に、クライアント識別子が同じであって、かつ、送信時刻が受信した入力電文３０１よりも前の受信済み入力電文４１１が、仮登録キューバッファ１１６に存在するか否かを判定する（Ｓ９２９）。
【０１０２】
待機系のＣＰＵ２１は、該当する受信済み入力電文４１１が存在する場合には（Ｓ９２９の結果が「ＹＥＳ」）、該当する受信済み入力電文４１１が処理キューバッファ１１７に移されるまで待機する（Ｓ９３０）。その後、対応する受信済み入力電文４１１を処理キューバッファ１１７に格納し（Ｓ９３１）。本処理を終了する。
【０１０３】
待機系のＣＰＵ２１は、該当する受信済み入力電文４１１が存在しない場合には（Ｓ９２９の結果が「ＮＯ」）、処理キューバッファ１１７にクライアント１０１から送信された入力電文３０１を格納し（Ｓ９３１）、本処理を終了する。
【０１０４】
ここで、実行系又は待機系で送受信するメッセージ（Ｔ１０１、Ｔ１０２、Ｔ１０３）には、メッセージを識別可能な情報を含めて送信してもよい。例えば、入力電文３０１又は受信済み入力電文４１１のクライアント識別子及び送信時間を含めてもよい。これによって、メッセージが識別可能となり、実行系受信処理及び待機系受信処理の複数同時起動が可能となる。
【０１０５】
図１０は、本発明の第１の実施の形態の処理実行部１１３の処理手順を示すフローチャートである。
【０１０６】
本処理は、実行系及び待機系の処理キューバッファ１１７に受信済み入力電文４１１が格納された場合に、処理実行部１１３によって実行される。
【０１０７】
実行系又は待機系のＣＰＵ２１は、処理キューバッファ１１７に受信済み入力電文４１１が格納されると、まず、自系の状態管理テーブル１２４を参照し、状態６０４を取得する（Ｓ００２）。取得された状態６０４に基づいて、自系が実行系か待機系かを判定する（Ｓ００３）。
【０１０８】
ＣＰＵ２１は、自系が実行系の場合には（Ｓ００３の結果が「実行系」）、受信済み入力電文４１１の要求種別３０４に基づいて、要求された処理が参照要求か更新要求かを判定する（Ｓ００４）。
【０１０９】
ＣＰＵ２１は、要求された処理が参照要求の場合には（Ｓ００４の結果が「参照要求」）、参照処理を実行する（Ｓ００５）。具体的に参照処理について説明すると、まず、入力電文３０１の要求内容３０６に基づいて処理データ１１５を参照し、クライアント１０１に処理結果を送信する。そして、自系の処理キューバッファ１１７に格納されている入力電文３０１を削除する。
【０１１０】
一方、ＣＰＵ２１は、要求された処理が更新要求の場合には（Ｓ００４の結果が「更新要求」）、実行系更新処理を実行する（Ｓ００７）。実行系更新処理の詳細については、図１１にて後述する。
【０１１１】
ＣＰＵ２１は、自系が待機系の場合には（Ｓ００３の結果が「待機系」）、受信済み入力電文４１１の要求種別３０４に基づいて、要求された処理が参照要求か更新要求かを判定する（Ｓ００９）。
【０１１２】
ＣＰＵ２１は、要求された処理が参照要求の場合には（Ｓ００９の結果が「参照要求」）、参照処理を実行する（Ｓ０１０）。Ｓ０１０の参照処理は、Ｓ００５の参照処理と同様である。一方、要求された処理が更新要求の場合には（Ｓ００９の結果が「更新要求」）、待機系更新処理を実行する（Ｓ０１２）。待機系更新処理の詳細については、図１２にて後述する。
【０１１３】
以上の処理では、実行系と待機系の処理をあわせて説明するために、処理実行部１１３が、状態管理テーブル１２４を毎回参照する手順を一例として説明したが、系の状態が変更されない場合には、状態管理テーブル１２４を参照する処理（Ｓ００２）、及び系の状態の判定する処理（Ｓ００３）は省略してもよい。例えば、各計算機の系の状態が、実行系に障害が発生し、系切り替えが行われた場合にのみ、Ｓ００２及びＳ００３の処理を実行すればよい。
【０１１４】
図１１は、本発明の第１の実施の形態の実行系における更新処理（Ｓ００７）の手順を示すフローチャートである図である。
【０１１５】
実行系のＣＰＵ２１は、まず、入力電文３０１の要求内容３０６に基づいて、実行系の処理データ１１５を更新する。さらに、待機系に送信する更新情報４０１を生成する（Ｓ２０２）。このとき、更新情報４０１には、入力電文３０１に対応する処理キュー通番と、トランザクション単位でインクリメントされたコミット通番４０３が付与される。
【０１１６】
なお、待機系では、実行系から送信された更新情報４０１をコミット通番４０３の順で処理データ１１５に反映する。したがって、コミット通番の重複又は欠番が生じないように実行系のコミット通番４０３の更新には排他処理を行う必要がある。コミット通番４０３の更新に排他処理を行うことによって、実行系の更新処理（Ｓ００７）を複数同時に実行した場合であっても実行系と待機系の処理データ１１５を反映する順序の整合性を保証することができる。
【０１１７】
次に、ＣＰＵ２１は、更新情報４０１を更新情報バッファ１１８に格納する（Ｓ２０３）。さらに、更新情報４０１を全待機系のデータ転送部１１４に送信する実行系データ転送処理を実行する（Ｓ２０４）。
【０１１８】
ＣＰＵ２１は、Ｓ２０２の処理で実行された処理データ１１５の更新、及びコミット通番５０２の更新を確定する（Ｓ２０５）。その後、クライアント１０１に処理結果を送信する（Ｓ２０６）。さらに、実行系の処理キューバッファ１１７に格納された受信済み入力電文４１１を削除する（Ｓ２０７）。最後に、更新情報バッファ１１８の更新情報４０１を削除し（Ｓ２０８）、本処理を終了する。
【０１１９】
図１２は、本発明の第１の実施の形態の参照系における更新処理（Ｓ０１２）の手順を示すフローチャートである。
【０１２０】
待機系のＣＰＵ２１は、図９の待機系受信処理で受信した受信済み入力電文４１１に含まれる処理キュー通番４０２と同じ値の処理キュー通番４０２を含む更新情報４０１を、更新情報バッファ１１８から検索する（Ｓ２１１）。さらに、該当する更新情報４０１のコミット通番４０３と、待機系の処理データ１１５のコミット通番５０２とが一致しない場合には、コミット通番５０２が一致するまで待機する（Ｓ２１２）。更新情報４０１のコミット通番４０３と、待機系の処理データ１１５のコミット通番５０２とが一致しない場合とは、例えば、実行系から待機系への更新情報４０１の転送時に追抜きが発生し、待機系の処理データ１１５のコミット通番５０２に抜けがある場合などである。
【０１２１】
次に、待機系のＣＰＵ２１は、該当する更新情報４０１を処理データ１１５に反映させ、処理データ１１５への反映とコミット通番５０２の更新を確定する（Ｓ２１３）。その後、待機系の処理キューバッファ１１７に格納された受信済み入力電文４１１を削除する（Ｓ２１４）。最後に、更新情報バッファ１１８の更新情報４０１を削除し（Ｓ２１５）、本処理を終了する。
【０１２２】
図１３は、本発明の第１の実施の形態の実行系のデータ転送処理（Ｓ２０４）及び待機系のデータ転送処理の手順を示すフローチャートである。
【０１２３】
データ転送処理は、実行系又は待機系のデータ転送部１１４によって実行される。
【０１２４】
実行系のデータ転送処理（Ｓ２０４）では、実行系のＣＰＵ２１は、まず、更新情報バッファ１１８に格納された更新情報４０１をすべての待機系に送信する（Ｓ３０２、Ｔ２０１）。ここで、データ転送部１１４による更新情報４０１の転送方法は、前述したように、各計算機に個別にデータを送信するユニキャストであってもよいし、システム内のすべての計算機に対して同時にデータを送信するマルチキャストであってもよい。マルチキャストによって、転送データ量の削減を図ることができる。
【０１２５】
次に、実行系のＣＰＵ２１は、更新情報４０１の受信完了メッセージＴ２０２を、すべての待機系から受信するまで待機する（Ｓ３０３）。その後、すべての待機系に更新情報４０１の同期が完了した通知Ｔ２０３を送信し（Ｓ３０４）、本処理を終了する。
【０１２６】
一方、待機系のデータ転送処理では、待機系のＣＰＵ２１は、更新情報４０１を受信するまで待機する（Ｓ３２２、Ｔ２０１）。更新情報４０１を受信すると、更新情報バッファ１１８に更新情報４０１を格納する（Ｓ３２３）。そして、実行系に更新情報の受信完了メッセージＴ２０２を送信する（Ｓ３２４）。その後、実行系から更新情報４０１の同期済み通知Ｔ２０３が送信されるまで待機する（Ｓ３２５）。
【０１２７】
待機系のＣＰＵ２１は、実行系から同期済み通知Ｔ２０３を受信すると、更新情報４０１のコミット通番４０３と、待機系の処理データ１１５のコミット通番５０２とが一致するまで待機する（Ｓ３２６）。
【０１２８】
待機系のＣＰＵ２１は、次に、更新情報４０１の処理キュー通番４０２と同一の処理キュー通番を含む受信済み入力電文４１１を仮登録キューバッファ１１６から検索する（Ｓ３２７）。その後、該当する受信済み入力電文４１１を処理キューバッファ１１７に格納する（Ｓ３２８）。さらに、該当する受信済み入力電文４１１を仮登録キューバッファ１１６から削除し（Ｓ３２９）、本処理を終了する。
【０１２９】
図１４は、本発明の第１の実施の形態のクラスタ情報管理部１２１の参照処理判定部１２３参照処理を実施するか否かを判定する手順を示すフローチャートである。
【０１３０】
実行系又は待機系のＣＰＵ２１は、まず、状態管理テーブル１２４及びリソース管理テーブル１２５を取得する（Ｓ４０２）。
【０１３１】
ＣＰＵ２１は、次に、取得されたリソース管理テーブル１２５から、リソースの使用率を取得する。本発明の第１の実施の形態では、ＣＰＵ使用率７０４、メモリ使用率７０５、及びネットワーク使用率７０６である。そして、以下の計算式に基づいて、実行系及び待機系についてリソース使用率を算出する（Ｓ４０３）。
【０１３２】
リソース使用率 ＝
（１−ＣＰＵ使用率）×（１−メモリ使用率）×（１−ネットワーク使用率）
なお、リソース使用率の計算方法について、以上に示した計算式は一例であって、他の計算式を使用してもよい。また、単にＣＰＵ使用率の値を用いてもよいし、同様にメモリ使用率又はネットワーク使用率の値を用いてもよい。
【０１３３】
ＣＰＵ２１は、自系の状態管理テーブル１２４を参照し、状態６０４を取得し、自系が実行系か待機系かを判定する（Ｓ４０４）。
【０１３４】
ＣＰＵ２１は、自系が実行系の場合には（Ｓ４０４の結果が「実行系」）、実行系のリソース使用率がすべての待機系のリソース使用率よりも小さいか否かを判定する（Ｓ４０５）。
【０１３５】
ＣＰＵ２１は、実行系のリソース使用率がすべての待機系のリソース使用率よりも小さい場合には（Ｓ４０５の結果が「ＹＥＳ」）、状態管理テーブル１２４の参照処理可否６０５を「可」に設定する（Ｓ４０６）。一方、実行系のリソース使用率よりも低いリソース使用率の待機系が存在する場合には（Ｓ４０５の結果が「ＮＯ」）、状態管理テーブル１２４の参照処理可否６０５を「否」に設定する（Ｓ４０７）。
【０１３６】
なお、実行系と待機系のリソース使用率を比較する方法としては、実行系のリソース使用率と、すべての待機系のリソース使用率の平均値を比較してもよいし、予めリソース使用率の閾値を設定し、実行系のリソース使用率が閾値より低く、待機系のリソース使用率が閾値より高い場合に実行系で参照処理を実行するとしてもよい。
【０１３７】
一方、ＣＰＵ２１は、自系が待機系の場合には（Ｓ４０４の結果が「待機系」）、自系のリソース使用率が他のすべての待機系のリソース使用率よりも小さいか否かを判定する（Ｓ４０８）。
【０１３８】
ＣＰＵ２１は、自系のリソース使用率がすべての他の待機系のリソース使用率よりも小さい場合には（Ｓ４０８の結果が「ＹＥＳ」）、状態管理テーブル１２４の参照処理可否６０５を「可」に設定する（Ｓ４０９）。一方、自系のリソース使用率よりも低いリソース使用率の待機系が存在する場合には（Ｓ４０８の結果が「ＮＯ」）、状態管理テーブル１２４の参照処理可否６０５を「否」に設定する（Ｓ４１０）。
【０１３９】
図１４に示した例では、リソースの例として、ＣＰＵ、メモリ、及びネットワークについて説明したが、各計算機で用いられるその他のハードウェア要素を用いてもよい。また、リソース使用率を表す情報として、各使用率に基づいて説明したが、直接的又は間接的にリソース使用率を表す指標を利用してもよい。
【０１４０】
図１５Ａ及び図１５Ｂは、本発明の第１の実施の形態のクライアント１及びクライアント２から送信された要求をクラスタシステムが処理する手順の一例を説明する図である。図１５Ａ及び図１５Ｂは、本発明の第１の実施の形態の処理全体を説明するための図であり、一部の処理は省略されている。詳細な各処理手順については、前述したとおりである。図１５Ａ及び図１５Ｂに示す例において、クライアント１０１からクラスタシステムに要求される処理は、図３に示した入力電文３０１Ａ、３０１Ｂ、３０１Ｃ及び３０１Ｄに対応する。
【０１４１】
図１５Ａは、クライアント１が更新要求１の入力電文を送信した後に、クライアント２が更新要求２の入力電文を送信した場合を示す図である。
【０１４２】
まず、クライアント１は、実行系及び待機系に更新要求１をマルチキャスト送信する（Ｕ０００１）。実行系及び待機系は、要求受信部１１２によって、入力電文３０１の受信を確定する（Ｕ０００２）。
【０１４３】
実行系は、処理キューバッファ１１７に入力電文３０１を受信済み入力電文４１１として格納する（Ｕ０００３）。また、待機系は、仮登録キューバッファ１１６に入力電文３０１を受信済み入力電文４１１として格納する（Ｕ０００３）。
【０１４４】
次に、実行系では、処理実行部１１３が処理キューバッファ１１７の受信済み入力電文４１１を取得する（Ｕ０００４）。そして、取得された受信済み入力電文４１１に基づいて更新処理を実行し、さらに、更新情報４０１を生成して更新情報バッファ１１８に格納する（Ｕ０００５）。その後、データ転送部１１４によって更新情報４０１をすべての待機系に送信する（Ｕ０００６）。
【０１４５】
実行系は、処理データ１１５に更新情報を反映し、更新処理を確定する（Ｕ０００７）。最後に、クライアント１に結果を送信する（Ｕ０００８）。
【０１４６】
待機系では、データ転送部１１４によって、実行系から送信された更新情報４０１を受信すると、受信した更新情報４０１を更新情報バッファ１１８に格納する（Ｕ０００６）。その後、仮登録キューバッファ１１６に格納されており、更新情報４０１の処理キュー通番４０２と同じ処理キュー通番４０２を有する受信済み入力電文４１１を自系の処理キューバッファ１１７に格納する（Ｕ０００９）。
【０１４７】
次に、待機系は、処理実行部１１３によって、処理キューバッファ１１７の受信済み入力電文４１１を処理する（Ｕ００１０）。そして、受信済み入力電文４１１の処理キュー通番４０２と同一の、更新情報バッファ１１８に格納されている更新情報４０１に基づいて自系の処理データ１１５に更新を反映する（Ｕ００１１）。
【０１４８】
次に、クライアント２では、同様に、更新要求２を実行系及び待機系にマルチキャスト送信する（Ｕ００１２）。以降、クライアント１と同様の手順で処理され、実行系と待機系での入力電文の格納、及び実行系による更新要求２の実行といった処理（Ｕ０００５〜Ｕ０００７に相当する処理）が実行され、実行系から更新要求２の結果をクライアント２に送信する（Ｕ００１３）。
【０１４９】
図１５Ｂは、クライアント１が更新要求１、クライアント２が更新要求２をクラスタシステムに送信し、実行系から処理結果を受信した後に、クライアント１が参照要求３、クライアント２が参照要求４の入力電文をクラスタシステムに送信した場合を示す図である。なお、図１５Ｂに示した時点では、待機系がクライアント２の更新要求２により実行された更新情報を待機系では受信しているが（図１５ＡのＵ０００６に相当、Ｕ０１００）、処理データに反映する処理（図１５ＡのＵ０００９〜Ｕ００１１に相当）が未実行であって、更新情報が反映されていない状態である。
【０１５０】
まず、クライアント１は、更新要求２の結果をクライアント２が受信した後（図１５ＡのＵ００１３）、参照要求３を待機系のいずれか一台の計算機（ここでは、計算機２）に送信する（Ｕ０１０１）。参照要求３を受信した待機系の計算機２は、要求受信部１１２によって、受信した参照要求３の入力電文３０１と、仮登録キューバッファ１１６に格納されている参照要求３よりも前に受信した受信済み入力電文４１１とを比較し、同一クライアントからの更新要求であって、未反映の受信済み入力電文４１１が含まれるか否かを判定する。
【０１５１】
ここで、仮登録キューバッファ１１６に含まれる更新要求２はクライアント２からの更新要求であるため、クライアント１による参照要求３の入力電文３０１は、更新要求２の処理完了を待たずに、処理キューバッファ１１７に受信済み入力電文４１１として格納される（Ｕ０１０２）。その後、処理実行部１１３が処理キューバッファ１１７の受信済み入力電文４１１を取得する（Ｕ０１０３）。そして、参照要求３の処理を実行し（Ｕ０１０４）、実行結果をクライアント１に送信する（Ｕ０１０５）。
【０１５２】
その後、待機系の計算機２は、実行系から受信済みの更新要求２に対応する更新情報４０１の処理キュー通番４０２が一致し、かつ、仮登録キューバッファ１１６に格納されている受信済み入力電文４１１を、自系の処理キューバッファ１１７に格納する（Ｕ０１０６）。続いて、図１５Ａにおける更新要求１の場合と同様に、処理キューバッファ１１７から更新要求２の受信済み入力電文４１１が取得され、処理データ１１５に更新情報４０１が反映される（Ｕ０１０７）。
【０１５３】
次に、クライアント２は、更新要求２の処理結果を受信した後（図１５ＡのＵ００１３）、参照要求４を待機系のいずれか一台の計算機（ここでは、計算機ｎ）に送信する（Ｕ０１０８）。参照要求４を受信した待機系の計算機ｎは、要求受信部１１２によって、受信した参照要求４の入力電文３０１と、仮登録キューバッファ１１６に格納されている参照要求４よりも前に受信した受信済み入力電文４１１とを比較し、同一クライアントからの更新要求であって、未反映の入力電文３０１が含まれるか否かを判定する。
【０１５４】
更新要求２は、クライアント２から送信された入力電文３０１であって、参照要求４と同一のクライアントから送信されている。したがって、更新要求２の受信済み入力電文４１１が自系の処理キューバッファ１１７に格納される（Ｕ０１１０）まで待機し、その後、参照要求４の入力電文３０１が処理キューバッファ１１７に受信済み入力電文４１１として格納される（Ｕ０１０９）。このように、同一のクライアントからの更新要求の入力電文３０１が存在している場合には、更新要求の入力電文が処理キューバッファ１１７に格納されるまで待機する。
【０１５５】
その後、待機系の計算機ｎは、処理実行部１３１によって、更新要求２の受信済み入力電文４１１を処理する（Ｕ０１１１）。そして、受信済み入力電文４１１の処理キュー通番４０２と同一の、更新情報バッファ１１８に格納されている更新情報４０１に基づいて自系の処理データに更新を反映する（Ｕ０１１２）。続いて、処理キューバッファ１１７に格納されている参照要求４の受信済み入力電文４１１に基づいて、参照要求４を処理し（Ｕ０１１３）、結果をクライアント２に送信する（Ｕ０１１４）。
【０１５６】
以上、図１５Ａ及び図１５Ｂに示したように、クライアントが更新要求を送信し、実行結果が応答された場合には、更新要求が反映された後の状態のデータが提供されることが保証される。
【０１５７】
なお、本発明の第１の実施の形態では、待機系又は実行系のうちの１台が参照処理を実行する場合について説明したが、参照処理を複数の計算機で実行させる場合にも適用可能である。複数の計算機で参照処理を実行する場合には、複数の計算機から実行結果が応答されるが、例えば、最も早い応答を実行結果としてクライアントに応答してもよい。この場合には、待機系で実行系の処理結果の反映処理が遅延し、参照処理の遅延を生じるような場合においても、参照結果を遅延せずに取得することができる。
【０１５８】
また、複数の計算機で参照処理を実行する場合において、複数の計算機からの実行結果をすべて受信するまで待機し、すべての実行結果を比較し、多数決によって実行結果を決定し、クライアントに応答してもよい。この場合には、クラスタシステムの少数の計算機にメモリ障害など異常が発生し、誤ったデータが応答された場合であっても、他の多数の計算機によって応答された正しい参照結果を取得することが可能である。
【０１５９】
本発明の第１の実施の形態によれば、参照要求を実行系と待機系の少なくとも１台に振分けることによって、実行系の更新処理の処理効率向上と待機系のリソース活用を図ることができる。
【０１６０】
さらに、本発明の第１の実施の形態によれば、待機系が参照要求を処理する場合であっても、データの整合性を保証することができる。
【０１６１】
＜第２の実施の形態＞
本発明の第１の実施の形態では、クライアントが要求振分け部１０３を保持していたが、本発明の第２の実施の形態では、実行系及び待機系が要求振分け部１０３を保持する。したがって、クライアントからの要求が、実行系及び待機系によって振分けられる。
【０１６２】
なお、第２の実施の形態において、第１の実施の形態と共通する内容については適宜説明を省略する。
【０１６３】
図１６は、本発明の第２の実施の形態のクラスタシステムの一例を示すシステム構成図である。
【０１６４】
本発明の第２の実施の形態のクラスタシステムは、第１の実施の形態と同様に、実行系の計算機１、及び、複数の待機系の計算機２〜ｎを含む。また、複数のクライアントはクラスタシステムへ処理要求を送信する。実行系及び待機系の計算機（１〜ｎ）とクライアントとは、ネットワークを介して接続される。
【０１６５】
クライアント１０１は、クラスタシステムに処理要求を送信する。クライアント１０１は、要求送信管理部１０２を有する。
【０１６６】
要求送信管理部１０２は、クラスタシステムのいずれか一台の計算機に処理を要求する入力電文３０１を送信する。要求送信管理部１０２は、さらに、クラスタシステムが入力電文３０１を受信された旨の応答を受信する。また、要求送信管理部１０２は、入力電文３０１の処理結果を受信する機能を含む。
【０１６７】
クライアント１０１は、クラスタシステムに処理要求を送信する場合、まず、要求送信管理部１０２によって、クラスタシステムのいずれか一台の計算機に入力電文３０１を送信する。このとき、送信先は、クラスタシステムを構成する各計算機間で分散されればよく、例えば、ラウンドロビンで決定されてもよい。そして、送信先の実行系又は待機系から入力電文３０１の送達確認を受信する。その後、送信先の計算機で要求された処理が終了すると、クライアント１０１は、送信先の計算機から処理結果を受信する。
【０１６８】
実行系及び待機系の各計算機は、要求振分け部１１０、処理データ管理部１１１、及びクラスタ情報管理部１２１を有する。クラスタシステムに含まれる実行系及び待機系の各計算機は、同じ構成である。
【０１６９】
要求振分け部１１０は、クライアント１０１から送信された入力電文３０１の要求先を振分ける機能を有する。入力電文３０１が更新要求の場合はマルチキャスト通信によって、複数の計算機、すなわち、実行系と全待機系に入力電文３０１を送信する。一方、参照処理の場合には、実行系又は待機系の少なくとも一台に対して入力電文３０１を送信する。また、要求振分け部１１０は、各計算機が実行系又は待機系であるかを、自系の状態管理テーブル１２４から取得する機能を含む。
【０１７０】
なお、クライアント１０１から送信された入力電文３０１を実行系が受信し、実行系が待機系に入力電文３０１を転送するようにしてもよい。
【０１７１】
処理データ管理部１１１及びクラスタ情報管理部１２１は、本発明の第１の実施の形態と同様である。
【０１７２】
図１７は、本発明の第２の実施の形態の実行系又は待機系の要求振分け部１１０による処理の手順を示すフローチャートである。
【０１７３】
実行系又は待機系のＣＰＵ２１は、クライアント１０１の要求送信管理部１０２から送信された入力電文３０１を受信すると、自系の状態管理テーブル１２４を取得する（Ｓ７０２）。そして、状態管理テーブル１２４から、実行系及び待機系のＩＰアドレス６０３を取得する。なお、入力電文３０１を受信するたびに状態管理テーブル１２４を取得するのではなく、事前に取得しておいてもよい。この場合には一定間隔で状態管理テーブル１２４が更新されていないかを確認する必要がある。
【０１７４】
実行系又は待機系のＣＰＵ２１は、次に、要求された処理が更新要求であるか参照要求であるかを判定する（Ｓ７０３）。具体的には、入力電文３０１の要求種別３０４に基づいて判定する。
【０１７５】
実行系又は待機系のＣＰＵ２１は、要求された処理が更新要求の場合には（Ｓ７０３の結果が「更新処理」）、実行系とすべての待機系に入力電文３０１をマルチキャスト送信する（Ｓ７０４）。
【０１７６】
一方、実行系又は待機系のＣＰＵ２１は、要求された処理が参照要求の場合には（Ｓ７０３の結果が「参照処理」）、状態管理テーブル１２４から待機系をいずれか１台選択し、入力電文３０１を送信する（Ｓ７０５）。ここで、状態管理テーブル１２４のレコードの参照処理可否６０５が「可」の実行系及びすべての待機系から入力電文３０１を送信する計算機を選択する。その後、本処理を終了する。
【０１７７】
なお、本発明の第２の実施の形態では、クライアントからの処理要求を受信した計算機が、待機系又は実行系のいずれか１台に処理要求を振分ける場合について説明したが、第１の実施の形態で説明したように、処理要求を複数の計算機で実行させるように振分けてもよい。このとき、複数の計算機から実行結果が応答されるが、例えば、最も早い応答を実行結果としてクライアントに応答すればよい。この場合には、第１の実施の形態にて説明したように、待機系で実行系の処理結果の反映処理が遅延し、参照処理の遅延を生じるような場合においても、参照結果を遅延せずに取得することができる。
【０１７８】
また、要求を受信した複数の計算機からクライアント１０１に処理結果を応答し、最も早い応答以外は無効としてもよい。この場合、要求振分け部１１０を介して複数の処理結果を応答する場合と比較して、要求振分け部１１０に障害が発生した場合であっても、クライアント１０１が参照結果を取得することができる。
【０１７９】
さらに、複数の計算機で参照処理を実行する場合において、前述したように、複数の計算機からの実行結果をすべて受信するまで待機し、すべての実行結果を比較し、多数決によって実行結果を決定し、クライアントに応答してもよい。この場合には、クラスタシステムの少数の計算機にメモリ障害など異常が発生し、誤ったデータが応答された場合であっても、他の多数の計算機によって応答された正しい参照結果を取得することが可能である。
【０１８０】
本発明の第１の実施の形態によれば、クライアント側ではクラスタシステムの構成を考慮せずに、参照要求を実行系と待機系の少なくとも１台に振分けることによって、実行系の更新処理の処理効率向上と待機系のリソース活用を図ることができる。
【０１８１】
さらに、本発明の第１の実施の形態によれば、第１の実施の形態と同様に、待機系が参照要求を処理する場合であっても、データの整合性を保証することができる。
【図面の簡単な説明】
【０１８２】
【図１】本発明の第１の実施の形態のクラスタシステムの一例を示すシステム構成図である。
【図２Ａ】本発明の第１の実施の形態の計算機のハードウェア構成を示す図である。
【図２Ｂ】本発明の第１の実施の形態のクライアントのハードウェア構成を示す図である。
【図３】本発明の第１の実施の形態のクライアントがクラスタシステムに対して送信する入力電文の一例を示す図である。
【図４Ａ】本発明の第１の実施の形態の仮登録キューバッファ及び処理キューバッファに格納される受信済み入力電文の一例を示す図である。
【図４Ｂ】本発明の第１の実施の形態の更新情報バッファに格納される更新情報の一例を示す図である。
【図５Ａ】本発明の第１の実施の形態の処理データに格納されるデータベースデータの一例を示す図である。
【図５Ｂ】本発明の第１の実施の形態のコミット通番を格納する表の一例である。
【図６】本発明の第１の実施の形態の状態管理テーブルの一例を示す図である。
【図７】本発明の第１の実施の形態のリソース管理テーブルの一例を示す図である。
【図８】本発明の第１実施の形態のクラスタシステムに処理要求を送信するクライアントの処理手順を示すフローチャートである。
【図９】本発明の第１の実施の形態のクライアントから送信された入力電文を受信する実行系及び待機系の要求受信部の処理手順を示す図である。
【図１０】本発明の第１の実施の形態の処理実行部の処理手順を示すフローチャートである。
【図１１】本発明の第１の実施の形態の実行系における更新処理の手順を示すフローチャートである図である。
【図１２】本発明の第１の実施の形態の参照系における更新処理の手順を示すフローチャートである。
【図１３】本発明の第１の実施の形態の実行系のデータ転送処理及び待機系のデータ転送処理の手順を示すフローチャートである。
【図１４】本発明の第１の実施の形態のクラスタ情報管理部の参照処理判定部が参照処理を実施するか否かを判定する処理の手順を示すフローチャートである。
【図１５Ａ】本発明の第１の実施の形態のクライアント１及びクライアント２から送信された要求をクラスタシステムが処理する手順の一例を説明する図である。
【図１５Ｂ】本発明の第１の実施の形態のクライアント１及びクライアント２から送信された要求をクラスタシステムが処理する手順の一例を説明する図である。
【図１６】本発明の第２の実施の形態のクラスタシステムの一例を示すシステム構成図である。
【図１７】本発明の第２の実施の形態の実行系又は待機系の要求振分け部による処理の手順を示すフローチャートである。
【符号の説明】
【０１８３】
１〜ｎ    計算機
２１    ＣＰＵ
２５    ネットワークインタフェースカード
２７    メモリ
１００    処理管理部
１０２    要求送信管理部
１０３    要求振分け部
１１０    要求振分け部
１１１    処理データ管理部
１１２    要求受信部
１１３    処理実行部
１１４    データ転送部
１１５    処理データ
１１６    仮登録キューバッファ
１１７    処理キューバッファ
１１８    更新情報バッファ
１２１    クラスタ情報管理部
１２２    クラスタ情報転送部
１２３    参照処理判定部
１２４    状態管理テーブル
１２５    リソース管理テーブル
１３１    処理実行部
３０１    入力電文
４０１    更新情報
４１１    受信済み入力電文
【図１】
2010044553.tif 000003
【図２Ａ】
2010044553.tif 000004
【図２Ｂ】
2010044553.tif 000005
【図３】
2010044553.tif 000006
【図４Ａ】
2010044553.tif 000007
【図４Ｂ】
2010044553.tif 000008
【図５Ａ】
2010044553.tif 000009
【図５Ｂ】
2010044553.tif 000010
【図６】
2010044553.tif 000011
【図７】
2010044553.tif 000012
【図８】
2010044553.tif 000013
【図９】
2010044553.tif 000014
【図１０】
2010044553.tif 000015
【図１１】
2010044553.tif 000016
【図１２】
2010044553.tif 000017
【図１３】
2010044553.tif 000018
【図１４】
2010044553.tif 000019
【図１５Ａ】
2010044553.tif 000020
【図１５Ｂ】
2010044553.tif 000021
【図１６】
2010044553.tif 000022
【図１７】
2010044553.tif 000023