(57)【要約】【課題】提供可能なサービス数がサーバ装置ごとに異なる場合でも、クライアントにサービスが提供されるまでの時間を短縮しつつ、サーバ装置の負荷分散を実現する。【解決手段】サーバ選択制御装置１０の優先リスト作成部１１が、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位を入れ替えたサーバ装置優先リストを作成し、優先リスト送信部１２が、サーバ装置優先リストをサービス要求装置２０に送信する。また、サービス要求装置２０の優先リスト取得部２１が、サーバ装置優先リストを取得し、サービス要求部２２が、サーバ装置優先リストに含まれる各サーバ装置に対してグループの優先度の順序でアクセスを試み、最初にアクセスが成功したサーバ装置にサービス要求を転送する。【選択図】図１
2011227733.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置からサーバ装置へサービス要求を転送するサービス要求装置が受信したサービス要求の転送先となるサーバ装置を選択するサーバ選択制御装置であって、
前記サービス要求の転送先としてアクセスするサーバ装置の順序を示すサーバ装置優先リストの要求を前記サービス要求装置から受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位を入れ替えたサーバ装置優先リストを作成する優先リスト作成手段と、
前記優先リスト作成手段により作成されたサーバ装置優先リストを前記サービス要求装置に送信する優先リスト送信手段と
を備えたことを特徴とするサーバ選択制御装置。
【請求項２】
前記優先リスト作成手段は、前記グループの優先度が高いグループほど、前記サーバ装置優先リスト内で、より優先される位置に配置される頻度が高くなるように前記各グループの優先度の順位を入れ替えることを特徴とする請求項１に記載のサーバ選択制御装置。
【請求項３】
前記優先リスト作成手段は、前記サーバ装置の同時に提供可能なサービス数のグループごとの総和に基づいて、該サービス数の総和が大きいグループの優先度が高くなるように前記各グループの優先度を決定することを特徴とする請求項１または２に記載のサーバ選択制御装置。
【請求項４】
クライアント装置から受信したサービス要求をサーバ装置に転送するサービス要求装置であって、
前記サービス要求を受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位が入れ替えられたサーバ装置優先リストを取得する優先リスト取得手段と、
前記優先リスト取得手段により取得されたサーバ装置優先リストに含まれる各サーバ装置に対して前記グループの優先度の順序でアクセスを試み、最初にアクセスが成功したサーバ装置に前記サービス要求を転送するサービス要求手段と
を備えたことを特徴とするサービス要求装置。
【請求項５】
前記サービス要求手段は、前記複数のサーバ装置それぞれがクライアント装置との間で確立しているサービス提供数をもとに、前記グループごとにサーバ装置を昇順にソートし、ソートした順で各サーバ装置に対してアクセスを試みることを特徴とする請求項４に記載のサービス要求装置。
【請求項６】
クライアント装置からサーバ装置へサービス要求を転送するサービス要求装置が受信したサービス要求の転送先となるサーバ装置を選択するサーバ選択制御装置に適用されるサーバ選択制御方法であって、
前記サーバ選択制御装置が、
前記サービス要求の転送先としてアクセスするサーバ装置の順序を示すサーバ装置優先リストの要求を前記サービス要求装置から受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位を入れ替えたサーバ装置優先リストを作成する優先リスト作成工程と、
前記優先リスト作成工程により作成されたサーバ装置優先リストを前記サービス要求装置に送信する優先リスト送信工程と
を含んだことを特徴とするサーバ選択制御方法。
【請求項７】
クライアント装置から受信したサービス要求をサーバ装置に転送するサービス要求装置に適用されるサービス要求方法であって、
前記サービス要求装置が、
前記サービス要求を受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位が入れ替えられたサーバ装置優先リストを取得する優先リスト取得工程と、
前記優先リスト取得工程により取得されたサーバ装置優先リストに含まれる各サーバ装置に対して前記グループの優先度の順序でアクセスを試み、最初にアクセスが成功したサーバ装置に前記サービス要求を転送するサービス要求工程と
を含んだことを特徴とするサービス要求方法。
【請求項８】
コンピュータを請求項１、２または３に記載のサーバ選択制御装置として機能させることを特徴とするサーバ選択制御プログラム。
【請求項９】
コンピュータを請求項４に記載のサービス要求装置として機能させることを特徴とするサービス要求プログラム。
【請求項１０】
クライアント装置から受信したサービス要求をサーバ装置に転送するサービス要求装置と、サービス要求装置が受信したサービス要求の転送先となるサーバ装置を選択するサーバ選択制御装置とを有するサービス提供システムであって、
前記サーバ選択制御装置が、
前記サービス要求の転送先としてアクセスするサーバ装置の順序を示すサーバ装置優先リストの要求を前記サービス要求装置から受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位を入れ替えたサーバ装置優先リストを作成する優先リスト作成手段と、
前記優先リスト作成手段により作成されたサーバ装置優先リストを前記サービス要求装置に送信する優先リスト送信手段とを備え、
前記サービス要求装置が、
前記サーバ選択制御装置から送信されたサーバ装置優先リストを取得する優先リスト取得手段と、
前記優先リスト取得手段により取得されたサーバ装置優先リストに含まれる各サーバ装置に対して前記グループの優先度の順序でアクセスを試み、最初にアクセスが成功したサーバ装置に前記サービス要求を転送するサービス要求手段と
を備えたことを特徴とするサービス提供システム。
【請求項１１】
クライアント装置から受信したサービス要求をサーバ装置に転送するサービス要求装置と、サービス要求装置が受信したサービス要求の転送先となるサーバ装置を選択するサーバ選択制御装置とを有するサービス提供システムに適用されるサービス提供方法であって、
前記サーバ選択制御装置が、
前記サービス要求の転送先としてアクセスするサーバ装置の順序を示すサーバ装置優先リストの要求を前記サービス要求装置から受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位を入れ替えたサーバ装置優先リストを作成する優先リスト作成工程と、
前記優先リスト作成工程により作成されたサーバ装置優先リストを前記サービス要求装置に送信する優先リスト送信工程と、
前記サービス要求装置が、
前記サーバ選択制御装置から送信されたサーバ装置優先リストを取得する優先リスト取得工程と、
前記優先リスト取得工程により取得されたサーバ装置優先リストに含まれる各サーバ装置に対して前記グループの優先度の順序でアクセスを試み、最初にアクセスが成功したサーバ装置に前記サービス要求を転送するサービス要求工程と
を含んだことを特徴とするサービス提供方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ選択制御装置、サービス要求装置、サーバ選択制御方法、サービス要求方法、サーバ選択制御プログラム、サービス要求プログラム、サービス提供システムおよびサービス提供方法に関する。
【背景技術】
【０００２】
従来、同一のサービスを提供するサーバ装置がネットワーク上に設置されている場合に、各サーバ装置の負荷を分散させるための技術が知られている。例えば、ＤＮＳ（Domain  Name  Service）用サーバを用いる方法（例えば、非特許文献１および２参照）や、負荷分散用転送装置を用いる方法（例えば、非特許文献３参照）などがある。
【０００３】
これらの方法では、ＤＮＳ用サーバおよび負荷分散用転送装置は、クライアント装置からサービス要求を受信した場合に、そのクライアントに対してサービスを提供するサーバ装置を複数のサーバ装置の中から選択する。このとき、例えば、ＤＮＳ用サーバおよび負荷分散用転送装置は、クライアント装置からサービス要求を受信するごとに、選択するサーバ装置を変える。これにより、サーバ装置の負荷が分散される。
【０００４】
ここで、例えば、ＤＮＳ用サーバまたは負荷分散用転送装置によって１台のサーバ装置が選択される場合には、各サーバ装置は同じ確率で選択されることになる。これに対し、例えば、オペレーティングシステムのプロセススケジューリングなどで用いられている重み付きランドロビン法によれば、複数のプロセスに対して異なる割合でＣＰＵ（Central  Processing  Unit）を割り当てることができる（例えば、非特許文献４参照）。かかる重み付きランドロビン法をサーバ装置の選択に適用すれば、異なる確率でサーバ装置を選択することもできる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Cricket Lin，Paul Albitz著，小柏  伸夫訳，「ＤＮＳ  ＆  ＢＩＮＤ」  第５版，オライリー・ジャパン発行，２００８．
【非特許文献２】Cricket Lin著，伊藤  高一監訳，小柏  伸夫訳，「ＤＮＳ  ＆  ＢＩＮＤクックブック」，オライリー・ジャパン発行，２００３．
【非特許文献３】トニー  ブルーク著、鍋島  公章訳、横山  晴庸訳、上谷  一訳、「サーバ負荷分散技術」，オライリー・ジャパン発行，２００１．
【非特許文献４】A. Kuurne，A. P. Miettinen著，「Weighted Round Robin Scheduling Strategies in (E)GPRS Radio Interface」，2004 IEEE 60th Vehicular Technology Conference，Vol 5，pp. 3155-3159，2004.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、一般的に、サービスを提供するサーバ装置には、提供可能なサービス数に上限がある。そして、この上限を超えたサービス要求は、サーバ装置によって拒否されることになる。そのため、上述した従来の方法のように、複数のサーバ装置の中から１台のサーバ装置が選択される場合には、同じ確率または異なる確率でサーバ装置を選択したとしても、選択されたサーバ装置において、提供中のサービス数がすでに上限に達していることもある。このような場合には、再度、クライアント装置がサービス要求を送信して、サーバ装置を選択しなおす必要がある。この結果、クライアントにサービスが提供されるまでの時間が長くなってしまう場合があった。
【０００７】
本発明は、上記に鑑みてなされたものであって、提供可能なサービス数がサーバ装置ごとに異なる場合でも、クライアントにサービスが提供されるまでの時間を短縮しつつ、サーバ装置の負荷分散を実現することができるサーバ選択制御装置、サービス要求装置、サーバ選択制御方法、サービス要求方法、サーバ選択制御プログラム、サービス要求プログラム、サービス提供システムおよびサービス提供方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、クライアント装置からサーバ装置へサービス要求を転送するサービス要求装置が受信したサービス要求の転送先となるサーバ装置を選択するサーバ選択制御装置であって、前記サービス要求の転送先としてアクセスするサーバ装置の順序を示すサーバ装置優先リストの要求を前記サービス要求装置から受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位を入れ替えたサーバ装置優先リストを作成する優先リスト作成手段と、前記優先リスト作成手段により作成されたサーバ装置優先リストを前記サービス要求装置に送信する優先リスト送信手段とを備えたことを特徴とする。
【０００９】
また、本発明は、クライアント装置から受信したサービス要求をサーバ装置に転送するサービス要求装置であって、前記サービス要求を受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位が入れ替えられたサーバ装置優先リストを取得する優先リスト取得手段と、前記優先リスト取得手段により取得されたサーバ装置優先リストに含まれる各サーバ装置に対して前記グループの優先度の順序でアクセスを試み、最初にアクセスが成功したサーバ装置に前記サービス要求を転送するサービス要求手段とを備えたことを特徴とする。
【００１０】
また、本発明は、クライアント装置からサーバ装置へサービス要求を転送するサービス要求装置が受信したサービス要求の転送先となるサーバ装置を選択するサーバ選択制御装置に適用されるサーバ選択制御方法であって、前記サーバ選択制御装置が、前記サービス要求の転送先としてアクセスするサーバ装置の順序を示すサーバ装置優先リストの要求を前記サービス要求装置から受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位を入れ替えたサーバ装置優先リストを作成する優先リスト作成工程と、前記優先リスト作成工程により作成されたサーバ装置優先リストを前記サービス要求装置に送信する優先リスト送信工程とを含んだことを特徴とする。
【００１１】
また、本発明は、クライアント装置から受信したサービス要求をサーバ装置に転送するサービス要求装置に適用されるサービス要求方法であって、前記サービス要求装置が、前記サービス要求を受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位が入れ替えられたサーバ装置優先リストを取得する優先リスト取得工程と、前記優先リスト取得工程により取得されたサーバ装置優先リストに含まれる各サーバ装置に対して前記グループの優先度の順序でアクセスを試み、最初にアクセスが成功したサーバ装置に前記サービス要求を転送するサービス要求工程とを含んだことを特徴とする。
【００１２】
また、本発明は、サーバ選択制御プログラムであって、コンピュータを前記サーバ選択制御装置として機能させることを特徴とする。
【００１３】
また、本発明は、サービス要求プログラムであって、コンピュータを前記サービス要求装置として機能させることを特徴とする。
【００１４】
また、本発明は、クライアント装置から受信したサービス要求をサーバ装置に転送するサービス要求装置と、サービス要求装置が受信したサービス要求の転送先となるサーバ装置を選択するサーバ選択制御装置とを有するサービス提供システムであって、前記サーバ選択制御装置が、前記サービス要求の転送先としてアクセスするサーバ装置の順序を示すサーバ装置優先リストの要求を前記サービス要求装置から受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位を入れ替えたサーバ装置優先リストを作成する優先リスト作成手段と、前記優先リスト作成手段により作成されたサーバ装置優先リストを前記サービス要求装置に送信する優先リスト送信手段とを備え、前記サービス要求装置が、前記サーバ選択制御装置から送信されたサーバ装置優先リストを取得する優先リスト取得手段と、前記優先リスト取得手段により取得されたサーバ装置優先リストに含まれる各サーバ装置に対して前記グループの優先度の順序でアクセスを試み、最初にアクセスが成功したサーバ装置に前記サービス要求を転送するサービス要求手段とを備えたことを特徴とする。
【００１５】
また、本発明は、クライアント装置から受信したサービス要求をサーバ装置に転送するサービス要求装置と、サービス要求装置が受信したサービス要求の転送先となるサーバ装置を選択するサーバ選択制御装置とを有するサービス提供システムに適用されるサービス提供方法であって、前記サーバ選択制御装置が、前記サービス要求の転送先としてアクセスするサーバ装置の順序を示すサーバ装置優先リストの要求を前記サービス要求装置から受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位を入れ替えたサーバ装置優先リストを作成する優先リスト作成工程と、前記優先リスト作成工程により作成されたサーバ装置優先リストを前記サービス要求装置に送信する優先リスト送信工程と、前記サービス要求装置が、前記サーバ選択制御装置から送信されたサーバ装置優先リストを取得する優先リスト取得工程と、前記優先リスト取得工程により取得されたサーバ装置優先リストに含まれる各サーバ装置に対して前記グループの優先度の順序でアクセスを試み、最初にアクセスが成功したサーバ装置に前記サービス要求を転送するサービス要求工程とを含んだことを特徴とする。
【発明の効果】
【００１６】
本発明によれば、提供可能なサービス数がサーバ装置ごとに異なる場合でも、クライアントにサービスが提供されるまでの時間を短縮しつつ、サーバ装置の負荷分散を実現することができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施例１に係るサービス提供システムの構成を示す機能ブロック図である。
【図２】図２は、ＤＮＳ用サーバを用いる負荷分散技術を説明するための図である。
【図３】図３は、負荷分散用転送装置を用いる負荷分散技術を説明するための図である。
【図４】図４は、重み付きランドロビン法を説明する図である。
【図５】図５は、サービス要求装置とサーバ選択制御装置とを有するサービス提供システムの構成を示す図である。
【図６】図６は、実施例２に係るサービス提供システムの構成を示す機能ブロック図である。
【図７】図７は、実施例２に係るグループ構成記憶部を説明するための図である。
【図８】図８は、実施例２に係る優先リスト作成部により作成されるサーバ装置優先リストの一例を示す図である。
【図９】図９は、実施例２に係る優先リスト作成部によるサーバ装置優先リストの作成方法を説明するための図である。
【図１０】図１０は、実施例４におけるグループ優先度の決定方法を説明するための図である。
【図１１】図１１は、実施例５におけるグループ構成記憶部を説明するための図である。
【図１２】図１２は、実施例５におけるサーバ選択制御装置の動作の全体の流れを示すフローチャートである。
【図１３】図１３は、図１２に示したサーバ選択制御装置の初期化処理の処理手順を示すフローチャートである。
【図１４】図１４は、図１２に示したサーバ装置優先リスト作成処理の処理手順を示すフローチャートである。
【図１５】図１５は、図１４に示したサーバ装置払出位置移動処理の処理手順を示すフローチャートである。
【図１６】図１６は、実施例５におけるグループが二段階の場合のサーバ装置優先リストへのサーバ装置の格納順の一例を示す図である。
【図１７】図１７は、実施例５におけるサービス要求装置の動作を示すフローチャートである。
【図１８】図１８は、図１７に示したサーバ装置優先リストの再配列を説明するための図である。
【図１９】図１９は、実施例６におけるサービス要求装置の動作を示すフローチャートである。
【図２０】図２０は、実施例８におけるグループ優先度の割り当て方法の流れを示すフローチャートである。
【図２１】図２１は、図１６に示す例から第一段階を除いた場合のサーバ装置優先リストへのサーバ装置の格納順の一例を示す図である。
【発明を実施するための形態】
【００１８】
以下に、本発明に係るサーバ選択制御装置、サービス要求装置、サーバ選択制御方法、サービス要求方法、サーバ選択制御プログラム、サービス要求プログラム、サービス提供システムおよびサービス提供方法の実施例を図面に基づいて詳細に説明する。なお、以下に示す実施例によって本発明が限定されるものではない。
【実施例１】
【００１９】
まず、図１を参照して、実施例１に係るサービス提供システムの構成について説明する。図１に示すように、実施例１に係るサービス提供システムは、サーバ選択制御装置１０と、サービス要求装置２０とを有する。サービス要求装置２０は、クライアント装置３０から受信したサービス要求を複数のサーバ装置４０に転送する。サーバ選択制御装置１０は、サービス要求装置２０が受信したサービス要求の転送先となるサーバ装置を選択する。
【００２０】
サーバ選択制御装置１０は、優先リスト作成部１１と、優先リスト送信部１２とを有する。優先リスト作成部１１は、サービス要求の転送先としてアクセスするサーバ装置の順序を示すサーバ装置優先リストの要求をサービス要求装置２０から受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位を入れ替えたサーバ装置優先リストを作成する。優先リスト送信部１２は、優先リスト作成部１１により作成されたサーバ装置優先リストをサービス要求装置２０に送信する。
【００２１】
サービス要求装置２０は、優先リスト取得部２１と、サービス要求部２２とを有する。優先リスト取得部２１は、サーバ選択制御装置１０から送信されたサーバ装置優先リストを取得する。サービス要求部２２は、優先リスト取得部２１により取得されたサーバ装置優先リストに含まれる各サーバ装置に対してグループの優先度の順序でアクセスを試み、最初にアクセスが成功したサーバ装置にサービス要求を転送する。
【００２２】
このように、本実施例では、サーバ選択制御装置１０によって、複数のサーバ装置に関する情報がサービス要求装置２０に通知される。そして、サービス要求装置２０によって、サーバ選択制御装置１０から通知された複数のサーバ装置に対して各サーバ装置の優先度の順序でアクセスが試みられる。したがって、本実施例によれば、提供可能なサービス数がサーバ装置ごとに異なる場合でも、クライアントにサービスが提供されるまでの時間を短縮しつつ、サーバ装置の負荷分散を実現することができる。
【００２３】
なお、前述したように、より多くのクライアントに対してネットワーク上のサービスを提供するためには、クライアントがサービス要求する量に応じた台数分、同一のサービスを提供するサーバ装置をネットワーク上に設置することが行われる。これらのサーバ装置に対して、クライアントからのサービス要求を分散させる技術として、前述した非特許文献１、２および３に記載された方法がある。
【００２４】
非特許文献１および２に記載された方法は、インターネットなどで利用されているＤＮＳ用サーバを用いる方法である。この方法では、同一のサービスを提供するサーバ装置を表すドメイン名に対して複数のＩＰアドレスが割り当てられる。そして、クライアントから送られてくるドメイン名からＩＰアドレスへの変換要求に対して、複数のＩＰアドレスをラウンドロビンによって順番にクライアントに送信する。これにより、クライアントがアクセスするサーバ装置を変化させ、サービス提供のためのサーバ装置の負荷を分散させる。
【００２５】
図２は、ＤＮＳ用サーバを用いる負荷分散技術を説明するための図である。例えば、サービスを提供するサーバ装置にアクセスするためのドメイン名が、ｗｗｗ．ｓｅｒｖｉｃｅ．ｊｐであったとする。この場合には、まず、クライアント装置１０５が、ＤＮＳ用サーバ１０４に対して、ドメイン名ｗｗｗ．ｓｅｒｖｉｃｅ．ｊｐからＩＰアドレスへの変換要求を送信する。
【００２６】
ＤＮＳ用サーバ１０４は、サーバ装置１００、１０１、１０２、１０３に該当するＩＰアドレスを、この順序に並べて、クライアント装置１０５に応答する。その後、クライアント装置１０５は、まず、サーバ装置１００に対してサービス要求を送信する。ここで、サーバ装置１００が利用可能でなければ、クライアント装置１０５は、サーバ装置１０１、１０２、１０３の順に同様の処理を行う。
【００２７】
続いて、クライアント装置１０６および１０７は、この順序でドメイン名の変換要求を行ったとき、それぞれ、サーバ装置１０１、１０２、１０３、１００に該当するＩＰアドレスをこの順序に並べたもの、および、サーバ装置１０２、１０３、１００、１０１に該当するＩＰアドレスをこの順序に並べたものを受け取り、クライアント装置１０５と同様の処理を行う。このようにして、順番に使用されるサーバ装置を変化させることで、サービス提供の為のサーバ装置の負荷を分散させることができる。
【００２８】
なお、ここでは、異なるクライアントが一連のサービスの要求を行う場合を説明したが、同一のクライアントが複数のサービス要求を行う場合、ＤＮＳ用サーバ１０４から受け取ったＩＰアドレスを順番に使用することで、同一のクライアントから複数のサービス要求を送信する場合の負荷を分散することができる。例えば、クライアント装置１０５の場合、サーバ装置１００→１０１→１０２→１０３→１００→１０１・・・の順番にサービス要求を行うことでサービス提供の為のサーバ装置の負荷の分散を実現することができる。
【００２９】
非特許文献３に記載された方法は、負荷分散用転送装置を用いる方法である。この方法では、同一のサービスを提供する複数のサーバ装置の個々のＩＰアドレスとは別に、これらの複数のサーバ装置全体を表す代表ＩＰアドレスが定義される。クライアントからのサービス要求は、この代表ＩＰアドレスを宛先として送られる。そして、このサービス要求を転送する負荷分散用転送装置が宛先のＩＰアドレスの変更等の処理を行うことにより、クライアントがアクセスするサーバ装置を変化させ、サービス提供の為のサーバ装置の負荷を分散させる。
【００３０】
図３は、負荷分散用転送装置を用いる負荷分散技術を説明するための図である。例えば、サーバ装置１１０、１１１、１１２、および、１１３のＩＰアドレスが、それぞれ、１９２．１６８．１．１１０、１９２．１６８．１．１１１、１９２．１６８．１．１１２、および、１９２．１６８．１．１１３であったとし、これらのサーバ装置の代表ＩＰアドレスが１９２．１６８．１．１０であったとする。
【００３１】
クライアント装置１１５、１１６、および、１１７は、サーバ装置へサービス要求を送信する際は、代表ＩＰアドレスである１９２．１６８．１．１０を宛先として送信する。そのサービス要求を含むパケットが転送される経路上にある負荷分散用転送装置１１４は、パケットを受け取ったとき、宛先を、サービスの要求毎に、実際のサーバ装置のＩＰアドレスである１９２．１６８．１．１１０→１９２．１６８．１．１１１→１９２．１６８．１．１１２→１９２．１６８．１．１１３→１９２．１６８．１．１１０→１９２．１６８．１．１１１・・・の順に変化させる。これにより、サービス提供の為のサーバ装置の負荷分散を実現することができる。
【００３２】
上記のＤＮＳ用サーバを用いる方法において、ＤＮＳ用サーバがクライアントに提示するサーバ装置の数を１つとした場合、および、上記の負荷分散用転送装置を用いる方法において、サーバ装置は同じ確率で、それぞれ、ＤＮＳ用サーバ、および、負荷分散用転送装置によって選択される。
【００３３】
かかるサーバ装置の選択において、非特許文献４に述べられているように、オペレーティングシステムのプロセススケジューリングや転送対象のパケットの優先制御で用いられる重み付きランドロビン法を用いることで、異なった確率で、サーバ装置を選択させることができる。
【００３４】
図４は、重み付きランドロビン法を説明する図である。例えば、３つのプロセスＡ、Ｂ、および、Ｃがあり、オペレーティングシステムのプロセススケジューリングの機能により、ＣＰＵ時間の割り当てが行われているものとする。そして、例えば、プロセスＡ、Ｂ、および、Ｃに対して、それぞれ、２対２対１の割合でＣＰＵ時間を割り当てる場合、割り当てるタイムスロット５個に対して、２回をプロセスＡ、２回をプロセスＢ、１回をプロセスＣに割り当てる。この方法をＤＮＳ用サーバ、および、負荷分散用転送装置に適用することで、ひとつのサーバ装置を選択する場合には、サーバ装置の選択の確率を変化させることができる。
【００３５】
上記で説明した負荷分散技術では、サービスを提供するために必要なサーバ装置の負荷が、クライアントからのサービスの要求数によって支配的に決まる場合は、既存技術によりサーバ装置の負荷分散が可能である。
【００３６】
ここで、図５に示す構成において負荷分散を行う場合を考える。図５では、クライアント装置からサービス要求装置に対して送られるサービス要求に対して、サービス要求装置が代理でサーバ装置にサービス要求を行い、サーバ装置から提供されるサービスを仲介してクライアント装置に提供する。図５に示すサービス要求装置は、図２に示したクライアントに相当する。
【００３７】
さらに、前述した負荷分散技術で説明した方法では考慮されていない下記の［条件１］、［条件２］および［条件３］でのサーバ装置の負荷分散を考える。
【００３８】
［条件１］クライアント装置からのサービス要求を契機として、それ以後、クライアント装置が必要とする期間、サーバ装置からサービス要求装置を経由して、クライアント装置に対してサービスが提供され、かつ、各サーバ装置から提供可能なサービス数に上限がある。このため、上限を超えたサービス要求は、サーバ装置により拒否される。
【００３９】
［条件２］複数種類のサーバ装置が存在し、種類ごとに提供可能なサービス数の上限が異なる。
【００４０】
［条件３］サーバ装置は、保守作業等のため再起動されることにより、サーバ装置から提供されているクライアントに対するサービスが強制的に切断されることが発生する。
【００４１】
上記の［条件１］、［条件２］および［条件３］では、以下に示す［課題１］および［課題２］が発生する。
【００４２】
［課題１］ＤＮＳ用サーバを用いる方法、または、負荷分散用転送装置を用いる方法を用いた場合、前述したように、各サーバ装置が利用される確率が同じになる。このため、上記の［条件１］および［条件２］が存在する場合には、提供可能なサービス数の上限が異なっているサーバ装置についても同じ確率で利用されることになる。したがって、より少ないサービス数しか提供できないサーバ装置に、負荷が高い状況が発生してしまう。また、ＤＮＳ用サーバを用いる方法において提示するサーバ装置の数を一つとして、前述した重み付きラウンドロビン法を併用した場合には、［条件１］により、提示されたサーバ装置が提供可能なサービス数の上限を超えていると、再度、ＤＮＳ用サーバに問い合わせを行わなければならないため、サービスの提供を受けるまでに、より長い時間を必要とするという問題が発生する。このサービスの提供を受けるまでに長い時間を必要とする問題は、負荷分散用転送装置を用いる方法と重み付きラウンドロビン法を組み合わせた場合でも、同様の理由により発生する。
【００４３】
［課題２］上記の［条件３］により、あるサーバ装置が再起動された場合には、再起動直後、そのサーバ装置が提供しているサービス数は、ゼロとなる。ＤＮＳ用サーバを用いた方法および負荷分散用転送装置を用いる方法を用いた場合には、各サーバ装置が均等に選択されるので、再起動されたサーバ装置が多く選択されることはない。したがって、負荷分散を実現することができない。また、ＤＮＳ用サーバを用いた方法や負荷分散用転送装置を用いる方法と重み付きランドロビン法を組み合わせて用いた場合、［課題１］で説明したように、サービス要求装置からのサービス要求に対して、ひとつのサーバ装置のみの提示となるため、提示されたサーバ装置が提供可能なサービス数の上限を超えていると、サービスの提供を受けるまでに、より長い時間を必要とするという課題が発生する。
【００４４】
本発明に係るサーバ選択制御装置、サービス要求装置、サーバ選択制御方法、サービス要求方法、サーバ選択制御プログラム、サービス要求プログラム、サービス提供システムおよびサービス提供方法は、例えば、上述した負荷分散に関する課題を解決するものである。以下では、図面を参照しながら、本発明に係るサーバ選択制御装置、サービス要求装置、サーバ選択制御方法、サービス要求方法、サーバ選択制御プログラム、サービス要求プログラム、サービス提供システムおよびサービス提供方法のより具体的な実施例について説明する。
【実施例２】
【００４５】
実施例２では、サービス要求装置とサーバ選択制御装置とを有するサービス提供システムについて説明する。本実施例では、サーバ装置を１段階のグループにより管理し、各グループには１つ以上のサーバ装置が割り当てられている例について説明する。
【００４６】
まず、図６を参照して、実施例２に係るサービス提供システムの構成について説明する。図６に示すように、実施例２に係るサービス提供システムは、サーバ選択制御装置５０と、サービス要求装置６０とを有する。サーバ選択制御装置５０とサービス要求装置６０とは、ネットワーク７０を介して通信可能に接続されている。また、サービス要求装置６０には、ネットワーク７０を介して、複数のクライアント装置３０および複数のサーバ装置４０が通信可能に接続されている。
【００４７】
サーバ選択制御装置５０は、サービス要求装置６０によって受信されたサービス要求の転送先となるサーバ装置を選択する。このサーバ選択制御装置５０は、通信制御部５１と、グループ構成記憶部５２と、制御部５３とを有する。制御部５３は、優先リスト作成部５３ａと、優先リスト送信部５３ｂとを有する。通信制御部５１は、サービス要求装置６０との間でやり取りされる情報の送受信を制御する。なお、グループ構成記憶部５２、優先リスト作成部５３ａおよび優先リスト送信部５３ｂについては、後に詳細に説明する。
【００４８】
サービス要求装置６０は、クライアント装置３０から受信したサービス要求を複数のサーバ装置４０に転送する。このサービス要求装置６０は、通信制御部６１と、制御部６２とを有する。制御部６２は、優先リスト取得部６２ａと、サービス要求部６２ｂとを有する。通信制御部６１は、クライアント装置３０、サーバ装置４０およびサーバ選択制御装置５０との間でやり取りされる情報の送受信を制御する。なお、優先リスト取得部６２ａおよびサービス要求部６２ｂについては、後に詳細に説明する。
【００４９】
次に、図７を参照して、本実施例に係るグループ構成記憶部５２について説明する。グループ構成記憶部５２は、複数のサーバ装置のグループ構成に関する情報を記憶する。なお、図７におけるグループは、第一段階のグループを表しており、優先度は、グループ優先度を表している。図７に示すように、本実施例では、グループ構成記憶部５２は、第一段階のグループが３つ存在し、それぞれグループ１、グループ２、および、グループ３とした情報を記憶する。
【００５０】
ここで、例えば、グループ１、グループ２およびグループ３のグループ優先度は、それぞれ、Ｐ（１）、Ｐ（２）、および、Ｐ（３）で表される。また、具体的なグループ優先度として、Ｐ（１）＝４、Ｐ（２）＝２、および、Ｐ（３）＝１とする。このグループ優先度の大きいものが優先されるものとする。また、本実施例では、各グループ優先度は、サーバ装置優先リスト作成の一定回数毎に、サーバ装置優先リスト内で各グループを先頭に位置させる回数を同時に表す。
【００５１】
なお、かかるグループ構成記憶部５２によって記憶されるグループ構成は、システムの運用者によって事前に装置に対して設定されるものとする。このとき、第一段階のグループは、グループ優先度の大きいものから小さいものの順番に並べ変えて利用する。また、本実施例では、図７に示すように、グループ１、グループ２、および、グループ３について、それぞれ、サーバ装置を、３台、３台、および、２台割り当てる。なお、グループ化されるサーバ装置は、グループ間で排他的であってもよいし、グループ間で重複してもよい。
【００５２】
次に、本実施例におけるサーバ選択制御装置５０の動作について説明する。まず、優先リスト送信部５３ｂは、サービス要求装置６０からサーバ装置優先リストの要求を受信し、受信した要求を優先リスト作成部５３ａに渡す。優先リスト作成部５３ａは、優先リスト送信部５３ｂを介してサーバ装置優先リストの要求を受け付けると、グループ構成記憶部５２によって記憶されている情報に基づいてサーバ装置優先リストを作成する。
【００５３】
例えば、優先リスト作成部５３ａは、サーバ装置優先リストを作成するときには、変数として、グループｇ毎に、Ｓ（ｇ）とＨ（ｇ）を用いる。Ｓ（ｇ）は、すでにサーバ装置優先リストのなかで、グループｇが先頭に位置した回数である。また、Ｈ（ｇ）は、グループｇにおいて、グループｇに含まれるサーバ装置をサーバ装置優先リストに配置するときに、次の配置において、グループｇに含まれるサーバ装置の中で先頭になるサーバ装置を表す。これらの変数は、以下のように初期値が設定される。
【００５４】
Ｓ（１）＝０，  Ｓ（２）＝０，  Ｓ（３）＝０
Ｈ（１）＝サーバ１，  Ｈ（２）＝サーバ４，  Ｈ（３）＝サーバ７
【００５５】
ここで、図８を参照して、優先リスト作成部５３ａにより作成されるサーバ装置優先リストの一例について説明する。なお、図８におけるグループは、サーバ優先リスト内のグループを表しており、グループ組み合わせと呼び、優先度は、グループ組み合わせ優先度を表している。
【００５６】
図８に示すように、サーバ装置優先リストには、グループが配列されており、各グループには、グループ組み合わせ優先度が割り当てられる。このグループ組み合わせ優先度は、事前に、運用者によって、装置に設定される。なお、各グループには、１つ以上のサーバが配列される。本実施例では、グループ組み合わせ優先度は、より小さい値が優先されるものとする。また、図８では、よりグループ組み合わせ優先度の高いものから低いものの順に、グループが並べられているが、グループの順序は任意であってよい。
【００５７】
優先リスト送信部５３ｂは、優先リスト作成部５３ａによってサーバ装置優先リストが作成されると、作成されたサーバ装置優先リストをサービス要求装置６０に送信する。
【００５８】
次に、図９を参照して、優先リスト作成部５３ａによるサーバ装置優先リストの作成方法を説明する。図９は、１回目から１４回目のサーバ装置優先リストの要求に対して作成されるサーバ装置優先リストである。なお、図９におけるグループは、サーバ優先リスト内のグループを表しており、優先度は、グループ組み合わせ優先度を表している。
【００５９】
まず、優先リスト作成部５３ａは、サービス要求装置６０からの作成要求に対して、グループ構成記憶部５２により記憶されている情報の中で最もグループ優先度が高いグループを特定する。そして、優先リスト作成部５３ａは、特定したグループｇについて、既にサーバ装置優先リストの中で先頭になった回数Ｓ（ｇ）とグループ優先度Ｐ（ｇ）とを比較する。ここで、優先リスト作成部５３ａは、Ｓ（ｇ）とＰ（ｇ）とを比較した結果、Ｓ（ｇ）＜Ｐ（ｇ）であった場合には、そのグループｇをサーバ優先リストの中で先頭に位置させる。
【００６０】
例えば、図７に示した例では、優先リスト作成部５３ａは、最もグループ優先度が高いグループ１について、Ｓ（１）とＰ（１）とを比較する。そして、優先リスト作成部５３ａは、Ｓ（１）＝０でありＰ（１）＝４であるので、図９の１回目に示すように、グループ１をサーバ装置優先リストの中で先頭に位置させる（処理１−１）。
【００６１】
続いて、優先リスト作成部５３ａは、サーバ装置優先リストで先頭に位置させたグループについて、そのグループに含まれるサーバ装置を配置する。このとき、優先リスト作成部５３ａは、Ｈ（ｇ）に設定されているサーバ装置をグループ内で先頭にし、その他のサーバ装置を順に配置する。そして、各サーバ装置を配置した後に、優先リスト作成部５３ａは、先頭に配置したサーバ装置の次のサーバ装置をＨ（ｇ）に設定する。
【００６２】
例えば、優先リスト作成部５３ａは、グループ１の中で先頭となるサーバ装置を表すＨ（１）＝サーバ１であるので、サーバ装置優先リスト内でグループ１を配置するため、サーバ装置優先リスト内での先頭のグループに、サーバ１、サーバ２、サーバ３の順番に各サーバの情報を格納し（処理１−２）、このグループをグループ１と表す。なお、ここでいうグループは、サーバ装置優先リスト内で１番目にあることを表しているものであり、図７に示したグループとは異なる。各サーバの情報を格納した後に、優先リスト作成部５３ａは、Ｓ（１）を１だけ増加させ、Ｈ（１）をサーバ１からサーバ２に移動する（処理１−３）。
【００６３】
続いて、優先リスト作成部５３ａは、サーバ装置優先リストの先頭に位置させたグループについて全てのサーバ装置を配置した後に、次のグループをサーバ装置優先リストに配置する。優先リスト作成部５３ａは、全てのグループをサーバ装置優先リストに配置するまでに、この処理を繰り返す。
【００６４】
例えば、優先リスト作成部５３ａは、図７に示したグループ１の次のグループ優先度のグループであるグループ２がＨ（２）＝サーバ４であるので、サーバ装置優先リスト内でグループ２を配置するため、サーバ装置優先リスト内での２番目のグループに、サーバ４、サーバ５、サーバ６の順番で各サーバの情報を格納し、このグループをグループ２と表す（処理１−４）。各サーバの情報を格納した後に、優先リスト作成部５３ａは、Ｈ（２）をサーバ４からサーバ５に移動する（処理１−５）。
【００６５】
また、優先リスト作成部５３ａは、同様に、グループ３について、サーバ装置優先リスト内での３番目のグループに、サーバ７、サーバ８の順番に各サーバの情報を格納し、このグループをグループ３と表す（処理１−６）。各サーバの情報を格納した後に、優先リスト作成部５３ａは、Ｈ（３）をサーバ７からサーバ８に移動する（処理１−７）。
【００６６】
１回目の結果は、上記で説明したものである（処理１−１〜１−７）。このとき、優先リスト作成部５３ａは、サーバ装置優先リスト内の各グループには、あらかじめ決められたグループ組み合わせ優先度を割り当てる。サーバ装置優先リスト内の各グループｇには、グループ組み合わせ優先度Ｃ（ｇ）が割り当てられており、図９に示す例では、Ｃ（１）＝１、Ｃ（２）＝  ５、Ｃ（３）＝１０としている。
【００６７】
２回目のサーバ装置優先リストについては、１回目と同様であるが、各グループでの先頭のサーバ装置を指し表すＨ（１）、Ｈ（２）、Ｈ（３）が、各グループの２番目を表している。そのため、優先リスト作成部５３ａは、各グループに含まれるサーバ装置を、２番目から最後までサーバ装置優先リストに格納し、サーバ装置の先頭に戻り、１番目のサーバ装置まで格納する。つまり、毎回のサーバ装置優先リストの作成において、各グループに含まれるサーバ装置が全て格納される。以下、４回目までのサーバ装置優先リストについては、上記と同様にして作成される。
【００６８】
そして、優先リスト作成部５３ａは、Ｓ（ｇ）とＰ（ｇ）とを比較した結果、Ｓ（ｇ）≧Ｐ（ｇ）であった場合には、次にグループ優先度が高いグループｇについてＳ（ｇ）とＰ（ｇ）とを比較し、Ｓ（ｇ）＜Ｐ（ｇ）であった場合には、そのグループｇをサーバ優先リストの中で先頭に位置させる。その後は、優先リスト作成部５３ａは、１回目から４回目までの処理と同様に、サーバ装置優先リストへの各グループおよび各サーバ装置の配置を行う。
【００６９】
例えば、図９に示す例では、４回目のサーバ装置優先リスト作成が終了した時点では、Ｓ（１）＝４となっている。ここで、優先リスト作成部５３ａは、Ｓ（１）＝Ｐ（１）であるため、５回目のサーバ装置優先リスト作成では、グループ１を先頭にできないと判断し、グループ２のＳ（２）を検査し、Ｓ（２）＝０がＰ（２）＝２よりも小さいことから、グループ２を、サーバ装置優先リストの先頭と判断する。
【００７０】
ここからのサーバ装置優先リスト作成方法は、これまでの説明と同じである。すなわち、優先リスト作成部５３ａは、グループ２、グループ３、グループ１の順番でサーバ装置優先リストにサーバ装置の情報を格納し、サーバ装置優先リスト内のグループについては、それぞれ、グループ１、グループ２、グループ３とする。このとき、優先リスト作成部５３ａは、各グループにおけるサーバ装置の順番については、これまでの説明どおり、Ｈ（１）、Ｈ（２）、Ｈ（３）が指し表すサーバ装置を先頭として格納する。
【００７１】
６回目のサーバ装置優先リスト作成では、優先リスト作成部５３ａは、５回目と同じように、グループ２、グループ３、グループ１の順に上記と同様にサーバ装置を格納する。また、７回目のサーバ装置優先リスト作成では、優先リスト作成部５３ａは、Ｓ（１）＝Ｐ（１）であると同時に、Ｓ（２）＝２となっており、Ｐ（２）＝２と同じであるため、グループ２を先頭にできないと判断し、かつ、Ｓ（３）＝０が、Ｓ（３）＝１よりも小さいため、グループ３、グループ１、グループ２の順に上記と同様に、サーバ装置の情報をサーバ装置優先リストに格納する。
【００７２】
７回目のサーバ装置優先リスト作成が行われた後は、Ｓ（１）＝４、Ｓ（２）＝２、Ｓ（１）＝１となっており、それぞれ、Ｐ（１）、Ｐ（２）、Ｐ（３）と等しくなっている。そのため、優先リスト作成部５３ａは、Ｓ（１）＝０、Ｓ（２）＝０、Ｓ（３）＝０に設定しなおし、上記のサーバ装置優先リスト作成の手順を繰り返す。
【００７３】
このように、例えば、１回目から７回目までの処理において、図７に示した各グループがサーバ装置優先リスト内で先頭に位置する回数は、それぞれ、グループ１が４回、グループ２が２回、グループ３が１回となる。このように、本実施例によれば、グループ優先度に比例した頻度で、各グループを、サーバ装置優先リスト内で先頭に位置させることができる。すなわち、優先リスト作成部５３ａは、グループ優先度が高いグループがサーバ装置優先リスト内で先頭に位置する頻度が高くなるように、各グループの優先度の順位を入れ替える。
【００７４】
次に、本実施例に係るサービス要求装置６０の動作について説明する。まず、サービス要求部６２ｂは、クライアント装置３０からサービス要求を受信すると、優先リスト取得部６２ａに対して、各グループ組み合わせｇのグループ組み合わせ優先度を含むサーバ装置優先リストをサーバ選択制御装置５０に要求するよう指示する。そして、サービス要求部６２ｂは、優先リスト取得部６２ａが要求に成功し、サーバ装置優先リストを受信した場合、サーバ装置優先リストに含まれる各グループを、そのグループに割り当てられたグループ組み合わせ優先度順に再配列する。
【００７５】
ここからは、図９に示した１回目の払い出しの場合の例を用いて説明する。この例の場合、サーバ装置優先リストに格納されているのは、グループ１、グループ２、グループ３の順番になっており、それぞれのグループ組み合わせ優先度は、１、５、１０になっている。よって、グループ組み合わせ優先度は、より小さい値を優先するとしているため、グループ組み合わせ優先度の順番に並び替えると、元々サーバ装置優先リストに格納されていた順序と同じく、グループ１、グループ２、グループ３の順番になる。
【００７６】
続いて、サービス要求部６２ｂは、再配列されたグループ組み合わせ優先度順で、最もグループ組み合わせ優先度の高いグループ組み合わせ、即ち、グループ１について、そこに含まれているサーバ１、サーバ２、サーバ３を、個々のサーバ装置との間で、現在、クライアント装置にサービス提供を行うために、確立しているサービス提供数をもとに、昇順にソートを行う（処理２−１）。このとき、同じサービス提供数となっているサーバ装置は、ランダムに選択した順に配置する。なお、サービス要求装置６０は、各サーバ装置が確立しているサービス提供数を記憶しており、そのサービス提供数をサービスの提供状況に応じてリアルタイムまたは定期的に更新する。そして、サービス要求部６２ｂは、ソートを行った順に、サーバ装置に対して、サービス要求を行う（処理２−２）。
【００７７】
ここで、サービス要求が成功した場合には、サービス要求部６２ｂは、クライアント装置３０にサービス要求成功を通知し、処理を終了する（処理２−３）。一方、サービス要求が失敗した場合には、サービス要求部６２ｂは、グループ１内のサーバ装置に対して、ソートを行った順にサービス要求を試みる（処理２−４）。そして、サービス要求部６２ｂは、グループ１に含まれるサーバ装置がなくなったら、サーバ装置優先リスト内のグループをグループ組み合わせ優先度順に以上の動作（処理２−１〜２−４）を繰り返す。そして、サービス要求部６２ｂは、全てのグループ（グループ１、グループ２、グループ３）の全てのサーバ装置についてサービス要求が失敗した場合には、クライアント装置３０にサービス要求失敗を通知して、処理を終了する。
【００７８】
上述したように、本実施例では、サーバ選択制御装置５０において、優先リスト作成部５３ａが、サービス要求の転送先としてアクセスするサーバ装置の順序を示すサーバ装置優先リストの要求をサービス要求装置６０から受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位を入れ替えたサーバ装置優先リストを作成する。また、優先リスト送信部５３ｂが、優先リスト作成部５３ａにより作成されたサーバ装置優先リストをサービス要求装置６０に送信する。また、サービス要求装置６０において、優先リスト取得部６２ａが、サーバ選択制御装置５０から送信されたサーバ装置優先リストを取得する。また、サービス要求部６２ｂが、優先リスト取得部６２ａにより取得されたサーバ装置優先リストに含まれる各サーバ装置に対してグループの優先度の順序でアクセスを試み、最初にアクセスが成功したサーバ装置にサービス要求を転送する。
【００７９】
このように、本実施例では、サーバ選択制御装置５０によって、複数のサーバ装置に関する情報がサービス要求装置６０に通知される。そして、サービス要求装置６０によって、サーバ選択制御装置５０から通知された複数のサーバ装置に対して各サーバ装置の優先度の順序でアクセスが試みられる。したがって、本実施例によれば、提供可能なサービス数がサーバ装置ごとに異なる場合でも、クライアントにサービスが提供されるまでの時間を短縮しつつ、サーバ装置の負荷分散を実現することができる。
【００８０】
また、本実施例では、優先リスト作成部５３ａは、サービス要求の転送先としてアクセスするサーバ装置の順序を示すサーバ装置優先リストの要求をサービス要求装置６０から受信するごとに、同時に提供可能なサービス数が所定の範囲に属する複数のサーバ装置をそれぞれグループ化した複数のグループを含み、各グループの優先度の順位および／または各グループにおけるサーバ装置の優先度の順位を入れ替えたサーバ装置優先リストを作成する。しがたって、本実施例によれば、［課題１］を解決するための、サーバ装置の提供可能なサービス数の上限に応じた負荷分散を行うことができる。
【００８１】
また、本実施例によれば、サーバ選択制御装置５０は、クライアントであるサービス要求装置６０に対して複数のサーバ装置を提示することが可能となるので、サービス要求装置６０が複数のサーバ装置が利用可能か否かを順に調べていき、最初に利用可能なサーバ装置と通信を行うことでサービス提供ができるため、［課題２］の、サービス提供までに長い時間を要するという課題を解決することができる。
【００８２】
なお、本実施例では、サービス要求装置６０において、サービス要求部６２ｂが、サーバ装置優先リストに含まれる各グループをグループ組み合わせ優先度順に再配列する場合について説明した。これに対し、例えば、サーバ選択制御装置５０が、あらかじめサーバ装置優先リストに含まれる各グループを再配列しておくようにしてもよい。
【実施例３】
【００８３】
実施例３では、実施例２におけるサービス要求装置６０の変形例について説明する。なお、本実施例に係るサービス提供システムの構成は、図６に示したものと同様である。
【００８４】
本実施例では、サービス要求部６２ｂは、クライアント装置３０からサービス要求を受信すると、優先リスト取得部６２ａに対して、各グループ組み合わせｇのグループ組み合わせ優先度を含むサーバ装置優先リストをサーバ選択制御装置５０に要求するよう指示する。そして、サービス要求部６２ｂは、優先リスト取得部６２ａが要求に成功し、サーバ装置優先リストを受信した場合、サーバ装置優先リストに含まれる各グループを、そのグループに割り当てられたグループ組み合わせ優先度順に再配列する。
【００８５】
ここからは、図９に示した１回目の払い出しの場合の例を用いて説明する。この例の場合、サーバ装置優先リストに格納されているのは、グループ１、グループ２、グループ３の順番になっており、それぞれのグループ組み合わせ優先度は、１、５、１０になっている。よって、グループ組み合わせ優先度は、より小さい値を優先するとしているため、グループ組み合わせ優先度の順番に並び替えると、元々サーバ装置優先リストに格納されていた順序と同じく、グループ１、グループ２、グループ３の順番になる。
【００８６】
続いて、サービス要求部６２ｂは、再配列されたグループ組み合わせ優先度順で、最もグループ組み合わせ優先度の高いグループ組み合わせ、即ち、グループ１について、そこに含まれているサーバ１、サーバ２、サーバ３に対して、この順に、サービス要求を行う（処理３−１）。
【００８７】
ここで、サービス要求が成功した場合には、サービス要求部６２ｂは、クライアント装置３０にサービス要求成功を通知し、処理を終了する（処理３−２）。一方、サービス要求が失敗した場合には、サービス要求部６２ｂは、グループ１内のサーバ装置に対して、サーバ１、サーバ２、サーバ３の順にサービス要求を試みる（処理３−３）。そして、サービス要求部６２ｂは、グループ１に含まれるサーバ装置がなくなったら、サーバ装置優先リスト内のグループをグループ組み合わせ優先度順に以上の動作（処理３−１〜３−３）を繰り返す。そして、サービス要求部６２ｂは、全てのグループ（グループ１、グループ２、グループ３）の全てのサーバ装置についてサービス要求が失敗した場合には、クライアント装置３０にサービス要求失敗を通知して、処理を終了する。
【実施例４】
【００８８】
実施例４では、実施例１および２において、グループに含まれるサーバ装置の同時に提供可能なサービス数の総和に基づいて、各グループのグループ優先度を決定する例について説明する。なお、本実施例に係るサービス提供システムの構成は、図６に示したものと同様である。
【００８９】
本実施例では、グループ構成記憶部５２は、実施例１および２と同様に、複数のサーバ装置のグループ構成に関する情報を記憶する。本実施例でも、グループ構成記憶部５２によって記憶されるグループ構成は、システムの運用者によって事前に装置に対して設定されるものとする。但し、グループ優先度については、以下の方法によって決定されるものとする。なお、ここでは、サーバ装置を直接含んでいるグループについて、そのグループに含まれるサーバ装置が同時に提供可能なサービス数の総数を、「グループで提供可能なサービス数」と呼ぶこととする。
【００９０】
ここで、図１０を参照して、本実施例におけるグループ優先度の決定方法について説明する。まず、グループ１に含まれる各サーバ装置において、同時に提供可能なサービス数が２０００であったとする。グループ１には、３台のサーバ装置が含まれるので、グループ１で提供可能なサービス数は、６０００となる。続いて、グループ２に含まれる各サーバ装置において、同時に提供可能なサービス数が５００であったとする。グループ２には、３台のサーバ装置が含まれるので、グループ２で提供可能なサービス数は、１５００となる。最後に、グループ３に含まれる各サーバ装置において、同時に提供可能なサービス数が１５０であったする。グループ３には、２台のサーバ装置が含まれるので、グループ３で提供可能なサービス数は、３００となる。
【００９１】
すなわち、グループ１、グループ２、グループ３において、それぞれ提供可能なサービス数の比率は、６０００：１５００：３００であり、最大公約数は、３００である。したがって、この比率は、２０：５：１になる。本実施例では、優先リスト作成部５３ａが、この値をもとに、グループ１、グループ２、グループ３のグループ優先度を、それぞれ、２０、５、１として設定する。これにより、グループ１、グループ２、グループ３がサーバ装置優先リストの先頭に格納される頻度は、２６回中、２０回、５回、１回となる。
【００９２】
なお、ここでは、提供可能なサービス数が同じであるサーバ装置を同じグループにグループ化する場合について説明した。これに対し、例えば、提供可能なサービス数の範囲（例えば、８００〜１０００など）をグループごとに設定しておき、各範囲内でサービス数を提供するサーバ装置をグループ化するようにしてもよい。
【００９３】
また、ここでは、優先リスト作成部５３ａが、各グループの「グループで提供可能なサービス数」に基づいて各グループのグループ優先度を設定する場合について説明した。これに対し、例えば、各グループのグループ優先度が、システムの運用者によって事前に装置に対して設定されるようにしてもよい。
【００９４】
このように、本実施例では、優先リスト作成部５３ａが、グループに含まれるサーバ装置の同時に提供可能なサービス数の総和に基づいて、各グループのグループ優先度を決定する。したがって、本実施例によれば、各グループで全体として提供可能なサービス数に占める割合が、各グループで等しくなることにより、グループという視点から負荷分散が適切に行われる。また、各グループの中で、各サービス装置が先頭に位置する頻度は均等になるため、サーバ装置という視点からも負荷分散が適切に行われる。
【００９５】
また、本実施例では、サーバ選択制御装置５０は、クライアントであるサービス要求装置に対して複数のサーバ装置を提示することが可能となり、かつ、同時に提供可能なサービス数に応じて、サーバ装置を前記サーバ装置優先リストの先頭に位置させる。これにより、サーバ装置が、前記提供可能なサービス数に応じて使用されるように制御することが可能となる。このことからも、前述した［課題１］を解決することができる。
【実施例５】
【００９６】
実施例５では、サーバ装置を階層的にグループ化する例について説明する。なお、本実施例に係るサービス提供システムの構成は、図６に示したものと同様である。
【００９７】
まず、図１１を参照して、本実施例におけるグループ構成記憶部５２について説明する。グループ構成記憶部５２は、複数のサーバ装置のグループ構成に関する情報を記憶する。図１１に示すように、本実施例では、グループ構成記憶部５２は、サーバ装置を階層的にグループ化した情報を記憶する。なお、グループ化されるサーバ装置は、グループ間で排他的であってもよいし、グループ間で重複してもよい。
【００９８】
本実施例では、第１段階のグループが、Ｎ（０）個あり、第１段階の１番目、２番目、・・・、Ｎ（０）番目のグループを、それぞれ、Ｇ（１）、Ｇ（２）、・・・、Ｇ（Ｎ（０））で表す。
【００９９】
続いて、第１段階の各グループＧ（１）、Ｇ（２）、・・・、Ｇ（Ｎ（０））には、それぞれ、Ｎ（１）個、Ｎ（２）個、Ｎ（Ｎ（０））個の第２段階グループが存在する。さらに、ｉ１を、１以上Ｎ（０）以下の整数として、Ｇ（ｉ１）の第２段階グループの１番目、２番目、・・・、Ｎ（ｉ１）番目の各グループを、それぞれ、Ｇ（ｉ１，１）、Ｇ（ｉ１，２）、・・・、Ｇ（ｉ１，Ｎ（ｉ１））で表す。
【０１００】
これを続け、ｉ１番目の第１段階グループのｉ２番目の第２段階グループのｉ３番目の第３段階グループの・・・ｉｍ−１番目の第ｍ−１段階グループをＧ（ｉ１，ｉ２，ｉ３，…，ｉｍ−２，ｉｍ−１）で表す。ここで、ｉ１番目の第１段階グループのｉ２番目の第２段階グループのｉ３番目の第３段階グループの・・・ｉｍ−２番目の第ｍ−２段階グループには、第ｍ−１段階グループが、Ｎ（ｉ１，ｉ２，ｉ３，…，ｉｍ−２）個あるものとする。
【０１０１】
さらに、ｉ１番目の第１段階グループのｉ２番目の第２段階グループのｉ３番目の第３段階グループの・・・ｉｊ番目の第ｊ段階グループＧ（ｉ１，ｉ２，ｉ３，…，ｉｊ）のグループ優先度をＰ（ｉ１，ｉ２，ｉ３，…，ｉｊ）で表し、この値の大きいものが優先されるものとする。
【０１０２】
続いて、ｉ１番目の第１段階グループのｉ２番目の第２段階グループのｉ３番目の第３段階グループの・・・ｉｍ−１番目の第ｍ−１段階グループであるＧ（ｉ１，ｉ２，ｉ３，…，ｉｍ−２，ｉｍ−１）には、Ｎ（ｉ１，ｉ２，ｉ３，…，ｉｍ−１）個のサーバ装置が含まれるものとし、Ｇ（ｉ１，ｉ２，ｉ３，…，ｉｍ−２，ｉｍ−１）のｉｍ番目のサーバ装置をＥ（ｉ１，ｉ２，ｉ３，…，ｉｍ−１，ｉｍ）で表すものとする。
【０１０３】
なお、かかるグループ構成記憶部５２によって記憶されるグループ構成は、システムの運用者によって事前に装置に対して設定されるものとする。
【０１０４】
次に、本実施例における優先リスト作成部５３ａの動作について説明する。本実施例では、優先リスト作成部５３ａは、上記の階層的にグループ化されたサーバ装置の払い出しを行う場合に、各グループの配下に含まれるサーバ装置群が、そのグループの一つ上位のグループに含まれるグループ配下のサーバ装置群と比較したとき、サーバ装置優先リストの中で、先頭となった回数をカウントする。
【０１０５】
また、優先リスト作成部５３ａは、第一段階のグループについては、各グループの配下に含まれるサーバ装置群が、他の第一段階のグループに含まれるグループ配下のサーバ装置群と比較したとき、サーバ装置優先リストの中で、先頭となった回数をカウントする。なお、ここでいうサーバ装置の払い出しとは、そのサーバ装置をサーバ装置優先リストに配置することを意味する。
【０１０６】
そして、優先リスト作成部５３ａは、ｉ１番目の第１段階グループが、第一段階グループの中で先頭となり、ｉ１番目の第１段階グループのｉ２番目の第２段階グループが、ｉ１番目の第１段階グループに含まれるグループの中で先頭になり、ｉ１番目の第１段階グループのｉ２番目の第２段階グループのｉ３番目の第３段階グループが、ｉ１番目の第１段階グループのｉ２番目の第２段階グループの中で先頭になり・・・、ｉ１番目の第１段階グループのｉ２番目の第２段階グループのｉ３番目の第３段階グループの・・・ｉｍ−１番目の第ｍ−１段階グループが、ｉ１番目の第１段階グループのｉ２番目の第２段階グループのｉ３番目の第３段階グループの・・・ｉｍ−２番目の第ｍ−２段階グループの中で先頭になったとき、Ｇ（ｉ１）、Ｇ（ｉ１，ｉ２）、Ｇ（ｉ１，ｉ２，ｉ３）、・・・Ｇ（ｉ１，ｉ２，ｉ３，…，ｉｍ−２）、Ｇ（ｉ１，ｉ２，ｉ３，…，ｉｍ−２，ｉｍ−１）が先頭になった回数を表す、それぞれ、Ｓ（ｉ１）、Ｓ（ｉ１，ｉ２）、Ｓ（ｉ１，ｉ２，ｉ３）、・・・Ｓ（ｉ１，ｉ２，ｉ３，…，ｉｍ−２）、Ｓ（ｉ１，ｉ２，ｉ３，…，ｉｍ−２，ｉｍ−１）を１だけ増加させることで、先頭になった回数をカウントする。
【０１０７】
なお、本実施例では、各グループ優先度は、サーバ装置優先リスト作成の一定回数毎に、サーバ装置優先リスト内で各グループを先頭に位置させる回数を同時に表す。また、任意のｉ１，ｉ２，ｉ３，…，ｉｍ−２，ｉｍ−１，ｉｍについて、Ｈ（ｉ１，ｉ２，ｉ３，…，ｉｍ−１）が、Ｇ（ｉ１，ｉ２，ｉ３，…，ｉｍ−２，ｉｍ−１）の中で、次のサーバ装置の払い出し時に先頭となるサーバ装置であることを表すものとする。
【０１０８】
また、優先リスト作成部５３ａは、第１段階グループ、第２段階グループ、・・・第ｍ−１段階グループの組み合わせ毎にサーバ装置優先リスト内でグループ化され、このグループに割り当てられるグループ組み合わせ優先度の配列としてＣ（ｇ）を保持する。すなわち、優先リスト作成部５３ａは、サーバ装置優先リスト上のｇ番目のグループ組み合わせ優先度を、配列として保持する。なお、Ｃ（ｇ）は、あらかじめ、運用者によって装置に設定される。
【０１０９】
次に、図１２を参照して、本実施例におけるサーバ選択制御装置５０の動作の全体の流れを説明する。本実施例では、優先リスト作成部５３ａが、まず、初期化処理を実行する（ステップＳ９０）。そして、優先リスト送信部５３ｂがサービス要求装置６０からサーバ装置優先リストの要求を受信すると（ステップＳ９１）、優先リスト作成部５３ａは、サーバ装置優先リスト作成処理を実行する（ステップＳ９２）。
【０１１０】
続いて、優先リスト作成部５３ａは、サーバ装置払出位置移動処理を実行する（ステップＳ９３）。最後に、優先リスト送信部５３ｂが、グループ組み合わせ優先度を含むサーバ装置優先リストを送信する（ステップＳ９４）。その後、サーバ選択制御装置５０は、優先リスト送信部５３ｂがサーバ装置優先リストの要求を受信すると、上記ステップＳ９２〜Ｓ９４の処理を繰り返す。
【０１１１】
次に、図１３を参照して、図１２に示したサーバ選択制御装置の初期化処理の処理手順について説明する。なお、本実施例では、ｉ１番目の第１段階グループのｉ２番目の第２段階グループの・・・ｉｊ番目の第ｊ段階グループに含まれるグループＧ（ｉ１，ｉ２，ｉ３，…，ｉｊ，１）、Ｇ（ｉ１，ｉ２，ｉ３，…，ｉｊ，２）、Ｇ（ｉ１，ｉ２，ｉ３，…，ｉｊ，３）、・・・Ｇ（ｉ１，ｉ２，ｉ３，…，ｉｊ，Ｎ（ｉ１，ｉ２，ｉ３，…，ｉｊ））において、Ｐ（ｉ１，ｉ２，ｉ３，…，ｉｊ，１）、Ｐ（ｉ１，ｉ２，ｉ３，…，ｉｊ，２）、Ｐ（ｉ１，ｉ２，ｉ３，…，ｉｊ，３）、・・・Ｐ（ｉ１，ｉ２，ｉ３，…，ｉｊ，Ｎ（ｉ１，ｉ２，ｉ３，…，ｉｊ））は、Ｐ（ｉ１，ｉ２，ｉ３，…，ｉｊ，１）≧Ｐ（ｉ１，ｉ２，ｉ３，…，ｉｊ，２）≧Ｐ（ｉ１，ｉ２，ｉ３，…，ｉｊ，３）≧・・・≧Ｐ（ｉ１，ｉ２，ｉ３，…，ｉｊ，Ｎ（ｉ１，ｉ２，ｉ３，…，ｉｊ））と並べられているものとする。
【０１１２】
図１３に示すように、この初期化処理では、優先リスト作成部５３ａは、ステップＳ１００〜Ｓ１１１の処理により、全てのグループについて、グループが先頭になった回数を０として設定する。また、優先リスト作成部５３ａは、ステップＳ１１２の処理により、全ての第ｍ−１段階グループについて、グループの中で次に払い出すサーバ装置を１番目として設定する。
【０１１３】
次に、図１４を参照して、図１２に示したサーバ装置優先リスト作成処理の処理手順について説明する。なお、サーバ装置優先リストは、図８に示したようにグループが配列され、各グループの中にサーバ装置が配列される。すなわち、各グループにおけるサーバ装置の情報は、二次元の配列としてあらわすことができる。例えば、グループｇにおけるｌ番目のサーバ装置をＬ（ｇ，ｌ）として表すこととし、この中にサーバ装置の情報を格納する。
【０１１４】
図１４に示すように、まず、優先リスト作成部５３ａは、サーバ装置優先リスト内のグループ番号ｇを１に初期化し（ステップＳ１１９）、第一段階グループの中の先頭グループ番号の計算を行う（ステップＳ１２０）。ステップＳ１２０に示す処理は、第一段階グループの中で、サーバ装置優先リストに格納する際に、最初に格納すべきグループを求める処理である。この処理では、優先リスト作成部５３ａは、第一段階のグループについて、グループ優先度の高いグループから低いグループの順に、第一段階グループｉが、Ｓ（ｉ）＜Ｐ（ｉ）の条件を満たすかを検査していき、最初に満たしたグループを変数Ｔに代入し、その後、Ｓ（Ｔ）の値を１だけ増加させる処理である。このとき、優先リスト作成部５３ａは、全ての第一段階グループｉが、Ｓ（ｉ）＜Ｐ（ｉ）を満たさない場合（すなわち、Ｓ（ｉ）＝Ｐ（ｉ）となる場合）は、全ての第一段階グループｉについて、Ｓ（ｉ）を０に設定し、Ｔ＝１とし、Ｓ（Ｔ）の値を１に設定する。
【０１１５】
続いて、優先リスト作成部５３ａは、ステップＳ１２０で求めたＴをｉ１に代入し、サーバ装置優先リストに格納した第一段階グループの数をカウントするための変数ｋ１を１に設定する（ステップＳ１２１）。優先リスト作成部５３ａは、上記の処理を、第一段階グループＧ（ｉ１）に含まれる第二段階グループに対して繰り返し実行し、Ｇ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−２）に含まれるグループまで実行する（ステップＳ１２２〜Ｓ１２９）。
【０１１６】
続いて、優先リスト作成部５３ａは、Ｇ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１）に含まれるサーバ装置を、サーバ装置優先リストに格納する（ステップＳ１３０）。このグループに含まれるサーバ装置をサーバ装置優先リストに格納する方法は、次のようになる。すなわち、優先リスト作成部５３ａは、Ｈ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１）、Ｈ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１）＋１、・・・Ｎ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１）番目の順でサーバ装置をサーバ装置優先リストに格納していき、１、２、・・・Ｈ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１）−１番目まで格納する。
【０１１７】
このグループに含まれるサーバ装置を全てサーバ装置優先リストに格納した後に、優先リスト作成部５３ａは、サーバ装置優先リスト内のグループ番号ｇを１だけ増加させる（ステップＳ１３１）。その後、優先リスト作成部５３ａは、サーバ装置払出位置移動処理を実行する（ステップＳ１３２）。
【０１１８】
ここで、図１５を参照して、図１４に示したサーバ装置払出位置移動処理について説明する。図１５に示すように、優先リスト作成部５３ａは、Ｈ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１）を１だけ増加させる（ステップＳ１９０）。このとき、Ｈ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１）がＮ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１）を超えた場合は（ステップＳ１９１，Ｙｅｓ）、優先リスト作成部５３ａは、Ｈ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１）を１に設定して（ステップＳ１９２）、サーバ装置払出位置移動処理を終了する。一方、Ｈ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１）がＮ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１）以下であった場合には（ステップＳ１９１，Ｎｏ）、優先リスト作成部５３ａは、Ｈ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１）を１に設定することなくサーバ装置払出位置移動処理を終了する。
【０１１９】
図１４の説明に戻って、その後、優先リスト作成部５３ａは、Ｇ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１＋１）、Ｇ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１＋２）・・・Ｇ（ｉ１，ｉ２，ｉ３，・・・Ｎ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−２））、Ｇ（ｉ１，ｉ２，ｉ３，・・・１）・・・Ｇ（ｉ１，ｉ２，ｉ３，・・・ｉｍ−１−１）の順に、同様の処理で、サーバ装置をサーバ装置優先リストに格納する（ステップＳ１３３〜Ｓ１３６）。優先リスト作成部５３ａは、この処理を全ての段階の全グループに対して行う（ステップＳ１３７〜Ｓ１５２）。
【０１２０】
次に、図１６を参照して、グループが二段階の場合のサーバ装置優先リストへのサーバ装置の格納順の一例について説明する。図１６に示す例では、まず、第一段階には、Ｇ（１）、Ｇ（２）、Ｇ（３）の３つのグループが存在する。そして、Ｇ（１）には、Ｇ（１，１）、Ｇ（１，２）、Ｇ（１，３）の３つのグループ、Ｇ（２）には、Ｇ（２，１）、Ｇ（２，２）、Ｇ（２，３）の３つのグループ、Ｇ（３）には、Ｇ（３，１）、Ｇ（３，２）の２つのグループが含まれている。
【０１２１】
この例の場合には、第一段階のグループ優先度は、Ｇ（１）→Ｇ（２）→Ｇ（３）の順になる。この順にＳ（１）とＰ（１）、Ｓ（２）とＰ（２）、Ｓ（３）とＰ（３）を比較すると、Ｓ（１）＜Ｐ（１）ではなく、Ｓ（２）＜Ｐ（２）であるので、Ｇ（２）が第一段階の最初の格納対象となる。この結果、第一段階は、Ｇ（２）→Ｇ（３）→Ｇ（１）の順に各グループに含まれるサーバ装置がサーバ装置優先リストに格納される。
【０１２２】
続いて、Ｇ（２）に含まれる第二段階グループのグループ優先度は、Ｇ（２，１）→Ｇ（２，２）→Ｇ（２，３）の順になる。ここで同様の処理を行うと、Ｇ（２，１）が最初の格納対象となる。よって、まず、Ｇ（２，１）→Ｇ（２，２）→Ｇ（２，３）の順に各グループに含まれるサーバ装置がサーバ装置優先リストに格納される。
【０１２３】
続いて、Ｇ（２）に含まれる第二段階グループのサーバ装置のサーバ装置優先リストへの格納が完了したので、第一段階の次のグループであるＧ（３）配下のグループに含まれるサーバ装置がサーバ装置優先リストに格納される。Ｇ（３）配下のグループのグループ優先度は、Ｇ（３，１）→Ｇ（３，２）であるので、この順に、各グループに含まれるサーバ装置がサーバ装置優先リストに格納される。
【０１２４】
最後に、第一段階の格納順の最終となるグループＧ（１）についても同様の処理が行われることで、Ｇ（１，１）→Ｇ（１，２）→Ｇ（１，３）の順に、各グループに含まれるサーバ装置がサーバ装置優先リストに格納される。
【０１２５】
次に、図１７を参照して、本実施例におけるサービス要求装置６０の動作について説明する。図１７に示すように、本実施例では、サービス要求部６２ｂは、クライアント装置からサービス要求を受信すると（ステップＳ２２０）、優先リスト取得部６２ａに対して、グループ組み合わせｇのグループ組み合わせ優先度を示すＣ（ｇ）を含むサーバ装置優先リストＬ（ｇ，ｌ）を、サーバ選択制御装置５０に要求するよう指示する（ステップＳ２２１）。
【０１２６】
そして、サービス要求部６２ｂは、優先リスト取得部６２ａが要求に成功し、Ｌ（ｇ，ｌ）およびＣ（ｇ）を受信した場合には（ステップＳ２２２，Ｙｅｓ）、Ｌ（ｇ，ｌ）をＣ（ｇ）に含まれるグループ組み合わせ優先度順に再配列する（ステップＳ２２３）。
【０１２７】
ここで、図１８を参照して、図１７に示したサーバ装置優先リストＬ（ｇ，ｌ）の再配列について説明する。図１８に示すように、まず、Ｌ（ｇ，ｌ）は、２次元配列である。つまり、各グループ組み合わせｇ毎に１つ以上のサーバ装置の配列が存在する。この様子を示したものが、図１８に示す「グループ組み合わせ優先度に基づく配列前」の表である。サービス要求部６２ｂは、この表の各行に割り当てられたグループ組み合わせ優先度Ｃ（ｇ）を基に、よりグループ組み合わせ優先度の高いものから順に並べ替える。このとき、サービス要求部６２ｂは、図１８に示す「グループ組み合わせ優先度に基づく配列前」の表の各行をグループ組み合わせの優先度順に入れ替えを行う。この様子を示したものが、図１８に示す「グループ組み合わせ優先度に基づく配列後」の表である。
【０１２８】
図１７の説明に戻って、ステップＳ２２３の後、サービス要求部６２ｂは、再配列されたグループ組み合わせ優先度順で、最もグループ組み合わせ優先度の高いグループ組み合わせ、即ち、グループ組み合わせ１について、サーバ装置優先リストを配列Ｔ（ｌ）に格納する（ステップＳ２２４〜Ｓ２２８）。
【０１２９】
その後、サービス要求部６２ｂは、Ｔ（ｌ）をさらに、個々のサーバ装置との間で、現在、クライアント装置にサービス提供を行うために、確立しているサービス提供数をもとに、昇順にソートを行う（ステップＳ２２９）。ここで、同じサービス提供数のサーバ装置については、ランダムに選択した順に配置する。そして、サービス要求部６２ｂは、ソートした順番にサーバ装置に対してサービス要求を行う（ステップＳ２３０〜Ｓ２３４）。
【０１３０】
そして、サービス要求が成功した場合には（ステップＳ２３２，Ｙｅｓ）、サービス要求部６２ｂは、クライアント装置３０にサービス要求成功を通知し（ステップＳ２３８）、処理終了する。また、ステップＳ２３２の判定において、サービス要求が失敗した場合には（ステップＳ２３２，Ｎｏ）、サービス要求部６２ｂは、同じグループ組み合わせｇ内のサーバ装置に対して、ソートした順番にサービス要求を試みる（ステップＳ２３１〜Ｓ２３４）。
【０１３１】
ここで、グループ組み合わせｇに含まれるサーバ装置がなくなった場合には（ステップＳ２３４，Ｎｏ）、サービス要求部６２ｂは、グループ組み合わせｇのグループ組み合わせ優先度順に上記の動作を繰り返す（ステップＳ２２５〜Ｓ２３６）。そして、全てのグループ組み合わせｇの全てのサーバ装置について、サービス要求が失敗した場合には（ステップＳ２３６，Ｎｏ）、サービス要求部６２ｂは、クライアント装置３０にサービス要求失敗を通知して（ステップＳ２３７）、処理を終了する。
【０１３２】
なお、サービス要求部６２ｂは、上記ステップＳ２２１において、サーバ装置優先リストおよび各グループ組み合わせのグループ組み合わせ優先度の取得に失敗した場合にも（ステップＳ２２２，Ｎｏ）、クライアント装置にサービス要求失敗を通知して（ステップＳ２３７）、処理を終了する。
【０１３３】
上述したように、本実施例では、優先リスト作成部５３ａが、階層的にグループ化された複数のサーバ装置に関する情報に基づいて、グループに直接的に割り当てられたサーバ装置の情報、または、他の層のグループを介して間接的に割り当てられたサーバ装置の情報を含んだサーバ装置優先リストを作成する。したがって、本実施例によれば、階層構造により表される関連性をもったサーバ装置の中で負荷を分散させることができる。
【実施例６】
【０１３４】
実施例６では、実施例５におけるサービス要求装置６０の変形例について説明する。なお、本実施例に係るサービス提供システムの構成は、図６に示したものと同様である。
【０１３５】
ここでは、図１９を参照して、本実施例におけるサービス要求装置６０の動作について説明する。図１９に示すように、本実施例では、サービス要求部６２ｂは、クライアント装置からサービス要求を受信すると（ステップＳ２００）、優先リスト取得部６２ａに対して、グループ組み合わせｇのグループ組み合わせ優先度を示すＣ（ｇ）を含むサーバ装置優先リストＬ（ｇ，ｌ）を、サーバ選択制御装置５０に要求するよう指示する（ステップＳ２０１）。
【０１３６】
そして、サービス要求部６２ｂは、優先リスト取得部６２ａが要求に成功し、Ｌ（ｇ，ｌ）およびＣ（ｇ）を受信した場合には（ステップＳ２０２，Ｙｅｓ）、Ｌ（ｇ，ｌ）をＣ（ｇ）に含まれるグループ組み合わせ優先度順に再配列する（ステップＳ２０３）。この再配列は、実施例５の中で、ステップＳ２２３の処理として説明した動作と同じである。
【０１３７】
ステップＳ２０３の後、サービス要求部６２ｂは、再配列されたグループ組み合わせ優先度順で、最もグループ組み合わせ優先度の高いグループ組み合わせ、即ち、グループ組み合わせ１について、Ｌ（ｇ，ｌ）に格納されている順に、サーバ装置に対して、サービス要求を行う（ステップＳ２０４〜Ｓ２０９）。
【０１３８】
そして、サービス要求が成功した場合には（ステップＳ２０７，Ｙｅｓ）、サービス要求部６２ｂは、クライアント装置３０にサービス要求成功を通知し（ステップＳ２１３）、処理終了する。また、ステップＳ２０７の判定において、サービス要求が失敗した場合には（ステップＳ２０７，Ｎｏ）、サービス要求部６２ｂは、同じグループ組み合わせｇ内のサーバ装置に対して順番にサービス要求を試みる（ステップＳ２０６〜Ｓ２０９）。
【０１３９】
ここで、グループ組み合わせｇに含まれるサーバ装置がなくなった場合には（ステップＳ２０９，Ｎｏ）、サービス要求部６２ｂは、グループ組み合わせｇを１だけ増加させた後（ステップＳ２１０）、グループ組み合わせｇのグループ組み合わせ優先度順に上記の動作を繰り返す（ステップＳ２０５〜Ｓ２１１）。そして、全てのグループ組み合わせｇの全てのサーバ装置について、サービス要求が失敗した場合には（ステップＳ２１１，Ｎｏ）、サービス要求部６２ｂは、クライアント装置３０にサービス要求失敗を通知して（ステップＳ２１２）、処理を終了する。
【０１４０】
なお、サービス要求部６２ｂは、上記ステップＳ２０２において、サーバ装置優先リストおよび各グループ組み合わせのグループ組み合わせ優先度の取得に失敗した場合にも（ステップＳ２０２，Ｎｏ）、クライアント装置にサービス要求失敗を通知して（ステップＳ２１２）、処理を終了する。
【実施例７】
【０１４１】
実施例７では、上記実施例５および６に関する各種の変形例について説明する。
【０１４２】
例えば、上記実施例５および６において、サーバ装置を階層的にグループ化するとき、全てのサーバ装置が同一回数グループ化される例を示したが、階層的にグループ化する回数は、サーバ装置を直接収容する段階のグループ毎に異なっていても良い。
【０１４３】
また、例えば、上記実施例５および６において、サーバ装置が、サーバ装置を直接収容する段階の異なるグループに同時に属することができるか否かについて、明示的に説明していないが、サーバ装置が、サーバ装置を直接収容する段階の異なるグループに同時に属しても良いし、属さないようにしても良い。
【０１４４】
また、例えば、上記実施例５および６において、各グループに含まれるグループ、および、グループに含まれるサーバ装置を、全て、サーバ選択制御装置からサービス要求装置に提示するサーバ装置優先リストに含める例を示したが、グループ毎に、それに含まれるグループのうち、あらかじめ決められた数のグループを、サーバ装置優先リストを作成する際に使用しても良いし、グループ毎に、それに含まれるサーバ装置のうち、あらかじめ決められた数のサーバ装置を、サーバ装置優先リストを作成する際に使用しても良い。また、例えば、上記実施例５および６で示した方法によって作成されたサーバ装置優先リストを全てサーバ選択制御装置に提示してもよいし、あらかじめ決められた数に限定しても良い。
【実施例８】
【０１４５】
実施例８では、実施例５、６および７において、グループに含まれるサーバ装置の同時に提供可能なサービス数の総和に基づいて、各グループのグループ優先度を決定する例について説明する。なお、本実施例に係るサービス提供システムの構成は、図６に示したものと同様である。
【０１４６】
本実施例では、グループ構成記憶部５２は、実施例５、６および７と同様に、複数のサーバ装置のグループ構成に関する情報を記憶する。また、本実施例でも、グループ構成記憶部５２は、サーバ装置を階層的にグループ化した情報を記憶する。なお、ここでは、まず、サーバ装置を直接含んでいるグループについて、そのグループに含まれるサーバ装置が同時に提供可能なサービス数の総数を、「グループで提供可能なサービス数」と呼ぶこととする。さらに、サーバ装置を直接含んでいないグループＧについて、階層的なグループ化された構造の中で、そのグループＧに階層的に含まれるグループに含まれるサーバ装置が同時に提供可能なサービス数の総数も同様に、グループＧに対して、「グループで提供可能なサービス数」と呼ぶこととする。
【０１４７】
ここで、図２０を参照して、本実施例におけるグループ優先度の割り当て方法について説明する。まず、グループ優先度を割り当てる対象のグループをグループＧとすると、優先リスト作成部５３ａは、グループＧが、第１段階のグループか否かを判定する（ステップＳ２４０）。
【０１４８】
そして、グループＧが第１段階グループの場合には（ステップＳ２４０，Ｙｅｓ）、優先リスト作成部５３ａは、グループＧで提供可能なサービス数を、第１段階の各グループで提供可能なサービス数の最大公約数で割った商の整数倍をグループのグループ優先度とし（ステップＳ２４１）、処理を終了する。
【０１４９】
ステップＳ２４０の判定において、グループＧが第１段階グループでなかった場合には（ステップＳ２４０，Ｎｏ）、優先リスト作成部５３ａは、グループＧで提供可能なサービス数を、グループＧを含む１段階上のグループに含まれる各グループで提供可能なサービス数の最大公約数で割った商の整数倍をグループのグループ優先度とし（ステップＳ２４２）、処理を終了する。
【０１５０】
なお、ステップＳ２４１およびＳ２４２において、整数倍に使用する整数は、最終段階のグループの場合には１として、それ以外の場合には、各ステップで計算した商と、そのグループに含まれる１段階下のグループ優先度の和との最小公倍数を、各ステップで計算した商で割った値とする。また、整数倍に使用する整数はこの例に限らず、任意の整数であってもよい。
【０１５１】
次に、図１６を参照して、グループの階層が二段階の場合のグループ優先度の割り当てについて説明する。図１６に示す例では、Ｇ（１，１）とＧ（１，２）とＧ（１，３）のグループで提供可能なサービス数の比率は、６０００：４５００：３０００＝４：３：２となる。また、Ｇ（２，１）とＧ（２，２）とＧ（２，３）のグループで提供可能なサービス数の比率は、１５００：１２００：９００＝５：４：３となる。また、Ｇ（３，１）とＧ（３，２）のグループで提供可能なサービス数の比率は、６００：３００＝２：１となる。これにより、図１６に示す第二段階のグループにおけるグループ優先度が得られる。
【０１５２】
続いて、第一段階を比較すると、Ｇ（１）とＧ（２）とＧ（３）のグループで提供可能なサービス数の比率は、１３５００：３６００：９００＝１５：４：１となる。ここで、第一段階のグループのグループ優先度が、その配下の第二段階のグループのグループ優先度の総和の整数倍になるように設定すると、本図の第一段階のグループに記載のグループ優先度となる。
【０１５３】
ここで、図２１を参照して、図１６に示す例から第一段階を除いた場合のサーバ装置優先リストへのサーバ装置の格納順の一例を考える。各グループのグループ優先度は、図２１に示すようになる。図１６および図２１でサーバ装置優先リストに格納される最初のサーバ装置について、はじめから９回を考える。図１６に示す例では、Ｇ（１，１）が４回→Ｇ（１，２）が３回→Ｇ（１，３）が２回という流れとなる。一方、図２１に示す例では、Ｇ（１）が９回となる。このことからわかるように、グループの段階を増やすことで、より短い時間幅の中での負荷分散が可能となる。
【実施例９】
【０１５４】
実施例９では、実施例２、３、５、６および７に関し、グループ組み合わせ優先度の割り当て方法を説明する。
【０１５５】
実施例２、３、５、６および７で説明したように、サーバ装置優先リストを作成するとき、より利用させたいサーバ装置・グループ組み合わせを先頭に近く格納する。そこで、例えば、グループ組み合わせ優先度については、サーバ装置優先リスト内の順序に従い、先頭のグループ組み合わせから末尾のグループ組み合わせの順でグループ組み合わせ優先度が小さくなるように設定する。
【０１５６】
なお、実施例２、３、５、６および７の例では、より小さい値の優先度が高い優先性を表する。そこで、例えば、グループ組み合わせ優先度については、サーバ装置優先リスト内の順序に従い、先頭のグループ組み合わせから末尾のグループ組み合わせの順で値が大きくなるように設定する。
【０１５７】
なお、本グループ組み合わせ優先度を割り当てたサーバ装置優先リストに含まれるグループ（＝グループ組み合わせ）は、実施例２、３、５、６および７で作成した順序としてサービス要求装置に送信しても良い。または、グループ組み合わせ優先度が高いグループ組み合わせから低いグループ組み合わせの順序に並び替えを行ってから送信しても良いし、任意の順序に並び替えて送信してもよい。
【０１５８】
さらに、グループ組み合わせ優先度については、グループ優先度と無関係として他の実施例について述べているが、グループ組み合わせ優先度を、グループ優先度を基にして決定してもよい。すなわち、各グループ組み合わせに含まれるグループに割り当てられたグループ優先度の積を求め、これを小さい値から大きい値に、並び替える。この並び替えられたグループ優先度の積の並びを、グループ組み合わせ優先度の並びとしても良い。
【実施例１０】
【０１５９】
上記の各実施例で説明したサーバ選択制御装置およびサービス要求装置の機能は、その全てまたは一部をソフトウェアで実現することもできる。すなわち、各実施例で説明したサーバ選択制御装置およびサービス要求装置によって行われる処理の処理手順を規定したサーバ選択制御プログラムおよびサービス要求プログラムをコンピュータに実行させることで、各装置の機能を実現する。
【０１６０】
このとき、サーバ選択制御プログラムおよびサービス要求プログラムは、コンピュータにあらかじめインストールされていてもよいし、磁気ディスクや光磁気ディスク、光ディスク、半導体メモリなどのリムーバブルな記録媒体に記録され、あるいはネットワークを介して配布されて、コンピュータ装置に適宜インストールされてもよい。
【０１６１】
以上、本発明の実施例について説明したが、本発明は上述した実施例以外にも種々の異なる実施例により実施されてもよいものである。
【０１６２】
例えば、実施例２、実施例３、実施例５、実施例６、実施例７、実施例９において、グループ優先度は、より大きなグループ優先度が高い確率でサーバ装置優先リストの先頭になっているが、次のようにしてもよい。即ち、グループ優先度は、より小さなグループ優先度が高い確率で使用されるように割り当て、先頭が第１段階グループの場合、第１段階グループの全てのグループ、それ以外のグループについては、同じ上位のグループに含まれる全てのグループについて、割り当てられたグループ優先度を逆順に使用してもよい。例えば、図７の例の場合、グループ１、グループ２、および、グループ３に、それぞれ、グループ優先度、４、２、および、１が割り当てられているものについて、それぞれ、グループ優先度、１、２、および、４を割り当てておき、使用するときは、逆順に使用し、実施例２、実施例３、実施例５、実施例６、実施例７、実施例９に従うようにしてもよい。
【０１６３】
また、例えば、実施例４、および、実施例８において、グループに含まれるサーバ装置の同時に提供可能なサービス数の総和に基づいて、各グループのグループ優先度を決定する方法について説明したが、次のようにしてもよい。即ち、実施例４、および、実施例８に基づいてグループ優先度を決定したのち、各グループ優先度を各グループに割り当てるときに逆順に割り当て、サーバ装置優先リストを作成するときには、上記で記載したように逆順に使用するようにしてもよい。例えば、図１６の第１段階グループは、Ｇ（１）、Ｇ（２）、および、Ｇ（３）に対して、グループ優先度、４５、１２、および、３と計算しているが、これを、逆順にＰ（１）＝３、Ｐ（２）＝１２、および、Ｐ（３）＝４５とし、サーバ装置優先リストを作成するときには、上記で記載したように逆順に使用するようにしてもよい。
【符号の説明】
【０１６４】
１０，５０  サーバ選択制御装置
１１，５３ａ  優先リスト作成部
１２，５３ｂ  優先リスト送信部
２０，６０  サービス要求装置
２１，６２ａ  優先リスト取得部
２２，６２ｂ  サービス要求部
３０，１０５〜１０７，１１５〜１１７，１２８〜１３０  クライアント装置
４０，１００〜１０３，１１０〜１１３，１２０〜１２３  サーバ装置
５１，６１  通信制御部
５２  グループ構成記憶部
５３，６２  制御部
７０  ネットワーク
１０４  ＤＮＳ用サーバ
１１４  負荷分散用転送装置
【図１】
2011227733.tif 000003
【図２】
2011227733.tif 000004
【図３】
2011227733.tif 000005
【図４】
2011227733.tif 000006
【図５】
2011227733.tif 000007
【図６】
2011227733.tif 000008
【図７】
2011227733.tif 000009
【図８】
2011227733.tif 000010
【図９】
2011227733.tif 000011
【図１０】
2011227733.tif 000012
【図１１】
2011227733.tif 000013
【図１２】
2011227733.tif 000014
【図１３】
2011227733.tif 000015
【図１４】
2011227733.tif 000016
【図１５】
2011227733.tif 000017
【図１６】
2011227733.tif 000018
【図１７】
2011227733.tif 000019
【図１８】
2011227733.tif 000020
【図１９】
2011227733.tif 000021
【図２０】
2011227733.tif 000022
【図２１】
2011227733.tif 000023