(57)【特許請求の範囲】
【請求項１】
ネットワークを介して接続されている双方向で通信可能な少なくとも１台のクライアント端末と複数台のサーバから成り、前記クライアント端末の要求する処理を実行中の一のサーバから当該一のサーバの負荷に応じて他のサーバに前記処理を引き継がせる処理継続実行手段を備え、
前記処理継続実行手段は、前記ネットワーク上において送受信されるエージェントプログラムによって実行され、
前記クライアント端末は、前記他のサーバのアドレス情報を保持している前記エージェントプログラムを前記他のサーバから受信し、当該エージェントプログラムから前記他のサーバのアドレス情報を取得し、当該アドレス情報を用いて、前記一のサーバに対して送信する通信用パケットをカプセル化したパケットを前記他のサーバに送信することを特徴とする分散サーバシステム。
【請求項２】
前記一のサーバは、前記クライアント端末のアドレス情報を保持している前記エージェントプログラムを前記クライアント端末から受信し、前記他のサーバに送信し、前記他のサーバに受信された前記エージェントプログラムは、当該他のサーバのアドレス情報を取り込んで保持し、前記他のサーバは、前記エージェントプログラムから前記クライアント端末のアドレス情報を取得し、当該他のサーバのアドレス情報を保持している前記エージェントプログラムを前記クライアント端末に送信することによって、前記クライアント端末は、前記他のサーバのアドレス情報を保持している前記エージェントプログラムを前記他のサーバから受信することを特徴とする請求項１に記載の分散サーバシステム。
【請求項３】
前記カプセル化したパケットは、前記一のサーバのアドレス情報を含むヘッダと前記一のサーバに対する処理用データとから成る通信用パケットを送信データとし、当該送信データに前記他のサーバのアドレス情報を含むヘッダを付加したものであることを特徴とする請求項１又は請求項２に記載の分散サーバシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データの処理やアプリケーションの実行などを行うサーバ・クライアント型のシステムに関するものであって、特にサーバの負担を軽減するために複数のサーバを設置し、分散処理を行う分散サーバシステムにおいて、サーバの変更に伴う処理の継続作業を引き継ぎ可能とするための改良に関するものである。
【０００２】
【従来の技術】
サーバ・クライアント型のシステムは、複数のクライアント端末から処理要求が１つのサーバに集中すると、サーバおよびネットワークに負荷が生じ、要求された処理の実行速度が著しく低下してしまうという問題がある。
【０００３】
このため前記負荷の発生を分散させるために、同様の処理を行えるサーバを複数台用意し、複数の処理要求が発生した場合に各サーバに処理を分散し、負荷の一極集中を回避する分散サーバという概念が導入されるようになった。
【０００４】
【発明が解決しようとする課題】
しかし従来の分散サーバシステムで行われている分散処理は、クライアントからの最初の処理要求時に行う通信手続きにおいて、負荷の軽いサーバを検知し、そのサーバのみとアクセスすることを決定してしまい、他のサーバとのアクセスを行いたい場合は再度通信手続きをとる必要が生じる。もし、処理途中で他のサーバにアクセスを移す場合は、処理を最後まで終えてから他のサーバへ再度通信手続きを行うか、もしくは、処理途中の処理を破棄し、他のサーバへ再度通信手続きを行い、破棄した処理を最初からやり直すことになる。
【０００５】
近年、企業や学校などにおけるＬＡＮの整備、また携帯電話、無線ＬＡＮなどの無線通信手段により、クライアント端末は屋内外や接続時間を問わずネットワークに接続することが可能となった。その結果、ある時刻においては負荷の軽かったサーバが、数分後にはクライアント端末からの処理の要求の増加とともに負荷が上がっていくというように、一つのサーバで行う様々な処理にともなう負荷状態も短時間ごとに大きな変動が起こるようになった。
【０００６】
従来は、サーバに対して処理の要求を行うクライアント端末は多くなり、サーバの負荷が短時間に変化することは想定されなかった。このため、従来の分散サーバシステムにおいては、クライアント端末からの処理の要求時にサーバの負荷状態にしたがって、負荷の軽いサーバがその処理を行うだけのものであった。
【０００７】
クライアント端末の数が飛躍的に増加すると、それぞれのクライアント端末からの要求が多種多様になり、サーバで行う処理の種類ごとに負荷の値や処理時間が大きく異なることになる。このため、時間経過とともにそれぞれのサーバの負荷状態が大きく変動することになり、サーバ間の負荷に大きな違いが生じてしまう。
【０００８】
短時間で変化する負荷状態に対応してサーバ間で負荷を分散していくためには、サーバの負荷を常に監視し、接続しているサーバの負荷が上昇したら他の負荷の軽いサーバに切り替えていく必要がある。
【０００９】
しかしながら、従来の分散サーバシステムは時間ごとに変化する負荷を監視し、サーバの負荷の変化に従い適宜サーバの接続を他のサーバに引き継ぐ手続きを行うような設計がなされていない。また、再度通信手続きを行いサーバを移動させた場合、処理を中途で破棄し、別のサーバにて再度手続きすることになり、負荷を増加させることになる。
【００１０】
この結果、サーバの負荷が短時間で変化し、接続していたサーバよりも負荷が軽いサーバが存在しても、クライアントは最初のサーバで引き続き処理を行うことになり、負荷の重いサーバで作業を継続することとなり、効率的な負荷分散ができないという問題点がある。
【００１１】
クライアント端末の処理要求を手助けするものとして、エージェントプログラム技術がある。エージェントプログラム技術とは、クライアント端末のユーザが行っていた処理を、ユーザに代わって自動的に実行するものである。このときユーザの行う処理を事前にプログラミングしてあるので、その処理に関してユーザは意識することなく行われることになる。
【００１２】
しかしながら、従来のエージェントプログラム技術は、クライアント端末の要求する処理を最初の段階ですべて決定し、その処理をすべてエージェントプログラムに行ってもらうものか、処理の結果が得られたときにクライアント端末へ通信パケットを送信するといったものになっており、サーバの負荷を分散するような機能を有していない。
【００１３】
上記のように、様々なクライアント端末からの処理の要求で短時間に大きく変化していく負荷に対して、現在のクライアント・サーバシステムやエージェントプログラム技術では、その処理状態に依存しない継続手続きを考慮した設計がなされておらず、対応しきれているとは言い難い。
【００１４】
従って、本発明の目的は、上記従来技術の問題点を解消し、サーバの負荷の時間変化も考慮に入れ、サーバでの負荷が重くなったときに接続設定やパケットのヘッダ情報の大規模な変更などの手続きを行うことなく、中途状態の処理を他のサーバに引き継げるようにすることで、簡単にサーバの有効利用を行えるようにすることである。
【００１５】
【課題を解決するための手段】
上記目的を達成するため請求項１の発明は、ネットワークを介して接続されている双方向で通信可能な少なくとも１台のクライアント端末と複数台のサーバから成り、前記クライアント端末の要求する処理を実行中の一のサーバから当該一のサーバの負荷に応じて他のサーバに前記処理を引き継がせる処理継続実行手段を備え、前記処理継続実行手段は、前記ネットワーク上において送受信されるエージェントプログラムによって実行され、前記クライアント端末は、前記他のサーバのアドレス情報を保持している前記エージェントプログラムを前記他のサーバから受信し、当該エージェントプログラムから前記他のサーバのアドレス情報を取得し、当該アドレス情報を用いて、前記一のサーバに対して送信する通信用パケットをカプセル化したパケットを前記他のサーバに送信することを要旨とする。
【００１６】
請求項２の発明は、請求項１の発明において、前記一のサーバは、前記クライアント端末のアドレス情報を保持している前記エージェントプログラムを前記クライアント端末から受信し、前記他のサーバに送信し、前記他のサーバに受信された前記エージェントプログラムは、当該他のサーバのアドレス情報を取り込んで保持し、前記他のサーバは、前記エージェントプログラムから前記クライアント端末のアドレス情報を取得し、当該他のサーバのアドレス情報を保持している前記エージェントプログラムを前記クライアント端末に送信することによって、前記クライアント端末は、前記他のサーバのアドレス情報を保持している前記エージェントプログラムを前記他のサーバから受信することを要旨とする。
【００１７】
請求項３の発明は、請求項１又は請求項２の発明において、前記カプセル化したパケットは、前記一のサーバのアドレス情報を含むヘッダと前記一のサーバに対する処理用データとから成る通信用パケットを送信データとし、当該送信データに前記他のサーバのアドレス情報を含むヘッダを付加したものであることを要旨とする。
【００１８】
請求項４の発明は、請求項１乃至３のいずれかの発明において、前記処理継続実行手段は、前記サーバの処理の負荷を検知し、サーバ間の負荷分散における中途状態の処理のサーバ間での引き継ぎを実行するエージェントプログラムを有することを要旨とする。
【００１９】
請求項５の発明は、請求項１乃至４のいずれかの発明において、前記クライアント端末が、前記サーバに対して通信用パケットをカプセル化したパケットを前記他のサーバに通信するようになっていることを要旨とする。
【００２０】
請求項６の発明は、請求項５の発明において、上記カプセル化したパケットは、前記サーバのアドレスであるヘッダと処理用データから成る通信用パケットを、送信データとしてカプセル化したものに前記他のサーバのアドレスであるヘッダを付加して成ることを要旨とする。
【００２１】
上述した各発明の構成により、接続中のサーバの負荷が増大したときに、接続設定やパケットのヘッダ情報の大規模な変更などの手続きを行うことなく、中途状態の処理を他のサーバに引き継げることが可能となり、クライアント端末が接続するサーバを他の負荷の軽いサーバに切り替えていくことが可能となり、サーバ間で負荷を効率よく分散し、サーバ資源の有効利用を可能とする。
【００２２】
【発明の実施の形態】
本発明は、例えば、ネットワークを介して接続されている双方向で通信可能な複数のクライアントと複数のサーバからなるサーバ・クライアント型システムに適用される。このシステムはクライアント端末と、前記クライアント端末からの要求に伴い処理を行うことができる２台以上のサーバ（サーバ１、サーバ２）がある。前記サーバ１が前記クライアント端末の要求に基づく処理の実行中に、前記処理引継実行手段は、前記サーバ１の負荷が増大したときに、前記サーバ１と前記サーバ２との間で負荷を分散させる目的で、前記要求に伴う処理を前記サーバ１から前記サーバ２に引き継ぐ際に、前記サーバ１での処理状態に関わらず、前記サーバ２に継続的に処理を引き継がせる。
【００２３】
この場合すべてのサーバに耐えられる負荷の閾値を設定し、現状の負荷の値が前記閾値を越えた時に処理の引き継ぎを開始するようにしてもよい。
また、すべてのサーバにおいて、上記閾値とサーバ２の現状の負荷の値を比較し、現状の負荷の値が前記閾値の値まで達していないときは、前記閾値を超えない範囲でサーバ２に処理の引き継ぎを引き受けさせるようにしてもよい。
更に、前記手段は前記クライアント端末を使用しているユーザの代わりに、前記サーバの負荷を検知し、サーバ間の負荷分散における中途状態の処理のサーバ間での引き継ぎを自動的に行うエージェントプログラムを有するようにしてもよい。
【００２４】
【実施例】
以下に本発明の分散サーバシステムの一実施例について、図面により説明する。
図１は本発明の分散サーバシステムにおいて、クライアント−サーバ間をエージェントが動いていく様子を示す。太い波線（１０５，１１０）は通信中を、実線（１０６〜１０９）はエージェントプログラムの移動を表す。サーバＡ（１０１）とクライアントＣ（１０３）とがネットワーク１０４を介して通信中のときに（１０５）、サーバＡ（１０１）の負荷が閾値を越えたとする。クライアントＣ（１０３）にて、サーバＡ（１０１）と行っていた処理を継続するため、サーバＡ（１０１）は、負荷を分散させるためサーバ間の処理の引き継ぎを行うことを通知するためにクライアントＣ（１０３）に他のサーバへの処理の継続手続きを行うエージェントを発信する（１０６）。エージェントを受け取ったクライアントＣ（１０３）は事前に引き継ぎを行うかどうかを設定しておき、引き継ぎを行うときはエージェントにクライアントの位置情報を通知し、サーバＡ（１０１）にそのエージェントを引き渡す（１０７）。エージェントを受け取ったサーバＡ（１０１）は、クライアントＣ（１０３）から引き継ぎの依頼があったとき、サーバＡ（１０１）でそのとき行っていた処理と現在までの処理の状態をあらわす処理変数を取り込み、ネットワーク１０４上を探索し、エージェントはサーバＡ（１０１）よりも負荷の状態が閾値まで余裕のあるサーバ（ここではサーバＢ（１０２）とする）を発見したら、サーバＢ（１０２）に処理変数とクライアントの位置情報を通知する（１０８）。エージェントはサーバＢ（１０２）の位置情報（アドレス）を取り込んで、クライアントＣ（１０３）に戻る（１０９）。クライアントＣ（１０３）はエージェントからサーバＢ（１０２）の位置情報を取得し、サーバＢ（１０２）において処理の継続実行をする（１１０）。
【００２５】
図２は、エージェントプログラムのフローを示す。同図において、サーバＡの負荷が許容された負荷の閾値を超過すると（Ｓ２０１）、エージェントプログラムはクライアントＣに処理引き継ぎを行うことを通知する（Ｓ２０２）。クライアントＣは処理の引き継ぎを行うかどうかをあらかじめ決めておき（Ｓ２０３）、引き継ぎを行わない場合はその旨をサーバＡに通知する（Ｓ２０４）。引き継ぎを行う場合、エージェントプログラムは自動的にクライアントＣのアドレスを取得しサーバＡに返信する（Ｓ２０５）。エージェントプログラムはサーバＡからそのときの処理状態を示す処理変数を取得し（Ｓ２０６）、ネットワーク上のサーバの探索を行う（Ｓ２０７）。ここで負荷が閾値まで余裕のあるサーバが存在するかどうかの判断を行い（Ｓ２０８）、負荷が閾値まで余裕のあるサーバＢが存在した場合、サーバＢにクライアントＣのアドレスと処理変数を通知し（Ｓ２０９）、サーバＢのアドレスを取得する（Ｓ２１０）。その後クライアントＣに帰還し、クライアントＣがサーバＢのアドレスを取得することでサーバＢにおいて処理の継続が行える（Ｓ２１１）。また負荷が閾値まで余裕のあるサーバが存在するかどうかの判断において（Ｓ２０８）、負荷が閾値まで余裕のあるサーバが存在しないときは、エージェントプログラムはサーバＡに戻り処理変数を差し戻す（Ｓ２１２）。その後エージェントプログラムはクライアントに送信されるが、このときアドレス情報を持たずに戻ってきており、このときはサーバＡで引き続き処理を行うことを意味する（Ｓ２１３）。
【００２６】
上記の通り、本発明で用いられるエージェントプログラムの内容は、サーバの負荷が設定されている閾値を超過したときに、サーバは負荷分散のための処理引き継ぎの通知をクライアントに行い、ユーザに代わってクライアントのアドレスとそのサーバが生成した処理変数を取り込み、ネット上を徘徊して負荷が閾値まで余裕のあるサーバを探索し、もし存在するならクライアントのアドレスと処理変数を新しいサーバに通知し、存在しなければ引き続き元のサーバへクライアントのアドレスと処理変数の通知を行うステップを有している。
【００２７】
なお、上記処理変数はそれぞれサーバで処理の引き継ぎが行えるように、その引き継ぎに必要となる情報である使用アプリケーション名、処理中のデータ、処理中の作業状態を数値データ化したものである。この処理変数はサーバＡ，Ｂで共通のものとする。
【００２８】
図３は、サーバＢに引き継いだ後の通信用パケットのカプセル化のためのコーティングの例を示す。サーバＢに引き継がれた後において、処理用データ３４をクライアントが発信するとき、クライアント側で今まで送っていたヘッダ情報３１が付加されているパケット３６を送信データ３５としてカプセル化し、サーバＢのヘッダ情報３２を付加した新たなパケット３３を生成してサーバＢに送信する。受け取ったサーバＢでは受信したパケット３３から送信データ３５を取得する。送信データ３５のヘッダ情報３１から、処理用データ３４を元に処理の継続作業を行う。これにより、クライアント側はアドレス変換などの手続きを行うことなく、サーバＡと通信していたパケットのヘッダ情報３１をそのまま利用する形でサーバＢと通信を行える。
【００２９】
上記の通りパケットのカプセル化を行うことで、サーバＢとの通信用パケットを得るようにすれば、元の通信用のパケットに直接手を加える必要がない。これにより、処理の途中でサーバの変更が行われても、パケット情報は何ら変更されていないので、負荷の状態によるサーバ間の処理の引き継ぎが行われ、サーバＡに送信中であったパケットが分断されてサーバＢへ送信されたとしても、元の通信用パケットのヘッダ情報を元に送信の継続判断が行える。
【００３０】
カプセル化されたパケットは、外側のパケット情報３２によってサーバＢに送信された後、そのサーバＢがカプセル解除を行い、内部のパケットを読み取って処理を行う。内部のパケット情報をサーバＢが知ることができるので、サーバＢはどのクライアントからのサーバＡでの処理を引き継いだかを判断することができる。
【００３１】
【発明の効果】
以上説明した通り、本発明の分散サーバシステムを用いれば、短時間で大きく変化する負荷の状況に応じて、接続設定やパケットのヘッダ情報の大規模な変更などの手続きを行うことなく、中途状態の処理を他のサーバに引き継げることが可能となり、接続するサーバを負荷の軽いサーバに切り換えていくことが可能となり、サーバ間で効率のよい負荷の分散が行え、サーバ資源の有効利用を可能とする。
【図面の簡単な説明】
【図１】本発明の一実施例における処理継続の流れを示す図である。
【図２】上記実施例におけるエージェントプログラムのフローチャートを示す図である。
【図３】上記実施例における移動後の処理用パケットのカプセル化を示す概略図である。
【符号の説明】
３１  サーバＡと、クライアントＣに関するヘッダ情報
３２  サーバＢと、クライアントＣに関するヘッダ情報
３３  サーバＢへの送信パケット
３４  処理用データ
３５  送信データ
３６  サーバＡへの送信パケット
１０１  サーバＡ
１０２  サーバＢ
１０３  クライアント端末Ｃ
１０４  ネットワーク
【図１】
0004712995.tif 000002
【図２】
0004712995.tif 000003
【図３】
0004712995.tif 000004