JP2012068995A - 中継処理方法、中継処理装置及び中継処理プログラム - Google Patents

中継処理方法、中継処理装置及び中継処理プログラム Download PDF

Info

Publication number
JP2012068995A
JP2012068995A JP2010214382A JP2010214382A JP2012068995A JP 2012068995 A JP2012068995 A JP 2012068995A JP 2010214382 A JP2010214382 A JP 2010214382A JP 2010214382 A JP2010214382 A JP 2010214382A JP 2012068995 A JP2012068995 A JP 2012068995A
Authority
JP
Japan
Prior art keywords
request data
session
request
server
processes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2010214382A
Other languages
English (en)
Inventor
Kenji Oki
憲二 大木
Akihiko Matsuo
昭彦 松尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010214382A priority Critical patent/JP2012068995A/ja
Publication of JP2012068995A publication Critical patent/JP2012068995A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】サーバダウン時における処理の一貫性を図るとともに、処理の効率化を図る。
【解決手段】クライアントからのリクエストデータに応じてサーバから送信されるレスポンスデータのキャッシュを保持する際に、レスポンスデータに含まれるセッションIDと同一のセッションIDを含むリクエストデータを、一連のプロセスとして紐付ける情報を生成する。そして、一のリクエストデータを処理するサーバがダウンしている場合には、紐付ける情報を参照して(S74,S78)、一のリクエストデータと一連のプロセスに属するリクエストデータはキューに貯めるとともに(S80)、リクエストデータに対応するキャッシュをクライアントに送信し(S84)、一のリクエストデータと一連のプロセスに属さないリクエストデータは当該リクエストデータを処理するサーバに対して送信する(S84)。
【選択図】図7

Description

