バスシステム
【課題】各サーバに要求される負荷を効率よく分散させることが可能なバスシステムを提供する。
【解決手段】クライアントからのリクエストに応じてサービスを提供する複数のサーバの負荷状況を収集し、収集結果に基づき負荷分散を実現するバスシステムであって、前記各サーバの負荷状況を収集する収集手段と、前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測手段と、収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択手段と、選択されたサーバに前記クライアントからのリクエストを送信する送信手段とを備え、前記選択手段は、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する。
【解決手段】クライアントからのリクエストに応じてサービスを提供する複数のサーバの負荷状況を収集し、収集結果に基づき負荷分散を実現するバスシステムであって、前記各サーバの負荷状況を収集する収集手段と、前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測手段と、収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択手段と、選択されたサーバに前記クライアントからのリクエストを送信する送信手段とを備え、前記選択手段は、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ESB(Enterprise Service Bus)などのバスシステムに関する。
【背景技術】
【0002】
SOA(Service-Oriented Architecture)における既存システムのサービス化を行うために利用される技術として、ESBと呼ばれるバスシステムを利用する方法が存在する。このESB概念は、サービス(アプリケーションやコンポーネント)へのアクセスを行い、複数のサービスを協調・連携動作するSOAシステムを、論理的なソフトウェアバスに基づいて構成するというソフトウェア設計上の考え方である。
【0003】
図9は従来の負荷分散システム50の構成例を示す図である。
各サーバ10a、10bに実装されたアプリケーションなどのサービスA、Bと、各クライアント20a〜20cに実装されたクライアントプログラムCP1〜CP3とは、ESBシステム30を介して接続される。各サービスA、Bと各プログラムCP1〜CP3との間の通信は、全てESBシステム30を介して行われる。なお、各サービスA、BとESBシステム30の間は、汎用的なHTTP、SOAP、JMS等により通信が行われる。
【0004】
ここで、ESBシステム30は、クライアントアプリケーションCPからのリクエストに応じて所望のサービス(例えばサービスA)へアクセスを行うが、リクエストを受けたサービスAを実装したサーバ(例えばサーバ10a)の処理能力が低下している場合には、該サービスAはリクエストを処理しきれないことがある。
【0005】
かかる問題を解消するために、負荷分散を実現するロードバランサをESBシステムに実装することで、単一のサーバに負荷が集中することを防ぐことが昨今では一般的となっている(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−182641号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
図10および図11は、ロードバランサ31を搭載したESBシステム30の問題点を説明するための図である。
図10に示すように、クライアントプログラムCP1がサービスAを利用している最中に、クライアントプログラムCP2がサービスBに対してメッセージサイズM1のリクエストを行ったとする。この場合、ESBシステム30のロードバランサ31は、クライアントプログラムCP1によってサーバ10aのサービスAが利用されていることから、すでにリソースが使用されているサーバ10aのサービスBではなく、リソースが使用されていないサーバ10bのサービスBへ該リクエストを送る。この結果、サーバ10aにおいては、サービス10aが利用されることでリソースの50%が使用され、サーバ10bにおいては、サービス10bが利用されることでリソースの40%が使用される(図10参照)。
【0008】
その後、図11に示すように、クライアントプログラムCP3がサービスBに対して、リソースの60%の使用が要求される大きなメッセージサイズM2(>M1)のリクエストを行ったとする。サーバ10bにおいては、すでにサービスBが利用されていることから、ロードバランサ31は、サーバ10aのサービスBへのリクエストを試みる。しかしながら、サーバ10aにおいては、サービスAの利用によりリソースの50%が使用されているため、クライアントプログラムCP3からのリクエストに応えることができない、という問題が生じ得る。
【0009】
本発明は以上説明した事情を鑑みてなされたものであり、各サーバに要求される負荷を効率よく分散させることが可能なバスシステムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明に係るバスシステムは、クライアントからのリクエストに応じてサービスを提供する複数のサーバの負荷状況を収集し、収集結果に基づき負荷分散を実現するバスシステムであって、前記各サーバの負荷状況を収集する収集手段と、前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測手段と、収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択手段と、選択されたサーバに前記クライアントからのリクエストを送信する送信手段とを備え、前記選択手段は、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択することを特徴とする。
【0011】
かかる構成によれば、サーバの負荷状況(別言すればリソースの使用状況)に応じて適切なサーバにリクエストを振り分けるため、効率よくサーバを利用することが可能となる。
【発明の効果】
【0012】
以上説明したように、本発明によれば、各サーバに要求される負荷を効率よく分散させることが可能となる。
【図面の簡単な説明】
【0013】
【図1】本実施形態に係る負荷分散システムの概略構成を示す図である。
【図2】同実施形態に係るリソース情報を例示した図である。
【図3】同実施形態に係るステータステーブルを例示した図である。
【図4】同実施形態に係る予測処理性能テーブルを例示した図である。
【図5】同実施形態に係るロードバランサテーブルを例示した図である。
【図6】同実施形態に係るテーブル更新処理を示すシーケンス図である。
【図7】同実施形態に係るリクエスト処理を示すシーケンス図である。
【図8】変形例に係る負荷分散システムの概略構成を示す図である。
【図9】従来の負荷分散システムの概略構成図である。
【図10】ロードバランサを搭載した従来のESBシステムの問題点を説明するための図である。
【図11】ロードバランサを搭載した従来のESBシステムの問題点を説明するための図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について図面を参照しつつ詳細に説明する。
【0015】
A.本実施形態
(1)実施形態の構成
図1は、本実施形態に係る負荷分散システム500の構成例を示す図である。
複数のサービスを提供するサーバ100と、各サービスを利用するクライアントプログラムCP1が搭載されたクライアント200と、クライアントプログラムCPからのリクエストを適切なサーバ100のサービスに割り振り等を行うESBシステム300とを備えて構成される。なお、図1では説明の便宜上、サーバを2台、クライアントを1台のみ図示しているが、本来は多数のサーバ、クライアントが存在する。また、各サーバ100が提供するサービスの種類(本実施形態ではサービスA、B、Cを想定)や数等も図1に示したものに限定する趣旨でないのはもちろんである。
【0016】
各サーバ100は、クライアントプログラムCPからのリクエストに応じて、サービスを提供する。サーバ100に実装された各サービスは、サーバ100のハードウェア資源(CPUやROM、RAMなど)と協働することにより、リスナ手段111、アプリケーション実行手段112、リソースモニタ手段113、エージェント手段114を実現する。
【0017】
リスナ手段111は、クライアントプログラムCPからESBシステム300を介してリクエストを受信する一方、アプリケーション実行手段112は、リスナ手段111が受信したリクエストに応じて該サービスの処理を実行する。これらリスナ手段111やアプリケーション実行手段112は、周知のWebサーバソフトウェア(Apache HTTP Serverなど)とHTMLファイルなどによって実現される。
【0018】
リソースモニタ手段113は、サーバ100が提供するサービスごとに、ハードウェアリソース(CPUやメモリなど)の使用状況などをあらわす情報(以下、リソース情報という)を所定タイミングで集計し、エージェント手段114に送信する。各サービス100のエージェント手段114は、ESBシステム300のリスナ手段311bへ送る。
【0019】
図2は、サーバ100aの各サービスA、BからESシステム300へ提供されるリソース情報を例示した図である。
図2に示すように、各サービスA、Bが提供するリソース情報には、当該サービスを利用するクライアント200を識別するクライアントIDと、当該クライアント200から送信されるメッセージのサイズ(リクエストメッセージサイズ)と、ハードウェアリソースの詳細な使用状況をあらわす情報(リソース詳細情報)とが含まれている。一例を挙げて説明すると、サービスAの利用に関し、クライアントαから送信されるリクエストメッセージサイズ「2MB」のリクエストに応じて、CPU使用率「20%」、メモリ使用量「40KB」、NIC使用量「10%」のハードウェアリソースが使用される一方、クライアントβから送信されるリクエストメッセージサイズ「1MB」のリクエストに応じて、CPU使用率「10%」、メモリ使用量「20KB」、NIC使用量「10%」のハードウェアリソースが使用される・・・等の情報がサービスAのリソース情報に含まれている。
【0020】
同様に、サービスBの利用に関し、クライアントβから送信されるリクエストメッセージサイズ「2MB」のリクエストに応じて、CPU使用率「20%」、メモリ使用量「20KB」、NIC使用量「10%」のハードウェアリソースが使用される一方、クライアントγから送信されるリクエストメッセージサイズ「3MB」のリクエストに応じて、CPU使用率「30%」、メモリ使用量「40KB」、NIC使用量「15%」のハードウェアリソースが使用される・・・等の情報がサービスSV2のリソース情報に含まれている。
【0021】
なお、上記説明では、サーバ100aに実装された各サービスA、BからESBシステム300へ提供される各リソース情報を例示したが、他のサーバ100に実装された各サービスも同様にしてリソース情報を提供する。
【0022】
ESBシステム300は、ESBシステム300に実装されたソフトウェアがハードウェア資源と協働することにより、リスナ手段311a、311b、エージェント集計手段312、ロードバランサ313、レジストリ更新手段314を実現する。
【0023】
リスナ手段311aは、クライアント200(クライアントプログラムCP)から特定サービス(例えばサービスA)のリクエストなどを受信し、これをロードバランサ313に送信する。リスナ手段311bは、各サービスから送信されるリソース情報を受信し、これをエージェント集計手段312に渡す。
【0024】
エージェント集計手段(収集手段)312は、各サービスから受信するリソース情報(サーバの負荷状況)をまとめることにより、ステータステーブルTA1を作成する。
図3は、ステータステーブルTA1の登録内容を例示した図である。
ステータステーブルTA1には、サービスの種類と、サービスを提供するサーバ100の名前と、当該サーバのリソース詳細情報とが対応づけて登録されている。例えば、サービスAは、サーバ100aとサーバ100bによって提供されており、サーバ100aは、サービスAの利用によりCPU使用率が「60%」、メモリ使用量が「1GB」、NIC使用量が「40%」のハードウェアリソースが使用され、サーバ100bは、サービスSBの利用によりCPU使用率が「20%」、メモリ使用量が「0.5GB」、NIC使用量が「20%」のハードウェアリソースが使用される。
【0025】
レジストリ更新手段(予測手段)314は、各サービスから受信するリソース情報(別言すれば、サービスの過去の処理特性)に基づき、リクエスト毎の予測処理性能テーブルTA2を作成・更新し、これをサービスレジストリ314aに格納する。
図4は、予測処理性能テーブルTA2を例示した図である。
予測処理性能テーブルTA2には、リクエスト詳細情報と、予測リソース情報とが対応づけて登録されている。ここで、リクエスト詳細情報とは、サービス名とリクエストメッセージサイズ(以下、単にメッセージサイズと略称)とを含む情報であり、予測リソース情報とは、予測されるサーバ100のハードウェア資源の使用状況(すなわち、予測されるサーバの負荷量)をあらわす情報である。例えば、クライアント200からサービスAに対してメッセージサイズ2MBのリクエストメッセージが送信された場合には、CPU使用率(予測値)が「20%」、メモリ使用量(予測値)が「40KB」、NIC使用量(予測値)が「20%」使用されると予測される。同様に、クライアント200からサービスAに対してメッセージサイズ1MBのリクエスメッセージが送信された場合には、CPU使用率(予測値)が「10%」、メモリ使用量(予測値)が「20KB」、NIC使用量(予測値)が「10%」使用されると予測される。
【0026】
ロードバランサ313は、各サービスから受信するリソース情報に基づき、ロードバランステーブルTA3を作成・更新し、これをロードバランスレジストリ313aに格納する。さらに、ロードバランサ(選択手段、送信手段)313は、ロードバランステーブルTA3等を参照することで、クライアント200からのリクエストの送信先となるサーバを選択し、選択したサーバ100のサービス(例えばサーバ100aのサービスA)に対してリクエストを転送する。
【0027】
図5は、ロードバランステーブルTA3を例示した図である。
ロードバランステーブルTA3には、サーバ100の名前と、該サーバ100が提供するサービスの種類と、該サーバ100の利用に関する優先度(以下、単に優先度という)と、ステータス(active, nonactiveなど)とが対応づけて登録されている。
【0028】
ここで、優先度は、数値が高いほどクライアントからのリクエストを割り当てる確率が高いことを意味する。従って、図5に示す例ではサーバ100aに設定された優先度が最も高い(具体的には優先度「10」)であることから、サーバ100aは次にクライアントからのリクエストが割り当てられる確率が高いと予測される。
【0029】
(2)実施形態の動作
2−1.テーブル更新処理
図6は、ESBシステム300において実行されるテーブル更新処理を示すシーケンス図である。なお、以下の説明ではサーバ100aのサービスAからESBシステム300にリソース情報が送信される場合を想定する。
サービスAのエージェント手段114は、リソースモニタ手段113に対して定期的にリソース情報(リクエスト毎または全体のリソース情報)の転送要求を行う(ステップA1)。なお、転送要求は、不定期であっても良い。
【0030】
リソースモニタ手段113は、サービスAが稼動するサーバ100aのリソース情報を取得し、これをエージェント手段114に返す(ステップA2)。リソースモニタ手段113が取得するリソース情報には、例えば図2の上段に示すような当該サービスAを利用するクライアント200を識別するクライアントIDと、当該クライアント200から送信されるメッセージのサイズ(リクエストメッセージサイズ)と、ハードウェアリソースの詳細な使用状況をあらわす情報(リソース詳細情報)が含まれる。なお、リソース詳細情報には、CPU使用率、メモリ使用量、NIC使用量のほか、例えば通信接続数やネットワーク帯域使用率など、様々な情報を含んで良いのはもちろんである。
【0031】
エージェント手段114は、リソース情報を取得すると、これをESBシステム300のリスナ311bに送信する(ステップA3)。なお、通信プロトコルは特に限定されない。リスナ手段311bは、サーバ100aのサービスAからリソース情報を受信すると、これをエージェント集計手段312に送る(ステップA4)。エージェント集計手段312は、各サーバ100の各サービスから送信される様々なリソース情報を集め、図3に示すようなステータステーブルTA1を作成するとともに、該リソース情報に基づいて図4に示すような予測処理性能テーブルTA2を作成・更新する(ステップA5)。
【0032】
そして、エージェント集計手段312は、ロードバランサレジストリ313aにアクセスし、ロードバランサテーブルTA3を読みこむ(ステップA6)。図5に示すように、ロードバランステーブルTA3には、サーバ100の名前と、該サーバ100が提供するサービスの種類と、優先度というと、ステータス(active, nonactiveなど)とが対応づけて登録されている。エージェント集計手段312は、例えば図3に示すステータステーブルTA1と図5に示すロードバランサテーブルTA3に基づいて、ロードバランサテーブルTA3の各サービスに対応づけて登録されている優先度(重み付け)を変更し、ロードバランサテーブルTA3の更新を行う(ステップA7→ステップA8)。この優先度は、当該時点での負荷(すなわちリソースの使用率等)が大きいものほど高く設定される。
【0033】
以上の処理が終了すると、エージェント集計手段312は、レジストリ更新手段314に対してサービスレジストリ314aに登録されている予測処理性能テーブルTA2の更新を依頼する(ステップA9)。レジストリ更新手段314は、エージェント集計手段312からの更新依頼を受け、リクエストごとにメッセージサイズと紐付け、メッセージサイズごとの予測リソース情報を更新し(ステップA10)、処理を終了する。なお、優先度の変更ポリシーや優先度の設定ルールなどは、負荷分散システム500の設計などに応じて適宜設定・変更可能である。
【0034】
2−2.リクエスト処理
図7は、クライアントからサービスのリクエストがあったときにESBシステム300において実行されるリクエスト処理を示すシーケンス図である。
クライアント(クライアントプログラムCP)200は、特定サービス(例えばサービスA)を利用するべく、所定のメッセージサイズ(例えば2MB)のリクエストをESBシステム300に送る(ステップB1)。ESBシステム300のロードバランサ313は、リスナ手段311aからリクエストを受信すると、リクエスト先のサービス(例えばサービスA)のプロトコルにあわせてプロトコル変換を行うとともに、ロードバランサテーブルTA3からロードバランサテーブルTA3を取得する(ステップB2)。さらに、ロードバランサ313は、サービスレジストリ314aに登録されている予測処理性能テーブルTA2を取得し (ステップB3)、クライアント200から送信されるリクエストのメッセージサイズ、リクエスト先のサービスをキーとして、レジストリ更新テーブルTAを検索することにより、当該リクエストに応じたサービスを提供する際に必要となるサーバの予測リソース情報(CPUの使用率、メモリ使用量、NIC使用量など)を把握する。
【0035】
そして、ロードバランサ313は、ロードバランサテーブルTA3を参照することでリクエスト先のサービスがデプロイされているサーバ(例えばサーバ100a)を把握するとともに、該サーバが複数ある場合には(例えばサーバ100a、100b)、各サーバに対応づけて登録されている優先度を参照し、最も優先度の高いサーバ(例えばサーバ100a)を選択する(ステップB3)。ここで、優先度はリソースの使用量が高いものほど、高く設定されている。よって、サーバの選択に際しては、当該リクエストを処理できるサーバ100であって、もっとも余剰リソースの少ないサーバ100が選択されることとなる。ロードバランサ313は、このようにして選択したサーバ100のサービス(例えばサーバ100aのサービスA)に対してリクエストを転送し(ステップB4)、処理を終了する。
【0036】
以上説明したように、本実施形態によれば、サーバのリソースの使用状況に応じて適切なサーバにリクエストを振り分けるため、効率よくサーバを利用することができる。
また、各サーバの活性もチェックしているため(ロードバランサテーブルTA3参照)、システムダウンしているサーバにアクセスしてしまう等の動作も未然に防止することが可能となる。さらに、リソース枯渇を抑制することができるため、リクエストを送信してからのTAT(Turn Around Time)を平坦化等することが可能となる。
加えて、活性チェックを行っているため、意図的にサーバを停止させてリソースを動的に変更することも可能となる。
【0037】
B.変形例
上述した本実施形態では、ロードバランサテーブルTA3が格納されるロードバランサレジストリ313aをESBシステム300の中に設けた態様を例示したが、ESBシステム300の外部にロードバランサテーブルTA3が格納されるデータベースDBを設けても良い。
【0038】
図8は、変形例に係る負荷分散システム500’の構成を示す図であり、図1に対応している。なお、図1に対応する部分には同一符号を付し、詳細な説明は割愛する。
負荷分散システム500’は、複数のESBシステム300a、300bを備えており、ESBシステム300a、300bの外部にはロードバランサテーブルTA3が格納されるデータベースDBが設けられている。
【0039】
ESBシステム300a、300bの外部にデータベースDBを設けた場合には、各ESBシステム300a、300bがロードバランサテーブルTA3に登録された情報を取得等する際、ネットワーク通信が必要となるが、各ESBシステム300a、300bが情報を共有できるメリットがある。さらに、信頼性の高いデータベースDBを利用することで、データベースDBに登録されたデータの紛失や問題発生時のロールバック等を行うことも可能となる。
【0040】
なお、本実施形態等において示した各処理のステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。さらに本明細書等において、手段とは、単に物理的手段を意味するものではなく、その手段が有する機能をソフトウェアによって実現する場合も含む。さらにまた、1つの手段が有する機能が2つ以上の物理的手段により実現されても、2つ以上の手段の機能が1つの物理的手段により実現されてもよい。また、本発明に係るソフトウェアの開発支援プログラムは、CD−ROMやDVD−ROM等の光学ディスク、磁気ディスク、半導体メモリなどの各種の記録媒体を通じて、又は通信ネットワークなどを介してダウンロードすることにより、コンピュータにインストール又はロードすることができる。
【0041】
また、本実施形態や変形例で示した態様の一部又は全部は、付記のように記載することもできるが、これに限定されるものではない。
【0042】
(付記1)クライアントからのリクエストに応じてサービスを提供する複数のサーバの負荷状況を収集し、収集結果に基づき負荷分散を実現するバスシステムであって、前記各サーバの負荷状況を収集する収集手段と、前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測手段と、収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択手段と、選択されたサーバに前記クライアントからのリクエストを送信する送信手段とを備え、前記選択手段は、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する、ことを特徴とするバスシステム。
【0043】
(付記2)前記収集手段は、前記各サーバが提供する各サービスから、当該サーバのリソースの使用状況をあらわす情報を収集する、ことを特徴とする付記1に記載のバスシステム。
【0044】
(付記3)前記サービスの過去の処理特性には、当該サービスの種類、当該サービスのリクエストメッセージサイズ、当該サービスの提供のために要したサーバの負荷量が含まれる、ことを特徴とする付記1または2に記載のバスシステム。
【0045】
(付記4)前記優先度は、前記選択手段により当該時点での負荷が大きなものほど高く設定される、ことを特徴とする付記1〜3のいずれか1の付記に記載のバスシステム。
【0046】
(付記5)前記予測手段は、前記収集手段によって収集された各サーバの負荷状況に基づいて、予測する前記リクエストに応じたサービスの提供に係るサーバの負荷量を更新する、付記1〜4のいずれか1の付記に記載のバスシステム。
【0047】
(付記6)クライアントと、前記クライアントからのリクエストに応じてサービスを提供する複数のサーバと、前記各サーバの負荷状況を収集し、収集結果に基づき負荷分散を実現するバスシステムと、を備えた負荷分散システムであって、前記バスシステムは、前記各サーバの負荷状況を収集する収集手段と、前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測手段と、収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択手段と、選択されたサーバに前記クライアントからのリクエストを送信する送信手段とを備え、前記選択手段は、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する、ことを特徴とする負荷分散システム。
【0048】
(付記7)クライアントからのリクエストに応じてサービスを提供する複数のサーバの負荷状況を収集し、収集結果に基づき負荷分散を実現する方法であって、前記各サーバの負荷状況を収集する収集ステップと、前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測ステップと、収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択ステップと、選択されたサーバに前記クライアントからのリクエストを送信する送信ステップとを含み、前記選択ステップにおいては、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する、ことを特徴とする負荷分散方法。
【符号の説明】
【0049】
500,500’…負荷分散システム、100…サーバ、111,311a,311b…リスナ手段、112…アプリケーション実行手段、113…リソースモニタ手段、114…エージェント手段、200…クライアント、300…ESBシステム、312…エージェント集計手段、313…ロードバランサ、313a…ロードバランサレジストリ、314…レジストリ更新手段、314a…サービスレジストリ、DB…データベース、TA1…ステータステーブル、TA2…予測処理性能テーブル、TA3…ロードバランサテーブル。
【技術分野】
【0001】
本発明は、ESB(Enterprise Service Bus)などのバスシステムに関する。
【背景技術】
【0002】
SOA(Service-Oriented Architecture)における既存システムのサービス化を行うために利用される技術として、ESBと呼ばれるバスシステムを利用する方法が存在する。このESB概念は、サービス(アプリケーションやコンポーネント)へのアクセスを行い、複数のサービスを協調・連携動作するSOAシステムを、論理的なソフトウェアバスに基づいて構成するというソフトウェア設計上の考え方である。
【0003】
図9は従来の負荷分散システム50の構成例を示す図である。
各サーバ10a、10bに実装されたアプリケーションなどのサービスA、Bと、各クライアント20a〜20cに実装されたクライアントプログラムCP1〜CP3とは、ESBシステム30を介して接続される。各サービスA、Bと各プログラムCP1〜CP3との間の通信は、全てESBシステム30を介して行われる。なお、各サービスA、BとESBシステム30の間は、汎用的なHTTP、SOAP、JMS等により通信が行われる。
【0004】
ここで、ESBシステム30は、クライアントアプリケーションCPからのリクエストに応じて所望のサービス(例えばサービスA)へアクセスを行うが、リクエストを受けたサービスAを実装したサーバ(例えばサーバ10a)の処理能力が低下している場合には、該サービスAはリクエストを処理しきれないことがある。
【0005】
かかる問題を解消するために、負荷分散を実現するロードバランサをESBシステムに実装することで、単一のサーバに負荷が集中することを防ぐことが昨今では一般的となっている(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−182641号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
図10および図11は、ロードバランサ31を搭載したESBシステム30の問題点を説明するための図である。
図10に示すように、クライアントプログラムCP1がサービスAを利用している最中に、クライアントプログラムCP2がサービスBに対してメッセージサイズM1のリクエストを行ったとする。この場合、ESBシステム30のロードバランサ31は、クライアントプログラムCP1によってサーバ10aのサービスAが利用されていることから、すでにリソースが使用されているサーバ10aのサービスBではなく、リソースが使用されていないサーバ10bのサービスBへ該リクエストを送る。この結果、サーバ10aにおいては、サービス10aが利用されることでリソースの50%が使用され、サーバ10bにおいては、サービス10bが利用されることでリソースの40%が使用される(図10参照)。
【0008】
その後、図11に示すように、クライアントプログラムCP3がサービスBに対して、リソースの60%の使用が要求される大きなメッセージサイズM2(>M1)のリクエストを行ったとする。サーバ10bにおいては、すでにサービスBが利用されていることから、ロードバランサ31は、サーバ10aのサービスBへのリクエストを試みる。しかしながら、サーバ10aにおいては、サービスAの利用によりリソースの50%が使用されているため、クライアントプログラムCP3からのリクエストに応えることができない、という問題が生じ得る。
【0009】
本発明は以上説明した事情を鑑みてなされたものであり、各サーバに要求される負荷を効率よく分散させることが可能なバスシステムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明に係るバスシステムは、クライアントからのリクエストに応じてサービスを提供する複数のサーバの負荷状況を収集し、収集結果に基づき負荷分散を実現するバスシステムであって、前記各サーバの負荷状況を収集する収集手段と、前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測手段と、収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択手段と、選択されたサーバに前記クライアントからのリクエストを送信する送信手段とを備え、前記選択手段は、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択することを特徴とする。
【0011】
かかる構成によれば、サーバの負荷状況(別言すればリソースの使用状況)に応じて適切なサーバにリクエストを振り分けるため、効率よくサーバを利用することが可能となる。
【発明の効果】
【0012】
以上説明したように、本発明によれば、各サーバに要求される負荷を効率よく分散させることが可能となる。
【図面の簡単な説明】
【0013】
【図1】本実施形態に係る負荷分散システムの概略構成を示す図である。
【図2】同実施形態に係るリソース情報を例示した図である。
【図3】同実施形態に係るステータステーブルを例示した図である。
【図4】同実施形態に係る予測処理性能テーブルを例示した図である。
【図5】同実施形態に係るロードバランサテーブルを例示した図である。
【図6】同実施形態に係るテーブル更新処理を示すシーケンス図である。
【図7】同実施形態に係るリクエスト処理を示すシーケンス図である。
【図8】変形例に係る負荷分散システムの概略構成を示す図である。
【図9】従来の負荷分散システムの概略構成図である。
【図10】ロードバランサを搭載した従来のESBシステムの問題点を説明するための図である。
【図11】ロードバランサを搭載した従来のESBシステムの問題点を説明するための図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について図面を参照しつつ詳細に説明する。
【0015】
A.本実施形態
(1)実施形態の構成
図1は、本実施形態に係る負荷分散システム500の構成例を示す図である。
複数のサービスを提供するサーバ100と、各サービスを利用するクライアントプログラムCP1が搭載されたクライアント200と、クライアントプログラムCPからのリクエストを適切なサーバ100のサービスに割り振り等を行うESBシステム300とを備えて構成される。なお、図1では説明の便宜上、サーバを2台、クライアントを1台のみ図示しているが、本来は多数のサーバ、クライアントが存在する。また、各サーバ100が提供するサービスの種類(本実施形態ではサービスA、B、Cを想定)や数等も図1に示したものに限定する趣旨でないのはもちろんである。
【0016】
各サーバ100は、クライアントプログラムCPからのリクエストに応じて、サービスを提供する。サーバ100に実装された各サービスは、サーバ100のハードウェア資源(CPUやROM、RAMなど)と協働することにより、リスナ手段111、アプリケーション実行手段112、リソースモニタ手段113、エージェント手段114を実現する。
【0017】
リスナ手段111は、クライアントプログラムCPからESBシステム300を介してリクエストを受信する一方、アプリケーション実行手段112は、リスナ手段111が受信したリクエストに応じて該サービスの処理を実行する。これらリスナ手段111やアプリケーション実行手段112は、周知のWebサーバソフトウェア(Apache HTTP Serverなど)とHTMLファイルなどによって実現される。
【0018】
リソースモニタ手段113は、サーバ100が提供するサービスごとに、ハードウェアリソース(CPUやメモリなど)の使用状況などをあらわす情報(以下、リソース情報という)を所定タイミングで集計し、エージェント手段114に送信する。各サービス100のエージェント手段114は、ESBシステム300のリスナ手段311bへ送る。
【0019】
図2は、サーバ100aの各サービスA、BからESシステム300へ提供されるリソース情報を例示した図である。
図2に示すように、各サービスA、Bが提供するリソース情報には、当該サービスを利用するクライアント200を識別するクライアントIDと、当該クライアント200から送信されるメッセージのサイズ(リクエストメッセージサイズ)と、ハードウェアリソースの詳細な使用状況をあらわす情報(リソース詳細情報)とが含まれている。一例を挙げて説明すると、サービスAの利用に関し、クライアントαから送信されるリクエストメッセージサイズ「2MB」のリクエストに応じて、CPU使用率「20%」、メモリ使用量「40KB」、NIC使用量「10%」のハードウェアリソースが使用される一方、クライアントβから送信されるリクエストメッセージサイズ「1MB」のリクエストに応じて、CPU使用率「10%」、メモリ使用量「20KB」、NIC使用量「10%」のハードウェアリソースが使用される・・・等の情報がサービスAのリソース情報に含まれている。
【0020】
同様に、サービスBの利用に関し、クライアントβから送信されるリクエストメッセージサイズ「2MB」のリクエストに応じて、CPU使用率「20%」、メモリ使用量「20KB」、NIC使用量「10%」のハードウェアリソースが使用される一方、クライアントγから送信されるリクエストメッセージサイズ「3MB」のリクエストに応じて、CPU使用率「30%」、メモリ使用量「40KB」、NIC使用量「15%」のハードウェアリソースが使用される・・・等の情報がサービスSV2のリソース情報に含まれている。
【0021】
なお、上記説明では、サーバ100aに実装された各サービスA、BからESBシステム300へ提供される各リソース情報を例示したが、他のサーバ100に実装された各サービスも同様にしてリソース情報を提供する。
【0022】
ESBシステム300は、ESBシステム300に実装されたソフトウェアがハードウェア資源と協働することにより、リスナ手段311a、311b、エージェント集計手段312、ロードバランサ313、レジストリ更新手段314を実現する。
【0023】
リスナ手段311aは、クライアント200(クライアントプログラムCP)から特定サービス(例えばサービスA)のリクエストなどを受信し、これをロードバランサ313に送信する。リスナ手段311bは、各サービスから送信されるリソース情報を受信し、これをエージェント集計手段312に渡す。
【0024】
エージェント集計手段(収集手段)312は、各サービスから受信するリソース情報(サーバの負荷状況)をまとめることにより、ステータステーブルTA1を作成する。
図3は、ステータステーブルTA1の登録内容を例示した図である。
ステータステーブルTA1には、サービスの種類と、サービスを提供するサーバ100の名前と、当該サーバのリソース詳細情報とが対応づけて登録されている。例えば、サービスAは、サーバ100aとサーバ100bによって提供されており、サーバ100aは、サービスAの利用によりCPU使用率が「60%」、メモリ使用量が「1GB」、NIC使用量が「40%」のハードウェアリソースが使用され、サーバ100bは、サービスSBの利用によりCPU使用率が「20%」、メモリ使用量が「0.5GB」、NIC使用量が「20%」のハードウェアリソースが使用される。
【0025】
レジストリ更新手段(予測手段)314は、各サービスから受信するリソース情報(別言すれば、サービスの過去の処理特性)に基づき、リクエスト毎の予測処理性能テーブルTA2を作成・更新し、これをサービスレジストリ314aに格納する。
図4は、予測処理性能テーブルTA2を例示した図である。
予測処理性能テーブルTA2には、リクエスト詳細情報と、予測リソース情報とが対応づけて登録されている。ここで、リクエスト詳細情報とは、サービス名とリクエストメッセージサイズ(以下、単にメッセージサイズと略称)とを含む情報であり、予測リソース情報とは、予測されるサーバ100のハードウェア資源の使用状況(すなわち、予測されるサーバの負荷量)をあらわす情報である。例えば、クライアント200からサービスAに対してメッセージサイズ2MBのリクエストメッセージが送信された場合には、CPU使用率(予測値)が「20%」、メモリ使用量(予測値)が「40KB」、NIC使用量(予測値)が「20%」使用されると予測される。同様に、クライアント200からサービスAに対してメッセージサイズ1MBのリクエスメッセージが送信された場合には、CPU使用率(予測値)が「10%」、メモリ使用量(予測値)が「20KB」、NIC使用量(予測値)が「10%」使用されると予測される。
【0026】
ロードバランサ313は、各サービスから受信するリソース情報に基づき、ロードバランステーブルTA3を作成・更新し、これをロードバランスレジストリ313aに格納する。さらに、ロードバランサ(選択手段、送信手段)313は、ロードバランステーブルTA3等を参照することで、クライアント200からのリクエストの送信先となるサーバを選択し、選択したサーバ100のサービス(例えばサーバ100aのサービスA)に対してリクエストを転送する。
【0027】
図5は、ロードバランステーブルTA3を例示した図である。
ロードバランステーブルTA3には、サーバ100の名前と、該サーバ100が提供するサービスの種類と、該サーバ100の利用に関する優先度(以下、単に優先度という)と、ステータス(active, nonactiveなど)とが対応づけて登録されている。
【0028】
ここで、優先度は、数値が高いほどクライアントからのリクエストを割り当てる確率が高いことを意味する。従って、図5に示す例ではサーバ100aに設定された優先度が最も高い(具体的には優先度「10」)であることから、サーバ100aは次にクライアントからのリクエストが割り当てられる確率が高いと予測される。
【0029】
(2)実施形態の動作
2−1.テーブル更新処理
図6は、ESBシステム300において実行されるテーブル更新処理を示すシーケンス図である。なお、以下の説明ではサーバ100aのサービスAからESBシステム300にリソース情報が送信される場合を想定する。
サービスAのエージェント手段114は、リソースモニタ手段113に対して定期的にリソース情報(リクエスト毎または全体のリソース情報)の転送要求を行う(ステップA1)。なお、転送要求は、不定期であっても良い。
【0030】
リソースモニタ手段113は、サービスAが稼動するサーバ100aのリソース情報を取得し、これをエージェント手段114に返す(ステップA2)。リソースモニタ手段113が取得するリソース情報には、例えば図2の上段に示すような当該サービスAを利用するクライアント200を識別するクライアントIDと、当該クライアント200から送信されるメッセージのサイズ(リクエストメッセージサイズ)と、ハードウェアリソースの詳細な使用状況をあらわす情報(リソース詳細情報)が含まれる。なお、リソース詳細情報には、CPU使用率、メモリ使用量、NIC使用量のほか、例えば通信接続数やネットワーク帯域使用率など、様々な情報を含んで良いのはもちろんである。
【0031】
エージェント手段114は、リソース情報を取得すると、これをESBシステム300のリスナ311bに送信する(ステップA3)。なお、通信プロトコルは特に限定されない。リスナ手段311bは、サーバ100aのサービスAからリソース情報を受信すると、これをエージェント集計手段312に送る(ステップA4)。エージェント集計手段312は、各サーバ100の各サービスから送信される様々なリソース情報を集め、図3に示すようなステータステーブルTA1を作成するとともに、該リソース情報に基づいて図4に示すような予測処理性能テーブルTA2を作成・更新する(ステップA5)。
【0032】
そして、エージェント集計手段312は、ロードバランサレジストリ313aにアクセスし、ロードバランサテーブルTA3を読みこむ(ステップA6)。図5に示すように、ロードバランステーブルTA3には、サーバ100の名前と、該サーバ100が提供するサービスの種類と、優先度というと、ステータス(active, nonactiveなど)とが対応づけて登録されている。エージェント集計手段312は、例えば図3に示すステータステーブルTA1と図5に示すロードバランサテーブルTA3に基づいて、ロードバランサテーブルTA3の各サービスに対応づけて登録されている優先度(重み付け)を変更し、ロードバランサテーブルTA3の更新を行う(ステップA7→ステップA8)。この優先度は、当該時点での負荷(すなわちリソースの使用率等)が大きいものほど高く設定される。
【0033】
以上の処理が終了すると、エージェント集計手段312は、レジストリ更新手段314に対してサービスレジストリ314aに登録されている予測処理性能テーブルTA2の更新を依頼する(ステップA9)。レジストリ更新手段314は、エージェント集計手段312からの更新依頼を受け、リクエストごとにメッセージサイズと紐付け、メッセージサイズごとの予測リソース情報を更新し(ステップA10)、処理を終了する。なお、優先度の変更ポリシーや優先度の設定ルールなどは、負荷分散システム500の設計などに応じて適宜設定・変更可能である。
【0034】
2−2.リクエスト処理
図7は、クライアントからサービスのリクエストがあったときにESBシステム300において実行されるリクエスト処理を示すシーケンス図である。
クライアント(クライアントプログラムCP)200は、特定サービス(例えばサービスA)を利用するべく、所定のメッセージサイズ(例えば2MB)のリクエストをESBシステム300に送る(ステップB1)。ESBシステム300のロードバランサ313は、リスナ手段311aからリクエストを受信すると、リクエスト先のサービス(例えばサービスA)のプロトコルにあわせてプロトコル変換を行うとともに、ロードバランサテーブルTA3からロードバランサテーブルTA3を取得する(ステップB2)。さらに、ロードバランサ313は、サービスレジストリ314aに登録されている予測処理性能テーブルTA2を取得し (ステップB3)、クライアント200から送信されるリクエストのメッセージサイズ、リクエスト先のサービスをキーとして、レジストリ更新テーブルTAを検索することにより、当該リクエストに応じたサービスを提供する際に必要となるサーバの予測リソース情報(CPUの使用率、メモリ使用量、NIC使用量など)を把握する。
【0035】
そして、ロードバランサ313は、ロードバランサテーブルTA3を参照することでリクエスト先のサービスがデプロイされているサーバ(例えばサーバ100a)を把握するとともに、該サーバが複数ある場合には(例えばサーバ100a、100b)、各サーバに対応づけて登録されている優先度を参照し、最も優先度の高いサーバ(例えばサーバ100a)を選択する(ステップB3)。ここで、優先度はリソースの使用量が高いものほど、高く設定されている。よって、サーバの選択に際しては、当該リクエストを処理できるサーバ100であって、もっとも余剰リソースの少ないサーバ100が選択されることとなる。ロードバランサ313は、このようにして選択したサーバ100のサービス(例えばサーバ100aのサービスA)に対してリクエストを転送し(ステップB4)、処理を終了する。
【0036】
以上説明したように、本実施形態によれば、サーバのリソースの使用状況に応じて適切なサーバにリクエストを振り分けるため、効率よくサーバを利用することができる。
また、各サーバの活性もチェックしているため(ロードバランサテーブルTA3参照)、システムダウンしているサーバにアクセスしてしまう等の動作も未然に防止することが可能となる。さらに、リソース枯渇を抑制することができるため、リクエストを送信してからのTAT(Turn Around Time)を平坦化等することが可能となる。
加えて、活性チェックを行っているため、意図的にサーバを停止させてリソースを動的に変更することも可能となる。
【0037】
B.変形例
上述した本実施形態では、ロードバランサテーブルTA3が格納されるロードバランサレジストリ313aをESBシステム300の中に設けた態様を例示したが、ESBシステム300の外部にロードバランサテーブルTA3が格納されるデータベースDBを設けても良い。
【0038】
図8は、変形例に係る負荷分散システム500’の構成を示す図であり、図1に対応している。なお、図1に対応する部分には同一符号を付し、詳細な説明は割愛する。
負荷分散システム500’は、複数のESBシステム300a、300bを備えており、ESBシステム300a、300bの外部にはロードバランサテーブルTA3が格納されるデータベースDBが設けられている。
【0039】
ESBシステム300a、300bの外部にデータベースDBを設けた場合には、各ESBシステム300a、300bがロードバランサテーブルTA3に登録された情報を取得等する際、ネットワーク通信が必要となるが、各ESBシステム300a、300bが情報を共有できるメリットがある。さらに、信頼性の高いデータベースDBを利用することで、データベースDBに登録されたデータの紛失や問題発生時のロールバック等を行うことも可能となる。
【0040】
なお、本実施形態等において示した各処理のステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。さらに本明細書等において、手段とは、単に物理的手段を意味するものではなく、その手段が有する機能をソフトウェアによって実現する場合も含む。さらにまた、1つの手段が有する機能が2つ以上の物理的手段により実現されても、2つ以上の手段の機能が1つの物理的手段により実現されてもよい。また、本発明に係るソフトウェアの開発支援プログラムは、CD−ROMやDVD−ROM等の光学ディスク、磁気ディスク、半導体メモリなどの各種の記録媒体を通じて、又は通信ネットワークなどを介してダウンロードすることにより、コンピュータにインストール又はロードすることができる。
【0041】
また、本実施形態や変形例で示した態様の一部又は全部は、付記のように記載することもできるが、これに限定されるものではない。
【0042】
(付記1)クライアントからのリクエストに応じてサービスを提供する複数のサーバの負荷状況を収集し、収集結果に基づき負荷分散を実現するバスシステムであって、前記各サーバの負荷状況を収集する収集手段と、前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測手段と、収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択手段と、選択されたサーバに前記クライアントからのリクエストを送信する送信手段とを備え、前記選択手段は、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する、ことを特徴とするバスシステム。
【0043】
(付記2)前記収集手段は、前記各サーバが提供する各サービスから、当該サーバのリソースの使用状況をあらわす情報を収集する、ことを特徴とする付記1に記載のバスシステム。
【0044】
(付記3)前記サービスの過去の処理特性には、当該サービスの種類、当該サービスのリクエストメッセージサイズ、当該サービスの提供のために要したサーバの負荷量が含まれる、ことを特徴とする付記1または2に記載のバスシステム。
【0045】
(付記4)前記優先度は、前記選択手段により当該時点での負荷が大きなものほど高く設定される、ことを特徴とする付記1〜3のいずれか1の付記に記載のバスシステム。
【0046】
(付記5)前記予測手段は、前記収集手段によって収集された各サーバの負荷状況に基づいて、予測する前記リクエストに応じたサービスの提供に係るサーバの負荷量を更新する、付記1〜4のいずれか1の付記に記載のバスシステム。
【0047】
(付記6)クライアントと、前記クライアントからのリクエストに応じてサービスを提供する複数のサーバと、前記各サーバの負荷状況を収集し、収集結果に基づき負荷分散を実現するバスシステムと、を備えた負荷分散システムであって、前記バスシステムは、前記各サーバの負荷状況を収集する収集手段と、前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測手段と、収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択手段と、選択されたサーバに前記クライアントからのリクエストを送信する送信手段とを備え、前記選択手段は、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する、ことを特徴とする負荷分散システム。
【0048】
(付記7)クライアントからのリクエストに応じてサービスを提供する複数のサーバの負荷状況を収集し、収集結果に基づき負荷分散を実現する方法であって、前記各サーバの負荷状況を収集する収集ステップと、前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測ステップと、収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択ステップと、選択されたサーバに前記クライアントからのリクエストを送信する送信ステップとを含み、前記選択ステップにおいては、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する、ことを特徴とする負荷分散方法。
【符号の説明】
【0049】
500,500’…負荷分散システム、100…サーバ、111,311a,311b…リスナ手段、112…アプリケーション実行手段、113…リソースモニタ手段、114…エージェント手段、200…クライアント、300…ESBシステム、312…エージェント集計手段、313…ロードバランサ、313a…ロードバランサレジストリ、314…レジストリ更新手段、314a…サービスレジストリ、DB…データベース、TA1…ステータステーブル、TA2…予測処理性能テーブル、TA3…ロードバランサテーブル。
【特許請求の範囲】
【請求項1】
クライアントからのリクエストに応じてサービスを提供する複数のサーバの負荷状況を収集し、収集結果に基づき負荷分散を実現するバスシステムであって、
前記各サーバの負荷状況を収集する収集手段と、
前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測手段と、
収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択手段と、
選択されたサーバに前記クライアントからのリクエストを送信する送信手段とを備え、
前記選択手段は、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する、ことを特徴とするバスシステム。
【請求項2】
前記収集手段は、
前記各サーバが提供する各サービスから、当該サーバのリソースの使用状況をあらわす情報を収集する、ことを特徴とする請求項1に記載のバスシステム。
【請求項3】
前記サービスの過去の処理特性には、当該サービスの種類、当該サービスのリクエストメッセージサイズ、当該サービスの提供のために要したサーバの負荷量が含まれる、ことを特徴とする請求項1または2に記載のバスシステム。
【請求項4】
前記優先度は、前記選択手段により当該時点での負荷が大きなものほど高く設定される、ことを特徴とする請求項1〜3のいずれか1の請求項に記載のバスシステム。
【請求項5】
前記予測手段は、前記収集手段によって収集された各サーバの負荷状況に基づいて、予測する前記リクエストに応じたサービスの提供に係るサーバの負荷量を更新する、請求項1〜4のいずれか1の請求項に記載のバスシステム。
【請求項6】
クライアントと、
前記クライアントからのリクエストに応じてサービスを提供する複数のサーバと、
前記各サーバの負荷状況を収集し、収集結果に基づき負荷分散を実現するバスシステムと、を備えた負荷分散システムであって、
前記バスシステムは、
前記各サーバの負荷状況を収集する収集手段と、
前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測手段と、
収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択手段と、
選択されたサーバに前記クライアントからのリクエストを送信する送信手段とを備え、
前記選択手段は、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する、ことを特徴とする負荷分散システム。
【請求項7】
クライアントからのリクエストに応じてサービスを提供する複数のサーバの負荷状況を収集し、収集結果に基づき負荷分散を実現する方法であって、
前記各サーバの負荷状況を収集する収集ステップと、
前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測ステップと、
収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択ステップと、
選択されたサーバに前記クライアントからのリクエストを送信する送信ステップとを含み、
前記選択ステップにおいては、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する、ことを特徴とする負荷分散方法。
【請求項1】
クライアントからのリクエストに応じてサービスを提供する複数のサーバの負荷状況を収集し、収集結果に基づき負荷分散を実現するバスシステムであって、
前記各サーバの負荷状況を収集する収集手段と、
前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測手段と、
収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択手段と、
選択されたサーバに前記クライアントからのリクエストを送信する送信手段とを備え、
前記選択手段は、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する、ことを特徴とするバスシステム。
【請求項2】
前記収集手段は、
前記各サーバが提供する各サービスから、当該サーバのリソースの使用状況をあらわす情報を収集する、ことを特徴とする請求項1に記載のバスシステム。
【請求項3】
前記サービスの過去の処理特性には、当該サービスの種類、当該サービスのリクエストメッセージサイズ、当該サービスの提供のために要したサーバの負荷量が含まれる、ことを特徴とする請求項1または2に記載のバスシステム。
【請求項4】
前記優先度は、前記選択手段により当該時点での負荷が大きなものほど高く設定される、ことを特徴とする請求項1〜3のいずれか1の請求項に記載のバスシステム。
【請求項5】
前記予測手段は、前記収集手段によって収集された各サーバの負荷状況に基づいて、予測する前記リクエストに応じたサービスの提供に係るサーバの負荷量を更新する、請求項1〜4のいずれか1の請求項に記載のバスシステム。
【請求項6】
クライアントと、
前記クライアントからのリクエストに応じてサービスを提供する複数のサーバと、
前記各サーバの負荷状況を収集し、収集結果に基づき負荷分散を実現するバスシステムと、を備えた負荷分散システムであって、
前記バスシステムは、
前記各サーバの負荷状況を収集する収集手段と、
前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測手段と、
収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択手段と、
選択されたサーバに前記クライアントからのリクエストを送信する送信手段とを備え、
前記選択手段は、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する、ことを特徴とする負荷分散システム。
【請求項7】
クライアントからのリクエストに応じてサービスを提供する複数のサーバの負荷状況を収集し、収集結果に基づき負荷分散を実現する方法であって、
前記各サーバの負荷状況を収集する収集ステップと、
前記各サーバが提供したサービスの過去の処理特性に基づき、前記リクエストに応じたサービスの提供に係るサーバの負荷量を予測する予測ステップと、
収集された前記各サーバの負荷状況と、予測された前記サーバの負荷量に基づいて、リクエスト先となるサーバを選択する選択ステップと、
選択されたサーバに前記クライアントからのリクエストを送信する送信ステップとを含み、
前記選択ステップにおいては、前記リクエストに応じたサービスを提供することができ、かつ、前記各サーバの負荷状況に応じて設定される優先度の最も高いサーバを、前記リクエスト先となるサーバとして選択する、ことを特徴とする負荷分散方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2011−170751(P2011−170751A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2010−35933(P2010−35933)
【出願日】平成22年2月22日(2010.2.22)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願日】平成22年2月22日(2010.2.22)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
[ Back to top ]