説明

スループット管理方法およびスループット管理サーバ

【課題】ビジネスプロセスを実行する上で必要なWebサービスのスループットを確保することができるスループット管理方法を提供する。
【解決手段】クライアント300とサーバ200に各々にスループット制御部308、205を設ける。クライアント300のスループット制御部308は、サーバ200に対してスループットの新規確保リクエストなどのスループットに関するリクエストを送信することによってビジネスプロセスを実行するうえで必要なスループットを確保する。サーバ200のスループット制御部205は、スループットの新規確保リクエストなどを受付けてクライアントに割り当てるスループットを管理する。これにより、サーバ200は過剰なリクエスト処理を抑制でき、サービス不能状態を回避することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ビジネスプロセスを実行する上で必要なWebサービスのスループットを確保することができるスループット管理方法およびスループット管理システムに関する。
【背景技術】
【0002】
従来の分散処理技術といえば、CORBA(Common Object Request Broker Architecture)(登録商標)やJava(登録商標)−RMIといった比較的閉じたネットワークで行われるものが多かった。しかし、近年、インターネットの普及によりインターネットを介しての分散処理が行われるようになった。その代表的な例が、Webサービス(以下、WSという。)である。WSは、HTTP(HyperText Transfer Protocol)を利用してサービスを提供する。サービスを提供する側(サーバ側)は、WSDL(Web Services Description Language)を用いて、提供するサービスの内容および仕様を記述する。サービスを利用する側(クライアント側)は、サーバから提供されたWSDLを読み込み、記述された仕様にそってサービスを利用する。この際、クライアントからサーバにサービスを要求することを、「リクエストを送信する」という。
【0003】
また、WSの普及により、複数のWSを結合して実行する場合のプロセスを記述するプロセス記述言語の開発が進められている。プロセス記述言語の主な仕様に、Microsoft(登録商標)、IBM(登録商標)、BEA(登録商標)が提唱するBPEL4WS(Business Process Execution Language for Web Services)と呼ばれる仕様が知られている(例えば、非特許文献1参照)。
【0004】
WSを利用したプロセスの処理が普及すると様々なサービスが相互に呼ばれることなり、各WSの負荷分散(スループット管理)が必要となることが予想される。HTTPの場合、従来技術の負荷分散処理は、サーバ側による負荷分散が一般的であった。サーバ側による負荷分散処理は、基本的にある一定量までのリクエストを適切にサーバに振り分け、それ以上のリクエストが到達すると、そのリクエストを無視するようになっている。この方式では、クライアントはリクエストが無視されたと判断すると、リクエストを再送、もしくはリクエストをキャンセルする。
【非特許文献1】IBM、“Business Process Execution Language for Web Services version 1.1“、[online]、[平成18年9月11日]、インターネット<URL:http://www-106.ibm.com/developerworks/library/ws-bpel>
【発明の開示】
【発明が解決しようとする課題】
【0005】
従来のサーバ側での負荷分散処理を行うと、プロセスを実行中に呼出されたWSが、既に一定量以上のリクエストを受付けていた場合、そのリクエストは無視される。プロセスは複数のWSへのリクエストを集めたものであるため、1つでもWSの呼出に失敗すると、それがプロセス全体の処理に影響し、そのプロセスは再送処理などにより中断されてしまう、又は、異常終了となってしまい、安定的なプロセスの実行が困難となる。プロセスは複数のWSにリクエストを送信するため、もし複数のWSへのリクエストが安定的に処理されなければ、安定的なプロセスの実行は困難になる。
【0006】
そのため、できる限りリクエストが無視されるケースを取り除く必要がある。この場合考えられるのが、サーバで受付けるリクエスト件数のピーク時(スループット要求の高いとき)に合わせてサーバマシンを調達することである。しかし、この考え方が有効なのは、ピーク時(スループット要求の高いとき)とオフピーク時(スループット要求の低いとき)の差があまり無いケースである。一般的に、HTTPのリクエストは応答時間が短く、オフピーク時は負荷が小さく、ピーク時は極端に負荷が大きくなる傾向がある。そのため、ピーク時に合わせたサーバマシンを調達することは過剰なコストをかけることになる。このことを考えると、ピーク時に合わせたサーバマシンの調達というのは最適な構成法とはいえない。一方、リクエスト元によってリクエストの受付を判断するアクセス制御を用いることも考えられる。しかし、特定のリクエスト元のみにアクセスを許可する方法は、不公平であり、また、その特定のリクエスト元のリクエスト送出量が少なければ、サーバの処理能力を十分に活用することがないので、あまり有効な構成法とはいえない。
【0007】
本発明は、前記の課題を解決するための発明であって、ビジネスプロセスを実行する上で必要なWebサービスのスループットを確保することができるスループット管理方法およびスループット管理サーバを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、サーバとクライアントのそれぞれにリクエストの受付に関する制御処理部(例えば、スループット制御部205,308)を有し、その制御処理部を用いてサーバとクライアント間でリクエストの制御情報を交換することで、サーバとプロセスを実行するクライアントのそれぞれの処理時間、すなわち品質を保証するスループットを確保する。このような方法によれば、サーバがリクエストの過剰受付によるサービス不能状態に陥ることなく、かつ、クライアントで実行しているプロセスがWebサービス(WS)の呼出で遅延することなく正常に実行でき、そしてサーバの処理能力を有効に使用することができる。
【発明の効果】
【0009】
本発明によれば、ビジネスプロセスを実行する上で必要なWebサービスのスループットを確保することができる。
【発明を実施するための最良の形態】
【0010】
以下、本発明の実施形態について図面を参照して説明する。
図1は、本発明の実施形態のスループット管理システムのハードウェア構成を示すブロック図である。スループット管理システムは、1台または複数のクライアント300、1台または複数のサーバ200より構成される。クライアント300は、ハードディスク(HDD)321、中央演算装置(CPU)322、メモリ323、ネットワークカード(NIC)324などから構成される。HDD321は、クライアント300が処理を実行するための各種データを保存する。CPU322は、メモリ323に格納される各種プログラムを実行する。メモリ323は、クライアント300が処理を実行する各種プログラムおよび一時的なデータを保存する。NIC324は、ネットワーク100を介して、他のクライアントまたはサーバ200と各種データやコマンドを交換する。具体的には、NIC324は、リクエスト送出部306からの要求に応じて、ネットワーク100を介してサーバ200に、リクエストを送信する。クライアント300とサーバ200は、ある通信路、例えばEthernet(登録商標)などの汎用的なネットワーク100を介して接続されている。なお、CPUはCentral Processing Unitの略、HDDはHard Disk Driveの略、NICはNetwork Interface Cardの略である。
【0011】
クライアント300のHDD321には、ビジネスプロセス(以下、BPという。)を定義したBPELファイル301、確保したスループットの情報を格納するスループット情報格納DB305、BPのインターフェースを定義したWSDLファイル312が格納される。なお、BPELはBusiness Process Execution Languageの略、WSDLはWeb Services Description Languageの略である。
【0012】
メモリ323には、クライアント300が処理を実行する各種プログラムおよび一時的なデータが保存され、具体的には、BPELファイル301からスループットの確保が必要なWebサービスを抽出するWS抽出部303、BPELファイル301を読み込み、BPを実行するBP処理部304、Webサービスへのリクエストを送信するリクエスト送出部306、Webサービスへのリクエストの送信回数を測定するスループット測定部307、スループット情報の制御を行うスループット制御部308のプログラム、およびスループットの管理に使用する閾値用定数311が格納される。
【0013】
また、サーバ200は、ハードディスク(HDD)221、中央演算装置(CPU)222、メモリ223、ネットワークカード(NIC)224などから構成される。HDD221は、サーバ200が処理を実行するための各種データを保存する。CPU222は、メモリ223に格納される各種プログラムを実行する。メモリ223は、サーバ200が処理を実行する各種プログラムおよび一時的なデータを保存する。NIC224は、ネットワーク100を介して、クライアント300と各種データやコマンドを交換する。具体的には、ネットワーク100を介して送られてくるクライアント300のデータを受信する。
【0014】
サーバ200のHDD221には、Webサービスを定義したWS定義ファイル210、スループット情報を格納するスループット情報格納DB206が格納される。
【0015】
メモリ223には、サーバ200が処理を実行する各種プログラムおよび一時的なデータが保存され、具体的には、クライアント300からのリクエストを受付けるリクエスト受付部203、クライアント300からのリクエストを受信した回数を測定するスループット測定部204、スループット情報を制御するスループット制御部205のプログラム、およびサーバ管理者が管理するスループット判定のために用いる閾値用定数209が格納される。
【0016】
クライアント300側のスループット制御部308とサーバ200側のスループット制御部205が、それぞれスループットに関する情報を交換することでスループットの管理を行う。その情報の交換には、SOAP(Simple Object Access Protocol)が使用される。
【0017】
図2は、サーバのソフトウェアの構成例を示す説明図である。サーバ200は、クライアント300(300A,300B)からのリクエストを受信し、リクエスト受付部203で受付ける。クライアント300A,300Bは、複数のクライアント300の例として示している。クライアント300は、クライアント端末利用者の入力を受付けて、BPを実行する。BP実行中にWebサービスを呼び出す必要がある場合は、リクエストを生成し、リクエスト受付部203に送付する。
【0018】
リクエスト受付部203は、スループット測定部204を用いて、リクエスト毎のスループットの測定を行う。スループット測定部204で得られたリクエスト毎のスループットは、スループット情報格納DB206に格納される。
【0019】
クライアント300から送付されるリクエストには、スループット制御用のリクエストと、各Webサービス用のリクエストとがある。リクエスト受付部203は、スループット制御用のリクエストの場合には、そのリクエストをスループット制御部205に送信し、それ以外のリクエストの場合には、キュー207にリクエストを格納する。スループット制御用のリクエストは、スループットの新規確保リクエスト、スループット情報の更新リクエスト、スループット情報削除リクエストがある。
【0020】
スループット制御部205は、リクエスト受付部203から転送されたスループット制御用のリクエストの処理を行う。リクエスト実行スレッド208は、キュー207からリクエストを取り出しリクエストを実行する。なお、閾値用定数209は、サーバ管理者が管理するスループット判定のために用いる。
【0021】
図3は、クライアントのソフトウェアの構成例を示す説明図である。BPELファイル301,302は、ユーザによって定義されたBPが記述されているファイルである。BP処理部304は、BPELファイル301,302を読み込み、BPを実行し、他のサービスを呼び出す必要があれば、そのリクエストをリクエスト送出部306に送信する。リクエスト送出部306は、呼び出す必要のあるサービス309,310へリクエストを送信する。また、リクエスト送出部306には、Webサービスへのリクエストの送信回数を測定するスループット測定部307を有している。
【0022】
WS抽出部303は、新しいBPELファイル301,302と、そのインターフェースを記述したWSDLファイル312が配置される毎に実行される。WS抽出部303は、BPELファイル301,302に定義された呼び出されるWebサービスを抽出し、そのサービス名をスループット制御部308に送信する。スループット制御部308は、受理したそのサービス名に応じて、スループットの新規確保、スループット情報の更新、スループット情報の削除を行う。確保したスループット情報(例えば、BP、サービス、確保スループット)は、スループット情報格納DB305に格納される。なお、閾値用定数311は、スループットの管理に使用される。
【0023】
<サーバおよびクライアントのスループット情報格納DB>
図4は、サーバのスループット情報格納DBに格納されているスループット情報テーブルの構成例を示す説明図である。サーバ200のスループット情報格納DB206には、スループット情報テーブル401を格納する。スループット情報テーブル401には、各クライアントが各Webサービスに対して確保したスループット情報を格納しており、クライアント、BP名、サービス、更新日、確保スループット、更新日からのリクエスト数を保持する。クライアント、BP名、サービスのカラムは、クライアント300からスループットの新規確保リクエストが送信され、そのリクエストが受理されたときに入力される。更新日は、スループット制御部205が、図16で示すように、一定時間毎に、確保スループットと実測スループット(更新日からのリクエスト数÷更新日からの経過時間から計算)の比較を行うたびに更新される。確保スループットは、毎秒あたりのリクエスト数を表し、スループットの新規確保リクエスト受理、スループット情報の更新リクエスト受理、およびサーバ200による確保スループット値の更新処理によって更新される。更新日からのリクエスト数は、スループット測定部204(図2参照)によって管理され更新日から受付けたリクエスト数を確保している。図4に示すように、例えば、クライアント300Aは、BP1のビジネスプロセスを実行する場合に、Service1のサービスをリクエストし、そのリクエストに対して確保されたリクエストは、毎秒100リクエストである。また、更新日2006年1月11日からのリクエスト数は、303290であることが示されている。同様に、クライアント300Bは、BP2のビジネスプロセスを実行する場合に、Service2のサービスをリクエストし、そのリクエストに対して確保されたリクエストは、毎秒50リクエストである。また、更新日2006年1月7日からのリクエスト数は、8249であることが示されている。
【0024】
図5は、サーバのスループット情報格納DBに格納されるクライアント情報テーブルおよびドメイン振り分けテーブルの構成例を示す説明図である。サーバ200のスループット情報格納DB206(図2参照)には、クライアント情報テーブル501およびドメイン振り分けテーブル502を格納する。クライアント情報テーブル501は、クライアント300がどのドメインに属しているかを保存している。このクライアント情報テーブル501は、スループットの新規確保リクエストが受理されたときに、そのクライアント名とクライアントのドメインが入力される。ドメイン振り分けテーブル502は、サーバ管理者が設定し、クライアント300のURL(Uniform Resource Locator)がどのドメインに属するかを保存している。
【0025】
図6は、サーバのスループット情報格納DBに格納されるドメイン情報テーブルの構成例を示す説明図である。サーバ200のスループット情報格納DB206(図2参照)には、ドメイン情報テーブル601を格納する。ドメイン情報テーブル601は、ドメイン毎に更新期間、許容スループット、および総確保スループットの情報を持つ。更新期間は、サーバ管理者が設定する。許容スループットは、サーバ管理者が設定し、そのドメインに属するクライアントで確保できるスループットの合計値を示す。総確保スループットは、現在そのドメインに属しているクライアントで確保されているスループットの合計値を示す。この総確保スループットのカラムは、スループット情報テーブル401の確保スループットのカラムに変更があるたびに更新される。
【0026】
図7は、クライアントのスループット情報格納DBに格納されるスループット情報テーブルの構成例を示す説明図である。クライアント300のスループット情報格納DB305には、スループット情報テーブル701を格納する。スループット情報テーブル701は、BP、サービス、確保スループット、更新日からの送信リクエスト数を保持する。BPのカラムは、スループットを確保したBP名が入力される。サービスのカラムは、スループットを確保したサービス名が入力される。BPおよびサービスのカラムは、スループットの新規確保時に入力される。確保スループットのカラムは、毎秒あたりの確保しているリクエスト数を表し、対象のサービスに対して、現在の確保しているスループットが入力される。確保スループットのカラムは、スループットの新規確保およびスループット値の更新時に入力される。
【0027】
<サーバのスループット測定部>
スループット測定部204の動作を、図2を参照して説明する。
スループット測定部204は、クライアント300(クライアント300A,300B)からのリクエストを受ける毎に、リクエストのクライアント名、BP名、サービス名(呼び出しサービス名)を抽出する。その抽出したクライアント名およびサービス名をキーに、スループット情報格納DB206内のスループット情報テーブル401(図4参照)から該当レコードを取り出し、その更新日からのリクエスト数の値を更新する。該当レコードがない場合はエラーをクライアント300に送信する。
【0028】
<クライアントとサーバ間のメッセージの流れ>
図8は、クライアントとサーバ間のメッセージの流れを示す説明図である。まずクライアント300は、新しいBPが配備されると、サーバ200に対して新規確保リクエストを送信する(ステップS801)。サーバ200は、その新規確保リクエストに対して応答する(ステップS802)。クライアント300は、その新規確保リクエストに対して応答を受理すると、サーバ200で動作しているサービスへリクエストを送信する(ステップS803)。サーバ200は、そのリクエストに対して応答する(ステップS804)。クライアント300は、より大きなスループットが必要と判断した場合、サーバ200に対してスループットの更新リクエストを送信する(ステップS805)。サーバ200は、その更新リクエストに対して応答する(ステップS806)。サーバ200は、クライアント300に対し不要なスループットが確保されていると判断した場合、スループットの更新リクエストを送信する(ステップS807)。クライアント300は、BPが配備されなくなったらサーバ200に対しスループットの削除リクエストを送信する(ステップS808)。または、サーバ200は、一定時間リクエストを送信しなかったクライアント300に対し、スループットの削除リクエストを送信する(ステップS809)。
【0029】
図9、図10は、図8で示したリクエストおよび応答のメッセージを示す構成例である。クライアント300とサーバ200との情報の交換には、SOAP(Simple Object Access Protocol)が使用される。ステップS801からステップS808に対応するメッセージは、各々、新規確保リクエストメッセージ801m、新規確保リクエストの応答メッセージ802m、サービスへのリクエストのメッセージ803m、サービスからの応答メッセージ804m、クライアントからのスループット更新リクエストメッセージ805m、更新リクエストの応答メッセージ806m、サーバからのスループット更新リクエストメッセージ807m、クライアントからのスループット削除リクエストメッセージ808m、サーバからのスループット削除リクエストメッセージ809mに示す。
【0030】
サーバ200では、受信したリクエストについてクライアントとプロセスを判別する識別子として、HTTPヘッダとWSリクエストの標準であるSOAP(Simple Object Access Protocol)ヘッダを用いることができる。また、HTTPヘッダやSOAPヘッダは、任意の情報を付加できるため、クライアント300でサーバ200にリクエストを送信する際に、HTTPヘッダやSOAPヘッダに、クライアントの識別子とプロセスの識別子とを付加することで、サーバでクライアントとプロセスを識別することができる。
【0031】
<サーバのスループット制御部>
スループット制御部205(図2参照)の動作を説明する。スループット制御部205は、スループットの新規確保、スループット情報の更新、スループット情報の削除の動作を行う。
【0032】
<スループットの新規確保>
図11は、スループット新規確保リクエスト受信時のサーバ側の処理を示すフローチャートである。スループットの新規確保は、クライアント300がスループットの確保リクエストをリクエスト受付部203に送信することから開始される。リクエスト受付部203は、受信したリクエストがスループット確保リクエストか否かを判定する(ステップS1101)。スループットの確保リクエストには、クライアント300のURL、クライアント名、およびクライアント300が実行するBP名、サービス名、要求スループット値が含まれている。受信したリクエストがスループット確保リクエストである場合(ステップS1101,Yes)、リクエスト受付部203は、そのリクエストをスループット制御部205に送信する。
【0033】
スループット制御部205は、受信したスループット確保リクエストの中から、クライアント300のURL・クライアント名・BP名・サービス名・要求スループット値を取り出す(ステップS1102)。スループット制御部205は、取り出した情報をもとにリクエストを受理するか否かを判定する(ステップS1103)。受理するか否かの判定は、図12を参照して説明する。
【0034】
図12は、サーバ側のスループット割当可否の処理を示すフローチャートである。スループット制御部205(図2参照)は、取り出したクライアント名、BP名、サービス名を用いて、スループット情報テーブル401から該当レコードを抽出する(ステップS1201)。そして、該当レコードが有るか否かを判定する(ステップS1202)。
【0035】
該当するレコードがある場合(ステップS1202,Yes)、スループット制御部205は、既にスループットは確保されているので不受理と判断する(ステップS1207)。該当レコードが無い場合(ステップS1202,No)、スループット制御部205は、要求されたスループットが確保できるか否かの判定を行う。この判定は、まずクライアント300のURLからドメイン振り分けテーブル502(図5参照)を参照し該当ドメインを決定する(ステップS1203)。ドメイン情報テーブル601(図6参照)を参照し、該当ドメインのレコードを抽出する(ステップS1204)。スループット制御部205は、要求されたスループットが確保できるか否かを判定する(ステップS1205)。判定方法としては、該当レコードの「(許容スループット−総確保スループット)>(要求スループット)」の真偽を計算する。真の場合(ステップS1205,Yes)は、受理と判断する(ステップS1206)。偽の場合(ステップS1205,No)は、要求されたスループットが確保できないため不受理と判断する(ステップS1207)。
【0036】
図11に戻り、不受理の場合(ステップS1103,No)は、クライアント300に不受理を返答して終了する(ステップS1106)。受理の場合(ステップS1103,Yes)、スループット情報格納DB206の更新を行う(ステップS1104)。DBの更新について図13を参照して説明する。
【0037】
図13は、サーバ側のスループット割当時の処理を示すフローチャートである。スループット制御部205は、ドメイン情報テーブル601の該当レコードの総確保スループットカラムに(総確保スループット+要求スループット)を新しい総確保スループット値として更新する(ステップS1301)。次に、スループット情報テーブル401を参照し、新規レコードを追加し、各項目についてクライアント、BP名、対象サービス、確保スループットを格納する(ステップS1302)。そして、スループット制御部205は、クライアント情報テーブル501を参照し、クライアント名をキーに該当レコードが有るか否かを判定する(ステップS1303)。該当レコードが有る場合(ステップS1303,Yes)、処理を終了する。該当レコードがない場合(ステップS1303,No)、新規レコードを追加しクライアントとドメイン振り分けテーブル502を参照して取得した該当ドメインを格納する(ステップS1304)。スループット情報格納DB206の更新が終了する。その後、図11に戻り、クライアント300に受理の応答を返し(ステップS1105)、一連の処理を終了する。
【0038】
<スループット情報の更新>
スループット情報の更新について、適宜図2、図4、図6を参照して説明する。
スループット情報の更新は、クライアント300側およびサーバ200側の双方で行う。クライアント300側は、クライアント300が、スループット情報の更新リクエストをリクエスト受付部203に送信する。スループット情報の更新リクエストには、クライアント、BP名、対象サービス、新しい要求スループットの値が格納されている。リクエスト受付部203は、スループット情報の更新リクエストが送られてきたことを検知してそのスループット情報の更新リクエストをスループット制御部205に転送する。スループット制御部205は、スループット情報の更新リクエストの中から、クライアント名・BP名・対象サービス名・新しい要求スループットを取り出す。スループット制御部205は、スループット情報テーブル401からクライアント・BP名・サービスをキーにして該当レコードを抽出する。該当レコードの確保スループットと新しい要求スループットを比較して、新しい要求スループットのほうが小さければ、該当レコードの値を一時的に保存して、ドメイン情報テーブル601の総確保スループットの更新および該当レコードの更新を行う。ドメイン情報テーブル601の更新の詳細について、図14を参照して説明する。
【0039】
図14は、サーバ側で割り当てたスループット値を更新する場合のDBの処理を示すフローチャートである。スループット制御部205(図2参照)は、リクエストに含まれているクライアント名から、クライアント情報テーブル501(図5参照)からクライアントのドメインを抽出し、スループット情報テーブル401(図4参照)から得られた確保スループット(A)を抽出し、リクエストに含まれている要求スループット(B)を抽出する(ステップS1401)。クライアント300のドメインをキーにして、ドメイン情報テーブル601の該当レコードを抽出する(ステップS1402)。該当レコードの総確保スループットのカラムを(現在の総確保スループットの値−A+B)に更新する(ステップS1403)。
【0040】
具体的には、ステップS1401において、クライアント300Aの場合、図4を参照して、確保スループットから、確保スループット(A)は毎秒100リクエストとなる。また、要求スループット(B)を、例えば、毎秒200リクエストとする。ステップS1402において、図5を参照してクライアント300Aの名のドメイン名は、同一ドメインとなり、そのドメインの総確保スループットは、図6を参照して、毎秒100リクエストを得る。よって、ステップS1403において、(現在の総確保スループットの値−A+B)は、100−100+200と計算でき、毎秒200リクエスト(200/sec)となる。
【0041】
新しい要求スループット値のほうが大きければ、ドメイン情報テーブル601の総確保スループットのカラムを参照し、クライアント300のドメインに対して、新しい要求スループットについて割当可能か否かを判定する。割当可能か否かの判定の詳細は、図15を参照して説明する。
【0042】
図15は、サーバ側で、クライアントから要求されたスループットについて割当可否の判定処理を示すフローチャートである。スループット制御部205(図2参照)は、リクエストに含まれているクライアント名からクライアント情報テーブル501(図5参照)を参照してクライアント300のドメインを抽出し、スループット情報テーブル401(図4参照)から得られた確保スループット(A)を抽出し、リクエストに含まれている要求スループット(B)を抽出する(ステップS1501)。次に、クライアント300のドメインをキーにして、ドメイン情報テーブル601(図6参照)の該当レコード(総確保スループット)を抽出する(ステップS1502)。そして、スループット制御部205は、「(601の総確保スループット−A+B)>該当レコードの許容スループット」で有るか否かを判定する(ステップS1503)。判定結果が偽の場合(ステップS1503,No)は、割当可能と判断する(ステップS1504)。判定結果が真の場合(ステップS1503,Yes)は、割当不可能と判断する(ステップS1505)。
【0043】
スループット制御部205は、割当可能と判断すれば、現在の確保スループット値(C)を一時的に保存し、スループット情報テーブル401の該当レコードの確保スループットを更新する。また、クライアントをキーにクライアント情報テーブル501を参照し該当レコードを抽出する。そのクライアント情報テーブル501の該当レコードのドメインカラムの値をキーにドメイン情報テーブル601の該当レコードを抽出する。ドメイン情報テーブル601の総確保スループットを新しい総確保スループット(現在の総確保スループット―C+要求されたスループット)に更新する。次に、サーバ200側で定期的に行うスループット情報の更新を、図16を参照して説明する。
【0044】
図16は、サーバ側スループット制御部によるスループット情報の更新処理を示すフローチャートである。サーバ200側のスループット制御部205(図2参照)は、スループット情報の更新の動作を行う。一定間隔ごとに、スループット情報テーブル401(図4参照)のレコードの全てを参照する(ステップS1601)。各レコードについて更新対象レコードか否かを判定する(ステップS1602)。この判定の詳細について、図17を参照して説明する。
【0045】
図17は、サーバ側のスループット情報更新時にスループット情報テーブルのレコードのうち対象となるレコードの判定処理を示すフローチャートである。スループット制御部205は、まず、クライアント情報テーブル501を参照しクライアント名からドメインを抽出し(ステップS1701)、そのドメインのカラム値をキーに、ドメイン情報テーブル601から該当レコードを抽出し(ステップS1702)、該当レコードの更新期間を抽出する(ステップS1703)。そして、スループット制御部205は、更新期間が無期限か否かを判定する(ステップS1704)。更新期間が無期限の場合(ステップS1704,Yes)、非対象レコードとなる(ステップS1708)。更新期間が無期限でない場合(ステップS1704,No)、すなわち、更新期間が設定されている場合、スループット制御部205は、スループット情報テーブル401の該当レコードから更新日カラムを取得する(ステップS1705)。そして、((現在日時−更新日カラムの値)<更新間隔)で有るか否かを判定する(ステップS1706)。判定結果が真の場合(ステップS1706,Yes)は、非対象レコードとなる(ステップS1708)。判定結果が偽の場合(ステップS1706,No)は、対象レコードとなる(ステップS1707)。
【0046】
図16に戻り、対象レコードである場合(ステップS1602,Yes)、ステップS1603の処理に移る。対象レコードでない場合(ステップS1602,No)、次のレコードに移る(ステップS1601)。ステップS1603において、スループット制御部205は、「確保スループット値×サーバ管理者が管理する閾値用定数209」を閾値とし、測定スループットが閾値未満であるか否かを判定する。測定スループットが閾値未満でない場合(ステップS1603,No)、スループット制御部205は、該当レコードの更新日の更新とリクエスト数のクリアを行い(ステップS1606)、次のレコードへ移る。測定スループットが閾値未満である場合(ステップS1603,Yes)、スループット制御部205は、閾値を新たな確保スループット(確保値)として採用し、スループット情報テーブル401およびドメイン情報テーブル601を更新する(ステップS1604)。そして、スループット制御部205は、その新たな確保スループットをクライアント300側に伝達する(ステップS1605)。クライアント側に伝達した後、該当レコードの更新日の更新とリクエスト数のクリアを行い(ステップS1606)、次のレコードに移る。
【0047】
<スループット情報の削除>
スループット情報の削除について説明する。
スループット情報の削除は、クライアント300からスループット情報の削除リクエストを送信、または、サーバ200側で一定間隔以上アクセスがない場合に行われる。サーバ200側で一定間隔以上アクセスがない場合に行われるサーバ200側でのスループット情報の削除について、図18を参照して説明する。
【0048】
図18は、サーバ側でクライアントからのアクセス有無の判定処理を示すフローチャートである。図18の処理は、スループット制御部205(図2参照)による処理である。スループット制御部205は、スループット情報テーブル401を参照し一定間隔ごとに各テーブルについて繰り返す(ステップS1801)。まず、クライアントのカラムからクライアント名を抽出し、クライアント情報テーブル501を参照してクライアント名からドメインを抽出する(ステップS1802)。次に、そのドメインをキーにドメイン情報テーブル601から該当レコードを抽出する(ステップS1803)。そして、該当レコードの更新期間を抽出する(ステップS1804)。その後、更新期間が無期限か否かを判定する(ステップS1805)。
【0049】
更新期間が無期限の場合(ステップS1805,Yes)、アクセス有りとする(ステップS1809)。更新期間が無期限でない場合(ステップS1805,No)、すなわち、更新期間が設定されている場合、スループット情報テーブル401のレコードから更新日を取得する(ステップS1806)。そして、((現在日時−更新日)<更新間隔)か否かを判定する(ステップS1807)。判定結果が真の場合(ステップS1807,Yes)、まだ更新間隔内であるのでアクセス有りとする(ステップS1809)。判定結果が偽の場合(ステップS1807,No)、スループット情報テーブル401の更新日からのリクエスト数のカラム値を参照し、0より大であるか否かを判定する(ステップS1808)。0より大であれば(ステップS1808,Yes)、アクセス有りとする(ステップS1809)。0であれば(ステップS1808,No)、アクセス無しとする(ステップS1810)。アクセス無しの場合、該当レコードを削除する(ステップS1811)。
【0050】
スループット情報の削除リクエストには、クライアント名・BP名・削除対象サービス名が格納されている。スループット情報の削除リクエストを受け取ったリクエスト受付部203は、スループット情報の削除リクエストが送られてきたことを検知して、そのリクエストをスループット制御部205に転送する。スループット制御部205は転送されたスループット情報の削除リクエストの中から、クライアント名・クライアントのドメイン・削除対象サービス名を取り出す。
【0051】
スループット制御部205は、スループット情報テーブル401を参照し、クライアント・BP名・サービスをキーにして該当レコードを抽出する。該当レコード・クライアント情報テーブル501を参照し、ドメイン情報テーブル601の総確保スループットカラムの値を更新する。次に、スループット情報テーブル401の該当レコードを参照し、クライアント300のみをキーにして該当レコードを参照する。該当レコードが無ければ、クライアント情報テーブル501を参照し、クライアント300をキーにして該当レコードを抽出し、その該当レコードを削除する。最後に、スループット情報テーブル401の該当レコードを削除する。
【0052】
<クライアントのリクエスト送信時の処理>
クライアント300のリクエスト送信時の動作を説明する。
図3に示したように、BPELファイル301、302は、ユーザによって定義されたBPが記述されている。BP処理部304は、BPELファイル301,302を読み込みBPを実行し、他のサービスを呼び出す必要があればそのリクエストをリクエスト送出部306に送信する。リクエストの送信処理について、図19を参照して説明する。
【0053】
図19は、クライアント側でリクエスト送信時の処理を示すフローチャートである。まず、BP処理部304(図3参照)の実行スレッド内でWSの呼出が発生し、リクエストが生成される(リクエスト発生)(ステップS1901)。BP処理部304は、生成されたリクエストをリクエスト送出部306に転送する(ステップS1902)。スループット測定部307は、リクエストの呼び出し元BPと呼び出し先サービス(即ちWS)を抽出する(ステップS1903)。スループット測定部307は、抽出したBPとサービスをキーにスループット情報テーブル701から該当レコードを抽出し(ステップS1904)、該当レコードの更新日からの送信リクエスト数のカラムに1を追加する(ステップS1905)。最後に、リクエスト送出部306は、リクエストをWSに向けて送信する(ステップS1906)。
【0054】
<クライアントのWS抽出処理>
クライアント300のWS抽出部303は、新しいBPELファイル301,302とそのインターフェースを記述したWSDLファイル312が配置されるごとに実行される。WS抽出部303は、BPELファイル301,302に定義された呼び出されるWebサービスを抽出し、そのサービス名をスループット制御部308に送信する。抽出の実施例をBPEL4WSの仕様を用いて図20を参照して説明する。
【0055】
図20は、ビジネスプロセス(BP)が呼出すWebサービス(WS)の抽出方法の一実施例を示す説明図である。図20の処理は、WS抽出部303(図3参照)による処理である。BPEL4WSでWSを呼出す場合は<invoke>要素で示されているため、その<invoke>要素をBPELファイル301,302から抽出する(ステップS2001)。<invoke>要素には呼び出し先の情報がpartnerLink属性として設定されているため、そのpartnerLink名(A)を抽出し、partnerLinkの情報は、<partnerLink>要素に記述されているため、(A)の情報を元に、<partnerLinks>要素から該当する<partnerLink>要素を抽出する(ステップS2002)。その要素に記述されているpartnerLinkType名(B)、partnerRole名(C)を抽出し、partnerLinkType、partnerRoleについてはBPのインターフェースを定義したWSDLに記述されているため、WSDLファイル312から(B)、(C)の情報を元に<partnerLinkType>要素を抽出する(ステップS2003)。そして、その要素に記述されているportType名(D)を抽出し、(D)の情報を元に、<binding>要素を抽出する(ステップS2004)。そのname名(E)を抽出し、(E)を元に、<port>要素を抽出する(ステップS2005)。そして、その<port>要素に含まれているname属性からサービス名を取得する(ステップS2006)。
【0056】
<クライアントのスループットの新規確保>
スループットの新規確保を、図21を参照して説明する(適宜図3、図7参照)。
図21は、ビジネスプロセス(BP)新規配備時のクライアントの処理を示すフローチャートである。スループットの新規確保は、新しいBPELファイル301,302とそのインターフェースを記述したWSDLファイル312が配置された場合に開始される。新しいBPELファイル301,302が定義されると、WS抽出部303が解析し、Webサービスの呼び出しが有りか無しかを判定する(ステップS2101)。Webサービスの呼び出しが無い場合(ステップS2101,No)は、処理を終了する。Webサービスの呼び出しがある場合(ステップS2101,Yes)は、呼び出すWebサービスの情報をスループット制御部308に送信する。
【0057】
スループット制御部308(図3参照)は、呼び出すWebサービス分を繰り返す(ステップS2102)。具体的には、それぞれのWebサービスに対してクライアント300のURL・クライアント名・BP名・対象サービス名・クライアント毎に決定した確保スループットを含めたスループットの新規確保リクエストを生成し、リクエスト送出部306経由で送信する(ステップS2103)。送信したスループットの新規確保リクエストに対してWebサービスからスループット制御部308に応答があり、その応答にはリクエストの受理・不受理が格納されているので、その応答内容を判定する(ステップS2104)。不受理の応答である場合(ステップS2104,No)、不受理の理由がスループット不足場合か否かを判定する(ステップS2107)。不受理の理由がスループット不足である場合(ステップS2107,Yes)は、一定時間待ち(ステップS2105)、再度そのWebサービスに対してスループットの新規確保リクエストを送信する(ステップS2103)。不受理の理由がスループット不足でない場合(ステップS2107,No)、すなわち、既に割当済みの場合は、次のWebサービスのスループット確保処理に移る。サーバからの応答が受理の場合(ステップS2104,Yes)は、BP、サービス、確保スループットをスループット情報格納DB305のスループット情報テーブル701(図7参照)に登録する(ステップS2106)。
【0058】
<サーバからクライアントへのスループット情報の更新>
スループット情報の更新について説明する。
スループット情報の更新は、クライアント300側・サーバ200側の双方で行う。サーバ200からの更新について、図22を参照して説明する。
【0059】
図22は、サーバ側からクライアントへのスループット値の更新処理を示す説明図である。サーバ200側は、図16で説明したように、所定の条件を満たすと、スループット変更リクエストを生成する(ステップS2201)。そして、そのリクエストをクライアント300に送信する(ステップS2202)。このリクエストのメッセージ(電文)には、スループットが変更になったWebサービス名・対象BP名・新しく設定されたスループットの値が含まれている。クライアント300は、このリクエストを受信する(ステップS2203)と、スループット情報格納DB305のスループット情報テーブル701(図7参照)を参照し、BP名・Webサービス名をキーに該当レコードを抽出する(ステップS2204)。そして、そのレコードの確保スループット値を更新する(ステップS2205)。
【0060】
<クライアントのスループット情報の更新>
クライアント側のスループット情報の更新について、図23を参照して説明する。
図23は、クライアント側スループット制御部によるスループット情報の更新処理を示すフローチャートである。図23に示す処理は、スループット制御部308(図3参照)による処理である。スループット制御部308は、一定間隔毎にスループット情報テーブル701(図7参照)の全てのレコードを参照(ステップS2301)し、更新日からの送信リクエスト数から(更新日からの送信リクエスト数÷一定間隔の秒数)を計算し実測スループット値を求める。次に、「確保スループット値×クライアント管理者が管理する閾値用定数311」を閾値とし、その実測スループット値が閾値以上か否かを判定する(ステップS2302)。閾値以上の場合(ステップS2302,Yes)は、サーバ200に対して、現在のスループットで確保可能か否かについて更新リクエストを送信し問い合わせる(ステップS2303)。サービスからの問合せ応答があれば、サーバ200からの応答がスループット割当て可能か否かを判定する(ステップS2304)。スループット割当て可能の場合(ステップS2304,Yes)、現在のスループット値を新しい確保スループットとして採用し該当レコードを更新し(ステップS2305)、ステップS2308へ進む。ステップS2304において、スループット割当て不可の場合(ステップS2304,No)、ステップS2308へ進む。
【0061】
ステップS2302において、閾値未満の場合(ステップS2302,No)は、余分なスループットを確保していると判断し閾値を新しい確保スループットとして採用し該当レコードを更新する(ステップS2306)。そして、その確保スループットを確保済みのスループット値更新リクエスト内に格納して、リクエスト送出部経由でサーバ200に送信する(ステップS2307)。最後にリクエスト数の更新として、更新日からのリクエスト数を0にする(ステップS2308)。
【0062】
<クライアントのスループット情報の削除>
スループット情報の削除について、図24を参照して説明する。
図24は、ビジネスプロセス(BP)削除時におけるクライアント側での処理を示すフローチャートである。図24に示す処理は、スループット制御部308(図3参照)による処理である。スループット情報の削除は、配置されていたBPが削除する場合に行われる(ステップS2401)。BPが削除されようとすると、スループット制御部308は、スループット情報テーブル701(図7参照)を参照し、削除対象のBPのレコードを抽出する(ステップS2402)。そして、以下の処理は、その各該当レコードに対して繰り返される(ステップS2403)。まず、サービスのカラムを参照し、WSを抽出する(ステップS2404)。抽出したWSに対してスループット情報の削除リクエストを送信する(ステップS2405)。その後、該当レコードを削除する(ステップS2406)。
【0063】
本実施形態では、クライアント300は、Webサービス(WS)を実行するのに必要なスループット要求として単位時間あたりのリクエスト数を、Webサービスを実行する前に予め前記サーバにスループット要求を送信し、サーバ200は、前記スループット要求の単位時間あたりのリクエスト数を確保している。
【0064】
本発明によるサーバ200は、クライアント300によるプロセスの処理中に呼び出されたWSのリクエストについて、そのプロセスに対して該当サーバが処理できる総スループットのうちその一部分を割り当てる手段と、そのリクエストがそのプロセスに割り当てられたスループットの範囲内であるか否かを判定する手段と、プロセスからのリクエスト受信状況を監視し不要なスループットを削除する手段と、プロセスに割り当てたスループットを変更するとその変更についてクライアントに通知する手段を備えることを特徴とする。
【0065】
本発明によるプロセスを実行するクライアント300は、プロセスを新規に配備するときに一定量のスループットの確保をサーバ側に通知する手段と、プロセスの実行状況を監視しプロセスで呼び出す各サーバについて確保しているスループットの変更が必要なときにその変更をサーバに通知する手段と、プロセスを削除するときに確保していたスループットをサーバ側に削除するように通知する手段を備えることを特徴とする。
【0066】
本発明によれば、サーバ200がリクエストメッセージからクライアントとその実行中のプロセスを識別する手段と、識別したクライアントとプロセスからそれに割り当てたスループットを識別する手段と、識別したクライアントとプロセスからのリクエストがそれに割り当てられたスループット内であればリクエストを処理することを特徴とする。これにより、クライアントからのリクエストの集中によるサーバのサービス不能状態に陥ることはなく、クライアント300が、ビジネスプロセスを実行する上で必要なWebサービス(WS)のスループットを確保することができる。
【0067】
本発明によるサーバ200では、受信したリクエストについてクライアントとプロセスを判別する識別子として、HTTPヘッダとWSリクエストの標準であるSOAP(Simple Object Access Protocol)ヘッダを用いることができる。
【図面の簡単な説明】
【0068】
【図1】本発明の実施形態のスループット管理システムのハードウェア構成を示すブロック図である。
【図2】サーバのソフトウェアの構成例を示す説明図である。
【図3】クライアントのソフトウェアの構成例を示す説明図である。
【図4】サーバのスループット情報格納DBに格納されているスループット情報テーブルの構成例を示す説明図である。
【図5】サーバのスループット情報格納DBに格納されるクライアント情報テーブルおよびドメイン振り分けテーブルの構成例を示す説明図である。
【図6】サーバのスループット情報格納DBに格納されるドメイン情報テーブルの構成例を示す説明図である。
【図7】クライアントのスループット情報格納DBに格納されるスループット情報テーブルの構成例を示す説明図である。
【図8】クライアントとサーバ間のメッセージの流れを示す説明図である。
【図9】図8で示したリクエストおよび応答のメッセージを示す構成例である。
【図10】図8で示したリクエストおよび応答のメッセージを示す構成例である。
【図11】スループット新規確保リクエスト受信時のサーバ側の処理を示すフローチャートである。
【図12】サーバ側のスループット割当可否の処理を示すフローチャートである。
【図13】サーバ側のスループット割当時の処理を示すフローチャートである。
【図14】サーバ側で割り当てたスループット値を更新する場合のDBの処理を示すフローチャートである。
【図15】サーバ側で、クライアントから要求されたスループットについて割当可否の判定処理を示すフローチャートである。
【図16】サーバ側スループット制御部によるスループット情報の更新処理を示すフローチャートである。
【図17】サーバ側のスループット情報更新時にスループット情報テーブルのレコードのうち対象となるレコードの判定処理を示すフローチャートである。
【図18】サーバ側でクライアントからのアクセス有無の判定処理を示すフローチャートである。
【図19】クライアント側でリクエスト送信時の処理を示すフローチャートである。
【図20】ビジネスプロセス(BP)が呼出すWebサービス(WS)の抽出方法の一実施例を示す説明図である。
【図21】ビジネスプロセス(BP)新規配備時のクライアントの処理を示すフローチャートである。
【図22】サーバ側からクライアントへのスループット値の更新処理を示す説明図である。
【図23】クライアント側スループット制御部によるスループット情報の更新処理を示すフローチャートである。
【図24】ビジネスプロセス(BP)削除時におけるクライアント側での処理を示すフローチャートである。
【符号の説明】
【0069】
100 ネットワーク
200 サーバ
203 リクエスト受付部
204 スループット測定部
205 スループット制御部
206 スループット情報格納DB
210 Webサービス(WS)の定義ファイル
221 HDD
222 CPU
223 メモリ
224 NIC
300,300A,300B クライアント
301,302 BPELファイル
303 Webサービス(WS)抽出部
305 スループット情報格納DB
306 リクエスト送出部
307 スループット測定部
308 スループット制御部
321 HDD
322 CPU
323 メモリ
324 NIC
401 スループット情報テーブル
501 クライアント情報テーブル
601 ドメイン情報テーブル
701 スループット情報テーブル