本件は、中継処理方法、中継処理装置及び中継処理プログラムに関する。
最近では、従来において紙ベースで行っていた様々な業務や作業が、Webシステム上での業務や作業に移行してきている(特許文献1、2参照)。このように、Webシステムを活用することで作業効率の向上が可能である。しかしながら、Webシステムを用いる場合、システムに障害などが発生することで、サーバが提供するサービスを利用できなくなる場合がある。このような場合には、システムが復帰するまで利用者は作業を行うことができなくなるため、緊急措置として紙ベースでの作業が強いられる可能性がある。
特開2007−259059号公報 特開2007−96910号公報
これに対し、紙ベースでの作業を行うことなく、システムを利用した業務や作業を継続して利用するための方法としては、プロキシサーバなどが保持する過去のキャッシュを業務や作業に利用する方法が考えられる。しかしながら、単純にキャッシュを利用するだけでは、システムダウン時において、あるクライアントからのリクエストをサーバが処理しなかったにもかかわらず、それ以降のリクエストをシステム復旧後のサーバが処理してしまうことがある。この場合、システムの一貫性に矛盾が生じる可能性がある。また、キャッシュを利用する場合には、プロキシサーバがキューを用意してリクエストを貯めておき、システムの復旧後にリクエストを一括してサーバに送信する。しかるに、この方法では、種類に関わらず、リクエストをキューに格納してしまうため、ダウンしているサービスが復帰しない限りは永遠に全てのリクエストがキューに貯まりつづけることになる。それゆえに処理の全体効率が低下してしまい、十分な効果を得られないおそれがある。
そこで本件は上記の課題に鑑みてなされたものであり、サーバダウン時における処理の一貫性を図るとともに、処理の効率化を図ることが可能な中継処理方法、中継処理装置及び中継処理プログラムを提供することを目的とする。
本明細書に記載の中継処理方法は、クライアントおよび複数のサーバとネットワークを介して接続されたコンピュータが、クライアントからのリクエストデータに応じてサーバから送信されるレスポンスデータのキャッシュを保持する際に、前記レスポンスデータにセッションIDが含まれているか否かを判定するセッション判定工程と、前記レスポンスデータに前記セッションIDが含まれていた場合に、当該セッションIDと同一のセッションIDを含むリクエストデータを、一連のプロセスとして紐付ける情報を生成する情報生成工程と、一のリクエストデータを処理する第1のサーバがダウンしている場合に、クライアントから受信したリクエストデータについて、前記情報生成工程で生成された情報を参照して、前記一のリクエストデータと一連のプロセスに属するリクエストデータであるか判断し、一連のプロセスに属するリクエストデータである場合には、当該リクエストデータをキューに貯めるとともに、前記リクエストデータに対応するキャッシュを前記クライアントに送信し、前記一のリクエストデータと一連のプロセスに属さないリクエストデータである場合には、当該リクエストデータを処理する第2のサーバに対してリクエストデータを送信する中継処理工程と、を実行する中継処理方法である。
本明細書に記載の中継処理装置は、クライアントからのリクエストデータに応じてサーバから送信されるレスポンスデータのキャッシュを保持するキャッシュ保持部と、前記キャッシュ保持部が前記レスポンスデータのキャッシュを保持する際に、前記レスポンスデータにセッションIDが含まれているか否かを判定するセッション判定部と、前記レスポンスデータに前記セッションIDが含まれていた場合に、当該セッションIDと同一のセッションIDを含むリクエストデータを、一連のプロセスとして紐付ける情報を生成する情報生成部と、一のリクエストデータを処理する第1のサーバがダウンしている場合に、クライアントから受信したリクエストデータについて、前記情報生成部で生成された情報を参照して、前記一のリクエストデータと一連のプロセスに属するリクエストデータであるか判断し、一連のプロセスに属するリクエストデータである場合には、当該リクエストデータをキューに貯めるとともに、前記リクエストデータに対応するキャッシュを前記クライアントに送信し、前記一のリクエストデータと一連のプロセスに属さないリクエストデータである場合には、当該リクエストデータを処理する第2のサーバに対してリクエストデータを送信する中継処理部と、を備える中継処理装置である。
本明細書に記載の中継処理プログラムは、クライアントおよび複数のサーバとネットワークを介して接続されたコンピュータに、クライアントからのリクエストデータに応じてサーバから送信されるレスポンスデータのキャッシュを保持する際に、前記レスポンスデータにセッションIDが含まれているか否かを判定するセッション判定工程、前記レスポンスデータに前記セッションIDが含まれていた場合に、当該セッションIDと同一のセッションIDを含むリクエストデータを、一連のプロセスとして紐付ける情報を生成する情報生成工程、及び一のリクエストデータを処理する第1のサーバがダウンしている場合に、クライアントから受信したリクエストデータについて、前記情報生成工程で生成された情報を参照して、前記一のリクエストデータと一連のプロセスに属するリクエストデータであるか判断し、一連のプロセスに属するリクエストデータである場合には、当該リクエストデータをキューに貯めるとともに、前記リクエストデータに対応するキャッシュを前記クライアントに送信し、前記一のリクエストデータと一連のプロセスに属さないリクエストデータである場合には、当該リクエストデータを処理する第2のサーバに対してリクエストデータを送信する中継処理工程、を実行させる中継処理プログラムである。
本明細書に記載の中継処理方法、中継処理装置及び中継処理プログラムは、サーバダウン時における処理の一貫性を図るとともに、処理の効率化を図ることができるという効果を奏する。
一実施形態に係るWeb業務システムの構成を概略的に示す図である。 プロキシサーバのハードウェア構成図である。 プロキシサーバの機能ブロック図である。 図4(a)は、キュー情報テーブルを示す図であり、図4(b)は、プロセス情報テーブルを示す図であり、図4(c)は、セッション情報テーブルを示す図である。 プロセス生成処理を示すフローチャートである。 プロセス追加処理を示すフローチャートである。 サーバダウン時のプロセス判定処理を示すフローチャートである。 サーバダウン後の待機リクエスト確認処理を示すフローチャートである。 図9(a)〜図9(c)は、図5のプロセス生成処理を説明するための図(その1)である。 図10(a)〜図10(c)は、図5のプロセス生成処理を説明するための図(その2)である。 図11(a)〜図11(c)は、図6のプロセス追加処理を説明するための図(その1)である。 図12(a)〜図12(c)は、図6のプロセス追加処理を説明するための図(その2)である。 図13(a)、図13(b)は、図7のサーバダウン時のプロセス判定処理を説明するための図(その1)である。 図14(a)、図14(b)は、図7のサーバダウン時のプロセス判定処理を説明するための図(その2)である。 図15(a)、図15(b)は、図7のサーバダウン時のプロセス判定処理を説明するための図(その3)である。 図16(a)〜図16(d)は、図7のサーバダウン時のプロセス判定処理を説明するための図(その4)である。 サービス確認部の処理を示すフローチャートである。
以下、中継処理装置としてのプロキシサーバを含むWeb業務システムの一実施形態について、図1〜図17に基づいて詳細に説明する。図1には、一実施形態にかかるWeb業務システム100が模式的に示されている。この図1に示すように、Web業務システム100は、クライアント端末(以下、単にクライアントと呼ぶ)10と、コンピュータ及び中継処理装置としてのプロキシサーバ20と、複数のサーバ30とを備える。なお、クライアント10、プロキシサーバ20、サーバ30は、実際には、ネットワーク(例えば、インターネットやLAN(Local Area Network))上に配置されている。
クライアント10は、業務を行うユーザが操作する端末である。クライアント10からいずれかのサーバ30への要求(リクエスト)は、WebブラウザなどのHTTPクライアントソフトを用いて行われる。プロキシサーバ20は、中継サーバソフトを用いてHTTP通信をモニタリングし、クライアント10からのリクエストの情報(リクエストデータ)を、適切なサーバ30に対して送信する。
図2には、プロキシサーバ20のハードウェア構成が示されている。この図2に示すように、プロキシサーバ20は、CPU90、ROM92、RAM94、記憶部(ここではHDD(Hard Disk Drive))96、入出力部97等を備えている。これらプロキシサーバ20の構成各部は、バス98に接続されている。プロキシサーバ20では、ROM92あるいはHDD96に格納されているプログラム(中継処理プログラム)をCPU90が実行することにより、図3の各部の機能が実現されている。
図3には、プロキシサーバ20の機能ブロック図が示されている。この図3に示すように、プロキシサーバ20は、リクエスト受信部40、待機リクエスト確認部42、セッション有無判定部44、リクエスト送信部46、キュー追加部48、サービス確認部50、としての機能を有する。また、プロキシサーバ20は、レスポンス受信部52、プロセス判定部54、セッション判定部としてのセッション生成判定部56、キャッシュ管理部58、レスポンス送信部60、プロセス生成部62、プロセス追加部64、セッション監視部66、としての機能を有する。更に、プロキシサーバ20は、図2のHDD96に、図3に示すキュー情報テーブル80、リクエスト情報テーブル82、キャッシュ情報テーブル84、プロセス情報テーブル86、セッション情報テーブル88を格納しており、各テーブルのデータは、上記各部により更新されたり、利用されたりする。
リクエスト受信部40は、クライアント10から送信されるサーバ30に対するリクエストデータを受信する。待機リクエスト確認部42は、あるサーバ30(サービス)がダウンしたときに、キュー情報テーブル80に含まれている待機リクエストと、クライアント10から送信されてきたリクエストが同一プロセスに属するかどうかを判定する。また、待機リクエスト確認部42は、同一プロセスに属すると判定した場合に、そのリクエストをリクエスト送信部46を介してサーバに送ることなく、キュー情報テーブル80に格納する。
セッション有無判定部44は、リクエストデータのヘッダにセッションIDがあるか否かを判定する。リクエスト送信部46は、リクエストデータに応じた処理を行うのに適したサーバ30に対して、リクエストデータを送信する。また、リクエスト送信部46は、送信したリクエストデータを、リクエスト情報テーブル82に格納する。キュー追加部48は、リクエストのキュー(待機リクエスト)をキュー情報テーブル80に追加する。サービス確認部50は、サービス復帰(サーバがダウンした後の復帰)の有無を確認する。
レスポンス受信部52は、リクエストに応じてサーバ30において処理された結果(レスポンス)を、サーバ30から受信する。プロセス判定部54は、リクエストデータを、リクエスト情報テーブル82から読み出し、当該リクエストデータと、プロセス情報テーブル86等とを照らし合わせる。そして、プロセス判定部54は、プロセス情報テーブル86等を参照して、リクエストが正常動作時に登録しておいたプロセスの一部であるか否かを判定する。そして、プロセス判定部54は、リクエストがプロセスの一部であった場合には、当該リクエストをキュー追加部48を介してキュー情報テーブル80に格納しておく。セッション生成判定部56は、レスポンスデータにセッションID、すなわちセッション生成指示があったかどうかを判定する。具体的には、レスポンスデータのプロトコルとしては、HTTPが用いられている。したがって、図9(a)に示すように、レスポンスデータにおいて、サーバ30がSet-Cookieヘッダを発行しており、かつその名前がJSESSIONIDであった場合に、セッション生成判定部56が、セッション生成指示があったと判定する。
キャッシュ管理部58は、サーバ30から受信したレスポンスデータをキャッシュ情報テーブル84に格納する。また、キャッシュ管理部58は、プロセス判定部54においてキュー情報テーブル80に格納したリクエストに対応するキャッシュを、レスポンス送信部60を介して、クライアント10に対して送信する。レスポンス送信部60は、サーバ30から受信したレスポンスデータや、キャッシュなどをクライアント10に対して送信する。
プロセス生成部62は、一連のリクエストのシーケンス(繋がり)をプロセス情報及びセッション情報として、プロセス情報テーブル86及びセッション情報テーブル88に記憶する。プロセス追加部64は、一連のリクエストのシーケンスの継続要求をプロセス情報テーブル86やセッション情報テーブル88に反映させる。セッション監視部66は、セッション情報テーブル88に格納されている有効期限付きのセッション情報を、有効期限経過後に削除する。
キュー情報テーブル80は、一例として図4(a)に示すように、待機リクエストの情報として、キューIDと、対応プロセスIDと、対応シーケンス番号と、HTTPリクエストの項目を有する。なお、キュー情報テーブル80の各項目の詳細については後述する。図3に戻り、リクエスト情報テーブル82は、リクエスト情報を格納しておくテーブルである。キャッシュ情報テーブル84は、キャッシュを格納するテーブルである。
プロセス情報テーブル86は、一連のプロセスとして紐付ける情報を格納するテーブルであり、図4(b)に示すように、プロセスID、シーケンス番号、HTTPリクエストの項目を含んでいる。セッション情報テーブル88は、図4(c)に示すように、セッションID、プロセスID、シーケンス番号、有効期限の項目を含んでいる。なお、プロセス情報テーブル86とセッション情報テーブル88の各項目の詳細については後述する。
次に、プロキシサーバ20における処理について、図5〜図8のフローチャートに沿って、その他図面を適宜参照しつつ詳細に説明する。図5〜図8の処理のうち、図5、図6の処理は、サーバ30がダウンしていないときに行われる処理であり、図7、図8は、いずれかのサーバがダウンしたときに行われる処理である。
(プロセス生成処理)
まず、図5に基づいて、サーバ30がダウンしていないときに行われるプロセス生成処理について説明する。図5の処理では、ステップS10において、レスポンス受信部52が、サーバ30からのレスポンスを待機する。次いで、ステップS12では、レスポンス受信部52が、タイムアウトか否かを判断する。ここでの判断が肯定される場合とは、サーバ30がダウンしている場合を意味する。このため、ステップS12の判断が肯定された場合には、後述するプロセス判定処理に移行する。一方、ステップS12の判断が否定された場合には、ステップS14に移行する。
ステップS14に移行した場合、レスポンス受信部52が、サーバ30からのレスポンスが有ったか否かを判断する。ここでの判断が否定された場合には、ステップS12に戻る。一方、サーバ30からのレスポンスがあり、ステップS14の判断が肯定された場合には、ステップS16に移行する。なお、ステップS12、S14が繰り返し行われている間は、タイムアウトになるまで、又はレスポンス受信部52がレスポンスを受信するまで、待機している。
次いで、ステップS14の判断が肯定されてステップS16に移行すると、レスポンス受信部52は、HTTPレスポンスを受け取る。次いで、ステップS18では、レスポンス受信部52が、レスポンスコードが正常か否かを判断する。ここで、レスポンスコードが異常な場合とは、図13(a)のレスポンスに示すように、レスポンスコードが例えば「503」である場合などである。レスポンスコード「503」は、サーバ30に高負荷がかかっているなど、サーバ30が適切にサービスを提供できないことを意味している。ステップS18の判断が否定された場合には、後述するプロセス判定処理(図7)に移行する。一方、ステップS18の判断が肯定された場合には、ステップS20に移行する。
ステップS20に移行すると、セッション生成判定部56が、レスポンスヘッダからセッションIDを取得する。具体的には、セッション生成判定部56は、図9(a)に示すようなレスポンスヘッダの中からセッションID、すなわち、セッション生成指示を読み取る。ここでは、セッション生成判定部56は、セッションIDとして、「JSESSIONID=」の右側の文字列「abcde」を読み取ることになる。
次いで、ステップS22では、セッション生成判定部56が、セッションIDがあったか否かを判断する。ここでの判断が否定された場合(セッションIDが無かった場合)には、ステップS32に移行するが、判断が肯定された場合(セッションIDがあった場合)には、ステップS24に移行する。
ステップS24に移行した場合、プロセス生成部62は、プロセス情報テーブル86において、シーケンス番号が1かつURL(図9(a)のリクエスト参照)が同一のプロセス(一連のプロセス)の有無を確認する。そして、ステップS26では、シーケンス番号が1かつURLが同じプロセスがあったか否かを判断する。ここでの判断が肯定された場合には、ステップS30に移行するが、ここでの判断が否定された場合には、ステップS28に移行する。なお、ここでの判断が肯定される場合とは、既に今回のレスポンスと同じプロセスが、プロセス情報テーブル86に登録されている場合を意味する。
ステップS26の判断が否定されてステップS28に移行した場合、すなわち、同じプロセスが登録されていない場合には、プロセス生成部62が、HTTPリクエストを、一意のプロセスID、シーケンス番号=1とともにプロセス情報テーブル86に格納する。この状態が、図9(b)に示されている。図9(b)では、一意のプロセスIDとして、「1」が用いられている。
上記のようにしてステップS28の処理が終了すると、ステップS30に移行する。なお、上述のようにステップS30の処理は、ステップS26が否定された場合にも行われるようになっている。すなわち、ステップS30には、現在のリクエストと一連のプロセスに関する情報がプロセス情報テーブル86に入っている状態にあるときに、移行するようになっている。
ステップS30では、プロセス生成部62が、プロセスIDと、セッションIDと、適当な有効期限をセッション情報テーブル88に格納する。図9(c)には、ステップS28において図9(b)のプロセス情報テーブル86が作成された場合に、セッション情報テーブル88に格納されるデータ(セッション情報)の例が示されている。ここで、有効期限としては、装置内で設定することが可能であり、例えば、10秒後などとすることができる。
なお、ステップS26においてプロセスが存在していたと判断される場合(判断が肯定された場合)の例が、図10(a)〜図10(d)に示されている。これらの図のうち、図10(a)は、本例におけるリクエスト及びレスポンスの一例を示している。また、本例におけるプロセス情報テーブル86の例が、図10(b)に示されている。図10(a)、図10(b)に示すように、プロセス情報テーブル86には、シーケンス番号が1で、図10(a)のリクエストのURL「GET http://example.com/first.jsp」と同一のHTTPリクエストのプロセスが存在している。したがって、この場合には、ステップS26の判断が肯定されて、ステップS30に移行する。ステップS30では、図10(c)に示すように、プロセス生成部62が、プロセスID「1」と、レスポンスヘッダに基づくセッションID「fghij」と、適当な有効期限をセッション情報テーブル88に格納することとなる。
図5の説明に戻り、次のステップS32では、キャッシュ管理部58が、レスポンスコードに基づいてキャッシュ情報テーブル84にレスポンスのキャッシュを格納する。次いで、ステップS34では、レスポンス送信部60が、レスポンスデータ(レスポンス内容)をクライアント10に対して送信し、図5の全処理を終了する。
なお、前述のように、ステップS22の判断が否定された場合にも、ステップS32、S34の処理が行われる。すなわち、ステップS22においてセッションIDが無かったと判断された場合には、ステップS24〜S30におけるプロセス情報テーブル86やセッション情報テーブル88にデータを格納する処理が省略され、キャッシュの格納及びレスポンス内容のクライアント10への送信処理が行われることになる。
(プロセス追加処理)
次に、図6に基づいて、サーバ30がダウンしていないときに行われるプロセス追加処理について説明する。なお、ここでは、プロセス情報テーブル86が、図9(b)の状態にあり、セッション情報テーブル88が、図9(c)の状態にあるものとして、以下説明する。
図6のプロセス追加処理においては、まず、ステップS40において、セッション有無判定部44が、リクエストヘッダからセッションIDを取得する。ここでは、セッション有無判定部44が、例えば、図11(a)に示すように、リクエストヘッダの「JSESSIONID=」の右側に記述されている文字列「abcde」をセッションIDとして取得したものとする。次いで、ステップS42では、セッション有無判定部44が、セッション情報テーブル88からセッションIDに相当する情報の有無を確認する。なお、図9(c)の場合には、セッション情報テーブル88に、ステップS40で取得したセッションID「abcde」が存在していることになる。
次いで、ステップS44では、セッション有無判定部44が、ステップS42の結果、セッションIDに相当する情報が有ったか否かを判断する。ここでの判断が否定された場合、すなわちセッションIDに相当する情報がセッション情報テーブル88に無かった場合には、ステップS58に移行する。ステップS58では、リクエスト送信部46が、指定されたサーバ30へリクエストを送信する。なお、この場合には、後述するステップS46〜S56の処理を実行しないので、プロセス情報テーブル86やセッション情報テーブル88の更新は一切行われない。
一方、ステップS44の判断が肯定された場合、すなわち、セッションIDに相当する情報が、セッション情報テーブル88に存在していた場合には、ステップS46に移行する。ステップS46では、プロセス追加部64が、セッション情報テーブル88内のセッション情報のプロセスID、及び最大のシーケンス番号(ここでは、図9(c)のシーケンス番号の最大値1)に相当するプロセス情報をプロセス情報テーブル86から取得する。
次いで、ステップS48では、プロセス追加部64が、取得したプロセス情報のリクエストURL(ここでは、「GET http://example.com/first.jsp」)と、要求されたリクエストURL(ここでは、図11(a)から導き出される「GET http://example.com/second.jsp」)が同一かを確認する。
次いで、ステップS50では、プロセス追加部64が、ステップS48の確認の結果、取得したプロセス情報のリクエストURLと要求されたリクエストURLが同一であったか否かを判断する。すなわち、今回のリクエストにおいて、プロセスの継続要求が出されているか否かを判断する。図11(a)の場合、URLが同一ではなく、判断が否定されるので、ステップS52に移行する。一方、ここでの判断が肯定された場合には、ステップS56に移行する
ステップS52に移行した場合には、プロセス追加部64が、プロセス情報テーブル86内の該当する一連のプロセス情報(シーケンス番号1〜最大)を新規の一意プロセスIDとともにコピーして格納する。そして、ステップS54では、プロセス追加部64が、プロセス情報テーブル86にプロセスID、最大シーケンス番号に1を加算した番号、リクエスト内容を追加する。具体的には、図11(b)に示すように、プロセスID「1」、シーケンス番号「2」、HTTPリクエスト「GET http://example.com/second.jsp」が追加される。
次いで、ステップS56では、プロセス追加部64が、セッション情報テーブル88に、セッションID、プロセスID、最大シーケンス番号に1を加算した番号、有効期限を追加する。具体的には、図11(c)に示すように、セッションID「abcde」、プロセスID「1」、シーケンス番号「2」、及び適当な有効期限が追加される。なお、前述のようにステップS50の判断が肯定された場合にも、ステップS56の処理が行われる。この場合には、ステップS52、S54の処理を行わないので、プロセス情報テーブル86が更新されずに、セッション情報テーブル88のみが更新されることになる。そして、ステップS58では、リクエスト送信部46が、指定されたサーバ30へリクエストを送信する。
なお、プロセス情報テーブル86及びセッション情報テーブル88が、図10(b)、図10(c)のような場合にも、上記と同様の処理が行われる。すなわち、図12(a)に示すようなリクエストがあった場合、セッション有無判定部44は、セッションID「fghij」を取得するとともに(ステップS40)、セッション情報テーブル88(図10(c)参照)にセッションID「fghij」が存在していると判断する(ステップS42、ステップS44(肯定))。そして、プロセス追加部64は、プロセス情報テーブル86からプロセス情報を取得し(ステップS46)、プロセス情報に含まれるリクエストURL「GET http://example.com/first.jsp」と、図12(a)のリクエストにおいて要求されたリクエストURL「GET http://example.com/new.jsp」とが同一か否かを確認する(ステップS48)。この確認により、同一でないことが確認されると(ステップS50(否定))、プロセス追加部64は、プロセス情報テーブル86内の該当する一連のプロセス情報を新規の一意プロセスIDとともにコピーして格納する(ステップS52、図12(b)のプロセスID「2」、シーケンス番号「1」参照)。更に、プロセス追加部64は、プロセス情報テーブル86に、プロセスID「2」、最大シーケンス番号に1を加算した番号(すなわち、「2」)、リクエスト内容「GET http://example.com/second.jsp」を追加するとともに(ステップS54)、セッション情報テーブル88に、セッションID、プロセスID、最大シーケンス番号に1を加算した番号、有効期限を追加する(図12(c)の最下段参照)。そして、リクエスト送信部46が、指定されたサーバ30へリクエストを送信する。
以上のような処理を経ることで、図11(b)、図11(c)や、図12(b)、図12(c)のように、各テーブルが更新(プロセスが追加)されるようになっている。
(サーバダウン時のプロセス判定処理)
次に、図5のステップS12の判断が肯定された場合、又はステップS18の判断が否定された場合、すなわち、サーバがダウン(サービスダウン)したときに実行されるプロセス判定処理について、図7に沿って説明する。なお、ここでは、説明の便宜上、プロセス情報テーブル86及びセッション情報テーブル88は、図12(b)、図12(c)の状態にあるものとして説明する。
図7のステップS70では、プロセス判定部54が、リクエスト送信時点において、セッション情報テーブル88にセッション情報としてリクエストの情報が追加されていたかを確認する。次いで、ステップS72では、プロセス判定部54が、該当するリクエスト情報が有ったか否かを判断する。この場合において、例えば、図13(a)のようなリクエスト(セッション開始後の先頭のリクエスト)があった場合には、リクエストにセッションIDが含まれていないので、ステップS72の判断は否定される。なお、レスポンスとして図13(a)のようなレスポンスがサーバ30側から送信されてきた場合(レスポンスコード「503」の場合)には、サーバにエラーが発生していることを意味する。
ステップS72の判断が否定されて、ステップS74に移行すると、プロセス判定部54が、プロセス情報テーブル86からシーケンス番号が1かつURLが同一のプロセスの有無を確認する。次いで、ステップS76では、プロセス判定部54が、上記のようなプロセスが存在していたか否かを判断する。この場合、図12(b)に示すように、シーケンス番号が1、URLが「GET http://example.com/first.jsp」であるプロセスが存在している。したがって、ここでの判断は肯定され、ステップS80に移行する。
ステップS80に移行すると、キュー追加部48が、新規キューID(例えば、「1」)を生成して、リクエストのプロセスID、シーケンス番号を、HTTPリクエストとともにキュー情報テーブル80へ格納する。このときのキュー情報テーブル80の状態が、図13(b)に示されている。なお、ここでの処理では、ステップS76の判断が肯定された場合、すなわち、リクエストが一連のプロセスの先頭であった場合にのみ、ステップS80においてキューが追加されることになる。
次いで、ステップS82では、キャッシュ管理部58が、HTTPリクエストに該当するキャッシュをキャッシュ情報テーブル84内において検索する。次いで、ステップS84では、レスポンス送信部60が、検索したキャッシュをレスポンス内容として、クライアント10へ送信する。このようにすることで、クライアント10では、キャッシュ情報テーブル84に格納されていた、正常にサーバ30が動作していた際のレスポンスキャッシュを利用することができる。これにより、クライアント10の利用者は、サーバがダウンしている場合にも、当該キャッシュを用いて、処理を継続的に行うことが可能である。
一方、例えば、図14(a)のようなリクエスト(セッション開始後、2番目以降のリクエスト)があった場合には、ステップS70に移行する。このステップS70では、セッションID「abcde」のセッション情報が、セッション情報テーブル88に格納されているか否かを確認する。この場合、セッションID「abcde」は、図12(c)に示すように、セッション情報テーブル88に存在しているので、ステップS72の判断は肯定され、ステップS78に移行する。そして、ステップS78では、プロセス判定部54が、セッション情報に対応するプロセスIDとシーケンス番号を取得する。ここでは、図12(c)のセッション情報テーブル88から、リクエスト情報のアドレス「GET http://example.com/second.jsp」に対応する、プロセスID「1」とシーケンス番号「2」が取得される。そして、ステップS78の処理が終了した後は、ステップS80に移行する。
ステップS80では、ステップS78で取得した、プロセスIDとシーケンス番号について、新規キューID(ここでは、「2」)を生成して、キュー情報テーブル80に追加する(図14(b)参照)。
なお、図15(a)、図15(b)に示すように、セッション情報テーブル88に格納されているにもかかわらず、プロセス情報テーブル86に格納されていない情報(図15(b)のセッションID「fghij」)がある場合がある。このような場合に、図16(a)に示すようなリクエスト(セッション開始後、2番目以降のリクエストであり、セッションIDが「fghij」であるリクエスト)及びレスポンスがあったとする。かかる場合には、図5の処理を経て、セッション情報テーブル88には、図16(c)に示す最下段の情報が追加されることになるが(図5のステップS30)、プロセス情報テーブル86には、図16(b)と図15(a)とを比較すると分かるように、情報は追加されない。このような場合でも、本実施形態では、図7のステップS78において、セッション情報テーブル88(図15(b))を参照するようにしている。したがって、キュー情報テーブル80には、図16(d)に示すような適切な情報を格納することが可能となっている(図7のステップS80)。
(サーバダウン後(サーバダウン中)の待機リクエスト確認処理)
次に、図8に基づいて、サーバダウン後(サーバダウン中)の待機リクエスト確認処理について説明する。
図8の処理は、リクエスト受信部40が、クライアント10からリクエストを受信した時点から開始される。まず、図8のステップS90では、待機リクエスト確認部42が、キュー情報テーブル80にキュー(待機リクエスト)があるかを確認する。次いで、ステップS92では、待機リクエスト確認部42が、キューが有ったか否かを判断する。ここでの判断が否定された場合には、図6のフローチャート(セッション有無判定部44の処理)へ移行する。一方、ここでの判断が肯定された場合には、ステップS94に移行する。
ステップS94に移行すると、待機リクエスト確認部42が、キュー情報テーブル80に格納されている情報(待機リクエスト)のプロセスID、シーケンス番号に1を加算した番号に一致する情報を、プロセス情報テーブル86から取得する。
次いで、ステップS96では、待機リクエスト確認部42が、取得したプロセスのHTTPリクエストと送信予定のHTTPリクエストが同一か否かを判断する。ここでの判断が否定された場合には、図6のセッション有無判定部44の処理へ移行する。一方、ここでの判断が肯定された場合には、ステップS98に移行する。
ステップS98に移行した場合、キュー追加部48が、先に取得した待機プロセス情報と同一のキューIDを用いて、送信予定のHTTPリクエストをキュー情報テーブル80に格納する。
次いで、ステップS100では、キュー追加部48が、キューに情報テーブル80に格納した旨のメッセージを作成して、レスポンス送信部60へ当該メッセージの送信依頼を出す。
図17には、サービス確認部50の処理がフローチャートにて示されている。この図17に示すように、サービス確認部50は、ステップS102において、キュー情報テーブル80の先頭のリクエストに対応するサーバ(サービス)が復活したか否かを確認する。この確認においては、サービス確認部50は、例えば、先頭のリクエストを定期的にダウンしているサーバ30に送信する。そして、当該リクエストに対する正常なレスポンスが返ってきた場合に、サービス確認部50は、ダウンしていたサーバ(サービス)が復活したと、判定するこの場合、ステップS102の判断が肯定されることになる。そして、ステップS104に移行すると、サービス確認部50は、キュー情報テーブル80に残っている同一プロセスIDのリクエストをサーバに対して一括送信する。これにより、サーバがダウンから復帰した際に、当該復帰したサーバで行うことができる処理を即座に実行することが可能となる。
なお、これまでの説明から分かるように、リクエスト送信部46、キュー追加部48及びキャッシュ管理部58が、中継処理部として機能している。また、キャッシュ管理部58及びキャッシュ情報テーブル84が、キャッシュ保持部として機能している。また、プロセス生成部62及びプロセス追加部84が、情報生成部として機能している。
以上、詳細に説明したように、本実施形態によると、プロキシサーバ20では、クライアント10からのリクエストデータに応じてサーバ30から送信されるレスポンスデータのキャッシュを保持する際に、前記レスポンスデータにセッションIDが含まれているか否かを判定し(ステップS22)、レスポンスデータに含まれるセッションIDと同一のセッションIDを含むリクエストデータを、一連のプロセスとして紐付ける情報(プロセス情報テーブル86,セッション情報テーブル88)を生成する(ステップS54、S56)そして、一のリクエストデータを処理するサーバ(第1のサーバ)がダウンしている場合に、テーブル86,88を参照して、一のリクエストデータと一連のプロセスに属するリクエストデータはキューに格納し(ステップS80)、一連のプロセスに属さないリクエストデータは当該リクエストデータを処理するサーバ(第2のサーバ)に対して送信する(ステップS82)。これにより、本実施形態では、処理するサーバがダウンしているリクエストのみを、キューに格納するので、処理の全体効率を向上することが可能である。
また、本実施形態では、キューにリクエストデータを貯めたときに、当該リクエストに対応するレスポンスデータのキャッシュをクライアントに送信する。したがって、サーバがダウンしているときにも、キャッシュを用いて処理を行うことができる。この場合、クライアントでは、一連のプロセスに属するリクエスト(ダウンしたサーバに係るリクエスト)については、全て、キャッシュを用いた処理とすることができるので、処理の一貫性を維持することができる。また本実施形態では、サーバ(第1のサーバ)がダウンから復帰した場合に、キューに貯めておいたリクエストデータを、復帰したサーバ(第1のサーバ)に対して送信する(ステップS104)。したがって、サーバ復帰後において、一連のプロセスに属するリクエストを復帰後のサーバを用いて処理することが可能である。
なお、上記プロキシサーバ20の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD(Digital Versatile Disc)、CD−ROM(Compact Disc Read Only Memory)などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
10 クライアント
20 プロキシサーバ(コンピュータ、中継処理装置)
30 サーバ
46 リクエスト送信部(中継処理部の一部)
48 キュー追加部(中継処理部の一部)
56 セッション有無判定部(セッション判定部)
58 キャッシュ管理部(キャッシュ保持部の一部、中継処理部の一部)
62 プロセス生成部(情報生成部の一部)
64 プロセス追加部(情報生成部の一部)
84 キャッシュ情報テーブル(キャッシュ保持部の一部)

Claims (4)

  1. クライアントおよび複数のサーバとネットワークを介して接続されたコンピュータが、
    クライアントからのリクエストデータに応じてサーバから送信されるレスポンスデータのキャッシュを保持する際に、前記レスポンスデータにセッションIDが含まれているか否かを判定するセッション判定工程と、
    前記レスポンスデータに前記セッションIDが含まれていた場合に、当該セッションIDと同一のセッションIDを含むリクエストデータを、一連のプロセスとして紐付ける情報を生成する情報生成工程と、
    一のリクエストデータを処理する第1のサーバがダウンしている場合に、クライアントから受信したリクエストデータについて、前記情報生成工程で生成された情報を参照して、前記一のリクエストデータと一連のプロセスに属するリクエストデータであるか判断し、一連のプロセスに属するリクエストデータである場合には、当該リクエストデータをキューに貯めるとともに、前記リクエストデータに対応するキャッシュを前記クライアントに送信し、前記一のリクエストデータと一連のプロセスに属さないリクエストデータである場合には、当該リクエストデータを処理する第2のサーバに対してリクエストデータを送信する中継処理工程と、を実行する中継処理方法。
  2. 前記第1のサーバがダウンから復帰した場合に、前記キューに貯めておいたリクエストデータを、当該第1のサーバに対して送信する送信工程を、前記コンピュータが更に実行することを特徴とする請求項1に記載の中継処理方法。
  3. クライアントからのリクエストデータに応じてサーバから送信されるレスポンスデータのキャッシュを保持するキャッシュ保持部と、
    前記キャッシュ保持部が前記レスポンスデータのキャッシュを保持する際に、前記レスポンスデータにセッションIDが含まれているか否かを判定するセッション判定部と、
    前記レスポンスデータに前記セッションIDが含まれていた場合に、当該セッションIDと同一のセッションIDを含むリクエストデータを、一連のプロセスとして紐付ける情報を生成する情報生成部と、
    一のリクエストデータを処理する第1のサーバがダウンしている場合に、クライアントから受信したリクエストデータについて、前記情報生成部で生成された情報を参照して、前記一のリクエストデータと一連のプロセスに属するリクエストデータであるか判断し、一連のプロセスに属するリクエストデータである場合には、当該リクエストデータをキューに貯めるとともに、前記リクエストデータに対応するキャッシュを前記クライアントに送信し、前記一のリクエストデータと一連のプロセスに属さないリクエストデータである場合には、当該リクエストデータを処理する第2のサーバに対してリクエストデータを送信する中継処理部と、を備える中継処理装置。
  4. クライアントおよび複数のサーバとネットワークを介して接続されたコンピュータに、
    クライアントからのリクエストデータに応じてサーバから送信されるレスポンスデータのキャッシュを保持する際に、前記レスポンスデータにセッションIDが含まれているか否かを判定するセッション判定工程、
    前記レスポンスデータに前記セッションIDが含まれていた場合に、当該セッションIDと同一のセッションIDを含むリクエストデータを、一連のプロセスとして紐付ける情報を生成する情報生成工程、及び
    一のリクエストデータを処理する第1のサーバがダウンしている場合に、クライアントから受信したリクエストデータについて、前記情報生成工程で生成された情報を参照して、前記一のリクエストデータと一連のプロセスに属するリクエストデータであるか判断し、一連のプロセスに属するリクエストデータである場合には、当該リクエストデータをキューに貯めるとともに、前記リクエストデータに対応するキャッシュを前記クライアントに送信し、前記一のリクエストデータと一連のプロセスに属さないリクエストデータである場合には、当該リクエストデータを処理する第2のサーバに対してリクエストデータを送信する中継処理工程、を実行させる中継処理プログラム。
JP2010214382A 2010-09-24 2010-09-24 中継処理方法、中継処理装置及び中継処理プログラム Pending JP2012068995A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010214382A JP2012068995A (ja) 2010-09-24 2010-09-24 中継処理方法、中継処理装置及び中継処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010214382A JP2012068995A (ja) 2010-09-24 2010-09-24 中継処理方法、中継処理装置及び中継処理プログラム

Publications (1)

Publication Number Publication Date
JP2012068995A true JP2012068995A (ja) 2012-04-05

Family

ID=46166171

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010214382A Pending JP2012068995A (ja) 2010-09-24 2010-09-24 中継処理方法、中継処理装置及び中継処理プログラム

Country Status (1)

Country Link
JP (1) JP2012068995A (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002073576A (ja) * 2000-08-31 2002-03-12 Toshiba Corp バッチジョブ制御システム
JP2007094780A (ja) * 2005-09-29 2007-04-12 Nomura Research Institute Ltd 画面情報提供サーバ、画面情報提供方法、プログラム
JP2010113495A (ja) * 2008-11-06 2010-05-20 Nomura Research Institute Ltd クラスタシステムおよびクラスタ制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002073576A (ja) * 2000-08-31 2002-03-12 Toshiba Corp バッチジョブ制御システム
JP2007094780A (ja) * 2005-09-29 2007-04-12 Nomura Research Institute Ltd 画面情報提供サーバ、画面情報提供方法、プログラム
JP2010113495A (ja) * 2008-11-06 2010-05-20 Nomura Research Institute Ltd クラスタシステムおよびクラスタ制御方法

Similar Documents

Publication Publication Date Title
US7668839B2 (en) Application management for utilizing a replication engine of a Web-AP server to execute SIP replication
JP5792850B2 (ja) ネットワーク上でのファイルフォルダ送信
CN104094554B (zh) 无服务器名称指示(sni)的隐式ssl证书管理
JP4616159B2 (ja) クラスタシステム、ロードバランサ、ノード振替方法およびノード振替プログラム
JP4900982B2 (ja) サーバ・クラスタにおいてフェイルオーバを管理するための方法、フェイルオーバ・サーバ及びコンピュータ・プログラム
US9459888B2 (en) Implementing browser based hypertext transfer protocol session storage
TW200833019A (en) Method and apparatus for updating a domain name server
CN103051647B (zh) 一种会话实现的方法、设备及系统
JP6639245B2 (ja) サーバシステム、サーバシステムを制御する方法およびプログラム。
JP2008071359A (ja) 外部ポート配分に基づくサーバ負荷分散のための方法および装置
TW201432469A (zh) 檔案同步的方法及相關電子裝置
WO2014000148A1 (zh) 一种资源获取方法及装置
US9253127B2 (en) Optimized routing for proxy use
JP2006243985A (ja) メッセージ通知システム及びその方法並びにそれに用いるサーバ
US20080228873A1 (en) Method and system for generic application liveliness monitoring for business resiliency
JP2014057149A (ja) 通信装置、中継装置および通信方法
JP2007058506A (ja) 文書管理サーバ、文書管理システム、及び、文書管理プログラムとその記録媒体
JP2005301436A (ja) クラスタシステムおよびクラスタシステムにおける障害回復方法
JP5167179B2 (ja) 動的コンテンツ保存復元装置、動的コンテンツ保存復元システム、動的コンテンツの保存および復元方法、ならびにプログラム
JP2012068995A (ja) 中継処理方法、中継処理装置及び中継処理プログラム
JP2014132410A (ja) 通信装置および通信制御方法
JP5418070B2 (ja) 業務操作支援方法及びコンピュータ装置
JP2007265356A (ja) 通信プロトコルを用いた相互接続方法および装置
JP5945367B2 (ja) ウェブページ間で通信を行うための方法およびシステム
JP2005056347A (ja) サーバ機能引継方法およびサーバ機能引継プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140408

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140606

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141202