(57)【特許請求の範囲】
【請求項１】
分散システムを構成し、チェックポイントを作成しながら処理を進めていくチェックポイント作成装置であって、
前記分散システム上で動作するアプリケーションまたは他のサービススレッド手段の要求に応じて処理を行う１以上のサービススレッド手段と、
このチェックポイント作成装置上で動作するサービススレッド手段の停止を意味するか否かを示す停止フラグと、このチェックポイント作成装置上で動作するサービススレッド手段のリストである実行リストと、このチェックポイント作成装置上で動作を停止している前記サービススレッド手段のリストである停止リストと、各前記サービススレッド手段の実行履歴からなるリクエストログと、を記憶する記憶手段と、
故障によって失われない記憶領域である安定記憶手段と、
前記停止フラグを更新するチェックポイントスレッド手段と、
前記停止フラグを参照するフラグスレッド手段と、を備え、
前記チェックポイントスレッド手段は、このチェックポイント作成装置に最初にマーカが届いたときに、または、このチェックポイント作成装置がスナップショットを起動したときに、停止フラグをこのチェックポイント作成装置上で動作するサービススレッド手段の停止を意味する停止フラグにし、前記実行リストと前記停止リストとに記憶されるサービススレッド手段が一致すると、前記安定記憶手段に前記リクエストログを記憶する、
ことを特徴とするチェックポイント作成装置。
【請求項２】
チェックポイントを作成しながら処理を進めていく１以上のチェックポイント作成装置からなるチェックポイント作成システムであって、
このチェックポイント作成システムを構成する各前記チェックポイント作成装置は、
このチェックポイント作成システム上で動作するアプリケーションまたは他のサービススレッド手段の要求に応じて処理を行う１以上のサービススレッド手段と、
このチェックポイント作成装置上で動作するサービススレッド手段の停止を意味するか否かを示す停止フラグと、チェックポイント作成システムを構成するチェックポイント作成装置間で送受信されるマーカメッセージの送信先のリストであるマーカリストと、このチェックポイント作成装置上で動作するサービススレッド手段のリストである実行リストと、このチェックポイント作成装置上で動作を停止している前記サービススレッド手段のリストである停止リストと、各前記サービススレッド手段の実行履歴からなるリクエストログと、を記憶する記憶手段と、
故障によって失われない記憶領域である安定記憶手段と、
前記マーカメッセージの送受信を行い、前記停止フラグと前記マーカリストを更新するチェックポイントスレッド手段と、
前記停止フラグを参照するフラグスレッド手段と、を備え、
各前記チェックポイント作成装置のチェックポイントスレッド手段は、他のチェックポイント作成装置から最初にマーカが届いたときに、または、このチェックポイント作成装置がスナップショットを起動したときに、停止フラグをこのチェックポイント作成装置上で動作するサービススレッド手段の停止を意味する停止フラグにし、前記実行リストと前記停止リストとに記憶されるサービススレッド手段が一致すると、前記安定記憶手段に前記リクエストログを記憶し、前記停止フラグをこのチェックポイント作成装置上で動作するサービススレッド手段の停止を意味しない停止フラグにし、前記停止リストをリセットし、他のチェックポイントスレッド手段にマーカメッセージの送信する、
ことを特徴とするチェックポイント作成システム。
【請求項３】
分散システムを構成する分散処理装置のチェックポイント作成方法であって、
前記分散処理装置上で、１つ以上のサービススレッドと、１つ以上のフラグスレッドと、チェックポイントスレッドとが動作し、停止フラグは分散処理装置上で動作するサービススレッドの停止を意味するか否かを示す情報とし、実行リストは分散処理装置上で動作するサービススレッドのリストとし、停止リストは分散処理装置上で動作を停止している前記サービススレッドのリストとし、
前記サービススレッドが、前記分散システム上で動作するアプリケーションまたは他のサービススレッドの要求に応じて処理を行うサービススレッドステップと、
各前記サービススレッドの実行履歴をリクエストログとして記憶するリクエストログ記憶ステップと、
前記チェックポイントスレッドが、前記分散処理装置に最初にマーカが届いたときに、または、前記分散処理装置がスナップショットを起動したときに、前記停止フラグをこのチェックポイント作成装置上で動作するサービススレッドの停止を意味するものに更新するステップと、
前記サービススレッドが要求に応じて処理を行う前に、または、前記フラグスレッドが定期的に、停止フラグを参照し、停止フラグがチェックポイント作成装置上で動作するサービススレッドの停止を意味するものであった場合に、サービススレッドの処理を停止するステップと、
前記実行リストと前記停止リストに記憶されるサービススレッドが一致すると、故障によって失われない記憶領域に前記リクエストログを記憶する安定記憶ステップと、を備える、
ことを特徴とするチェックポイント作成方法。
【請求項４】
請求項１記載のチェックポイント作成装置として、コンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は分散システムを構成する分散処理装置におけるチェックポイントを作成する技術に関する。
【背景技術】
【０００２】
分散処理装置のクラッシュ故障に対応する従来技術として、チェックポイント法とメッセージログ法とが知られている。
【０００３】
チェックポイント法では、分散システムを構成する計算機のある時点における状態（以下「チェックポイント」という）を定期的にハードディスク等の安定記憶手段に保存する。そして、クラッシュ故障発生時にいくつかの計算機が過去の記録状態にロールバックして矛盾のない実行を回復する。
【０００４】
分散システムを構成する各計算機においてチェックポイントを作成する場合には、最新の状態へロールバックしたときに計算機間で矛盾が生じないようにするために、他の計算機とも協調してチェックポイントを作成する。このような協調チェックポイント法が、長期間のサービス提供を行う分散システムでは効果的である。なお、エージェント数が変化しないシステムのチェックポイントを作成する方法として非特許文献１が、エージェント数が変化するシステムのチェックポイントを作成する方法として非特許文献２が知られている。
【０００５】
メッセージログ法は、各計算機がサービス実行中に送受信したメッセージを各計算機のメモリ（揮発性記憶媒体）または安定記憶手段に保存し、クラッシュ故障発生時、クラッシュした計算機は、初期状態にする。クラッシュした計算機は、正常なプロセスから、そのメモリや安定記憶手段に記憶されている通信記録をもとに、他の計算機から過去にどのようなメッセージを送受信したかの情報を送信してもらい、その情報をもとに、アプリケーションを再実行して全体として矛盾の無い状態に復帰する。但し、メッセージログ法単独では、メッセージ記録が累積する問題があるため、通常は前述した協調チェックポイント法と組み合わせて利用する。なお、メッセージログ法では故障した計算機だけをロールバックすればよいが、同時に複数の計算機が故障する場合には、その回復が難しいという問題がある。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】K.M. Chandy and L. Lamport, "Distributed snapshots: Determining global states of distributed systems", ACM Transactions on Computer Systems, 1985, Volume 3, Issue 1, pp.63 - 75
【非特許文献２】守屋宣, 櫟粛之著、"インターネットエージェントのための動的スナップショットアルゴリズムと部分ロールバックアルゴリズム"、電子情報通信学会論文誌、2003,Vol. J86-D-I, No.5, pp.301-317
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来技術は１台の分散処理装置上で１つのアプリケーションやサービスエージェント等のプログラムが動作することを想定しているため、１台の分散処理装置上で１以上のサービススレッドが動作する際に、効率よくマーカ等を送受信する方法がないという問題がある。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、本発明に係るチェックポイント作成技術では、分散処理装置上で、１つ以上のサービススレッドと、１つ以上のフラグスレッドと、チェックポイントスレッドとが動作し、停止フラグは分散処理装置上で動作するサービススレッドの停止を意味するか否かを示す情報とし、実行リストは分散処理装置上で動作するサービススレッドのリストとし、停止リストは分散処理装置上で動作を停止しているサービススレッドのリストとしたとき、サービススレッドが、分散システム上で動作するアプリケーションまたは他のサービススレッドの要求に応じて処理を行い、各サービススレッドの実行履歴をリクエストログとして記憶し、チェックポイントスレッドが、分散処理装置に最初にマーカが届いたときに、または、分散処理装置がスナップショットを起動したときに、停止フラグをこのチェックポイント作成装置上で動作するサービススレッドの停止を意味するものに更新し、サービススレッドが要求に応じて処理を行う前に、または、フラグスレッドが定期的に、停止フラグを参照し、停止フラグがチェックポイント作成装置上で動作するサービススレッドの停止を意味するものであった場合に、サービススレッドの処理を停止し、実行リストと停止リストに記憶されるサービススレッドが一致すると、故障によって失われない記憶領域にリクエストログを記憶する。
【発明の効果】
【０００９】
本発明は、１台の分散処理装置上で動作する１以上のサービススレッドを一括して管理するため、効率よくマーカを送受信することができ、分散システムにおけるネットワークの通信量を減らし、送受信に係る処理（計算量）を減らすことができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】分散システム１０の構成例を示す図。
【図２】チェックポイント作成装置１００−ｎのソフトウェア構成例を示す図。
【図３】チェックポイント作成装置１００−ｎの機能ブロック図。
【図４】リクエストログ記憶手段１０３ａに記憶されるリクエストログのデータ例を示す図。
【図５】停止フラグ記憶手段１０３ｂに記憶される停止フラグのデータ例を示す図。
【図６】マーカリスト記憶手段１０３ｃに記憶されるマーカリストのデータ例を示す図。
【図７】実行リスト記憶手段１０３ｄに記憶される実行リストのデータ例を示す図。
【図８】停止リスト記憶手段１０３ｅに記憶される停止リストのデータ例を示す図。
【図９】サービススレッドの処理フローを示す図。
【図１０】チェックポイントスレッドの処理フローを示す図。
【図１１】フラグスレッドの処理フロー例を示す図。
【図１２】分散システム１０の処理フロー例を示す図。
【図１３】分散システム１０の処理フロー例を示す図。
【図１４】分散処理装置１００−ｎのハードウェア構成を例示したブロック図。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、詳細に説明する。
【実施例１】
【００１２】
＜分散システム１０＞
実施例１に係る分散システム１０を説明する。図１に示すように分散システム１０は、ネットワークでつながれたＮ個の分散処理装置１００−ｎ（ｎ＝１，２，…，Ｎである。図１ではＮ＝３）からなる。エンドユーザは利用者端末９０を用い、インターネットを介して、分散処理システム１０にアクセスしサービスを要求する。分散システム１０において、Ｎ個の分散処理装置１００−ｎがネットワークを通じて互いに情報を送受信して処理を行い、エンドユーザに対しサービスを提供する。
【００１３】
＜分散処理装置１００−ｎ＞
図２及び図３を用いて分散処理装置１００−ｎを説明する。分散システム１０において一部の分散処理装置のクラッシュ故障に備えて、各分散処理装置１００−ｎは、他の分散処理装置１００−ｐ（ｎ≠ｐ）と矛盾しない内容でハードディスクなどの安定記憶手段に、その状態を記録する。つまり、各分散処理装置１００−ｎは、チェックポイントを作成しながら処理を進めていく。そのため、分散処理装置をチェックポイント作成装置とも呼ぶ。
【００１４】
図２に示すように、分散システム１０を構成する一つの分散処理装置１００−ｎ上にｗｅｂサービスミドルウェア２１が実装される。さらに、ｗｅｂサービスミドルウェア２１上でサービスを処理するＭ個のサービススレッド２２−ｍ（ｍ＝１，２，…，Ｍ）が動作している。１つの分散処理装置１００−ｎにはＱ個のデータベース２３−ｑ（ｑ＝１，２，…，Ｑ）があり、各サービススレッドはこれらのデータベースを共有することができる。サービススレッドの詳細については後述する。
【００１５】
図３に示すように、分散処理装置１００−ｎは、入出力手段１０１、記憶手段１０３、制御手段１０５、Ｍ個のサービススレッド手段１１０−ｍ（ｍ＝１，２，…，Ｍ）、チェックポイントスレッド１３０、Ｒ個のフラグスレッド手段１４０−ｒ（ｒ＝１，２，…，Ｒ、但し、フラグスレッドは、実行中の各サービススレッドに高々１個付随するため、Ｒ≦Ｍである）を備える。
【００１６】
なお、ｗｅｂサービスミドルウェアとは、オペレーションシステム（以下「ＯＳ」という）とｗｅｂサービスソフトの中間的な処理・動作を行うソフトウェアのことであり、ｗｅｂサービスソフトに共通して使用する機会の多い処理や機能を提供する。
【００１７】
本実施例では、ｗｅｂサービスの構築でよく利用されるｗｅｂサービスミドルウェアに直接協調チェックポイント法を導入する手段を与える。特に、各分散処理装置で再実行可能な無矛盾チェックポイントの作成法を与える。
【００１８】
このような構成とすることで、アプリケーション開発と耐故障方式の実装作業を分離することができる。そのため、アプリケーション開発者は耐故障方式を意識することなく、その機能を利用することができ、アプリケーション開発に専念できる。その結果、アプリケーション開発が促進される。
【００１９】
また、ユーザもｗｅｂサービスに高度な耐故障機能が保証されているため、安心してサービスを利用することができ、ｗｅｂサービスの利用も促進される。
【００２０】
＜入出力手段１０１＞
入出力手段１０１は、例えば、データが入力される入力デバイス（例えばキーボード、マウス等）の出力信号や外部記憶装置より読み出される信号やネットワークから受信した信号等を入力するための入力インタフェースと、例えば、データが出力される出力デバイス（例えばディスプレイ、プリンタ等）の出力信号や外部記憶装置に書き出す信号やネットワークへ送信する信号等を出力するための出力インタフェースからなる。
【００２１】
＜記憶手段１０３及び制御手段１０５＞
記憶手段１０３は、入力デジタル信号や、処理途中の信号や各種パラメータ等が記憶する。制御手段１０５は、記憶手段１０３に対し、各処理過程で所定の信号やパラメータの読み書きを行う。但し、制御手段１０５は、必ずしも記憶手段１０３に対し各データの読み書きを行わなければならないわけではなく、各手段間で直接データを受け渡すように制御してもよい。
【００２２】
例えば、記憶手段１０３は、リクエストログ記憶手段１０３ａと、停止フラグ記憶手段１０３ｂと、マーカリスト記憶手段１０３ｃと、実行リスト記憶手段１０３ｄと、停止リスト記憶手段１０３ｅ及び安定記憶手段１０３ｆを含む。
【００２３】
なお、リクエストログは、後述するサービススレッドの状態を表現するために用いられるデータである。例えば、リクエストログは、サービス内容、実行カウンタ、実行履歴の組合せからなる（図４参照）。サービス内容とは、そのサービススレッドが呼び出されたときのサービス名と引数の対である。このとき、呼び出し元のアプリケーション名やサービススレッド名や出された順番や時間等を引数としてもよく、このようなデータとすることで、サービススレッド手段を一意に特定することができる。実行カウンタとは、現在そのサービススレッドがその生成から数えて何番目のサービススレッド動作を実行しているかを表す数であり、ロールバックにより復旧するときには、記憶した実行カウンタが示す実行の部分から処理を再開する。実行履歴とは、例えば、過去に行ったサービススレッドの動作（以下「サービススレッド動作」という）のうち、同期型リクエスト送信及びデータベースの読み出し動作の履歴データである。
【００２４】
停止フラグとはこのチェックポイント作成装置１００−ｎ上で動作するＭ個のサービススレッド手段１１０−１，…，１１０−Ｍの停止を意味するか否かを示す情報であり（例えば、本実施例では停止フラグが「ｏｎ」であればサービススレッド手段の停止を意味し、「ｏｆｆ」であれば停止を意味しないものとする、図５参照）、マーカリストとはチェックポイントスレッド１３０がマーカを送信するチェックポイント作成装置のリストであり（サービススレッド毎ではなくチェックポイント作成装置毎に登録される、図６参照）、実行リストとはこのチェックポイント作成装置１００−ｎ上で動作するサービススレッド手段１１０−ｍのリストであり（図７参照）、停止リストとはこのチェックポイント作成装置１００−ｎ上で動作を停止しているサービススレッド手段１１０−ｍのリストである（図８参照）。なお、停止フラグ、マーカリスト、実行リスト、停止リストは各チェックポイント作成装置に１つ設けられ、リクエストログはサービススレッド毎に設けられる。
【００２５】
安定記憶手段１０３ｆは故障によって失われない記憶領域（例えば、不揮発性メモリであるハードディスクやＲＯＭ等）である。
【００２６】
＜サービススレッド手段１１０−ｍ＞
サービススレッドは、分散システム上で動作するアプリケーションまたは他のサービススレッド手段の要求に応じて処理を行うサービススレッド手段１１０−ｍとしてコンピュータを機能させるためのプログラムである。サービススレッド手段を単にサービススレッドとも呼ぶ。
【００２７】
外部から観測できるサービススレッド動作は、他の分散処理装置のｗｅｂサービスミドルウェアへのリクエストの送信、自分の動作している分散処理装置のデータベースへのアクセスである。リクエストの送信は、リクエストの応答を必要としない非同期型と、結果の応答を待つ同期型にわかれる。またデータベースへのアクセスは「書き込み」と「読み出し」がある。その他に、サービススレッドは、内部計算等の処理を行うである。
【００２８】
図９を用いてサービススレッドの処理フローを説明する。サービススレッドは生成されると、チェックポイントスレッドに実行リストの登録申請を行い、サービス内容からなるリクエストログ（図４参照）を生成する（ｓ１１１）。次に、サービススレッドは、停止フラグ記憶手段１０３ｂを参照し（ｓ１１２）、停止フラグがｏｎの場合には、チェックポイントスレッド１３０に停止リストへ登録申請を行い（ｓ１１３）、定期的に停止フラグを参照する（ｓ１１４）。ｓ１１２、ｓ１１４において、停止フラグがｏｆｆの場合には、以下の処理を行う。なお、停止フラグは後述するチェックポイントスレッドによりｏｎまたはｏｆｆに更新される。サービススレッド動作の種類が同期型リクエスト送信動作またはデータベース読み出し動作の場合には（ｓ１１５）、サービススレッドは、後述するフラグスレッドを生成する（ｓ１１６）。
【００２９】
サービススレッドは、リクエストログ記憶手段１０３ａに記憶されているリクエストログの実行カウンタを１つ増やし、実行履歴にサービス処理の内容を登録し（ｓ１１７）、サービスを提供し（ｓ１１８）、処理結果に応じてリクエストログの実行履歴を更新する（ｓ１１９）。
【００３０】
サービススレッド動作の種類が同期型リクエスト送信動作またはデータベース読み出し動作の場合には（ｓ１２０）、サービススレッドは、フラグスレッドを終了する（ｓ１２１）。このサービススレッド動作でサービス要求が終了の場合には（ｓ１２２）、そのサービス要求に対応するリクエストログをリクエストログ記憶手段１０３ａから消去する。さらに、サービススレッドは、チェックポイントスレッドに実行リストからの削除申請を行う（ｓ１２３）。サービス要求が終了ではない場合には（ｓ１２２）、ｓ１１２〜ｓ１２１をサービスの終了まで繰り返す。
【００３１】
（リクエストログの更新）
リクエストログの更新はサービススレッドによって以下のように行われる。他の分散処理装置からリクエストが届いたとき、そのリクエストを処理するため、新たにサービススレッドが生成される。このとき、そのサービススレッドに対応したリクエストログを生成する。例えば、サービス内容（サービス名とその呼び出し元や呼び出された順番等である引数）と実行カウンタ（例えば生成時は実行カウンタを０に設定する）を登録する。その後、そのサービススレッドがサービススレッド動作を行う毎に実行カウンタを１ずつ増加させる。また、同期型リクエスト送信、またはデータベース読み出しを行う場合は、リクエスト送信動作、データベース読み出し動作に加えて、各々応答結果、読み出し結果も実行履歴に登録する。登録は実行順に並べられる。なお、リクエスト送信動作の場合には、実行履歴として、サービス名（図４中、ｓｅｒｖｉｃｅ１、ｓｅｒｖｉｃｅ２と示す）、引数（図４中、ｖ２、ｖ３と示す）、対象チェックポイント装置名（図４中、分散処理装置１００−２、１００−１と示す）及び応答結果を登録する。また、データベース読み出し動作の場合には、実行履歴として、ＳＱＬ文（図４中、ｒｅａｄ１，ｒｅａｄ２，ｒｅａｄ３と示す）と対象データベース名（図４中、ｄ１，ｄ２，ｄ３と示す）及び読み出し結果（図４中、ｗ１、ｗ２、ｗ３と示す）を登録する。なお、応答結果、読み出し結果得られるまで、実行履歴の応答結果、読み出し結果部分は未定として登録しておく。
【００３２】
＜チェックポイントスレッド手段１３０＞
チェックポイントスレッドは分散処理装置間で送受信するマーカメッセージの送受信を行い、停止フラグ及びマーカリストを更新するようにコンピュータを機能させるチェックポイントスレッド手段１３０としてコンピュータを機能させるためのプログラムである。なお、チェックポイントスレッドは各分散処理装置に１つ存在する。チェックポイントスレッド手段を単にチェックポイントスレッドとも呼ぶ。
【００３３】
また、チェックポイントスレッドはサービススレッドｍが送信したリクエストの送信先、サービススレッドｍの生成元をマーカリストに登録し、更新する。なお、ｗｅｂサービスの通信においては、メッセージの通信は、サービススレッドを生成するためのリクエスト送信か、リクエストの返り値を返す送信に限られるので、上記２つを登録すればよい。マーカリストの作成方法、更新法やマーカの送信については、説明を省略する。詳しくは非特許文献２に詳述されている。但し、非特許文献２ではマーカの送受信をエージェント単位で行っているが、本発明は分散処理装置単位でマーカの送受信を行う点が異なる。
【００３４】
図１０を用いてチェックポイントスレッドの処理フローを説明する。チェックポイントスレッドは、サービススレッドから実行リストへの登録申請または削除申請がある場合には（ｓ１３０）、実行リストへの登録または実行リストから削除を行う（ｓ１３１）。チェックポイントスレッドは、他の分散処理装置から最初にマーカが届くか、または、この分散処理装置がスナップショットを起動した場合には（ｓ１３２）、停止フラグをｏｎに更新する（ｓ１３３）。その後、サービススレッドまたはフラグスレッドから停止リストの登録申請がある場合には（ｓ１３４）、対象のサービススレッドを停止リストに登録し（ｓ１３５）、実行状態を登録している全てのサービススレッドから停止報告があったか判断し（つまり、実行リストに登録されているサービススレッドと停止リストに登録されているサービススレッドが一致するか否か判断する、ｓ１３６）、全てのサービススレッドから停止報告があった場合（一致する場合）には、停止リストをリセットし、停止フラグをｏｆｆに更新する（ｓ１３７）。そしてマーカをマーカリストに登録されている分散処理装置に送信する。実行リストに登録されているサービススレッドと停止リストに登録されているサービススレッドが一致しない場合には（ｓ１３６）、一致するまでｓ１３４及びｓ１３５を繰り返す。
【００３５】
＜フラグスレッド手段１４０−ｒ＞
フラグスレッドは、停止フラグを参照するフラグスレッド手段１４０−ｒとしてコンピュータを機能させるためのプログラムである。例えば、サービススレッドのサービススレッド動作が同期型リクエスト送信動作またはデータベース読み出し動作の場合にフラグスレッドを生成する。フラグスレッド手段を単にフラグスレッドとも呼ぶ。
【００３６】
図１１を用いてフラグスレッドの処理フローを説明する。生成されたフラグスレッドは定期的に（例えば所定時間経過する毎に（ｓ１４１））停止フラグ記憶手段１０３ｂの停止フラグを参照し（ｓ１４３）、停止フラグがｏｎの場合には（ｓ１４５）、チェックポイントスレッドに、対応するサービススレッドの停止リストへの登録を申請する（ｓ１４７）。
【００３７】
協調チェックポイント法では、分散処理装置間でマーカを送受信して、チェックポイントの開始、終了、保存すべきメッセージの決定を行う。本実施例では、このマーカに基づいて、チェックポイントが作成される。
【００３８】
なお、リクエストログの安定記憶手段１０３ｆへの記録時には、同期リクエスト送信や、データベース読み出しの応答結果が得られていない場合がある。データベース読み出しに関しては、応答があった時点で、安定記憶手段１０３ｆに追加する。同期型リクエスト送信の戻り値に関しては、送信先の分散処理装置のマーカが到達する前に戻り値が返った場合にはその値を安定記憶に追加する。戻り値よりもそのマーカが先に届いた場合には戻り値未定でそのサービススレッドのリクエストログの記録を確定する。このような処理を行うことにより分散システムについて、無矛盾なチェックポイントを作成することができる。
【００３９】
＜動作例＞
図１２及び図１３を用いて、動作例を説明する。分散処理装置１００−１、分散処理装置１００−２があり、分散システム１０で動作するアプリケーションの要求により、分散処理装置１００−１にサービス名ｓｅｒｖｉｃｅ１、引数ｖ１でサービススレッド１が生成されたとする（ｓ６１）。チェックポイントスレッドがサービススレッド１を実行リストに登録し、サービススレッド１がリクエストログを生成し、リクエストログ記憶手段１０３ａにリクエストログとしてサービス内容（ｓｅｒｖｉｃｅ１，ｖ１）を記憶する（ｓ６２）。サービススレッド１の最初のサービススレッド動作がデータベースｄ１の読み出しだったとする。サービススレッド１は、実行前に停止フラグ記憶手段１０３ｂに記憶されている停止フラグを参照する。この動作例では、停止フラグの初期状態はｏｆｆとし、チェックポイントスレッドにより更新される。サービススレッド１は、停止フラグがｏｆｆなので、フラグスレッドを生成し、実行カウンタを１増やし、リクエストログの実行履歴にサービススレッド動作であるデータベース読み出し（ｒｅａｄ１，ｄ１）を登録する（ｓ６３）。次に、データベースを読み出して、サービス処理を実行する（ｓ６４）。また、フラグスレッドは定期的に停止フラグ記憶手段１０３ｂの停止フラグを参照している。本実施例では、未だ停止フラグはｏｆｆなので、フラグスレッドは停止リストの登録申請等は行わない。サービススレッド１は、動作の結果、データベースｄ１の読み出しから値ｗ１を得て、その値をリクエストログに記録してリクエストログを更新し、フラグスレッドを終了させる（ｓ６５）。次に、サービススレッド１のサービススレッド動作が、分散処理装置１００−２への同期型リクエスト送信であり、サービス名ｓｅｒｖｉｃｅ２、引数ｖ２とする。まず、サービススレッド１は停止フラグを参照し、停止フラグがｏｆｆなので、サービススレッド１は新たにフラグスレッドを生成し、リクエストログに同期リクエスト送信（ｓｅｒｖｉｃｅ２，ｖ２，分散処理装置１００−２）を登録する（ｓ６６）。リクエスト送信を行い、サービス処理を実行する（ｓ６７）。
【００４０】
このリクエストを受信した分散処理装置１００−２のｗｅｂサービスミドルウェアは、サービス内容(ｓｅｒｖｉｅｃｅ２，ｖ２)のサービススレッド２を生成する（ｓ６８）。チェックポイントスレッドはサービススレッド２を実行リストに登録し、サービススレッド２は、そのリクエストログを生成する（ｓ６９）。サービススレッド２の最初のサービススレッド動作が分散処理装置１００−１に同期型リクエスト送信（ｓｅｒｖｉｃｅ３，ｖ３）だったとする。サービススレッド２は、停止フラグを参照する。このとき、チェックポイント処理装置１００−２の停止フラグはｏｆｆだったとする。サービススレッド２は、フラグスレッドを生成し、リクエストログに（ｓｅｒｖｉｃｅ３，ｖ３，分散処理装置１００−１）を登録する（ｓ７０）。サービススレッド２はリクエスト送信し、サービス処理を行う（ｓ７１）。
【００４１】
このリクエストを受信した分散処理装置１００−１のｗｅｂサービスミドルウェアは、サービス内容(ｓｅｒｖｉｅｃｅ３，ｖ３)のサービススレッド３を生成する（ｓ７２）。分散処理装置１００−１のチェックポイントスレッドがサービススレッド３を実行リストに登録する。サービススレッド３はサービス内容を（ｓｅｒｖｉｃｅ３，ｖ３）としてリクエストログを生成する（ｓ７３）。サービススレッド３の最初のサービススレッド動作がデータベースｄ２の読み出しだったとする。サービススレッド３は、停止フラグを参照し、停止フラグがｏｆｆなので、フラグスレッドを生成し、リクエストログの実行履歴に（ｒｅａｄ２，ｄ２）を登録する（ｓ７４）。データベースを読み出し、サービス処理を行う（ｓ７５）。その後、サービススレッド３は、戻り値ｗ２を得て、これをリクエストログの実行履歴に記録し、リクエストログを更新し、フラグスレッドを終了させる（ｓ７６）。
【００４２】
このとき、分散処理装置１００−１に最初のマーカが届いたとする。チェックポイントスレッドは停止フラグをｏｎに更新する。なお、最初のマーカは、各チェックポイント作成装置にサービススレッドの停止を開始させる役割を持つ。マーカには、スナップショットを起動したサービススレッドの識別子や起動した順番や時刻等が含まれ、同じスナップショットプログラムに起因するマーカをチェックポイントスレッドは判別することができる。最初のマーカとは同じスナップショットプログラムに起因する最初のマーカを意味する。
【００４３】
その後、サービススレッド３が次のサービススレッド動作がデータベースｄ４の読み出しだったとする。サービススレッド３は、データベースｄ４の読み出しを実行する前に停止フラグを参照する。停止フラグはｏｎなので、サービススレッド３は、チェックポイントスレッドに対し、サービススレッド３の停止リスト登録申請を行い、実行を停止する（ｓ７７）。
【００４４】
そのうち、サービススレッド１に対応するフラグスレッドが停止フラグを参照し、停止フラグがｏｎなので、フラグスレッドは、チェックポイントスレッドに対し、サービススレッド１の停止リスト登録申請を行い、サービススレッド１に対し実行の停止を指示する。サービススレッド１はこの停止支持を受け実行を停止する（ｓ７８）。
【００４５】
チェックポイントスレッドは、停止リストにサービススレッド１とサービススレッド３を登録する。これにより、実行リストと停止リストの内容が一致したので、チェックポイントスレッドはサービススレッド１及びサービススレッド３に対するリクエストログをそれぞれ安定記憶手段１０３ｆに記録するように指示する。さらに、マーカを分散処理装置１００−２に送信し、停止リストをリセットし（サービススレッドの登録が全くない状態にする）、停止フラグをｏｆｆに更新する。
【００４６】
最初のマーカを受信した分散処理装置１００−２のチェックポイントスレッドは停止フラグをｏｎにする。その後、サービススレッド２に対応するフラグスレッドは、この停止フラグを参照し、チェックポイントスレッドに対し、サービススレッド２の停止リスト登録申請を行い、サービススレッド２に実行の停止を指示する。この指示を受け、サービススレッド２はその実行を停止する（ｓ７９）。このとき、分散処理装置１００−２の実行リストと停止リストが一致するので、チェックポイントスレッドは、サービススレッド２に対するリクエストログを安定記憶手段１０３ｆに記録し、マーカを分散処理装置１００−１に送信し、停止リストをリセットし、停止フラグをｏｆｆに更新する。
【００４７】
実行を再開したサービススレッド３は、フラグスレッドを生成し、リクエストログの実行履歴にデータベースｄ４の読み出し（ｒｅａｄ４，ｄ４）を登録する（ｓ８０）。サービススレッド３は、データベースｄ４の読み出しを実行し、実行結果をリクエストログの実行履歴に記録し、リクエストログを更新する。さらにフラグスレッドを終了する（ｓ８１）。そしてサービススレッド３は、サービススレッド２に取得した戻り値ｗ４を返す。この処理により、サービススレッド３は、サービス要求を終了したとする。サービススレッド３は、リクエストログ記憶部１０３ｆから対応するリクエストログを消去し、実行リストからサービススレッド３を削除するようにチェックポイントスレッドに申請し、消滅する（ｓ８２）。
【００４８】
このとき、サービススレッド２も戻り値ｗ４を受信し、その実行を進める。
【００４９】
一方、分散処理装置１００−１は分散処理装置１００−２よりマーカを受信し、サービススレッド１は、分散処理装置１００−２のサービススレッド２からの戻り値より先に分散処理装置１００−２からのマーカを受信したので、リクエストログのサービススレッドからの戻り値は未定のまま、リクエストログの記録は確定する。
【００５０】
＜効果＞
本実施例の分散処理装置は、非特許文献１と同様に無矛盾なチェックポイントを作成することができ、さらに、１台の分散処理装置上で１以上のサービススレッドを一括して管理するため、効率よくマーカを送受信することができ、分散システムにおけるネットワークの通信量を減らし、送受信に係る処理（計算量）を減らすことができるという効果を奏する。
【００５１】
従来、耐クラッシュ故障の実現（実装）は、運用するサービスアプリケーション毎に工夫されてきた。しかし、耐クラッシュ故障の実現には耐故障に関する専門知識が必要で、サービスアプリケーション開発者にはその実装が容易ではなかった。本実施例のような構成であれば、耐クラッシュ故障の実現をｗｅｂサービスミドルウェアにより行うことができ、アプリケーション開発と耐故障方式の実装作業を分離することができる。よって、大規模な分散システムの耐クラッシュ故障に適した協調チェックポイント法を対象に、各計算機でチェックポイントを作成することができる。
【００５２】
［変形例］
サービススレッドの実行リスト及び停止リストへの登録は、チェックポイントスレッドが行うのではなく、サービススレッドまたはフラグスレッドが行ってもよい。また、サービススレッドの実行リストからの削除は、チェックポイントスレッドが行うのではなく、サービススレッド自身が終了前に行ってもよい。
【００５３】
＜ハードウェア構成＞
図１４は、本実施例における分散処理装置１００−ｎのハードウェア構成を例示したブロック図である。図１４に例示するように、この例の分散処理装置１００−ｎは、それぞれＣＰＵ（Central Processing Unit）１１、入力部１２、出力部１３、補助記憶装置１４、ＲＯＭ（Read Only Memory）１５、ＲＡＭ（Random Access Memory）１６及びバス１７を有している。
【００５４】
この例のＣＰＵ１１は、制御部１１ａ、演算部１１ｂ及びレジスタ１１ｃを有し、レジスタ１１ｃに読み込まれた各種プログラムに従って様々な演算処理を実行する。また、入力部１２は、データが入力される入力インタフェース、キーボード、マウス等であり、出力部１３は、データが出力される出力インタフェース、ディスプレイ、プリンタ等である。補助記憶装置１４は、例えば、ハードディスク、半導体メモリ等であり、分散処理装置１００−ｎとしてコンピュータを機能させるためのプログラムや各種データが格納される。また、ＲＡＭ１６には、上記のプログラムや各種データが展開され、ＣＰＵ１１等から利用される。また、バス１７は、ＣＰＵ１１、入力部１２、出力部１３、補助記憶装置１４、ＲＯＭ１５及びＲＡＭ１６を通信可能に接続する。なお、このようなハードウェアの具体例としては、例えば、パーソナルコンピュータの他、サーバ装置やワークステーション等を例示できる。
【００５５】
＜プログラム構成＞
上述のように、補助記憶装置１４には、本実施例の分散処理装置１００−ｎの各処理を実行するための各プログラムが格納される。チェックポイント作成プログラムを構成する各プログラムは、単一のプログラム列として記載されていてもよく、また、少なくとも一部のプログラムが別個のモジュールとしてライブラリに格納されていてもよい。
【００５６】
＜ハードウェアとプログラムとの協働＞
ＣＰＵ１１は、読み込まれたＯＳプログラムに従い、補助記憶装置１４に格納されている上述のプログラムや各種データをＲＡＭ１６に展開する。そして、このプログラムやデータが書き込まれたＲＡＭ１６上のアドレスがＣＰＵ１１のレジスタ１１ｃに格納される。ＣＰＵ１１の制御部１１ａは、レジスタ１１ｃに格納されたこれらのアドレスを順次読み出し、読み出したアドレスが示すＲＡＭ１６上の領域からプログラムやデータを読み出し、そのプログラムが示す演算を演算部１１ｂに順次実行させ、その演算結果をレジスタ１１ｃに格納していく。
【００５７】
図３は、このようにＣＰＵ１１に上述のプログラムが読み込まれて実行されることにより構成される分散処理装置１００−ｎの機能構成を例示したブロック図である。
【００５８】
ここで、記憶部１０３は、補助記憶装置１４、ＲＡＭ１６、レジスタ１１ｃ、その他のバッファメモリやキャッシュメモリ等の何れか、あるいはこれらを併用した記憶領域に相当する。また、サービススレッド手段１１０−ｍ、チェックポイントスレッド手段１３０
及びフラグスレッド１４０−ｒは、ＣＰＵ１１にチェックポイント作成プログラムを実行させることにより構成されるものである。
【産業上の利用可能性】
【００５９】
本発明で作成したチェックポイントを用いてロールバックに利用することができる。
【符号の説明】
【００６０】
１０  分散システム
１００−ｎ  チェックポイント作成装置
１０３  記憶手段
１１０−ｍ  サービススレッド手段
１３０  チェックポイントスレッド手段
１４０−ｒ  フラグスレッド手段
【図１】
0005419166.tif 000002
【図２】
0005419166.tif 000003
【図３】
0005419166.tif 000004
【図４】
0005419166.tif 000005
【図５】
0005419166.tif 000006
【図６】
0005419166.tif 000007
【図７】
0005419166.tif 000008
【図８】
0005419166.tif 000009
【図９】
0005419166.tif 000010
【図１０】
0005419166.tif 000011
【図１１】
0005419166.tif 000012
【図１２】
0005419166.tif 000013
【図１３】
0005419166.tif 000014
【図１４】
0005419166.tif 000015