(57)【要約】本発明の一態様において、複数のフォールトトレランススキームを動的に切換えるための方法が提供される。フォールトトレランススキームは、分散システムで実働するフォールトトレランス機構に関連付けられている。本方法は、分散システムで生じる少なくとも１つのユーザインタフェースイベントの待ち時間を取得する工程を含んでいる。この待ち時間は、通信時間、サービス時間、フォールトトレランス時間のうちの少なくとも１つを含んでいる。本方法は、更に、待ち時間の平均が所定の平均待ち時間閾値よりも大きいか否かを判断する工程を含んでいる。また、本方法は、待ち時間の平均が所定の平均待ち時間閾値よりも大きい時に、通信時間、サービス時間、フォールトトレランス時間が互いに独立であるか否かを判断する工程を含んでいる。更に、本方法は、通信時間、サービス時間、フォールトトレランス時間が互いに独立である時に、フォールトトレランス時間の平均を減少させることにより待ち時間の平均を高めることができるか否かを判断する工程を含んでいる。また、本方法は、フォールトトレランス時間の平均を減少させることにより待ち時間を高めることができる場合に、第１のフォールトトレランススキームから第２のフォールトトレランススキームへと切換える工程を含んでいる。【特許請求の範囲】
【請求項１】
分散システムで実行されるフォールトトレランス機構に関連付けられた複数のフォールトトレランススキームを動的に切換える方法において、
前記分散システムで生じる少なくとも１つのユーザインタフェースイベントの待ち時間であって、通信時間、サービス時間、フォールトトレランス時間のうちの少なくとも１つを含む待ち時間を取得する工程と、
前記待ち時間の平均が所定の平均待ち時間閾値よりも大きいか否かを判断する工程と、
前記待ち時間の前記平均が前記所定の平均待ち時間閾値よりも大きい時に、前記通信時間、前記サービス時間、前記フォールトトレランス時間が互いに独立であるか否かを判断する工程と、
前記通信時間、前記サービス時間、前記フォールトトレランス時間が互いに独立である時に、前記フォールトトレランス時間の平均を減少させることにより前記待ち時間の前記平均を高めることができるか否かを判断する工程と、
前記フォールトトレランス時間の前記平均を減少させることにより前記待ち時間を高めることができる場合に、前記複数のフォールトトレランススキームのうちの第１のフォールトトレランススキームから、前記複数のフォールトトレランススキームのうちの第２のフォールトトレランススキームへと切換える工程と、
を備えたことを特徴とする方法。
【請求項２】
前記平均待ち時間閾値は、前記少なくとも１つのユーザインタフェースイベントに関連付けられたアプリケーションによって設定される
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記アプリケーションは、前記アプリケーションに関連付けられたユーザインタフェースイベントのクラス毎に前記平均待ち時間閾値を定める
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記アプリケーションによって設定された前記平均待ち時間閾値は、前記アプリケーションのユーザによって変更され得る
ことを特徴とする請求項２に記載の方法。
【請求項５】
前記平均待ち時間閾値は、前記少なくとも１つのユーザインタフェースイベントに関連付けられたアプリケーションのユーザのプロファイルを使用して設定される
ことを特徴とする請求項１に記載の方法。
【請求項６】
前記平均待ち時間閾値は、装置毎に、前記ユーザプロファイルを使用して設定される
ことを特徴とする請求項５に記載の方法。
【請求項７】
前記通信時間、前記サービス時間、前記フォールトトレランス時間が互いに独立であるか否かを判断する前記工程は、前記少なくとも１つのユーザインタフェースイベントに関連付けられたアプリケーションを実行する装置間で送られるメッセージの数が所定のメッセージ閾値を超えるか否かを判断する工程を含んでいる
ことを特徴とする請求項１に記載の方法。
【請求項８】
前記フォールトトレランス時間の平均を減少させることにより前記待ち時間の前記平均を高めることができるか否かを判断する前記工程は、前記待ち時間の前記平均のパーセンテージとしての前記フォールトトレランス時間の前記平均が所定のフォールトトレランス閾値よりも大きいか否かを判断する工程を含んでいる
ことを特徴とする請求項１に記載の方法。
【請求項９】
前記複数のフォールトトレランススキームのうちの第１のフォールトトレランススキームから前記複数のフォールトトレランススキームのうちの第２のフォールトトレランススキームへ切換える前記工程は、前記少なくとも１つのユーザインタフェースイベントに関連付けられたアプリケーションによって定められる要件のセットに基づいて前記第２のフォールトトレランススキームを選択する工程を更に含んでいる
ことを特徴とする請求項１に記載の方法。
【請求項１０】
前記複数のフォールトトレランススキームのうちの第１のフォールトトレランススキームから前記複数のフォールトトレランススキームのうちの第２のフォールトトレランススキームへ切換える前記工程は、前記第１および第２のフォールトトレランススキームのうちの少なくとも一方に関連付けられた実施コストに基づいて前記第２のフォールトトレランススキームを選択する工程を更に含んでいる
ことを特徴とする請求項１に記載の方法。
【請求項１１】
前記通信時間、前記サービス時間、前記フォールトトレランス時間が互いに独立でない時に前記第１のフォールトトレランススキームにおけるコストを判断する工程と、
前記第１のフォールトトレランススキームが前記通信時間および前記サービス時間に対して十分な影響を与えているか否かを判断する工程と、
前記十分な影響が判断される時、前記第１のフォールトトレランススキームから、前記複数のフォールトトレランススキームのうちの第３のフォールトトレランススキームへと切換える工程と、
を更に備えたことを特徴とする請求項１に記載の方法。
【請求項１２】
前記十分な影響は、前記通信時間およびサービス時間に対する影響であって、前記平均待ち時間閾値を上回るように前記平均待ち時間を増大させる影響として規定される
ことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記待ち時間の前記平均が所定の平均待ち時間閾値よりも大きくない時に、前記少なくとも１つのユーザインタフェースイベントに関連付けられたアプリケーションが更にレベルの高いフォールトトレランスを必要としているか否かを判断する工程と、
前記更にレベルの高いフォールトトレランスを有する少なくとも１つのフォールトトレランススキームが前記平均待ち時間閾値を満たすことができるか否かを判断する工程と、
前記第１のフォールトトレランススキームから、前記更にレベルの高いフォールトトレランスを有する前記少なくとも１つのフォールトトレランススキームのうちの選ばれた１つへと切換える工程と、
を更に備えたことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記少なくとも１つのユーザインタフェースイベントに関連付けられたアプリケーションに対して、フォールトトレランススキームを切換える決定を知らせる工程
を更に備えたことを特徴とする請求項１３に記載の方法。
【請求項１５】
フォールトトレランス機構に関連付けられた複数のフォールトトレランススキームを動的に切換えることができるフォールトトレラント分散システムにおいて、
前記分散システムで生じる少なくとも１つのユーザインタフェースイベントの待ち時間であって、通信時間、サービス時間、フォールトトレランス時間を含む待ち時間を取得する手段と、
前記待ち時間の平均が所定の平均待ち時間閾値よりも大きいか否かを判断する手段と、
前記待ち時間の前記平均が前記所定の平均待ち時間閾値よりも大きい時に、前記通信時間、前記サービス時間、前記フォールトトレランス時間が互いに独立であるか否かを判断する手段と、
前記通信時間、前記サービス時間、前記フォールトトレランス時間が互いに独立である時に、前記フォールトトレランス時間の平均を減少させることにより前記待ち時間の前記平均を高めることができるか否かを判断する手段と、
前記フォールトトレランス時間の前記平均を減少させることにより前記待ち時間を高めることができる場合に、前記複数のフォールトトレランススキームのうちの第１のフォールトトレランススキームから、前記複数のフォールトトレランススキームのうちの第２のフォールトトレランススキームへと切換える手段と、
を備えたことを特徴とするフォールトトレラント分散システム。
【請求項１６】
前記通信時間、前記サービス時間、前記フォールトトレランス時間が互いに独立でない時に前記第１のフォールトトレランススキームにおけるコストを判断する手段と、
前記第１のフォールトトレランススキームが前記通信時間および前記サービス時間に対して十分な影響を与えているか否かを判断する手段と、
前記十分な影響が判断される時、前記第１のフォールトトレランススキームから、前記複数のフォールトトレランススキームのうちの第３のフォールトトレランススキームへと切換える手段と、
を更に備えたことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記待ち時間の前記平均が所定の平均待ち時間閾値よりも大きくない時に、前記少なくとも１つのユーザインタフェースイベントに関連付けられたアプリケーションが更にレベルの高いフォールトトレランスを必要としているか否かを判断する手段と、
前記更にレベルの高いフォールトトレランスを有する少なくとも１つのフォールトトレランススキームが前記平均待ち時間閾値を満たすことができるか否かを判断する手段と、
前記第１のフォールトトレランススキームから、前記更にレベルの高いフォールトトレランスを有する前記少なくとも１つのフォールトトレランススキームのうちの選ばれた１つへと切換える手段と、
を更に備えたことを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記少なくとも１つのユーザインタフェースイベントに関連付けられたアプリケーションに対して、フォールトトレランススキームを切換える決定を知らせるための手段
を更に備えたことを特徴とする請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、フォールトトレラント分散演算システムに関し、特に、ユーザインタフェースイベントの待ち時間に基づいて分散システムのフォールトトレランススキームを動的に切換えるための方法に関する。
【背景技術】
【０００２】
フォールトトレランスは、電子商取引、データベーストランザクション、Ｂ２Ｂ等の、ユーザにとって重大なアプリケーションにおける動作の信頼性を確保するために、分散システムにおいて重要な技術である。分散システムは、通信ネットワークを用いて相互に接続され協働してアプリケーションを実施する演算装置のグループである。フォールトトレランスは、重大なシステム構成要素における故障を隠すことにより、ユーザの観点からの動作の信頼性を与える。分散システムのための公知のフォールトトレラント機構は、様々な故障検知・回復手段を含む様々なフォールトトレランススキームを使用して、装置故障およびネットワーク故障等の様々なタイプの故障を取り扱うことができる。
【０００３】
一方で、フォールトトレランススキームが異なるフォールトトレランスおよび性能トレードオフを有し得ることが知られている。対話型アプリケーションとの関連で、フォールトトレランススキームは、特にモバイル・コンピューティング環境においてユーザがシステムとやりとりする（相互作用する）際に、ユーザがシステム応答を待たなければならない時間に対して悪影響を与える可能性がある。この遅れは、システムの性能についてのユーザの認識に影響を与える可能性があり、深刻である。なぜなら、特定の時間制約内でユーザの要求が満たされない場合に、ユーザがアプリケーションに見切りをつけることが分かっているからである。したがって、フォールトトレランスと認識されるシステム性能との間で不利なトレードオフを制限することが望ましい。
【０００４】
また、異なるアプリケーションは、フォールトトレランスおよび性能に関して異なる要求を有し得る場合がある。更に、これらの要求は、同じアプリケーションの実行中に変化する場合がある。フォールトトレランス機構の特定の実施が全てのアプリケーションにおいてうまくいかないということもあり得る。この場合、フォールトトレランススキームを何時切換えるべきか、また、どのスキームを動的に選択すべきか、を知ることが重要である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、所望レベルのフォールトトレランスを考慮しつつ、ユーザに認識されるシステムの性能を向上させることができる、フォールトトレランススキームを動的に切換える方法が必要である。
【課題を解決するための手段】
【０００６】
本発明の一態様において、複数のフォールトトレランススキームを動的に切換えるための方法が提供される。フォールトトレランススキームは、分散システムで実働するフォールトトレランス機構に関連付けられている。本方法は、分散システムで生じる少なくとも１つのユーザインタフェースイベントの待ち時間を取得する工程を含んでいる。この待ち時間は、通信時間、サービス時間、フォールトトレランス時間のうちの少なくとも１つを含んでいる。本方法は、更に、待ち時間の平均が所定の平均待ち時間閾値よりも大きいか否かを判断する工程を含んでいる。また、本方法は、待ち時間の平均が所定の平均待ち時間閾値よりも大きい時に、通信時間、サービス時間、フォールトトレランス時間が互いに独立であるか否かを判断する工程を含んでいる。更に、本方法は、通信時間、サービス時間、フォールトトレランス時間が互いに独立である時に、フォールトトレランス時間の平均を減少させることにより待ち時間の平均を高めることができるか否かを判断する工程を含んでいる。また、本方法は、フォールトトレランス時間の平均を減少させることにより待ち時間を高めることができる場合に、第１のフォールトトレランススキームから第２のフォールトトレランススキームへと切換える工程を含んでいる。
【０００７】
本発明の他の態様においては、フォールトトレランス機構に関連付けられた複数のフォールトトレランススキームを動的に切換えることができるフォールトトレラント分散システムが提供される。本システムは、分散システムで生じる少なくとも１つのユーザインタフェースイベントの待ち時間を取得する手段を備えている。この待ち時間は、通信時間、サービス時間、フォールトトレランス時間のうちの少なくとも１つを含んでいる。本システムは、待ち時間の平均が所定の平均待ち時間閾値よりも大きいか否かを判断するための手段を更に備えている。また、本システムは、待ち時間の平均が所定の平均待ち時間閾値よりも大きい時に、通信時間、サービス時間、フォールトトレランス時間が互いに独立であるか否かを判断するための手段を備えている。更に、本システムは、通信時間、サービス時間、フォールトトレランス時間が互いに独立である時に、フォールトトレランス時間の平均を減少させることにより待ち時間の平均を高めることができるか否かを判断するための手段を備えている。また、本システムは、フォールトトレランス時間の平均を減少させることにより待ち時間を高めることができる場合に、第１のフォールトトレランススキームから第２のフォールトトレランススキームへと切換えるための手段を備えている。
【発明を実施するための最良の形態】
【０００８】
ここで、添付図面に示される本発明の一実施の形態を詳しく参照する。以下、性能トレードオフが異なる複数のフォールトトレランススキームを有する典型的なフォールトトレランス機構としての信頼性が高いメッセージングシステムを使用して、開示された本発明の実施形態について説明する。しかしながら、信頼性が高いメッセージングシステムは、本発明を実施するための唯一の手段ではなく、他のタイプのフォールトトレランス機構を使用する分散システムにおいて本発明を実施できることは、容易に理解される。例えば、調整されていない、調整された、あるいは、通信誘発のチェックポインティングを含む、分散システムを通過するメッセージのための任意のチェックポイントに基づくロールバック回復技術を採用することもできる。
【０００９】
分散システムのネットワークに接続された演算装置、例えばサーバ装置およびクライアント装置は、信頼性が高いメッセージングシステムを介してネットワークにわたってメッセージを送受信することにより、互いに通信することができる。信頼性が高いメッセージングシステムは、ウェブサービス、遠隔手続呼び出し、電子商取引等の高い信頼度を要するアプリケーションと共に分散システムで使用できるフォールトトレラントメッセージに基づく通信機構である。例えば、ポイント・ツー・ポイントメッセージングまたは集中メッセージングまたはキュー（queuing ）サーバを使用して非同期動作をサポートする、すなわち、ネットワークにわたってメッセージを送信または受信するために要する時間に制約を課さない信頼性が高いメッセージングシステムにより、相互に接続された装置は、装置のうちの一方が一時的に利用不可能となった場合であっても、互いに通信することができる。また、そのような信頼性が高いメッセージングシステムは、装置およびネットワークの故障下で、最大１回または少なくとも１回、特定アプリケーション向け配信セマンティクスにしたがってメッセージを確実に配信できる。
【００１０】
特に、信頼性が高いメッセージングシステムは、フォールトトレランスのタイプ及び程度とシステム性能とに影響を与える異なるタイプのメッセージロギングスキームを実施することができる。例えば、分散システムのクライアントおよびサーバの両方は、出力メッセージだけに関するもの、入力メッセージだけに関するもの、あるいは、両方向に関するものを含む、ロギングの方向に関する複数の選択肢を有している。また、クライアントは、出力メッセージを送信する前、出力メッセージを送信した後、あるいは、非同期的に、メッセージロギングを行ない得る。同様に、サーバは、入力メッセージをアプリケーションに対して配信する前あるいは後、または、非同期的に、メッセージを記録（log ）し得る。許されることができる故障のタイプ及び程度の他、様々なメッセージロギングスキームによって定められる方向およびタイミングも、被る処理オーバーヘッドおよび回復それ自体に含まれる複雑度に対して影響を与え、これにより、システム性能に影響を与える。
【００１１】
図１を参照すると、クライアント装置１４およびサーバ装置１６に接続されたネットワーク１２を有するモデル分散システム１０が示されている。クライアント装置１４およびサーバ装置１６は、信頼性の高いメッセージングシステム１８を使用して、ネットワークにわたって互いに通信する。信頼性の高いメッセージングシステム１８は、クライアント１４側で実行（実働）するクライアントモジュール１８ａと、サーバ１６側で実行するサーバモジュール１８ｂと、を有している。特に、クライアント１４側で実行するクライアントアプリケーション２０およびサーバ１６側で実行するサーバアプリケーション２２は、分散アプリケーション２４の構成要素である。クライアントおよびサーバアプリケーション２０、２２は、信頼性の高いメッセージングシステム１８を介して送られるメッセージを使用して、アプリケーション２４のための分散処理を調整する。例えば、サーバアプリケーション２２は、サーバ１６側でデータ記憶およびデータ検索を管理するデータベースエンジンであっても良く、一方、クライアントアプリケーション２０は、クライアント１４側でデータ提供を担うウェブブラウザであっても良い。サーバおよびクライアントアプリケーションは、共に、本発明に従ってフォールトトレランススキームを動的に切り換えるために、ユーザの観点から１つの分散データベースアプリケーション２４を形成する。
【００１２】
図１のモデル分散システム１０は、クライアント−サーバアーキテクチャを示しているが、このアーキテクチャは、単なる例示的なものであり、限定しようとするものでないことが理解されるべきである。他のタイプの分散演算システムを使用して、本発明に係るフォールトトレランススキーム、特に後述されるメッセージロギングシステム、を動的に切り換えることもできる。例えば、複数のクライアント装置が、信頼性の高いメッセージングシステム１８を介して、ピアツーピアまたはアドホク（その場しのぎ）ネットワークモードで互いに通信しても良く、また、複数のサーバ装置が、バックエンド処理のために、信頼性の高いメッセージングシステムを介して、互いに通信しても良い。
【００１３】
以下の表１に示される信頼性の高いメッセージングシステム１８のためのメッセージロギングスキームの１つのクラスに従って、メッセージは、クライアント１４側の固定記憶装置２６およびサーバ１６側の固定記憶装置２８に対して記録されることができる。表１に示されるクライアント／サーバメッセージロギングスキームは、一連のイベントによって識別される。具体的には、スキーム「ｘｙｚ」は、イベントｘがイベントｙの前に行なわれ、イベントｙがイベントｚの前に行なわれるという前提（仮定）を示している。同様に、スキーム「ｘｙｚ」は、イベントｘが最初に行なわれ、その後、イベントｙおよびイベントｚが非同期的に行なわれることを意味している。以下のイベントのリストが考えられる。すなわち、参照符号「１」で示されるように、クライアントアプリケーション２０が出力メッセージを生成し、参照符号「２」で示されるように、クライアント１４が出力メッセージをクライアント固定記憶装置２６に記録し、参照符号「３」で示されるように、クライアント１４が出力メッセージを送信し、あるいは、サーバ１６が入力メッセージを受信し、参照符号「４」で示されるように、サーバ１６が入力メッセージをサーバ固定記憶装置２８に記録し、参照符号「５」で示されるように、サーバ１６が入力メッセージをサーバアプリケーション２２に配信する。これらのイベントは、図２に図式的に示されている。
【００１４】
以下の速記表記は、故障に起因して回復され得るエンティティを示すために使用される。すなわち、ＣＤは、クライアント装置が回復可能であることを意味し、ＳＤは、サーバ装置が回復可能であることを意味し、ＮＴは、ネットワークが回復可能であることを意味し、−Ｘは、エンティティＸ（ＣＤ，ＳＤまたはＮＴ）が回復不可能であることを意味し、Ｘ（ｏｕｔ）は、エンティティＸ（ＣＤ，ＳＤまたはＮＴ）が出力メッセージだけを回復できることを意味し、Ｘ（ｉｎ）は、エンティティＸ（ＣＤ，ＳＤまたはＮＴ）が入力メッセージだけを回復できることを意味し、Ｘ  ｉｆ  Ｙは、エンティティＹ（ＣＤ，ＳＤまたはＮＴ）が回復時に利用可能な場合にだけエンティティＸ（ＣＤ，ＳＤまたはＮＴ）が回復可能であることを意味している。
【表１】
2005539312.tif 000002
【００１５】
表１に示されるクライアント／サーバメッセージロギングスキームは、図１のモデル分散システム１０のための比較的高レベルのフォールトトレランスを与える。しかし、これらのスキームも、比較的高い性能オーバーヘッドを招く。これは、サーバ１６およびクライアント１４の両方で入力メッセージおよび出力メッセージの全てが記録されるためである。クライアント／サーバロギングは、最高度のフォールトトレランスを必要とするアプリケーション、例えば電子商取引、のために有用であり得る。
【００１６】
あるいは、図１に示されるモデル分散システム１０は、クライアント１４側の固定記憶装置２６のみにメッセージを記録しても良い。以下の表２に示されるように、幾つかのクライアント側ロギングスキームが考えられる。
【表２】
2005539312.tif 000003
【００１７】
クライアント側ロギングスキームは、サーバ１６がオーバーロードされてメッセージを記録することができず且つクライアント１４がメッセージロギング動作を行なうのに十分な処理能力を有しているという状況において有用である。また、これらのスキームは、故障の存在下でのアプリケーションの回復に対して、クライアントフォールトトレランスがサーバフォールトトレランスよりも価値がある場合に有用である。例えば、サーバシステムの信頼性が非常に高いことが分かっており且つクライアントシステム（例えば、携帯端末）の信頼性が無くクライアントシステムが頻繁に一時的に故障するような場合には、クライアント側ロギングスキームがより重要であり得る。
【００１８】
同様に、以下の表３に示されるように、図１のモデル分散システム１０は、サーバ１６側の固定記憶装置２８だけにメッセージを記録しても良い。
【表３】
2005539312.tif 000004
【００１９】
サーバ側ロギングスキームのクラスは、クライアント１４がオーバーロードされてメッセージを記録することができず且つサーバ１６がメッセージロギング動作を行なうのに十分な処理能力を有しているという状況において有用である。また、サーバ１６は、クライアントからのユーザの要求をサービスするサーバのメインプロセッサにかかる負担を減らす専用のハードウェアリソースを含む、メッセージを記録するための専門の処理能力を有していても良い。また、サーバ側ロギングスキームは、例えばトランザクションサーバに関する故障に耐えるために、サーバフォールトトレランスがクライアントフォールトトレランスよりも有用である場合に適しているといえる。サーバ側ロギングスキームによって与えられるフォールトトレランス特性は、クライアント側ロギングスキームのそれと対称的であるが、サーバ側ロギングの性能特性は、クライアント側ロギングと異なっている場合がある。なぜなら、サーバ装置およびクライアント装置は、一般に異なるハードウェアリソースを有しているからである。
【００２０】
本発明に従ってフォールトトレランススキームを切り換えることによって可能となる性能の向上を説明するために、ユーザとアプリケーションとのやりとりにおけるタイムラインが図３に示されている。ユーザは、アプリケーションとやりとりする間、思考時間ＴＴと待ち時間Ｗとを交互に持って進んでいく。各思考時間の最後に、ユーザは、アプリケーションに要求を送って、応答を待つ。これは、ユーザインタフェースイベントと称される。例えば、ユーザは、ウェブページ形式を送ることにより、あるいは、ユニフォーム・リソース・ロケータ（「ＵＲＬ」）リンクをクリックしてウェブページを得ることにより、ウェブブラウザを使用するアプリケーションから情報を要求することができる。これらの作業は、ユーザインタフェースイベンツと称される。アプリケーションは、一般に、ループ状態で、ユーザからの要求を待つ。アプリケーションは、要求を受けると、演算を行なうとともに、データにアクセスしてユーザの要求を満たし得る。その後、アプリケーションは、ユーザに対して応答を送り戻す。
【００２１】
ユーザインタフェースイベントの待ち時間Ｗは、当該イベントにおけるユーザ要求の処理に関連付けられる時間である。待ち時間の平均および分散がシステムの性能についてのユーザの認識に影響を与えることは知られている。以下に詳述されるように、本発明に係るフォールトトレランス切り換えアルゴリズムは、ユーザに認識されるシステム性能を向上させるために、測定される待ち時間に基づいて、フォールトトレランススキームを切り換えることができる。
【００２２】
図１のモデル分散システム１０を再び参照して、ユーザは、クライアントアプリケーション２０を操作することにより、信頼性の高いメッセージングシステム１８を介して、サーバアプリケーション２２に要求を送信することができる。この場合、分散されたアプリケーション２４におけるユーザインタフェースイベントの待ち時間Ｗは、１）クライアント１４とサーバ１６との間の通信に費やされる総使用時間と、２）要求されるサーバアプリケーション２２によるデータ入力／出力動作および演算に費やされる時間を含む、ユーザ要求を満たす総サービス時間と、３）クライアント１４およびサーバ１６側のフォールトトレランスで費やされる時間を含む、フォールトトレランスに費やされる総使用時間と、に分けられ得る。
【００２３】
したがって、以下の計算が行なわれ得る。  
Ｗ＝Ｃ＋Ｓ＋ＦＴ・・・・・・・・（１）
ここで、
Ｗは、待ち時間であり、
Ｃは、通信に費やされる総使用時間であって、両方向Ｃ１，Ｃ２での通信時間の合計であり、
Ｓは、総サービス時間であって、演算に費やされる時間とデータＩ／Ｏ時間との合計であり、
ＦＴは、フォールトトレランスに費やされる総使用時間であって、サーバ側での総フォールトトレランス時間ＦＴ２，ＦＴ３と、クライアント側での総フォールトトレランス時間ＦＴ１，ＦＴ４との合計である。
【００２４】
パラメータＣ，Ｓ，ＦＴが連続する確率変数である場合、それらの平均に関して以下の関係が成り立つ。  
ｍ（Ｗ）＝ｍ（Ｃ）＋ｍ（Ｓ）＋ｍ（ＦＴ）・・・・・・・・（２）
ここで、
ｍ（Ｗ）は、待ち時間の平均であり、
ｍ（Ｃ）は、通信に費やされる総使用時間の平均であり、
ｍ（Ｓ）は、総サービス時間の平均であり、
ｍ（ＦＴ）は、フォールトトレランスに費やされる総使用時間の平均である。
【００２５】
また、パラメータＣ，Ｓ，ＦＴが相互に独立である場合には、それらの分散に関して以下の関係が成り立つ。  
ｖ（Ｗ）＝ｖ（Ｃ）＋ｖ（Ｓ）＋ｖ（ＦＴ）・・・・・・・・（３）
ここで、
ｖ（Ｗ）は、待ち時間の分散であり、
ｖ（Ｃ）は、通信に費やされる総使用時間の分散であり、
ｖ（Ｓ）は、総サービス時間の分散であり、
ｖ（ＦＴ）は、フォールトトレランスに費やされる総使用時間の分散である。
【００２６】
しかしながら、当業者であれば分かるように、これらの計算は、例えばユーザが１つのクライアントを操作して他のクライアントで遠隔的に実行するアプリケーションを要求する場合のように、図１のモデル分散システム１０における分散アプリケーション２４の他の構成にも、同様に適用することができる。
【００２７】
パラメータＣ，Ｓ，ＦＴにおける相互独立の制限の重要性は、それによってこれらのパラメータの各平均および各分散を方程式（２）及び（３）にしたがって互いに独立に最適化できるということである。我々は、パラメータＣ，Ｓ，ＦＴを、以下の認知に基づいて、特定の閾値まで互いに独立なものとして扱う。当該閾値の後は、もはや状態が維持されない。
【００２８】
まず第１に、通信に費やされる時間（Ｃ）は、一般に、サービス時間（Ｓ）から独立している。しかしながら、任意の所与の瞬間におけるサービス時間（Ｓ）は、サーバ１６側またはユーザ要求を処理する装置側での現在の負荷に依存し得る。すなわち、サーバ側の負荷が非常に大きく、サーバの演算がビジー状態となり、更なるユーザ要求を時宜に処理することができないという可能性がある。しかし、サーバ負荷それ自体は、サーバ１６とクライアント１４との間で送られるメッセージの数（Ｎ）に依存する。結果として、サービス時間（Ｓ）はメッセージの数（Ｎ）に依存し得る。同様に、通信に費やされる時間（Ｃ）も、ネットワーク１２にわたって放送されるメッセージの数（Ｎ）に依存し得る。なぜなら、ネットワークの帯域幅がネットワークによって伝えられるトラフィック量を制限する可能性があるからである。したがって、メッセージの数（Ｎ）がある特定の閾値を超えて増大すると、サーバ側の負荷の増大によってサービス時間（Ｓ）が増大し得て、ネットワークの過密によってネットワーク通信に費やされる時間（Ｃ）が増大し得る。従って、サービス時間（Ｓ）と通信に費やされる時間（Ｃ）との間には、メッセージの数（Ｎ）に対するそれらの相互依存のために、間接的な関係がある。
【００２９】
第２に、通信に費やされる時間（Ｃ）は、一般に、フォールトトレランスで費やされる時間（ＦＴ）から独立している。しかしながら、この場合も、クライアント１４側およびサーバ１６側のフォールトトレランス時間を含むフォールトトレランスで費やされる時間（ＦＴ）は、任意の所与の瞬間において、サーバおよびクライアント側の負荷に依存し得る。したがって、フォールトトレランスで費やされる時間（ＦＴ）は、サーバ１６とクライアント１４との間で送られるメッセージの数（Ｎ）に依存する可能性がある。結果として、通信に費やされる時間（Ｃ）とフォールトトレランスで費やされる時間（ＦＴ）との間には、メッセージの数（Ｎ）に対するそれらの相互依存のために、間接的な関係がある。
【００３０】
第３に、フォールトトレランスで費やされる時間（ＦＴ）は、一般に、サービス時間（Ｓ）から独立しているが、この場合も同様に、パラメータＦＴとＳとの間には、メッセージの数（Ｎ）に対するそれらの相互依存のために、間接的な関係がある。
【００３１】
これらの認知は、パラメータＣ，Ｓ，ＦＴがメッセージの数（Ｎ）のある特定の閾値まで互いに独立であり、その閾値の後、これらのパラメータは互いに依存するようになるかもしれない、という仮定に至る。この仮定が意味するところは、パラメータＣ，Ｓ，ＦＴが互いに独立である限りは、フォールトトレランススキームを切り換えてパラメータｍ（Ｃ），ｍ（Ｓ），ｍ（ＦＴ）のうちの任意の１つを減らすことにより平均待ち時間（ｍ（Ｗ））を最適化することができるということである。相互独立状態がもはや維持されなくなると直ぐに、平均待ち時間（ｍ（Ｗ））および認識されるシステム性能への全体の影響を決定するために、各パラメータｍ（Ｃ），ｍ（Ｓ），ｍ（ＦＴ）に関してフォールトトレランススキームを切り換えることの影響を考慮することが必要になる。
【００３２】
待ち時間に基づいてフォールトトレランススキームを動的に切り換えるための本発明に係るアルゴリズム３０の実行が、図４の決定ツリーを使用して示される。この実行については、図１のモデル分散システムを参照して説明されるが、このシステムにおいて、待ち時間（Ｗ）は、クライアントアプリケーション２０からサーバアプリケーション２２へのユーザ要求に関連付けられている。切換えアルゴリズム３０は、信頼性が高いメッセージングシステム１８のためのメッセージロギングスキームを切り換えるために、クライアント１４側およびサーバ１６側で連続的に実行されることができる。したがって、サーバアプリケーション２２が最初に要求される或いはその実行中に動的に要求される場合に、切換えアルゴリズムはメッセージロギングスキームを切り換え得る。切換えアルゴリズム３０がクライアント１４側およびサーバ１６側で同時に実行されると、ハンドシェイクプロトコルを使用して、所望のフォールトトレランススキームに関する２つの装置間の任意の対立（conflict ）が解決され得る。ハンドシェイクプロトコルによって、クライアント１４およびサーバ１６は、使用されるフォールトトレランススキームについてクライアント１４およびサーバ１６が同意することを可能にするメッセージを交換することができる。
【００３３】
第１のブロック３２として、切換えアルゴリズム３０は、測定された待ち時間Ｗの値を得るとともに、アプリケーションにおける平均待ち時間（ｍ（Ｗ））の値を計算する。例えば、図１の分散システムにおけるクライアント１４およびサーバ１６は、分散アプリケーション２４のユーザインタフェースイベントに関連付けられた作業に関するタイムスタンプを使用して、待ち時間（Ｗ）を測定することができる。具体的には、ＨＴＭＬに基づくクライアント１４は、ウェブブラウザ型のクライアントアプリケーション２０からサーバアプリケーション２２への全てのＨＴＴＰ「ＧＥＴ」要求および「ＰＯＳＴ」要求を傍受することができる。「ＧＥＴ」要求または「ＰＯＳＴ」要求が発行されると、クライアント１４は第１のタイムスタンプをとる。「ＧＥＴ」要求または「ＰＯＳＴ」要求が戻り且つサーバアプリケーションによって生成された応答がブラウザを使用して表示されると、第２のタイムスタンプがクライアント１４によってとられる。この場合の測定された待ち時間（Ｗ）は、第２のタイムスタンプと第１のタイムスタンプとの間の差である。その後、待ち時間（Ｗ）に関して測定された複数の値から、公知の統計学的方法を使用して、平均待ち時間（ｍ（Ｗ））が計算される。
【００３４】
分散アプリケーション２４が実行を開始すると、切換えアルゴリズム３０は、分散アプリケーションの過去の実行から予め測定された待ち時間Ｗまたは平均待ち時間（ｍ（Ｗ））を得ることができる。分散アプリケーション２４が実行されてしまえば、切換えアルゴリズム３０は、実行中に測定された待ち時間Ｗの現在の値を使用して、平均待ち時間（ｍ（Ｗ））を計算することができる。
【００３５】
次に、ブロック３４において、切換えアルゴリズム３０は、平均待ち時間（ｍ（Ｗ））が所定の平均待ち時間閾値（Ｔ（Ｗ））よりも大きいか否かを判断する。平均待ち時間閾値（Ｔ（Ｗ））は、例えば、分散アプリケーション２４の開発者、クライアント１４とやりとりするユーザ、あるいは、サーバ１６を維持するシステム管理者、によって設定され得る。一般に、平均待ち時間閾値（Ｔ（Ｗ））は、分散アプリケーション２４の各構成要素において同じである。しかしながら、以下の順番（最高から最低）で、すなわち、ユーザの好み、システム管理者、アプリケーション開発者の順番で、優先順位を割り当てることができる。したがって、アプリケーション開発者は、システム管理者またはユーザによって変更され得る平均待ち時間閾値（Ｔ（Ｗ））における最初の値を提供し得る。平均待ち時間閾値が変更されると、分散アプリケーション２４を実行する全ての装置に対して新たな閾値が通信される。
【００３６】
幾つかの要因が、平均待ち時間閾値（Ｔ（Ｗ））のための特定の値の選択に影響を与え得る。例えば、アプリケーション開発者は、アプリケーションのタイプに基づいて、アプリケーションにおける平均待ち時間閾値を選択する場合がある。したがって、対話型実時間ネットワークゲームは、約１から３秒という平均待ち時間閾値を有し得るウェブブラウジングアプリケーションによってアクセス可能なデータベースアプリケーションよりも、短い平均待ち時間閾値、例えば約３から６ミリ秒、を有し得る。また、高性能または高い信頼性に関するユーザの好みにより、ユーザは、平均待ち時間閾値（Ｔ（Ｗ））に関してアプリケーション開発者によって選択された値と異なる値を選択する場合がある。更に、例えばシステム管理者は、平均待ち時間閾値（Ｔ（Ｗ））を変更して、サーバ能力を高める場合がある。
【００３７】
アプリケーション開発者、ユーザ、及び、システム管理者は、アプリケーション毎に平均待ち時間閾値（Ｔ（Ｗ））を与える他に、アプリケーションのユーザインタフェースイベントの異なるクラスに別個の平均待ち時間閾値（Ｔ（Ｗ））を与えることができる。後者の場合には、アプリケーションに関連付けられたユーザインタフェースイベントの各クラス毎に、待ち時間（Ｗ）が測定され得る。その後、切換えアルゴリズム３０は、ユーザインタフェースイベントの特定のクラスにおける平均待ち時間が所定の閾値よりも大きいか否かを判断するとともに、後述する機能を、アプリケーション毎にではなく、ユーザインタフェースイベントの異なるクラスと共同で果たすことができる。更に、ユーザは、アプリケーション開発者によって設定された平均待ち時間閾値（Ｔ（Ｗ））をいつでも無効にすることができるとともに、信頼性を低めてしまう恐れはあるが、より短い待ち時間を要求することができ、あるいは、待ち時間が長くなる恐れはあるが、より高い信頼性を要求することができる。
【００３８】
あるいは、ユーザプロファイルに基づいて、平均待ち時間閾値（Ｔ（Ｗ））を設定することができる。具体的には、同じアプリケーションの場合であっても、第１のユーザが所定量の待ち時間を許容できると考え、一方、第２のユーザが同じ平均待ち時間閾値を許容できないと考えても良い。したがって、システム性能についてのユーザ自身の認識に基づいて、平均待ち時間閾値を含むユーザプロファイルが形成され得る。ユーザプロファイルは、アプリケーション毎に平均待ち時間閾値を特定しても良い。また、ユーザプロファイルは、アプリケーションタイプ毎に、すなわち、関連するアプリケーションの異なるクラスごとに、平均待ち時間閾値を特定しても良い。あるいは、ユーザプロファイルは、装置毎に、平均待ち時間閾値における値を特定し、それにより、要求されるアプリケーションとは関係無く、ある装置で実行している時にはアルゴリズムによって同じ平均待ち時間閾値が使用されるようになっていても良い。
【００３９】
また、切換えアルゴリズム３０は、測定された待ち時間（Ｗ）の分散をも計算できる、ということが理解される。その時、切換えアルゴリズムは、平均待ち時間（ｍ（Ｗ））ではなく、分散待ち時間（ｖ（Ｗ））を所定の分散待ち時間閾値と比較することができる。
【００４０】
（待ち時間閾値超え）
ブロック３４において、平均待ち時間閾値（Ｔ（Ｗ））が超えられたことを切換えアルゴリズム３０が判断すると、当該アルゴリズムは、ブロック３６において、通信に費やされる時間（Ｃ）と、サービス時間（Ｓ）と、フォールトトレランスで費やされる時間（ＦＴ）と、の値を得る。当業者であれば分かるように、前述された待ち時間Ｗの測定と同様に、通信プロセスと、ユーザ要求の処理と、フォールトトレランス機構と、にそれぞれ関連する作業のためのタイムスタンプを使用して、パラメータＣ，Ｓ，ＦＴが測定され得る。例えば、図１の分散システムのクライアント１４およびサーバ１６は、メッセージロギング動作の最初と最後のタイムスタンプを使用することにより、信頼性が高いメッセージングシステム１８におけるフォールトトレランスで費やされる時間（ＦＴ）を計算することができる。
【００４１】
ブロック３８において、切換えアルゴリズム３０は、通信に費やされる時間（Ｃ）、サービス時間（Ｓ）、フォールトトレランスで費やされる時間（ＦＴ）の測定値に基づいて、これらのパラメータが互いに独立であるか否かを判断する。Ｃ，Ｓ，ＦＴにおける相互独立の判断は、分散アプリケーション２４の実行環境と、ハードウェアリソースと、処理能力と、クライアント１４およびサーバ１６のメモリリソースと、に依存している。所与の実行環境において、パラメータＣ，Ｓ，ＦＴは、前述したように、メッセージの数（Ｎ）に関する所定の閾値（Ｔ（Ｎ））まで、互いに独立である。メッセージの数（Ｎ）がメッセージ閾値Ｔ（Ｎ）を超えると、パラメータＣ，Ｓ，ＦＴは、もはや互いに独立なものとして扱われない。メッセージ閾値Ｔ（Ｎ）の値は、様々な実行環境と組み合わせて、分散アプリケーション２４のために実験的に決定され得る。その値は、同様の環境における分散アプリケーション２４の今後の実行のために使用され得る。
【００４２】
パラメータＣ，Ｓ，ＦＴが互いに独立である場合、ブロック４０において、切換えアルゴリズム３０は、フォールトトレランスで費やされる平均時間（ｍ（ＦＴ））を減らすことにより平均待ち時間（ｍ（Ｗ））を高めることができるか否かを判断する。特に、アルゴリズムは、平均待ち時間（ｍ（Ｗ））のパーセンテージとしての、フォールトトレランスで費やされる平均時間（ｍ（ＦＴ））の値が、フォールトトレランスにおける所定の閾値（Ｔ（ＦＴ））を超えたか否かを判断する。例えばシステム管理者または分散アプリケーション２４によって、フォールトトレランス閾値（Ｔ（ＦＴ））の値は特定され得る。
【００４３】
ブロック４０において現在のフォールトトレランススキームにおけるフォールトトレランス閾値（Ｔ（ＦＴ））が超えられていると、切換えアルゴリズム３０は、ブロック４２において、フォールトトレランススキームを切り換え得る。異なるフォールトトレランススキームを選択するための基準は、分散アプリケーション２４によって与えられる一連の所定の要件を含み得る。例えば、分散アプリケーションは、フォールトトレランス閾値（Ｔ（ＦＴ））が超えられる場合には、常に特定の所定のフォールトトレランススキームが利用されるべきであることを定めても良い。ハンドシェイクプロトコルが、既存のスキームに取って代わるべき所望のフォールトトレランススキームにサーバおよびクライアントが同意することを保証し得る。
【００４４】
また、フォールトトレランススキームを選択するための基準は、異なるフォールトトレランススキームの実施コストに基づいていても良い。フォールトトレランススキームの実施コストは、サービス時間（Ｓ）とフォールトトレランスで費やされる時間（ＦＴ）との合計によって規定される。これらの計算において、通信時間（Ｃ）は無視される。実施コストは、サービス時間（Ｓ）およびフォールトトレランスで費やされる時間（ＦＴ）を測定するためのタイムスタンプを使用して決定されても良い。その後、分散システムの一部分を構成する装置は、様々なフォールトトレランススキームのための実施コストを記憶して共有することができる。実施コストは、個々のフォールトトレランススキームに関して、あるいは、フォールトトレランススキームのクラスに関して、測定され得る。切換えアルゴリズムは、異なるフォールトトレランススキームにおけるこれらの実施コストを使用して、フォールトトレランス閾値（Ｔ（ＦＴ））が超えられる際にいずれのスキームが選択されるべきかを決定することができる。したがって、現在のフォールトトレランススキームよりも低い実施コストを有する新たなフォールトトレランススキームが選択されて、平均待ち時間（ｍ（Ｗ））が高められ得る。
【００４５】
例えば、信頼性が高いメッセージングシステム１８は、クライアント１４およびサーバ１６の両方が両方向のメッセージ、すなわち入力メッセージおよび出力メッセージ、を記録するメッセージロギングスキームを使用していても良い。このスキームは、それがクライアント１４、サーバ１６及びネットワーク１２の故障を回復させることができるため、比較的高レベルのフォールトトレランスを与える。しかしながら、このスキームは、メッセージを記憶するための固定記憶装置への複数の書き込みを必要として、したがって、フォールトトレランスで費やされる時間がより多く必要となるため、比較的高い実施コストを有している。一方、メッセージを送信している間にのみメッセージロギングが行なわれるスキームは、サーバ１６およびクライアント１４での任意の出力メッセージを完全に回復させることができるが、他のエンティティが実行中であり且つネットワークが回復時に利用可能である場合にだけ、サーバまたはクライアントのいずれかで受けた（入力）メッセージを回復させる。しかし、このスキームは、両方向のメッセージを記録する前記スキームのオーバーヘッドの半分のオーバーヘッドを有しているため、比較的低い実施コストを有している。したがって、切換えアルゴリズムは、フォールトトレランス閾値が超えられた場合に、前者のメッセージロギングスキームから後者のメッセージロギングスキームへと切り換えて、待ち時間を高め得る。
【００４６】
フォールトトレランススキームを切り換えることにより、システムの信頼性の保証が変わってしまう可能性がある。切換えアルゴリズム３０は、決定が成される時に使用されているスキームと同じレベルの信頼性を与えるフォールトトレランススキームだけを切り換えることを考慮しても良い。しかしながら、このアルゴリズムにより、分散アプリケーション２４またはユーザは、別な方法で特定することができる。例えば、アプリケーションは、決定時に使用されているフォールトトレランススキームよりも選択されたスキームの方が信頼性が低い場合であっても、平均待ち時間（ｍ（Ｗ））を高めるフォールトトレランススキームをアルゴリズムに選択させても良い。ブロック４２においてアルゴリズムがフォールトトレランススキームを切り換えると、ブロック４４において、アルゴリズムは、クライアントアプリケーション２０およびサーバアプリケーション２２を含む分散アプリケーション２４に対し、新たなフォールトトレランススキームに関連付けられた信頼性の保証の変化と性能波及効果とについて知らせる。
【００４７】
ブロック３８において、パラメータＣ，Ｓ，ＦＴの値が互いに依存していると判断される場合、ブロック４６において、切換えアルゴリズムは、使用中のフォールトトレランススキームにおけるフォールトトレランスのコストを決定する。すなわち、切換えアルゴリズムは、フォールトトレランスで費やされる時間（ＦＴ）が、通信に費やされる時間（Ｃ）、サービスに費やされる時間（Ｓ）、及び、最終的に待ち時間（Ｗ）に与えている影響を判断する必要がある。ブロック４８において、現在のフォールトトレランススキームが通信に費やされる時間（Ｃ）およびサービスに費やされる時間（Ｓ）に対して十分な影響、詳細は後述する、を与えているとアルゴリズムが判断する場合には、アルゴリズムは、ブロック５０において、現在のフォールトトレランススキームを切り換えて、ブロック５２において、クライアントアプリケーション２０およびサーバアプリケーション２２を含む分散アプリケーション２４に対して信頼性の保証の変化および性能波及効果を知らせても良い。ブロック５０においてフォールトトレランススキームを選択するための基準は、分散アプリケーション２４によって与えられても良く、あるいは、前述したように、異なるフォールトトレランススキームの実施コストに基づいていても良い。ブロック４８において、現在のフォールトトレランススキームは許容できない待ち時間を引き起こしていないと切換えアルゴリズムが判断する場合、切換えアルゴリズムはフォールトトレランススキームを切り換えない。
【００４８】
十分な影響とは、通信に費やされる時間（Ｃ）およびサービスに費やされる時間（Ｓ）に対するフォールトトレランススキームの影響であって、フォールトトレランスで費やされる時間（ＦＴ）が通信で費やされる時間（Ｃ）およびサービスで費やされる時間（Ｓ）に比べて短い場合であっても、平均待ち時間（ｍ（Ｗ））が増大して平均待ち時間閾値（Ｔ（Ｗ））を越えるようにこれらのパラメータの値を引き上げるような影響、として規定される。
【００４９】
現在のフォールトトレランススキームが通信で費やされる時間（Ｃ）およびサービスで費やされる時間（Ｓ）に対して十分な影響を与えているか否かをブロック４８で判断するために、切換えアルゴリズム３０は、パラメータＣ，Ｓ，ＦＴを相互に依存させることができる程度に十分多いメッセージの所与の数（Ｎ）における分散アプリケーション２４の過去の実行から、待ち時間Ｗに関する値の２つのセットを得る。待ち時間値の第１のセットは、現在のフォールトトレランススキームとの組み合わせの分散アプリケーション２４の過去の実行に対応している。待ち時間値の第２のセットは、フォールトトレランススキームが実施されていない分散アプリケーション２４の過去の実行に対応している。例えば、図１の分散システムにおけるクライアント１４およびサーバ１６は、分散アプリケーション２４における待ち時間値を測定するとともに、この待ち時間値を、信頼性が高いメッセージロギングシステム１８におけるメッセージロギングスキームの異なるタイプおよびメッセージの数（Ｎ）の様々な値に関して切換えアルゴリズムによりアクセスされ得る不揮発性の機械可読媒体内、例えば固定記憶装置２６内または固定記憶装置２８内、に記憶することができる。その後、切換えアルゴリズムは、フォールトトレランススキームの実施を伴う平均待ち時間（ｍ（Ｗ＿ＦＴ））を計算するとともに、フォールトトレランススキームが無い平均待ち時間（ｍ（Ｗ＿ｎｏＦＴ））を計算する。ｍ（Ｗ＿ｎｏＦＴ）が平均待ち時間閾値（Ｔ（Ｗ））よりも短く、かつ、ｍ（Ｗ＿ＦＴ）とｍ（Ｗ＿ｎｏＦＴ）との間の差が所定のパーセンテージ量よりも大きい場合、例えばｍ（Ｗ＿ＦＴ）の約２０％よりも大きい場合に、アルゴリズムは、現在のフォールトトレランススキームが通信に費やされる時間（Ｃ）およびサービスに費やされる時間（Ｓ）に対して十分な影響を与えていると判断するとともに、フォールトトレランススキームを切り換えることを試みる。２０％という値は例示であって限定的なものではなく、他の値をも採用できることが理解される。
【００５０】
（待ち時間閾値以下）
ブロック３４において、平均待ち時間（ｍ（Ｗ））が所定の待ち時間閾値（Ｔ（Ｗ））よりも短い場合、ブロック５４において、切換えアルゴリズムは、現在のフォールトトレランススキームが与え得る信頼性よりも高い信頼性をユーザまたは分散アプリケーション２４が必要としているか否かを判断する。
【００５１】
例えば、図１のクライアントアプリケーション２０は、現在使用中のフォールトトレランススキームよりも信頼性が高いフォールトトレランススキームを要求し得る。あるいは、図１のモデル分散システム１０におけるサーバアプリケーション２２は、それが実行を開始する際に、クライアント／サーバロギングスキームを要求していても良い。しかしながら、待ち時間を高めるため、切換えアルゴリズム３０は、その後、平均待ち時間（ｍ（Ｗ））が所定の平均待ち時間閾値（Ｔ（Ｗ））を越えて増大する場合には、クライアント側ロギングスキームに切り換えても良い。その後のある時間に、平均待ち時間は、所定の平均待ち時間閾値を下回る可能性がある。その時、切換えアルゴリズムは、サーバアプリケーション２２によって最初に要求されたクライアント／サーバロギングスキームに切換え戻すか否かを判断する。
【００５２】
更に信頼性が高いフォールトトレランススキームが望まれる場合には、ブロック５６において、切換えアルゴリズム３０は、所望のフォールトトレランススキームが平均待ち時間閾値（Ｔ（Ｗ））を満たすことができるか否かを判断する。特に、アルゴリズムは、フォールトトレランススキームの切換えによって平均待ち時間（ｍ（Ｗ））が平均待ち時間閾値（Ｔ（Ｗ））を所定のΔ量（ｄ（Ｗ））だけ上回るか否かを判断する。切換えアルゴリズムは、フォールトトレランススキームに関連付けられた待ち時間の過去の測定値を使用して、所望のフォールトトレランススキームにおける期待される平均待ち時間を計算することができる。複数のフォールトトレランススキームが選択利用できる場合には、選択基準は、前述したように、異なるフォールトトレランススキームの実施コストに基づいていても良く、あるいは、分散アプリケーション２４によって与えられても良い。
【００５３】
更に信頼性が高いフォールトトレランススキームへの切換えによって、所定のΔ量（ｄ（Ｗ））を越えては平均待ち時間閾値を上回らない場合には、アルゴリズムは、ブロック５８において、フォールトトレランススキームを切り換えるとともに、ブロック６０において、信頼性の保証における変化および性能波及効果を分散アプリケーション２４に対して知らせる。
【００５４】
本発明の特定の例示的な実施形態に関して本発明を説明して図示してきたが、本発明をこれらの例示的な実施形態に限定しようとする意図はない。当業者であれば分かるように、以下の、請求項で規定された本発明の真の範囲および思想から逸脱することなく、変形や修正を行なうことができる。したがって、添付の請求項およびその等価物の範囲に入るそのような変形および修正は、すべて本発明の範囲に含まれるものである。
【図面の簡単な説明】
【００５５】
【図１】本発明に係るフォールトトレランススキームを動的に切換えるための方法を実施するモデル分散システムのブロック図である。
【図２】図１の信頼性が高いメッセージングシステムのメッセージロギングスキームに関連付けられたイベントを示すブロック図である。
【図３】図１の分散システムにおけるユーザインタフェースイベントのタイムラインを示すブロック図である。
【図４】本発明に係るフォールトトレランススキームを動的に切換えるための方法におけるフローチャートである。
【図１】
2005539312.tif 000005
【図２】
2005539312.tif 000006
【図３】
2005539312.tif 000007
【図４】
2005539312.tif 000008
【国際調査報告】
2005539312.tif 000009
2005539312.tif 000010