(57)【要約】【課題】複数のクライアントが同時に接続可能なサーバを含むクライアント・サーバ・システムにおいて、サーバとクライアントの間で効率よく負荷を分散すること。【解決手段】本発明は、サーバ（１４）に処理のための接続を要求する複数のクライアント（１６）を含む負荷分散型クライアント・サーバ・システム（１０）を提供する。各クライアント（１６）は、自身の状況を示す状況情報を接続要求とともにサーバに送る通信部（２０）と、サーバの処理を選択的に実行可能な処理部（２２）を備えている。サーバは（１４）、要求元クライアント（１６）から接続要求および状況情報を受け取る通信部（２４）と、サーバ（１４）の負荷状況を監視する負荷監視部（２６）と、通信部（２４）が受け取った接続要求に応答して、状況情報に基づいて、サーバ（１４）の処理を要求元クライアント（１６）に委譲する委譲レベルを決定し、委譲後のサーバ負荷が最大許容負荷を超えていなければ、要求元クライアント（１６）の接続要求を許可して、委譲レベルを要求元クライアント（１６）に通知する委譲処理部（２８）とを備えている。要求元クライアント（１６）の処理部（２２）は、通知された委譲レベルに応じた処理を実行する。
2007074797.tif 000002
【特許請求の範囲】
【請求項１】
サーバと、
前記サーバに処理のための接続を要求する複数のクライアントとを含み、
前記クライアントのそれぞれは、
当該クライアントの状況を示す状況情報を接続要求とともに前記サーバに送る通信手段と、
前記サーバの処理を選択的に実行可能な処理手段とを備え、
前記サーバは、
要求元クライアントから接続要求および状況情報を受け取る通信手段と、
前記サーバの負荷状況を監視する負荷監視手段と、
前記サーバの通信手段が受け取った接続要求に応答して、前記状況情報に基づいて、前記サーバの処理を前記要求元クライアントに委譲する委譲レベルを決定し、委譲後のサーバ負荷が最大許容負荷を超えていなければ、前記要求元クライアントの接続要求を許可して、前記委譲レベルを前記要求元クライアントに通知する委譲処理手段とを備え、
前記要求元クライアントの処理手段は、通知された委譲レベルに応じた処理を実行する、
負荷分散型クライアント・サーバ・システム。
【請求項２】
前記委譲処理手段は、前記サーバの負荷が所定の基準負荷を超えていなければ、前記要求元クライアントに対し、委譲なしで接続要求を許可する、請求項１に記載の負荷分散型クライアント・サーバ・システム。
【請求項３】
前記サーバは、さらに、各クライアントのサーバ利用状況を監視するクライアント監視手段を備え、
前記委譲処理手段は、前記サーバ利用状況および前記サーバの負荷に応じて前記要求元クライアントの接続要求を許可するかどうかを決める、
請求項２に記載の負荷分散型クライアント・サーバ・システム。
【請求項４】
前記クライアント監視手段は、各クライアントのサーバ利用率および委譲の履歴を監視する監視手段と、前記サーバ利用率および前記委譲の履歴に応じてクライアントを複数のグループに分類してグループ毎に優先度を決定する分類手段と、グループ毎に、当該グループに属するクライアントからの接続要求の間隔を計算することにより、次に接続要求が発生する時間を予測する予測手段とを含み、
前記委譲処理手段は、前記要求元クライアントが属するグループの優先度よりも高い優先度を有するグループに属する別のクライアントが所定の閾値よりも短い時間内に次接続要求を発生すると予測される場合に、前記別のクライアントを前記要求元クライアントよりも優先させる、
請求項３に記載の負荷分散型クライアント・サーバ・システム。
【請求項５】
前記監視手段は、接続要求が許可された要求元クライアントの接続終了時に、該要求元クライアントの識別子、接続開始時刻、接続終了時刻、および委譲レベルを記録し、
前記分類手段は、前記監視手段の記録に基づいて定期的にクライアントのグループ分けを実行する、
請求項４に記載の負荷分散型クライアント・サーバ・システム。
【請求項６】
前記委譲処理手段は、前記別のクライアントからの次接続要求の予測発生時間までの長さが前記所定の閾値以上であれば、前記別のクライアントを優先することなく委譲処理を実行する、請求項４または５に記載の負荷分散型クライアント・サーバ・システム。
【請求項７】
前記委譲処理手段は、前記別のクライアントの接続要求および前記要求元クライアントの接続要求を受け入れた場合に、前記サーバ負荷が前記最大許容負荷を超えていなければ、前記要求元クライアントの接続要求を受け入れる、請求項４または５に記載の負荷分散型クライアント・サーバ・システム。
【請求項８】
前記サーバの処理は順次に実行される複数の処理段階を含み、前記委譲レベルは最初の処理段階から何番目の処理段階までを前記要求元クライアントに実行させるものであるかを示す、請求項１〜請求項７のいずれかに記載の負荷分散型クライアント・サーバ・システム。
【請求項９】
前記負荷監視手段は、委譲レベル毎に設定されたサーバ負荷の減少率、クライアントに通知された各委譲レベルの数、および委譲なしで許可した接続要求の数に基づいてサーバ負荷を計算する、請求項８に記載の負荷分散型クライアント・サーバ・システム。
【請求項１０】
複数のクライアントに接続可能であり、要求元クライアントから処理のための接続要求を受け取って該処理を実行するサーバであって、
当該サーバの負荷状況を監視する負荷監視手段と、
要求元クライアントから接続要求とともに前記要求元クライアントの状況を示す状況情報を受け取る通信手段と、
前記通信手段が受け取った接続要求に応答して、前記状況情報に基づいて、前記サーバの処理を前記要求元クライアントに委譲する委譲レベルを決定し、委譲後のサーバ負荷が最大許容負荷を超えていなければ、前記要求元クライアントの接続要求を許可して、前記委譲レベルを前記要求元クライアントに通知することにより、前記要求元クライアントに前記委譲レベルに応じた処理を実行させる委譲処理手段と、
を含むサーバ。
【請求項１１】
前記委譲処理手段は、当該サーバの負荷が所定の基準負荷を超えていなければ、前記要求元クライアントに対し、委譲なしで接続要求を許可する、請求項１０に記載のサーバ。
【請求項１２】
さらに、各クライアントのサーバ利用状況を監視するクライアント監視手段を含み、
前記委譲処理手段は、前記サーバ利用状況および当該サーバの負荷に応じて前記要求元クライアントの接続要求を許可するかどうかを決める、
請求項１１に記載のサーバ。
【請求項１３】
前記クライアント監視手段は、各クライアントのサーバ利用率および委譲の履歴を監視する監視手段と、前記サーバ利用率および前記委譲の履歴に応じてクライアントを複数のグループに分類してグループ毎に優先度を決定する分類手段と、グループ毎に、当該グループに属するクライアントからの接続要求の間隔を計算することにより、次に接続要求が発生する時間を予測する予測手段とを含み、
前記委譲処理手段は、前記要求元クライアントが属するグループの優先度よりも高い優先度を有するグループに属する別のクライアントが所定の閾値よりも短い時間内に次接続要求を発生すると予測される場合に、前記別のクライアントを前記要求元クライアントよりも優先させる、
請求項１２に記載のサーバ。
【請求項１４】
前記監視手段は、接続要求が許可された要求元クライアントの接続終了時に、該要求元クライアントの識別子、接続開始時刻、接続終了時刻、および委譲レベルを記録し、
前記分類手段は、前記監視手段の記録に基づいて定期的にクライアントのグループ分けを実行する、
請求項１３に記載のサーバ。
【請求項１５】
前記委譲処理手段は、前記別のクライアントからの次接続要求の予測発生時間までの長さが前記所定の閾値以上であれば、前記別のクライアントを優先することなく委譲処理を実行する、請求項１２または１３に記載のサーバ。
【請求項１６】
前記委譲処理手段は、前記別のクライアントの接続要求および前記要求元クライアントの接続要求を受け入れた場合に、前記サーバ負荷が前記最大許容負荷を超えていなければ、前記要求元クライアントの接続要求を受け入れる、請求項１２または１３に記載のサーバ。
【請求項１７】
前記サーバの処理は順次に実行される複数の処理段階を含み、前記委譲レベルは最初の処理段階から何番目の処理段階までを前記要求元クライアントに実行させるものであるかを示す、請求項１０〜請求項１６のいずれかに記載のサーバ。
【請求項１８】
前記負荷監視手段は、委譲レベル毎に設定されたサーバ負荷の減少率、クライアントに通知された各委譲レベルの数、および委譲なしで許可した接続要求の数に基づいてサーバ負荷を計算する、請求項１７に記載のサーバ。
【請求項１９】
複数のサーバと、
複数のクライアントと、
前記クライアントのそれぞれから処理のための接続要求を受け取って、前記複数のサーバから１つのサーバを選択して該１つのサーバに処理を実行させるロード・バランサとを含み、
前記クライアントのそれぞれは、
当該クライアントの状況を示す状況情報を接続要求とともに前記ロード・バランサに送る通信手段と、
サーバの処理を選択的に実行可能な処理手段とを備え、
前記ロード・バランサは、
要求元クライアントから接続要求および状況情報を受け取る通信手段と、
前記サーバの負荷状況を監視する負荷監視手段と、
当該ロード・バランサの通信手段が受け取った接続要求に応答して、前記状況情報に基づいて、前記１つのサーバの処理を前記要求元クライアントに委譲する委譲レベルを決定し、委譲後のサーバ負荷が最大許容負荷を超えていなければ、前記要求元クライアントの接続要求を許可して、前記委譲レベルを前記要求元クライアントに通知する委譲処理手段とを備え、
前記要求元クライアントの処理手段は、通知された委譲レベルに応じた処理を実行する、
負荷分散型クライアント・サーバ・システム。
【請求項２０】
サーバと、前記サーバに処理のための接続を要求する複数のクライアントとを含むクライアント・サーバ・システムにおいて、サーバとクライアントの間で負荷を分散させるための負荷分散方法であって、
前記サーバが自身の負荷状況を監視するステップと、
要求元クライアントが該要求元クライアントの状況を示す状況情報を接続要求とともに前記サーバに送信するステップと、
前記サーバが前記接続要求に応答して、前記状況情報に基づいて、前記サーバの処理を前記要求元クライアントに委譲する委譲レベルを決定し、委譲後のサーバ負荷が最大許容負荷を超えていなければ、前記要求元クライアントの接続要求を許可するステップと、
前記サーバが前記委譲レベルを前記要求元クライアントに通知するステップと、
前記要求元クライアントが前記委譲レベルに応じた処理を実行するステップとを含む、
負荷分散方法。
【請求項２１】
複数のクライアントに接続可能であり、要求元クライアントから処理のための接続要求を受け取って該処理を実行するサーバにおいて、該サーバが実行すべき処理を要求元クライアントに選択的に委譲することによって負荷を分散する方法であって、
前記サーバの負荷状況を監視するステップと、
要求元クライアントから接続要求とともに前記要求元クライアントの状況を示す状況情報を受信するステップと、
前記接続要求に応答して、前記状況情報に基づいて、前記サーバの処理を前記要求元クライアントに委譲する委譲レベルを決定し、委譲後のサーバ負荷が最大許容負荷を超えていなければ、前記要求元クライアントの接続要求を許可するステップと、
前記委譲レベルを前記要求元クライアントに通知して、前記要求元クライアントに前記委譲レベルに応じた処理を実行させるステップとを含む、
負荷分散方法。
【請求項２２】
複数のクライアントに接続可能であり、要求元クライアントから処理のための接続要求を受け取って該処理を実行するサーバのコンピュータに、請求項２１に記載の方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はクライアント・サーバ・システムにおける負荷分散に関するものであり、特にサーバが高負荷状態になったときにサーバの処理を要求元クライアントに選択的に委譲できる負荷分散に関するものである。
【背景技術】
【０００２】
クライアント・サーバ・システムは、インターネットを利用した大規模なシステムから、家庭内ＬＡＮといった小規模なシステムまで、様々な分野で活用されている。企業内の利用も盛んであり、例えばコールセンター業務では、顧客との応対履歴をデータベースに記録するために、音声サーバを含むクライアント・サーバ・システムが利用されている。このシステムは、顧客との対話内容を音声データとしてオペレータ用端末(クライアント)から音声サーバに送り、音声サーバで音声認識により音声データをテキスト・データに変換してクライアントに送り返し、オペレータがそれをデータベースに記録する。【０００３】
上述のようなクライアント・サーバ・システムでは、システムの処理効率を上げてクライアントへの迅速な応答を達成するために、一般に負荷分散の手法が採用されている。負荷分散は、サーバ間で実施するものが一般的である。サーバ間の負荷分散では、ロード・バランサと呼ばれる負荷分散用の特殊装置を複数のサーバとクライアントの間に設けて、クライアントから要求があったときにロード・バランサで適切なサーバを選択して、そのサーバに要求を送るようにしたクライアント・サーバ・システムが知られている（特許文献１）。【０００４】
サーバ間の負荷分散とは別に、サーバとクライアントの間で負荷分散を行うようにしたシステムも知られている。例えば特許文献２は、クライアントから接続要求を受け取ったときにサーバのＣＰＵ使用率を調べ、それが設定値以下であれば要求された処理を行い、設定値を超えていると、その処理を実行するためのアプリケーション・プログラムをクライアントに送って、クライアント側で処理を実行させるようにした分散処理システムを開示している。また特許文献３は、サーバとクライアントに複数の同じ処理モジュールを準備しておき、サーバとクライアントの処理能力を比較して、その比較結果に応じて、サーバおよびクライアントで実行すべき処理モジュールを増減するようにした分散処理システムを開示している。このシステムでは、サーバの方が処理能力が高ければ、サーバで実行すべき処理モジュールを増やし、クライアントの方が処理能力が高ければクライアントで実行すべき処理モジュールを増やしている。
【特許文献１】米国特許第６７７９０１７号明細書
【特許文献２】米国特許第６３８５６３６号明細書
【特許文献３】特開２００３−５８５１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載されているようなサーバ間の負荷分散では、クライアントからの要求が予想以上に増えると、クライアントの待ち時間が長くなってしまう。これを解決するためにはサーバを増設する必要があるが、コスト高になる。また、何らかの理由でサーバの数が制限されているようなシステムには適用が難しい。特許文献２の負荷分散方式は、負荷分散のたびにアプリケーション・プログラムをサーバからクライアントに送っているので、通信のオーバーヘッドが増え、さらに負荷分散をした場合は、すべての処理をクライアント側で実行しているので柔軟性に欠けるところがある。特許文献３の負荷分散方式はこれよりも柔軟性があるが、サーバとクライアントが１対１の場合にしか適用されず、複数のクライアントが同時にサーバに接続される場合の問題を解決するものではない。さらに、サーバとクライアントの処理能力に応じて負荷を分散しているので、クライアントには常に負担が掛かってしまう。【０００６】
従って本発明の目的は、複数のクライアントが同時に接続可能なサーバを含むクライアント・サーバ・システムにおいて、サーバとクライアントの間で効率よく負荷を分散することができる負荷分散型クライアント・サーバ・システム、サーバ、負荷分散方法、およびこの負荷分散方法をコンピュータに実行させるためのプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明は、処理のための接続要求を送信した要求元クライアントに、状況に応じて、サーバの処理を選択的に肩代わりさせることによって、上記の目的を達成する。以下、この肩代わりのことを「委譲」と呼ぶことにする。【０００８】
本発明の第１の側面によれば、サーバと、このサーバに処理のための接続を要求する複数のクライアントとを含み、クライアントのそれぞれは、当該クライアントの状況を示す状況情報を接続要求とともにサーバに送る通信手段と、サーバの処理を選択的に実行可能な処理手段とを備え、サーバは、自身の負荷の状況を監視する負荷監視手段と、サーバの通信手段が受け取った接続要求に応答して、状況情報に基づいて、サーバの処理を要求元クライアントに委譲する委譲レベルを決定し、委譲後のサーバ負荷が最大許容負荷を超えていなければ、要求元クライアントの接続要求を許可して、委譲レベルを要求元クライアントに通知する委譲処理手段とを備え、要求元クライアントの処理手段は、通知された委譲レベルに応じた処理を実行する、負荷分散型クライアント・サーバ・システムが提供される。【０００９】
本発明の第２の側面によれば、複数のクライアントに接続可能であり、要求元クライアントから処理のための接続要求を受け取って該処理を実行するサーバであって、自身の負荷状況を監視する負荷監視手段と、要求元クライアントから接続要求とともに要求元クライアントの状況を示す状況情報を受け取る通信手段と、通信手段が受け取った接続要求に応答して、状況情報に基づいて、サーバの処理を要求元クライアントに委譲する委譲レベルを決定し、委譲後のサーバ負荷が最大許容負荷を超えていなければ、要求元クライアントの接続要求を許可する委譲処理手段と、委譲処理手段が接続要求を許可したときに、委譲レベルを要求元クライアントに通知して、要求元クライアントに委譲レベルに応じた処理を実行させる通知手段とを含むサーバが提供される。【００１０】
本発明の第３の側面によれば、複数のサーバと、複数のクライアントと、クライアントのそれぞれから処理のための接続要求を受け取って、複数のサーバから１つのサーバを選択して該１つのサーバに処理を実行させるロード・バランサとを含み、クライアントのそれぞれは、当該クライアントの状況を示す状況情報を接続要求とともにロード・バランサに送る通信手段と、サーバの処理を選択的に実行可能な処理手段とを備え、ロード・バランサは、要求元クライアントから接続要求および状況情報を受け取る通信手段と、サーバの負荷状況を監視する負荷監視手段と、当該ロード・バランサの通信手段が受け取った接続要求に応答して、状況情報に基づいて、選択された１つのサーバの処理を要求元クライアントに委譲する委譲レベルを決定し、委譲後のサーバ負荷が最大許容負荷を超えていなければ、要求元クライアントの接続要求を許可して、委譲レベルを要求元クライアントに通知する委譲処理手段とを備え、要求元クライアントの処理手段は、通知された委譲レベルに応じた処理を実行する、負荷分散型クライアント・サーバ・システムが提供される。【００１１】
本発明の第４の側面によれば、サーバと、サーバに処理のための接続を要求する複数のクライアントとを含むクライアント・サーバ・システムにおいて、サーバとクライアントの間で負荷を分散させるための負荷分散方法であって、サーバが自身の負荷状況を監視するステップと、要求元クライアントが該要求元クライアントの状況を示す状況情報を接続要求とともにサーバに送信するステップと、サーバが接続要求に応答して、状況情報に基づいて、サーバの処理を要求元クライアントに委譲する委譲レベルを決定し、委譲後のサーバ負荷が最大許容負荷を超えていなければ、要求元クライアントの接続要求を許可するステップと、サーバが委譲レベルを要求元クライアントに通知するステップと、要求元クライアントが委譲レベルに応じた処理を実行するステップとを含む負荷分散方法が提供される。【００１２】
本発明の第５の側面によれば、複数のクライアントに接続可能であり、要求元クライアントから処理のための接続要求を受け取って該処理を実行するサーバにおいて、該サーバが実行すべき処理を要求元クライアントに選択的に委譲することによって負荷を分散する方法であって、サーバの負荷状況を監視するステップと、要求元クライアントから接続要求とともに要求元クライアントの状況を示す状況情報を受信するステップと、接続要求に応答して、状況情報に基づいて、サーバの処理を要求元クライアントに委譲する委譲レベルを決定し、委譲後のサーバ負荷が最大許容負荷を超えていなければ、要求元クライアントの接続要求を許可するステップと、委譲レベルを要求元クライアントに通知して、要求元クライアントに委譲レベルに応じた処理を実行させるステップとを含む負荷分散方法が提供される。【００１３】
本発明の第６の側面によれば、上述の第４の側面に係る負荷分散方法をサーバのコンピュータに実行させるためのプログラムが提供される。【００１４】
上述のように、本発明は、サーバが高負荷状態になった場合に、サーバの負荷が最大許容負荷を超えないという条件の下で、要求元クライアントの状況に応じてサーバの処理を選択的に要求元クライアントに委譲するようにしたものである。従って、従来よりも効率のよい動的な負荷分散が可能になっている。また、サーバだけで処理を行う場合に比べて、サーバに同時に接続できるクライアントの数を増やすことが可能である。
【発明を実施するための最良の形態】
【００１５】
以下、添付図面を参照しながら、本発明を実施するための最良の形態について説明するが、それぞれの図面において同じ符号は同じ要素を示している。【００１６】
本発明を適用可能なクライアント・サーバ・システム１０の概要を図１に示す。このシステム１０は、ネットワーク１２を介して１つのサーバ１４に複数のクライアント１６が接続される構成となっている。ネットワーク１２は、ＬＡＮ（ローカル・エリア・ネットワーク）を利用した専用ネットワーク（例えば、企業のイントラネット）、インターネットを含む公衆ネットワークなどの任意のネットワークでよい。【００１７】
クライアント・サーバ・システム１０は、例えばコールセンター業務において、顧客との応対履歴を残す作業で使用することができる。この作業の一般的なフローを図２に示す。図２において、クライアント１６はオペレータ用端末であり、サーバ１４は音声サーバである。クライアント１６は、オペレータと顧客の対話内容を録音処理し、それを音声データとしてサーバ１４に送る。サーバ１４は、３つの処理段階１−３からなる音声認識処理を実行することにより、音声データをテキストデータに変換して、クライアント１６に送り返す。クライアント１６は、受け取ったテキストデータをデータベース(図示せず)に記録することにより応対履歴を残す。ここで、処理段階１−３は、例えばケプストラム分析処理、特徴量抽出処理、およびマッチング処理にそれぞれ対応しており、これらは順次に実行される。通常は、これらの処理段階はすべてサーバ１４で実行されるが、本発明は、サーバ１４が高負荷状態になったときに、クライアント１６の状況に応じて選択された処理段階をクライアント１６に委譲することによって、サーバ１４の処理をクライアント１６で実行させることができる。【００１８】
上述のような委譲処理を可能にするクライアント１６とサーバ１４の構成を図３に示す。クライアント１６は、自身の状況を示す状況情報を接続要求と共にサーバ１４に送る通信部２０と、サーバ１４の処理を選択的に実行する処理部２２を含む。状況情報は、例えばクライアント１６が備えるプロセッサの種類、メモリの利用率などのハードウェア状況を含む。【００１９】
サーバ１４は、要求元のクライアント１６から接続要求および状況情報を受け取る通信部２４、サーバ１４の負荷状況を監視する負荷監視部２６、通信部２４が受け取った接続要求に応答して、要求元クライアント１６の状況情報に基づき、サーバ１４の処理を要求元クライアント１６に委譲する委譲レベルを決定し、委譲後のサーバ負荷が最大許容負荷を超えていなければ、要求元クライアント１６の接続要求を許可して、決定した委譲レベルを要求元クライアント１６に通知する委譲処理部２８、および各クライアントのサーバ利用状況を監視するクライアント監視部３０を含む。【００２０】
クライアント監視部３０は、各クライアントのサーバ利用率および委譲の履歴を監視する監視部３２と、このサーバ利用率および委譲の履歴に応じてクライアントを複数のグループに分類してグループ毎に優先度を決定する分類部３４と、グループ毎に、当該グループに属するクライアントからの接続要求の間隔を計算することにより、次に接続要求が発生する時間を予測する予測部３６を含む。【００２１】
上述の負荷監視部２６、委譲処理部２８およびクライアント監視部３０は、サーバ１４の処理部を構成しており、従って、サーバ１４およびクライアント１６の基本的な構成は同じでよい。【００２２】
次に、サーバ１４による委譲処理動作の詳細に入る前に、図２に示す作業を例にとって、委譲レベルについて説明する。前述のように、処理段階１はケプストラム分析処理に対応し、処理段階２は特徴抽出処理に対応し、そして処理段階３はマッチング処理に対応しているが、このうち最後のマッチング処理は、音響モデル、言語モデルおよび辞書といった外部リソースを使用するので、クライアントへの委譲には適さない。従って、本実施態様では、次のような委譲レベルが設定される。
委譲レベル０：クライアントへの委譲なし
委譲レベル１：処理段階１をクライアントへ委譲
委譲レベル２：処理段階１および２をクライアントへ委譲
これから明らかなように、委譲レベルは、最初の処理段階から何番目の処理段階までをクライアントに実行させるかを示すものである。このような委譲を可能にするため、各クライアント１６には、処理段階１および２を実行するためのプログラム・モジュールが予めインストールされている。【００２３】
サーバ１４による委譲処理のフローの例を図４に示す。このフローは、サーバ１４の通信部２４がクライアント１６から接続要求を受け取った時に開始する(ステップＳ１）。接続要求が受け取られると、負荷監視部が次式に従ってサーバ１４の負荷を計算する(ステップＳ２）。
ＷＬ＝Ｌ０＊Ｘ＋Ｌ１＊Ｙ＋Ｌ２＊Ｚ
上式において、Ｌ０、Ｌ１およびＬ２は、現時点において委譲処理部２８が決定済みで、要求元クライアントで関連する処理が実行中の委譲レベル０、委譲レベル１および委譲レベル２の数をそれぞれ表す。ただし、委譲レベル０はクライアントに処理を委譲しないので、委譲レベル０の数とは、委譲なしで現在接続されているクライアントの数である。Ｘ、Ｙ、Ｚは次式の通りである。
Ｘ＝（１／ＭａｘＬ０）＊１００
Ｙ＝Ｘ＊（１−Ｒ１）
Ｚ＝Ｘ＊（１−Ｒ２）
上式において、ＭａｘＬ０は委譲なしで接続可能なクライアントの最大数、Ｒ１は委譲レベル１でクライアントに処理を委譲した場合のサーバ１４の負荷減少率、Ｚは委譲レベル２でクライアントに処理を委譲した場合のサーバ１４の負荷減少率である。例えば、ＭａｘＬ０＝１０、Ｒ１＝７５％、Ｒ２＝８７．５％とすると、サーバ負荷ＷＬは次のようになる。
ＷＬ＝１０Ｌ０＋２．５Ｌ１＋１．２５Ｌ２【００２４】
負荷監視部２６は、計算した負荷が基準負荷を超えているかどうかを委譲処理部２８に知らせる（ステップＳ３）。基準負荷は、サーバ１４が要求元クライアント１６に処理の一部を委譲するかどうかを決定するための基準となる負荷で、例えば、サーバ１４の最大処理能力の８０％に設定される。サーバ負荷が基準負荷を超えていなければ、委譲処理部２８は要求元クライアント１６に委譲なしでの接続を許可し（ステップＳ４）、ステップＳ１４に進む。【００２５】
サーバ負荷が基準負荷を超えていると、委譲処理部２８は、接続要求と共に要求元クライアント１６から受け取った状況情報に基づき、要求元クライアント１６に対する委譲可能レベルを決定する。例えば、委譲処理部２８は要求元クライアント１６のプロセッサおよびメモリの状況に基づき、次のようにレベルを決定してもよい。
レベル０＝プロセッサの動作周波数が３００ＭＨｚ未満、またはメモリ利用率が８０％を超えている
レベル１＝プロセッサの動作周波数が４５０ＭＨｚ未満
レベル２＝上記以外
勿論、これは一例に過ぎず、他の要因を考慮したり、動作周波数やメモリ利用率の値を変更したりすることも可能であるが、一般的には、プロセッサが高性能になるほど、委譲レベルを高くすることができる。【００２６】
次に、負荷監視部２４が決定された委譲可能レベルに応じてサーバ負荷を推定し（ステップＳ６）、推定サーバ負荷が最大許容負荷を超えているかどうかを委譲処理部２８に知らせる（ステップＳ７）。上式の例では、レベル０の委譲の場合は負荷が１０増え、レベル１の委譲の場合は２．５増え、レベル２の委譲の場合は１．２５増える。最大許容負荷は、例えば、サーバ１４の最大処理能力の９０％に設定される。もし推定サーバ負荷が最大許容負荷を超えていると、委譲処理部２８はステップＳ８で接続を拒否し、その通知を通信部２４から要求元クライアント１６に送る。【００２７】
推定サーバ負荷が最大許容負荷を超えていない場合は、要求元クライアントよりも優先度の高い別のクライアントからの接続要求が間近に迫っていれば、そちらの方を優先させるために、クライアント監視部３０が次接続要求までの予想時間および予想委譲レベルを推定する（ステップＳ９）。ステップＳ９の詳細については後で説明する。【００２８】
優先度の高いクライアントからの次接続要求までの予想時間が短ければ、ステップＳ１０からステップＳ１１に進んで、負荷監視部２６が予想委譲レベルに応じて次接続要求におけるサーバ負荷を推定する。ここでの推定はステップＳ６の推定と同じであるが、今回は優先度の高いクライアントからの要求を処理するための負荷が加算される。推定サーバ負荷が最大許容負荷を超えていると、前と同じく、ステップＳ８で要求元クライアント１６の接続を拒否する。【００２９】
サーバ負荷が最大許容負荷を超えていないか、または次接続要求までの予想時間が長ければ、ステップＳ１３に進んで、要求元クライアント１６の接続を許可し、ステップＳ５で決定した委譲レベルを通信部２４から要求元クライアント１６に通知する。【００３０】
次に、クライアント監視部３０の監視部３２は要求元クライアント１６が属するグループ（詳細は後述）の接続開始時刻を記録し（ステップＳ１４）、要求元クライアント１６の接続が終了すると（ステップＳ１５）、要求元クライアント１６の識別子（ＩＤ）、接続開始時刻、接続終了時刻、および委譲レベルを履歴として記録する。サーバ１４は接続要求があると図４のフローを実行し、監視部３２は、その都度、許可された要求元クライアントの接続履歴を残していく。接続履歴の一例を図５に示す。この履歴は分類部３４でクライアントをグループ分けするのに用いられる。なお、接続履歴における委譲レベル０は、図４のステップＳ４で自動的に決定されるものと、ステップＳ５で状況情報に基づいて決定されるものがあるが、後で説明するように、分類部３４によるグループ分けでは後者の委譲レベル０だけが考慮されるので、接続履歴を残すときは、ステップＳ５で決定された委譲レベル０にはフラグを立てておく。図５中のアスタリスク「＊」はこのフラグ立てを表している。【００３１】
次に、分類部３４によるグループ分けについて説明する。ここでは、説明の便宜上、毎日の業務終了後にグループ分けを実施するものとするが、２日おきまたは毎週といった異なるサイクルでグループ分けを実施してもよい。前述のように、分類部３４は各クライアントのサーバ利用率および委譲の履歴に応じてクライアントを複数のグループに分類するものであり、そのため、監視部３２はクライアントＩＤで図５の接続履歴を参照することにより各クライアントの接続開始時刻および接続終了時刻から接続時間を計算し、１日の業務時間（例えば８時間）に対する総接続時間の比をサーバ利用率として計算する。さらに、監視部３２は委譲レベルの履歴から、各クライアントに委譲できる可能性が高いレベルを決定する。【００３２】
図５の接続履歴を例にとって、サーバ利用率および委譲可能レベルの決定について説明すると、例えばＩＤが２のクライアントは３回接続を許可されており、その総接続時間は１０２分である。また、委譲レベルの履歴は０（図４のステップＳ４で自動的に決定されたもの）、２、１となっている。ここで、１日の業務時間を８時間（４８０分）とすると、ＩＤが２のクライアントのサーバ利用率は、１０２／４８０すなわち２１．２５％になる。委譲可能なレベルは、例えば次のようにして決定することができる。
１．接続履歴における委譲レベル２の数が、基準負荷を超えた場合（ステップＳ３で「はい」の分岐になった場合）の接続回数に対して９５％以上であれば、委譲可能なレベルとしてレベル２を設定する。
２．接続履歴における委譲レベル２の数および委譲レベル１の数の合計が、基準負荷を超えた場合の接続回数に対して９５％以上であれば、委譲可能なレベルとしてレベル１を設定する。
３．上記以外はレベル０を設定する。
１および２での接続回数は、図５の接続履歴における委譲レベル０＊（図４のステップＳ５で決定されたもの）、委譲レベル１および委譲レベル２の合計数である。ＩＤが２のクライアントは、２の場合に該当するから、委譲可能レベルとしてレベル１が設定される。これは、委譲レベル１が実際に付与されることを示しているわけではなく、ＩＤが２のクライアントが次に接続を要求したときには、ステップＳ９における予想委譲レベルが１になることを示している。【００３３】
分類部３４は、監視部３２からのサーバ利用率および委譲可能レベルに基づいて、クライアントを図６のようにグループ分けする。図６中の１から１２までの数字は該当するグループの優先度を示す。これから明らかなように、分類部３４は、サーバ利用率および委譲可能レベルが高いほど優先度を高くしている。図６の例では、サーバ利用率が委譲可能レベルよりも重要視されているが、これは逆でもよい。分類部３４は図６のようなグループ分けを業務時間外に定期的に（例えば、毎日、２日おき、毎週など）実行する。サーバ１４の処理能力が高ければ、業務時間中にリアルタイムでグループ分けを実行することも考えられるが、そうすると接続のたびにグループ分けをやり直さなければならず、サーバ１４に負荷がかかるので好ましくない。【００３４】
予測部３６は、監視部３２がステップＳ１４で記録したグループ毎の接続開始時刻のデータから、各グループに属するクライアントが次に接続要求を出す時間を予測し、その予測結果をグループの優先度および委譲可能レベルとともに委譲処理部２８に知らせる。優先度および委譲可能レベルは分類部から取得可能である。予測部３６は、例えばグループ毎の接続開始時刻のデータから平均接続要求間隔を計算し、各グループの前回の接続開始時刻からの経過時間をこの平均接続要求間隔から差し引くことによって、次接続要求の発生時刻をグループ毎に予測する。【００３５】
委譲処理部２８は、これらのデータに基づいて、前述のようにして要求元クライアント１６の接続の可否を決定するが、その時ステップＳ１０−Ｓ１２で考慮されるのは、要求元クライアント１６よりも優先度の高いグループのデータだけである。従って、要求元クライアント１６のＩＤを予め委譲処理部２８からクライアント監視部３０に知らせておくことによって、要求元クライアント１６よりも優先度の高いグループのデータだけを予測部３６から委譲処理部２８に送るようにしてもよい。その場合は、予測部３６から委譲処理部２８に優先度の情報を送る必要はない。【００３６】
これまで説明してきた委譲処理が終わると、要求元クライアント１６は、サーバ１４から通知された委譲レベルに応じてサーバ１４の処理を選択的に実行する。すなわち、処理部２２は、委譲レベルが０の場合は、図２に示すように録音処理だけを実行し、委譲レベルが１の場合は、録音処理に続いてサーバ１４の処理段階１を実行し、委譲レベルが２の場合は、処理段階１に続いて処理段階２も実行する。処理が終了すると、要求元クライアント１６は処理結果をサーバ１４に送り、サーバ１４は受け取った処理結果に対して残りの処理段階を実行し、その処理結果、すなわちテキストデータを要求元クライアントに送り返す。【００３７】
本発明の主要構成要素であるサーバ１４は、例えば図７に示すようなデータ処理システム１００として実装可能である。データ処理システム１００は、システム・バス１０６に接続された複数のプロセッサ１０２および１０４を含む対称型マルチプロセッサ（ＳＭＰ）システムとすることができる。代替として、単一プロセッサ・システムを用いることも可能である。さらに、システム・バス１０６には、ローカル・メモリ１０９とのインターフェースをとるメモリ・コントローラ／キャッシュ１０８が接続される。Ｉ／Ｏブリッジ１１０がシステム・バス１０６に接続され、Ｉ／Ｏバス１１２とのインターフェースをとる。メモリ・コントローラ／キャッシュ１０８およびＩ／Ｏバスブリッジ１１０は図示のように統合することができる。【００３８】
Ｉ／Ｏバス１１２に接続されたＰＣＩバス・ブリッジ１１４は、ＰＣＩローカル・バス１１６とのインターフェースをとる。ＰＣＩローカル・バス１１６には、クライアント１６との通信のためにモデム１１８およびネットワーク・アダプタ１２０が接続される。Ｉ／Ｏバス１１２には、グラフィックス・アダプタ１２２およびハードディスク１２４も接続されている。簡単のため図７には示していないが、グラフィックス・アダプタ１２２にはディスプレイ・デバイスが接続され、またマウスやキーボードなどの入力デバイス、プリンタなどの出力デバイスもＩ／Ｏバス１１２に接続可能である。【００３９】
図３に示すサーバ１４の通信部２４は、例えばデータ処理システム１００のモデム１１８またはネットワーク・アダプタとして実装することができ、負荷監視部２６、委譲処理部２８およびクライアント監視部３０は、プロセッサ１０２および１０４で実行されるプログラムの機能として実装することができる。もちろん、これらを専用のハードウェアまたはハードウェアとソフトウェアの組み合わせで実装することも可能である。図７のシステムでは、プロセッサ１０２および１０４が実行するプログラムはハードディスク１２４に記録されているが、ハードディスク１２４以外の任意の記録媒体を使用できることは言うまでもない。【００４０】
クライアント１６も同様な構成で構わないが、サーバ１４ほど高性能でなくてもよいので、プロセッサは１台で十分である。【００４１】
これまで説明してきた実施形態では、サーバが１台であったが、本発明は２台以上のサーバを含むクライアント・サーバ・システムにも適用可能である。その例を図８に示す。この代替実施形態におけるクライアント・サーバ・システム２００は、ネットワーク１２に接続された複数のクライアント１６と、特許文献１に記載のようなロード・バランサ２０２を介してネットワーク１２に接続された複数のサーバ２０４とを含んでいる。ネットワーク１２およびクライアント１６は図１と同じでよいが、サーバ２０４は、図１および図３に示すサーバ１４とは異なり、通常のサーバであって、委譲処理のための構成要素２６−３６はすべてロード・バランサ２０２に移されている。【００４２】
ロード・バランサ２０２は、各サーバ２０４の負荷状況を監視して、通常はサーバ間の負荷分散を実行する。このサーバ間の負荷分散には、特許文献１のような公知の手法を利用できる。そして、すべてのサーバ２０４の負荷が基準負荷を超えていると、ロード・バランサ２０２は前述の委譲処理を実行する。図４の例で説明すると、ロード・バランサ２０２は、あるクライアントから接続要求を受け取ると（ステップＳ１）、各サーバ２０４の負荷を計算する（ステップＳ２）。このとき、サーバ負荷が基準負荷を超えていないサーバが１以上あれば、その中で負荷が最低のサーバに接続要求の処理を指示し、要求元クライアントに対しては、委譲なしで接続を許可する。一方、すべてのサーバ２０４の負荷が基準負荷を超えていると、ロード・バランサ２０２は、その中で負荷が最低のサーバを選択して、図４のステップＳ５以下を実行する。ステップＳ５以下の動作は、前述と同じ同じでよいから、詳細な説明は省略する。【００４３】
以上、本発明の最良の実施形態について説明してきたが、本発明はそのような実施形態に限定されるものではなく、様々な修正・変更が可能である。例えば、サーバの処理段階の数は３に限らず、アプリケーションに応じて増減可能であり、委譲レベルの数も同様である。実施形態で例示した各種数値も適宜に変更してよい。また、本発明は音声認識に限らず、画像認識などのサーバ負荷の高いアプリケーションにも適用可能である。
【図面の簡単な説明】
【００４４】
【図１】本発明を実施できるクライアント・サーバ・システムの概要を示す。
【図２】コールセンター業務におけるクライアントとサーバの処理の流れの一例を示す。
【図３】本発明に従うクライアント・サーバ・システムの一構成例を示す。
【図４】図３のクライアント・サーバ・システムにおける委譲処理の例示的フローを示す。
【図５】図３のクライアント・サーバ・システムにおいてクライアント監視部が記録するデータの例を示す。
【図６】クライアント監視部の分類部がサーバ利用率および委譲可能レベルに応じて複数のクライアントを分類したテーブルを示す。
【図７】サーバとして使用可能なデータ処理システムの構成例を示す。
【図８】複数のサーバを含む本発明の代替の実施形態を示す。
【符号の説明】
【００４５】
１２  ネットワーク
１４  サーバ
１６  クライアント
２０  通信部
２２  処理部
２４  通信部
２６  負荷監視部
２８  委譲処理部
３０  クライアント監視部
３２  監視部
３４  分類部
３６  予測部
【図１】
2007074797.tif 000003
【図２】
2007074797.tif 000004
【図３】
2007074797.tif 000005
【図４】
2007074797.tif 000006
【図５】
2007074797.tif 000007
【図６】
2007074797.tif 000008
【図７】
2007074797.tif 000009
【図８】
2007074797.tif 000010
【国際調査報告】
2007074797.tif 000011
2007074797.tif 000012
2007074797.tif 000013
2007074797.tif 000014
2007074797.tif 000015
2007074797.tif 000016