(57)【要約】【課題】協調処理の要求が一定時間内は同じノードで続き易く、かつ時間がたつとそのようなノードが変化する場合に、安定した要求発生ノード上に管理権限が存在する確率を高め、管理権限の移動処理が本来の協調処理に与える悪影響を小さくして、協調処理の要求発生から完了までの遅延を削減することにある。【解決手段】管理権限を移動することのできる分散システムにおいて、クライアント装置１０００と、基準ノード装置１０３０と、クライアント要求処理部１１００、協調処理実行部１１１０、要求履歴保持部１１２０、管理権限移動処理部１１３０、タイマ１３００〜１３３０、安定度管理部１１４０、エージェント間通信処理部１１５０、管理エージェント情報管理部１１６０、要求頻度閾値計算部１１７０を有する、管理エージェントの管理エージェント装置を含む複数のエージェント装置１０１０とを備えることを特徴とする。【選択図】      図１
2004280356.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードがネットワークを介して接続された管理権限を移動することのできる分散システムにおいて、
いくつかのノード上に互いに協調して処理を行う複数のエージェント装置を有し、
該エージェント装置のうちの一つのみが協調処理を管理可能な管理権限を有し、各エージェント装置は自身が存在するノード上のクライアント装置から協調処理の要求を受信し、該エージェント装置は管理権限を持つ管理エージェント装置に要求を転送することで協調処理を開始する
ことを特徴とする管理権限を移動する分散システム。
【請求項２】
請求項１記載の管理権限を移動する分散システムにおいて、
前記エージェント装置に協調処理を要求するクライアント装置と、
該エージェント装置が存在するノードの安定度の基準となるノードで、該エージェント装置からメッセージを受信したら、該送信元エージェント装置に応答を返す基準ノード装置と、
該クライアント装置の要求を受信し、協調処理の実行や、管理権限を持つエージェントの管理エージェント装置への要求の転送を行うクライアント要求処理部、
協調処理を実行する協調処理実行部、
該クライアント要求処理部から通知された情報に基づき、一定期間内の要求の履歴を保持する要求履歴保持部、
要求頻度、要求頻度閾値、管理エージェント装置の要求頻度、安定度、安定度閾値を基に管理権限の移動を行うかどうかを決定する管理権限移動処理部、
該クライアント装置からの指示に従って要求頻度を変更する時刻に起動するように設定され、その時刻に起動したり、あるいは一定時間毎に起動するタイマ、該タイマの一定時間毎のタイマ起動により、該基準ノード装置へメッセージを送信する安定度管理部、
他のエージェント装置や該基準ノードへのメッセージ送信、及びメッセージ受信時に適当な機能ブロックへメッセージの中身を転送するエージェント間通信処理部、
該管理エージェント装置の変更を通知されたら、管理エージェント装置のアドレスと要求頻度を変更する管理エージェント情報管理部、
該管理エージェント装置からの通信確認応答を受信して、通信状況を記録し、要求頻度閾値を設定する要求頻度閾値計算部
とを有する複数のエージェント装置
とを備えることを特徴とする管理権限を移動する分散システム。
【請求項３】
管理権限を移動する分散システムにおける管理権限の移動方法において、
協調処理を要求するクライアント装置からの要求を受けて、協調処理を実行するエージェント装置の各々は、自身が該クライアント装置から受けた要求の履歴を記憶し、該履歴から単位時間辺りの要求頻度を逐次計算し、管理権限を持つエージェント装置は、自身の計算した要求頻度を全てのエージェント装置に通知し、
もし該管理権限を持つエージェント装置が通知した要求頻度よりも高い頻度で要求を受けたエージェント装置が存在し、かつ該エージェント装置の要求頻度がエージェント装置毎に定める要求頻度閾値よりも大きく、かつ各エージェント装置は自身が存在するノードの安定度を把握し、安定度がある安定度閾値以上である場合、該エージェント装置は該管理権限を持つエージェント装置に管理権限の移動を要求し、
該管理権限を持つエージェント装置が該管理権限の移動要求を受信した場合、もし協調処理の実行中など権利権限の移動が不可能な状況でなければ、要求元に管理権限を移動し、
該権利権限の受渡しをしたいずれかのエージェント装置は、他の全てのエージェント装置に管理権限を持つ管理エージェント装置が移動したことを通知する
ことを特徴とする分散システムにおける管理権限の移動方法。
【請求項４】
請求項３に記載の分散システムにおける管理権限の移動方法において、
前記クライアント装置は、自身が存在するノード上の前記エージェント装置に現在あるいは未来のある時点での要求頻度の予想値を通知し、
該通知を受けたエージェント装置は、それまでの要求頻度の履歴に関わらず、自身が要求を受けた頻度を通知された値に基づいて現在、あるいは未来のある時点で要求頻度を設定するように、該クライアント装置からの指示に従って要求頻度を変更する時刻に起動するように設定され、その時刻に起動する割り込みタイマを設定する
ことを特徴とする分散システムにおける管理権限の移動方法。
【請求項５】
請求項３、または請求項４に記載の分散システムにおける管理権限の移動方法において、
前記管理エージェント装置が他のエージェント装置から管理権限の移動要求を受信し、該管理エージェント装置が管理権限を他のエージェント装置に移動する際、すぐには管理権限の再移動を要求しないようにするために、該管理権限を移動するエージェント装置の要求頻度閾値を大きな値とする
ことを特徴とする分散システムにおける管理権限の移動方法。
【請求項６】
請求項３、請求項４または請求項５のいずれかに記載の分散システムにおける管理権限の移動方法において、
前記エージェント装置の各々は、自身と他のエージェント装置との通信状況を把握し、通信状況が悪くなると、要求頻度閾値を大きくし、通信状況が良くなると要求頻度閾値を小さくするように、通信状況を反映して要求頻度閾値を再設定する
ことを特徴とする分散システムにおける管理権限の移動方法。
【請求項７】
請求項３、請求項４または請求項５のいずれかに記載の分散システムにおける管理権限の移動方法において、
前記エージェント装置の各々は、自身と前記管理権限を持つ管理エージェント装置との通信遅延を把握するために、該管理権限を持つ管理エージェント装置に対して通信確認メッセージを送信し、また、該管理権限を持つエージェント装置からの該通信確認メッセージに対する応答を受信し、
通信遅延が大きくなると通信遅延に一定数倍した値を該エージェント装置の新しい要求頻度閾値とし、通信遅延が小さくなると通信遅延に一定数倍した値と前回の要求頻度閾値との中間値を該エージェント装置の新しい要求頻度閾値とする
ことを特徴とする分散システムにおける管理権限の移動方法。
【請求項８】
請求項３、請求項４、請求項５、請求項６または請求項７のいずれかに記載の分散システムにおける管理権限の移動方法において、
前記エージェント装置の各々は、安定度の調査割り込みが起動した時点で、自身が存在するノードが起動してからの経過時間に予め与えられた値を掛けた時間を安定度として計算する
ことを特徴とする分散システムにおける管理権限の移動方法。
【請求項９】
請求項３、請求項４、請求項５、請求項６または請求項７のいずれかに記載の分散システムにおける管理権限の移動方法において、
前記エージェント装置の各々は、あらかじめ設定された特定ノードである前記基準ノードとの通信が失敗する確率を調査するために、該基準ノードに対して通信確認メッセージを送信し、また、該基準ノードからの該通信確認メッセージに対する応答を受信し、該通信が失敗する確率に反比例する値を安定度とする
ことを特徴とする分散システムにおける管理権限の移動方法。
【請求項１０】
協調処理を要求するクライアント装置からの要求を受けて協調処理を実行するエージェント装置内のコンピュータに、
自身が該クライアント装置から受けた要求の履歴を記憶し、該履歴から単位時間辺りの要求頻度を逐次計算しする手順と、
もし管理権限を持つ管理エージェント装置が通知した要求頻度よりも高い頻度で要求を受け、該要求頻度がエージェント装置毎に定める要求頻度閾値よりも大きく、かつ各エージェント装置は自身が存在するノードの安定度を把握し、安定度がある安定度閾値以上である場合、該管理権限を持つ管理エージェント装置に管理権限の移動を要求し、該管理権限を持つ管理エージェント装置から管理権限を受け、他の全てのエージェント装置に管理権限を持つ管理エージェント装置が移動したことを通知する手順と、
現在あるいは未来のある時点での要求頻度の予想値の通知を、エージェント装置に協調処理を要求するクライアント装置から受け、それまでの要求頻度の履歴に関わらず、自身が要求を受けた頻度を通知された値に基づいて現在、あるいは未来のある時点で要求頻度を設定するように、該クライアント装置からの指示に従って要求頻度を変更する時刻に起動するように設定され、その時刻に起動する割り込みタイマを設定する手順と、
他のエージェント装置から管理権限の移動要求を受信し、管理権限を他のエージェント装置に移動する際、すぐには管理権限の再移動を要求しないようにするために、自身の要求頻度閾値を大きな値とする手順と、
自身と他のエージェント装置との通信状況を把握し、通信状況が悪くなると、要求頻度閾値を大きくし、通信状況が良くなると要求頻度閾値を小さくするように、通信状況を反映して要求頻度閾値を再設定する手順と、
自身と該管理権限を持つ管理エージェント装置との通信遅延を把握するために、該管理権限を持つ管理エージェント装置に対して通信確認メッセージを送信し、また、該管理権限を持つ管理エージェント装置からの該通信確認メッセージに対する応答を受信し、通信遅延が大きくなると通信遅延に一定数倍した値を該エージェント装置の新しい要求頻度閾値とし、通信遅延が小さくなると通信遅延に一定数倍した値と前回の要求頻度閾値との中間値を該エージェント装置の新しい要求頻度閾値とする手順と、
安定度の調査割り込みが起動した時点で、自身が存在するノードが起動してからの経過時間に予め与えられた値を掛けた時間を安定度として計算するか、または、あらかじめ設定された特定ノードである基準ノードとの通信が失敗する確率を調査するために、該基準ノードに対して通信確認メッセージを送信し、また、該基準ノードからの該通信確認メッセージに対する応答を受信し、該通信が失敗する確率に反比例する値を安定度とする手順
を実行させるためのプログラム。
【請求項１１】
管理権限を持つ管理エージェント装置内のコンピュータに、
自身の計算した要求頻度を、協調処理を要求するクライアント装置からの要求を受けて協調処理を実行する全てのエージェント装置に通知する手順と、
管理権限の移動要求を受信した場合、もし協調処理の実行中など権利権限の移動が不可能な状況でなければ、要求元に管理権限を移動する手順
を実行させるためのプログラム。
【請求項１２】
請求項１０、または請求項１１に記載されたプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク内に分散されたエージェント間の協調処理の管理権限の移動に関して、協調処理の要求発生頻度、エージェント間の通信状況、及びノードの安定に応じて、協調処理の管理権限を移動することのできる分散システムとその分散システムにおける管理権限の移動方法、およびそのプログラムと記録媒体に関する。
【０００２】
従来、管理権限の移動方法に関しては、要求の発生パタンやネットワークの状況のみを考慮して移動する方式が提案されてきた。
例えば、「鈴木  貴也  著、アドホックネットワークにおけるトポロジ依存機能の動的再配置、情処論  Ｖｏｌ．４３、Ｎｏ．１２、ｐｐ．３９５９−３９６９、２００２年１２月」（非特許文献１）では、エージェント間の協調処理として、アプリケーションが利用するデータの一貫性管理を対象に、管理権限として参加ノード（非特許文献１中では端末）の調停機能を無線アドホックネットワークのトポロジの中心に移動する方式を提案している。
【０００３】
具体的には、調停機能を持つノードでは、ノード間で協調処理のために送受されるメッセージを利用してネットワークトポロジ（グラフ）を再現し、その葉ノードを削除することを繰り返してネットワークの中心ノードを求める。もし、ネットワークトポロジが変化して中心ノードが変化したら、新しい中心ノードに調停機能を移動する。
これにより調停機能を持つノードは平均ホップ数（通信経路をバスの経路に例えたら、ホップ数とはバスの停留所の数のようなものである。）が最小となるように調停のためのメッセージを送信することが可能となり、調停に要する遅延を小さくすることができる。
【０００４】
また、「中村  元紀  他  著、環境適応型オンラインストレージにおける複製管理方式の評価、信学技法  ＩＮ２００２−１０８、２００２年１１月」（非特許文献２）では、エージェント間の協調処理として複製データの一貫性管理を対象に、その管理権限をデータの更新、すなわち協調処理の要求が発生したノードに移動する方式を提案している。また、この時、ネットワークの状況やアクセスパタンによっては移動を行わない、としている。
これにより、同一ノード上でデータ更新が連続して発生する場合に、管理権限を持つノードへ要求を転送するための遅延を削減可能となる。
【０００５】
【非特許文献１】
鈴木  貴也  著、「アドホックネットワークにおけるトポロジ依存機能の動的再配置」、情処論  ２００２年１２月  Ｖｏｌ．４３、Ｎｏ．１２、ｐｐ．３９５９−３９６９
【非特許文献２】
中村  元紀  他  著、「環境適応型オンラインストレージにおける複製管理方式の評価」、信学技法  ２００２年１１月  ＩＮ２００２−１０８
【０００６】
【発明が解決しようとする課題】
前述のように、従来の管理権限移動方式では、要求の発生パタンやネットワークの状況のみを考慮して協調処理の管理権限を移動するため、移動先のノードが頻繁に電源断になるなど不安定な場合、協調処理の実行遅延が大きくなる可能性がある。
また、ネットワークトポロジの中心に管理権限を移動する場合、特定のノードからのみ要求が発生し、そのノードがトポロジの中心から遠いと要求の転送や返送に遅延がかかる。あるいはネットワークトポロジの中心に存在しているノードと管理権限を持っているノードの間の通信状況が悪い場合、管理権限の移動処理が失敗したり遅延が大きくなる可能性がある。更に、トポロジの変更が頻繁に発生し、ネットワークトポロジの中心に存在するノードが頻繁に入れ替わる場合、管理権限の移動処理が頻繁に発生して、本来行うべき協調処理に悪影響を与えて、遅延を増大させる可能性がある。
【０００７】
一方、要求の発生したノードに管理権限を移動する場合、現在管理権限の存在するノードでそれ以降要求が発生しないことや、将来あるノードで要求が発生することが分かっていても、適当なノードに管理権限を移動することができず、次回の要求が権利権限の存在しないノードで発生した時に、協調処理の要求メッセージの送信遅延が生じる。
【０００８】
本発明の目的は、このような従来の課題を解決し、ネットワーク内の各ノード上に分散配置された複数のエージェントのうち、一つのエージェントのみが他のエージェントへの作業の指示及び作業の進行状況の管理を行う、分散システムにおける協調作業に関して、任意のノードに存在するクライアントが自ノードに存在するエージェントを通じて該管理権限を持つエージェントに協調作業の要求を行ってから、該協調作業が完了して該クライアントに結果が返送されるまでの遅延を小さくすることを可能にする、管理権限を移動する分散システムとその分散システムにおける管理権限の移動方法、およびそのプログラムと記録媒体を提供することにある。
【０００９】
【課題を解決するための手段】
上記目的を達成するために、本発明における複数のノードがネットワークを介して接続された管理権限を移動することのできる分散システムは、いくつかのノード上に互いに協調して処理を行うエージェントを有し、該エージェントのうちの一つのみが協調処理を管理可能な管理権限を有し、各エージェントは自身が存在するノード上のクライアントから協調処理の要求を受信し、該エージェントは管理権限を持つエージェントに要求を転送することで協調処理を開始することを特徴とする（請求項１記載）。
【００１０】
また、管理権限を移動することのできる分散システムは、前記エージェントに協調処理を要求するクライアント装置と、該エージェントが存在するノードの安定度の基準となるノードで、該エージェントからメッセージを受信したら、該送信元エージェントに応答を返す基準ノード装置と、該クライアント装置の要求を受信し、協調処理の実行や、管理権限を持つエージェントである管理エージェントへの要求の転送を行うクライアント要求処理部、協調処理を実行する協調処理実行部、該クライアント要求処理部から通知された情報に基づき、一定期間内の要求の履歴を保持する要求履歴保持部、要求頻度、要求頻度閾値、管理エージェントの要求頻度、安定度、安定度閾値を基に管理権限の移動を行うかどうかを決定する管理権限移動処理部、該クライアント装置からの指示に従って要求頻度を変更する時刻に起動するように設定され、その時刻に起動したり、あるいは一定時間毎に起動するタイマ、該タイマの一定時間毎のタイマ起動により、該基準ノード装置へメッセージを送信する安定度管理部、他のエージェントや該基準ノードへのメッセージ送信、及びメッセージ受信時に適当な機能ブロックへメッセージの中身を転送するエージェント間通信処理部、該管理エージェントの変更を通知されたら、管理エージェントのアドレスと要求頻度を変更する管理エージェント情報管理部、該管理エージェントからの通信確認応答を受信して、通信状況を記録し、要求頻度閾値を設定する要求頻度閾値計算部とを有し、該クライアント装置からの要求を受けて協調処理を実行する、該管理エージェントのエージェント装置を含む複数のエージェント装置とを備えることを特徴とする（請求項２記載）。
【００１１】
また、管理権限を移動することのできる分散システムにおける管理権限の移動方法は、協調処理を要求するクライアント装置からの要求を受けて、協調処理を実行するエージェント装置の各々が、自身が該クライアント装置から受けた要求の履歴を記憶し、該履歴から単位時間辺りの要求頻度を逐次計算し、管理権限を持つエージェント装置は、自身の計算した要求頻度を全てのエージェント装置に通知し、もし該管理権限を持つエージェント装置が通知した要求頻度よりも高い頻度で要求を受けたエージェントが存在し、かつ該エージェント装置の要求頻度がエージェント装置毎に定める要求頻度閾値よりも大きく、かつ各エージェント装置は自身が存在するノードの安定度を把握し、安定度がある安定度閾値以上である場合、該エージェント装置は該管理権限を持つエージェント装置に管理権限の移動を要求し、該管理権限を持つエージェント装置が該管理権限の移動要求を受信した場合、もし協調処理の実行中など管理権限の移動が不可能な状況でなければ、要求元に管理権限を移動し、該管理権限の受渡しをしたいずれかのエージェント装置は、他の全てのエージェント装置に管理権限を持つエージェントが移動したことを通知することを特徴とする（請求項３記載）。
【００１２】
また、分散システムにおける管理権限の移動方法は、前記クライアント装置が、自身が存在するノード上の前記エージェント装置に現在あるいは未来のある時点での要求頻度の予想値を通知し、該通知を受けたエージェント装置は、それまでの要求頻度の履歴に関わらず、自身が要求を受けた頻度を通知された値に基づいて現在、あるいは未来のある時点で要求頻度を設定するように、該クライアント装置からの指示に従って要求頻度を変更する時刻に起動するように設定され、その時刻に起動する割り込みタイマを設定することを特徴とする（請求項４記載）。
【００１３】
また、分散システムにおける管理権限の移動方法は、前記エージェント装置が他のエージェント装置から管理権限の移動要求を受信し、該エージェントが管理権限を他のエージェント装置に移動する際、すぐには管理権限の再移動を要求しないようにするために、該管理権限を移動するエージェント装置の要求頻度閾値を大きな値とすることを特徴とする（請求項５記載）。
【００１４】
また、分散システムにおける管理権限の移動方法は、前記エージェント装置の各々が、自身と他のエージェント装置との通信状況を把握し、通信状況が悪くなると、要求頻度閾値を大きくし、通信状況が良くなると要求頻度閾値を小さくするように、通信状況を反映して要求頻度閾値を再設定することを特徴とする（請求項６記載）。
【００１５】
また、分散システムにおける管理権限の移動方法は、前記エージェント装置の各々が、自身と前記管理権限を持つエージェント装置との通信遅延を把握するために、該管理権限を持つエージェント装置に対して通信確認メッセージを送信し、また、該管理権限を持つエージェント装置からの該通信確認メッセージに対する応答を受信し、通信遅延が大きくなると通信遅延に一定数倍した値を該エージェント装置の新しい要求頻度閾値とし、通信遅延が小さくなると通信遅延に一定数倍した値と前回の要求頻度閾値との中間値を該エージェント装置の新しい要求頻度閾値とすることを特徴とする（請求項７記載）。
【００１６】
また、分散システムにおける管理権限の移動方法は、前記エージェント装置の各々が、安定度の調査割り込みが起動した時点で、自身が存在するノードが起動してからの経過時間に予め与えられた値を掛けた時間を安定度として計算することを特徴とする（請求項８記載）。
【００１７】
また、分散システムにおける管理権限の移動方法は、前記エージェント装置の各々が、あらかじめ設定された特定ノードである前記基準ノードとの通信が失敗する確率を調査するために、該基準ノードに対して通信確認メッセージを送信し、また、該基準ノードからの該通信確認メッセージに対する応答を受信し、該通信が失敗する確率に反比例する値を安定度とすることを特徴とする（請求項９記載）。
【００１８】
更に、分散システムにおける管理権限の移動方法においては、要求の発生履歴から頻度を計算し、基本的にその頻度が高いノードに管理権限を移動するが、同時にノードの安定度も計測し、該安定度が低い場合は管理権限を移動しないことにより、ノードの不安定さによる協調処理の実行遅延の増大を小さくする。なお、安定度としては、ノードが起動してからの時間や、特定のノードとの通信可能性を元に計算し、ノードが頻繁に電源断を繰り返す場合には安定度が低いと判断できるようにする。
【００１９】
また、基本的に要求頻度の高いノードに管理権限を移動することにより、クライアントから管理権限を持つエージェントへの要求の転送や返送の遅延を削減する。一方、要求頻度の高いノードでも管理権限を持つノードとの通信状況が悪い場合は、管理権限の移動要求を行うかどうかを判断する要求頻度閾値を高くすることで、該要求頻度の高いノードが管理権限の移動要求を行いづらくし、管理権限の移動処理自体の遅延が大きくならないようにする。更に、１度管理権限を他のノードに移動した場合にも、要求頻度閾値を高くすることで、管理権限が頻繁に移動することを防ぎ、管理権限の移動処理が本来の協調処理に悪影響を与えないようにする。
【００２０】
また、各エージェントはクライアントから今後の要求発生頻度に関する情報を得て、該情報を用いて現在、あるいは将来のある時点での要求発生頻度を設定することにより、次回の要求が管理権限の存在するノードで発生する可能性を高め、協調処理の遅延を削減する。
【００２１】
【発明の実施の形態】
以下、本発明の実施の形態を図面により詳細に説明する。
図１は、本発明の一実施例である管理権限を移動することのできる分散システムの図である。
以下に図１における各モジュールを説明する。
【００２２】
１０１０から１０３０は、アクティブに動作する主体である。
クライアント１０００は、エージェントに協調処理を要求する。
エージェント１０１０は、クライアントからの要求を受けて協調処理を実行する。また、他のエージェントや基準ノードと通信して管理権限の移動を行う。
他のエージェント１０２０は、エージェント１０１０と同様の機能を持つ。
基準ノード１０３０は、エージェントが存在するノードの安定度の基準となるノードで、エージェントからメッセージを受信したら該送信元エージェントに応答を返す。
【００２３】
１１００から１１７０は、エージェント１０１０の構成機能ブロックである。なお、管理権限を持つエージェント（以下、「管理エージェント」という）とそうでないエージェントで共通の機能ブロック構成を持つ。
【００２４】
クライアント要求処理部１１００は、クラインアント１０００の要求を受信し、協調処理の実行や、管理エージェントへの要求の転送を行う。また、結果をクライアント１０００に返送する。更に、要求履歴保持部１１２０に要求を受信したことを知らせる。
【００２５】
協調処理実行部１１１０は、協調処理を実行する。本ブロックの詳細な構成は本発明の請求の範囲外であるため、詳細は省略する。
【００２６】
要求履歴保持部１１２０は、クライアント要求処理部１１００から通知された情報に基づき、一定期間内の要求の履歴を保持する。また、履歴に基づき要求頻度を計算する。更に、ある時刻に要求頻度を変更するようにタイマ１３００を設定する。
【００２７】
管理権限移動処理部１１３０は、要求頻度、要求頻度閾値、管理エージェントの要求頻度、安定度、安定度閾値を基に管理権限の移動を行うかどうかを決定する。また、管理エージェントから管理権限の移動応答があった場合、自身が管理エージェントとなって管理エージェントアドレスを変更する。ただし、管理エージェントの場合は他のエージェント１０２０からの管理権限移動要求を受信し、移動可能な場合は、管理エージェントアドレスを変更する。更に、管理エージェントの場合は、一定時間毎のタイマ起動により自身の要求頻度を他のエージェント１０２０に通知する。
【００２８】
安定度管理部１１４０は、一定時間毎のタイマ起動により基準ノード１０３０へメッセージを送信する。また、基準ノード１０３０からのメッセージ受信により安定度を変更する。もし、安定度が安定度閾値を下回ったら、要求頻度を０にする。
【００２９】
エージェント間通信処理部１１５０は、他のエージェント１０２０や基準ノード１０３０へのメッセージ送信、及びメッセージ受信時に適当な機能ブロックへメッセージの中身を転送する。
【００３０】
管理エージェント情報管理部１１６０は、管理エージェントの変更を通知されたら、管理エージェントのアドレスと要求頻度を変更する。
【００３１】
要求頻度閾値計算部１１７０は、管理エージェントからの通信確認応答を受信して、通信状況を記録し、要求頻度閾値を設定する。また、一定時間毎のタイマ起動により、管理エージェントに通信確認メッセージを送信する。
【００３２】
１２００から１２７０は、エージェント１０１０が有するデータである。
【００３３】
要求履歴１２００は、クライアント１０００からの要求を受けた時刻の列である。例えば、数値のリストとして構成される。
【００３４】
要求頻度１２１０は、一定時間内の要求回数を示す数値データである。
【００３５】
要求頻度閾値１２２０は、コア移動を要求するのに最低限必要な要求頻度を示す数値データである。
【００３６】
通信状況１２３０は、管理エージェントに対して通信確認を送信した時刻、それに対する通信確認応答を受信した時刻、及び通信確認応答を受信したかどうかを示すフラグからなる３項組の集合である。例えば、数値配列のリストとして構成される。
【００３７】
安定度１２４０は、ノードの安定度を示すデータである。例えば、過去に基準ノード１０３０にメッセージを送った回数と、応答を受信した回数、及びその受信率の３項組の数値データとして構成され、第３項の受信率が安定度として、採用される。
【００３８】
安定度閾値１２５０は、コア移動を要求するのに最低限必要な安定度を示す数値データである。これは、システム起動時に設定される。
【００３９】
管理エージェント要求頻度１２６０は、管理エージェントから通知される、管理エージェントの要求頻度を示す数値データである。
【００４０】
管理エージェント・他のエージェントのアドレス１２７０は、自身が管理エージェントでない場合、管理エージェントが存在するノードの番号などのアドレスを示す数値データである。自身が管理エージェントの場合は、それに続けて他のエージェントのアドレスを示すデータも保持する。例えば、数値データのリストとして構成される。
【００４１】
１３００から１３３０はタイマを示す番号である。
タイマ１３００は、クライアント１０００からの指示に従って、要求頻度を変更する時刻に起動するように設定され、その時刻に起動する。
タイマ１３１０からタイマ１３３０は、一定時間毎に起動する。
【００４２】
図２から図５は、本発明の実施例における管理権限を持たないエージェントの動作フローチャートを示した図である。
【００４３】
各エージェント１０１０は、あらかじめ要求頻度閾値と安定度閾値として大きな値が与えられており、また、管理エージェントから管理エージェントが受けている要求頻度Ａを通知されているものとする。更に自身の受けている要求頻度をＢ、自身が存在するノードの安定度をＣとする。
【００４４】
図２は、管理エージェント以外のエージェントの処理フローチャート（１）である。
各エージェント１０１０は最初イベント待ち状態（１００）に移行する。もし何らかのイベントが発生したら（１１０）、イベントの種類を判断し（１２０）、イベントに応じた処理を行う（１３０、３００、２５０、４５０）。
【００４５】
図３は、管理エージェント以外のエージェントの処理フローチャート（２）である。
図３は、図２の（１２０）で判断したイベントの種類がクライアント１０００からの要求であった場合（１３０）、及び基準ノード１０３０からのメッセージ受信であった場合（２５０）を示した図である。
【００４６】
もしイベントの種類がクライアント１０００からの要求であった場合は（１３０）、要求の種別を判断する（１４０）。
【００４７】
もし要求の種別が協調処理の要求であれば（１５０）、管理エージェントへ要求を転送する（１６０）。更に、該要求受信を反映して要求頻度Ｂを計算する（１７０）。
要求頻度Ｂの計算は、例えば過去の一定時間内に受けた要求とその時刻を記憶し、要求回数を一定時間で割った値として計算可能である。
【００４８】
次に該計算した要求頻度Ｂが要求頻度閾値よりも大きく、かつ管理エージェントから通知された要求頻度Ａよりも大きいかどうかを判定する。もしどちらか一方、あるいは両方の値よりも要求頻度Ｂが小さければ、イベント待ち状態（１００）に戻る。もしＢがＡと要求頻度閾値よりも大きければ、次に自ノードの安定度Ｃを安定度閾値と比較する（１９０）。
もし安定度Ｃが安定度閾値よりも小さければ、イベント待ち状態（１００）に戻る。もし安定度Ｃが安定度閾値よりも大きければ、管理エージェントに管理権限を移動するように要求メッセージを送信し（２００）、イベント待ち状態（１００）に戻る。
【００４９】
もし、１４０で判断した要求の種別が要求頻度の予想値の通知であったら（２１０）、通知に基づいて要求頻度を設定するように割り込みタイマ１３００を設定し（２２０）、イベント待ち状態（１００）に戻る。
【００５０】
一方、図２の１２０で判断したイベントの種類が、基準ノード１０３０からのメッセージ受信だった場合（２５０）、ノードの安定度Ｃを再計算する（２６０）。例えば、過去の一定時間内に送信した基準ノード１０３０への通信確認メッセージ数と送信時刻、及び基準ノード１０３０から受信したメッセージ数と受信時刻を記憶し、一定時間内の受信メッセージ数を送信メッセージ数で割った値を安定度として計算可能である（請求項９に記載の実施形態の一例である。）。なお、請求項８に記載の実施形態を取る場合、例えば、ノードが起動してからの経過時間を安定度として利用するため、もし基準ノード１０３０からのメッセージを受信しても無視して破棄すれば良い。
【００５１】
図４は、管理エージェント以外のエージェントの処理フローチャート（３）である。
そして、図４は、図２の（１２０）で判断したイベントの種類が割り込みタイマ１３００、１３２０、１３３０の起動の場合を示した図である。なお、ここでタイマという表現を用いているが、割り込みが発生した場合に、エージェント装置がある動作をするようにタイマを起動するという意味であり、タイマによる時間は関係ない。タイマが動作するのは、割り込みがあった場合ということである。
もし、イベントの種類が割り込みタイマ１３００、１３２０、１３３０の起動であった場合（４５０）は、割り込みの種類を判断する（４６０）。
【００５２】
もし、割り込みの種類が図３の（２２０）で設定した要求頻度の設定であれば、クライアント１０００が指定した値に要求頻度Ｂを再設定する（４７０）。そして要求頻度Ｂと管理エージェントの要求頻度Ａ、及び要求頻度閾値との比較（１８０）へ移行する。以降の動作は図３に示す通りである。
【００５３】
もし、（４６０）で判断した割り込みの種類が一定時間毎に起動する通信状況の調査であったら（４８０）、管理エージェントに対して通信確認メッセージを送信する（５００）。これにより、通信遅延を把握し、要求頻度閾値を計算するためである。そして、イベント待ち状態に戻る（１００）。
もし、（４６０）で判断した割り込みの種類が一定時間に起動する安定度の調査ならば（４９０）、予め与えられた基準ノード１０３０に対しても通信確認メッセージを送信する（５１０）。これにより、基準ノード１０３０との通信が失敗する確率を求め、安定度を計算するためである。そして、（５１０）が終わったらその次に、イベント待ち状態（１００）に戻る。つまり、エージェントは、要求頻度閾値を計算するために管理エージェントに、安定度を計算するために基準ノード１０３０に通信確認メッセージを送信し、通信を試みるということである。なお、請求項８に記載の実施形態を取る場合、安定度の計算に基準ノード１０３０との通信は不要なため、該安定度の調査割り込みが起動した時点で、自ノードが起動してからの経過時間に予め与えられた値を掛けた時間を安定度として計算し、イベント待ち状態（１００）へ移行すれば良い。
【００５４】
図５は、管理エージェント以外のエージェントの処理フローチャート（４）である。
そして、図５は、図２の（１２０）で判断したイベントの種類が管理エージェントからのメッセージ受信であった場合を示した図である。もしイベントの種類が管理エージェントからのメッセージ受信であった場合（３００）は、メッセージの種別を判断する（３１０）。
【００５５】
もしメッセージの種別が管理権限の移動応答であれば（３２０）、応答の中身を確認する（３３０）。もし応答の中身が、「了解」でなければ、移動に応じてもらえなかったため、要求頻度閾値を今よりも大きな値に再設定し（３３５）、イベント待ち状態（１００）に戻る。ここで、移動に応じてもらえなかったということは、管理権限の移動が頻繁に発生することを避けるように分散システムがなっているということであるから、管理権限が移動してエージェント間の協調処理に悪影響を与えることを防ぐために、要求頻度閾値を今よりも大きくし、管理権限の移動のハードルを高めるという理論になっている。
【００５６】
もし応答の中身が「了解」であれば、自身が管理エージェントとなり（３４０）、他のエージェントに管理エージェントの変更を通知して（３４５）、管理エージェントのイベント待ち状態６００に移行する。この時、管理エージェントの変更通知には自身の要求頻度も含めることとする。
【００５７】
もし（３１０）での判断の結果、メッセージ種別が協調処理要求への応答であれば（３５０）、応答結果をクライアント１０００へ返送し（３６０）、イベント待ち状態（１００）に戻る。
【００５８】
もし（３１０）での判断の結果、メッセージ種別が管理エージェントの要求頻度の通知であれば（３７０）、通知された要求頻度Ａを記録して（３８０）、自身の要求頻度Ｂと要求頻度Ａ、及び要求頻度閾値との比較（１８０）へ移行する。
【００５９】
もし（３１０）での判断の結果、メッセージ種別が、通信確認に対する応答であれば（３９０）、管理エージェントへの通信状況を反映して要求頻度閾値を再設定する（４００）。ここで、エージェント装置は、自身と管理エージェント装置との通信状況を把握し、通信状況が悪くなると、要求頻度閾値を大きくし、通信状況が良くなると要求頻度閾値を小さくするように、要求頻度閾値を再設定する。これは、通信状況が悪いと、むやみに管理権限の移動をすることを防ぐために、要求頻度閾値を大きくし、管理権限の移動のハードルを高めるということである。また、通信状況が良いと、協調処理を円滑にするために、要求頻度閾値を小さくして、管理権限の移動を起こりやすくするということである。４００のステップを終えると、次に、自身の要求頻度Ｂと管理エージェントの要求頻度Ａ、及び要求頻度閾値との比較（１８０）へ移行する。
【００６０】
ここで、請求項７に記載の実施形態を取る場合、要求頻度閾値は例えば、次のように計算する。すなわち、該受信した応答に対応する、図４の５００で送信した通信確認メッセージの送信時刻をｔ０、該受信した応答の受信時刻をｔ１、あらかじめ与えられた定数をα、前回計算した要求頻度閾値をＴｏｌｄ、とした時、今回計算する要求頻度閾値Ｔｎｅｗは、以下のように計算する。
【数１】
2004280356.tif 000003
【００６１】
もし（３１０）での判断の結果、メッセージ種別が管理エージェント変更通知だったら（４０２）、通知されたメッセージの送信元である新しい管理エージェントのアドレス、及び該通知メッセージに含まれる新しい管理エージェント要求頻度Ａを記録し（４０４）、自身の要求頻度Ｂと要求頻度Ａ、及び要求頻度閾値との比較（１８０）へ移行する。
【００６２】
図６から図９は、本発明の実施例における管理エージェントの動作フローチャートを示した図である。
【００６３】
図６は、管理エージェントの処理フローチャート（１）である。管理エージェントは最初イベント待ち状態（６００）に移行する。また、あらかじめ安定度閾値は小さな値（例えば０）が与えられているものとする。もし何らかのイベントが発生したら（６１０）、イベントの種類を判断し（６２０）、イベントに応じた処理を行う（６３０、８００、７５０、９１０）。
【００６４】
図７は、管理エージェントの処理フローチャート（２）である。
そして、図７は、図６の（６２０）で判断したイベントの種類がクライアント１０００からの要求であった場合（６３０）、及び基準ノード１０３０からのメッセージ受信であった場合（７５０）を示した図である。
【００６５】
もしイベントの種類がクライアント１０００からの要求であった場合は（６３０）、要求の種別を判断する（６４０）。
【００６６】
もし要求の種別が協調処理の要求であれば（６５０）、協調処理を実行し（６６０）、該要求受信を反映して要求頻度を計算し（６７０）、イベント待ち状態６００へ移行する。なお、協調処理の実行方法は本発明の請求範囲外であるので、詳細な説明は省略する。また、要求頻度の計算方法はクライアント１０００の場合の図３の（１７０）と同様である。
【００６７】
もし、（６４０）での判断結果が要求頻度の予想値の通知であったら（７１０）、通知に基づいて要求頻度を設定するように割り込みタイマ１３００を設定し（７２０）、イベント待ち状態（６００）に戻る。
【００６８】
一方、図６の（６２０）で判断したイベントの種類が、基準ノード１０３０からのメッセージ受信だった場合（７５０）、ノードの安定度を再計算する（７６０）。安定度の計算方法はクライアント１０００の場合の図３の２６０と同様である。次に、該計算したノードの安定度と安定度閾値とを比較し（６９０）、該計算したノードの安定度が安定度閾値よりも小さければ、自身の要求頻度を０として他のエージェントに通知し（７００）、イベント待ち状態６００に移行する。もし、該計算したノードの安定度が安定度閾値以上であれば、何もせずにイベント待ち状態６００に移行する。
【００６９】
図８は、管理エージェントの処理フローチャート（３）である。
そして、図８は、図６の（６２０）で判断したイベントの種類が他のエージェントからのメッセージ受信であった場合を示した図である。
もし、イベントの種類が他のエージェントからのメッセージ受信であった場合は（８００）、メッセージの種別を判断する（８１０）。
【００７０】
もしメッセージの種別が管理権限の移動要求であれば（８２０）、移動可能かどうかを判断する（８３０）。移動可能かどうかの判断は協調作業の方法に依存するが、例えば、協調作業中であれば不可能と判断し、協調作業中でなければ可能と判断すれば良い。（８３０）で判断した結果が移動不可能であれば、移動不可応答を要求元エージェントへ返送し（８５０）、イベント待ち状態６００に戻る。もし８３０で判断した結果が移動可能であれば、移動了解応答を要求元エージェントへ返送し（８４０）、該エージェントは管理エージェントではなくなる。ここで、請求項５に記載の実施形態の場合、例えば、該管理権限を移動したエージェントの要求頻度閾値を大きな値とすることにより（８４４）、すぐには管理権限の再移動を要求しないようにする。
【００７１】
もし８１０での判断の結果、メッセージの種別が協調処理要求であれば（８６０）、協調処理を実行し（８７０）、結果を要求元のエージェントへ返す（８８０）。なお、協調処理の実行方法は本発明の請求の範囲外であるので、説明を省略する。
【００７２】
もし（８１０）での判断の結果、メッセージ種別が通信確認要求であれば（８９０）、該送信元エージェントへ通信確認応答を返送する（９００）。
【００７３】
図９は、管理エージェントの処理フローチャート（４）である。
図９は、図６の（６２０）で判断したイベントの種類が割り込みタイマの起動の場合を示した図である。
もしイベントの種類が割り込みタイマの起動であった場合（９１０）、割り込みの種類を判断する（９２０）。
【００７４】
もし割り込みの種類が図７の（７２０）で設定した要求頻度の設定であれば、クライアント１０００が指定した値に要求頻度を再設定する（９３０）。
【００７５】
もし（９２０）で判断した割り込みの種類が一定時間毎に起動する要求頻度通知であったら（９５０）、自身の要求頻度を他のエージェントに通知し（９６０）、イベント待ち状態６００に移行する。
【００７６】
もし、（９２０）で判断した割り込みの種類が一定時間毎に起動する安定度の調査であったら（９７０）、予め与えられた基準ノード１０３０に対して通信確認メッセージを送信し（９８０）、イベント待ち状態６００に移行する。なお、請求項８に記載の実施形態を取る場合、安定度の計算に基準ノード１０３０との通信は不要なため、該安定度の調査割り込みが起動した時点で、該ノードが起動してからの経過時間に予め与えられた値を掛けた時間を安定度として計算し、安定度の処理比較、図７の（６９０）へ移行すれば良い。
【００７７】
上述の実施形態において、その処理を行うプログラムをアプリケーションソフトとして、ＣＤ−ＲＯＭ等の記録媒体に格納しておいてもよい。このようにすれば、ＣＤ−ＲＯＭ等の可搬型記録媒体にプログラム等を格納して売買したり、携帯することができるようになる。
【００７８】
【発明の効果】
本発明によれば、エージェントは自身の要求頻度が管理エージェントの要求頻度よりも大きく、かつある閾値以上に大きい場合、更に安定度もある閾値以上に大きい場合のみ管理権限の移動を要求するため、権利権限が存在するノードではクライアントの要求発生頻度が高い可能性が大きい。その場合、クライアントの要求とその応答にノード間通信が不要なため、要求を行ってから協調処理の完了が通知されるまでの遅延が小さくなる。また、不安定なノードに管理権限が移動する可能性も小さくなるため、管理エージェント自身や管理エージェントと他のエージェントの通信に障害が発生して、協調処理の遅延が大きくなる可能性も小さい。例えば、実施例中の図７の手順７００では管理エージェントの安定度が安定度閾値より小さくなると、自身の要求頻度を０として他のエージェントに通知するため、結果的には他のエージェントの中で要求頻度が高く、安定度が安定度閾値以上のエージェントに管理権限を移動することになり、上記不安定なノードに管理権限が移動する可能性が小さくなる。
【００７９】
また、請求項４に記載の通り、クライアントから協調処理の要求頻度の予想値を通知された場合、該通知に基づいて要求頻度を変更するため、要求頻度が急に高くなったり小さくなったりすることが分かっている場合に、要求頻度の高いノードのエージェントに管理権限を移動したり、要求頻度の小さいノードの管理エージェントから管理権限を移動することが可能となる。例えば、管理エージェントの存在するノード上のクライアントがもう要求を行わない場合、実施例中の図９の９３０で管理エージェントの要求頻度を０に設定し、図９の９６０でその値が他のエージェントに通知されるため、結果的には他のエージェントの中で要求頻度が高く、安定度が安定度閾値以上のエージェントに管理権限を移動することになり、上記要求頻度の小さいノードの管理エージェントから管理権限を移動することが可能になる。
【００８０】
また、請求項５に記載のように、一度管理権限を移動した元管理エージェントは、自身の要求頻度閾値を大きな値に設定することで、すぐに再び管理エージェントに復帰することを避けている。これにより、管理権限の移動が頻繁に発生して、本来の協調処理に悪影響を与えることを防いでいる。
【００８１】
更に、請求項６に記載のように、通信状況が悪い場合に要求頻度閾値を大きくして、より高い要求頻度を受けている場合のみ管理権限の移動を要求できるようにしている。通信状況が悪いエージェント間で管理権限を移動する場合は、管理権限の移動処理の遅延が大きくなり、本来の協調処理に悪影響を与える可能性があるからである。通信状況が悪いエージェント間でも、管理権限の移動先の要求頻度が非常に高い場合は、移動後の協調処理の遅延が小さくなるため、このような場合のみ管理権限の移動を行うようにしている。
【００８２】
また、請求項７では通信遅延が小さくなった場合、前回の要求頻度閾値を考慮して新しい要求頻度閾値を計算している。これにより、たまたま一度通信遅延が小さくなった場合に急激に要求頻度閾値が小さくなって、要求頻度がそれほど高くなくても管理権限の移動を要求するような場合をなくすことができる。
【００８３】
従って、以上、詳細に説明したように、本発明は、協調処理の要求が一定時間内は同じノードで続き易く、かつ時間がたつとそのようなノードが変化する場合に、安定した要求発生ノード上に管理権限が存在する確率を高め、管理権限の移動処理が本来の協調処理に与える悪影響を小さくして、協調処理の要求発生から完了までの遅延を削減したい場合に効果がある。
【図面の簡単な説明】
【図１】
本発明の一実施例である管理権限を移動することのできる分散システムの図である。
【図２】
管理エージェント以外のエージェントの処理フローチャート（１）であり、各エージェントは最初イベント待ち状態に移行し、もし何らかのイベントが発生したら、イベントの種類を判断し、次にイベントに応じた処理を行うことを説明した図である。
【図３】
管理エージェント以外のエージェントの処理フローチャート（２）であり、イベントの種類がクライアントからの要求であった場合、及び基準ノードからのメッセージ受信であった場合を示した図である。
【図４】
管理エージェント以外のエージェントの処理フローチャート（３）であり、イベントの種類が割り込みタイマの起動の場合を示した図である。
【図５】
管理エージェント以外のエージェントの処理フローチャート（４）であり、イベントの種類が管理エージェントからのメッセージ受信であった場合を示した図である。
【図６】
管理エージェントの処理フローチャート（１）であり、管理エージェントは最初イベント待ち状態に移行し、もし何らかのイベントが発生したら、イベントの種類を判断し、更にイベントに応じた処理を行うことを説明した図である。
【図７】
管理エージェントの処理フローチャート（２）であり、イベントの種類がクライアントからの要求であった場合、及び基準ノード１０３０からのメッセージ受信であった場合を示した図である。
【図８】
管理エージェントの処理フローチャート（３）であり、イベントの種類が他のエージェントからのメッセージ受信であった場合を示した図である。
【図９】
管理エージェントの処理フローチャート（４）であり、イベントの種類が割り込みタイマの起動の場合を示した図である。
【符号の説明】
１０００  クライアント
１０１０  エージェント
１０２０  他のエージェント
１０３０  基準ノード
１１００  クライアント要求処理部
１１１０  協調処理実行部
１１２０  要求履歴保持部
１１３０  管理権限移動処理部
１１４０  安定度管理部
１１５０  エージェント間通信処理部
１１６０  管理エージェント情報管理部
１１７０  要求頻度閾値計算部
１２００  要求履歴のデータ
１２１０  要求頻度のデータ
１２２０  要求頻度閾値のデータ
１２３０  通信状況のデータ
１２４０  安定度のデータ
１２５０  安定度閾値のデータ
１２６０  管理エージェント要求頻度のデータ
１２７０  管理エージェント・他のエージェントのアドレスのデータ
１３００、１３１０、１３２０、１３３０  タイマ
【図１】
2004280356.tif 000004
【図２】
2004280356.tif 000005
【図３】
2004280356.tif 000006
【図４】
2004280356.tif 000007
【図５】
2004280356.tif 000008
【図６】
2004280356.tif 000009
【図７】
2004280356.tif 000010
【図８】
2004280356.tif 000011
【図９】
2004280356.tif 000012