【特許請求の範囲】
【請求項1】
ビジネスプロセスを実行するクライアントと、前記クライアントがビジネスプロセスを実行中に呼び出すWebサービスを実行するサーバとがネットワークを介して接続されるシステムにおける前記Webサービスを実行するスループットを管理するスループット管理方法であって、
前記クライアントは、前記サーバがWebサービスを実行するのに必要なスループット要求として単位時間あたりのリクエスト数を前記サーバに送信し、
前記サーバは、前記スループット要求の単位時間あたりのリクエスト数を確保する
ことを特徴とするスループット管理方法。
【請求項2】
前記クライアントは、前記サーバにおいて確保しているスループットについて前記スループット要求の更新が必要なとき、スループット更新要求を前記サーバに送信する
ことを特徴とする請求項1に記載のスループット管理方法。
【請求項3】
前記クライアントは、前記サーバにおいて確保しているスループットについて前記スループット要求の削除が必要なとき、スループット削除要求を前記サーバに送信する
ことを特徴とする請求項1に記載のスループット管理方法。
【請求項4】
前記サーバは、前記クライアントから前記スループット更新要求を受信した場合、前記スループット更新要求で要求された前記リクエスト数を所定の許容されるリクエスト数以内で割当て可能か否かを判定し、割当て可能なときは、前記スループット変更要求の受理通知を前記クライアントに送信する
ことを特徴とする請求項2に記載のスループット管理方法。
【請求項5】
ビジネスプロセスを実行するクライアントとネットワークを介して接続され、前記クライアントがビジネスプロセスを実行中に呼び出すWebサービスを、スループットを管理しつつ実行するスループット管理サーバであって、
前記クライアントが前記ネットワークを介して送信するWebサービスを実行するのに必要な単位時間あたりのリクエスト数を含むスループット要求を受信すると、
前記リクエスト数を所定の許容されるリクエスト数以内で割当て可能か否かを判定し、
前記リクエスト数を割当て可能なときは、前記リクエスト数を記憶部に格納し、
前記スループット要求の受理通知を前記クライアントに送信する
ことを特徴とするスループット管理サーバ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate