セッション情報管理方法、セッション情報管理システム、セッション情報管理サーバおよびそのプログラム
【課題】 セッション情報を効率的に処理し、また、各アプリケーションサーバ間でセッション情報の整合性を保つことができるセッション情報管理システムを提供することを課題とする。
【解決手段】 端末と接続された複数の第1の計算機と、その複数の第1の計算機と接続された第2の計算機とを備えたセッション情報管理システムであって、第2の計算機はセッション情報に更新の有無を示す属性を付与し、各第1の計算機はそのセッション情報の属性に基いて前記端末からの要求に応じた処理を継続する。
【解決手段】 端末と接続された複数の第1の計算機と、その複数の第1の計算機と接続された第2の計算機とを備えたセッション情報管理システムであって、第2の計算機はセッション情報に更新の有無を示す属性を付与し、各第1の計算機はそのセッション情報の属性に基いて前記端末からの要求に応じた処理を継続する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セッション情報を管理するセッション情報管理技術に関連するものである。
【背景技術】
【0002】
従来、クライアントマシンからの要求を処理するアプリケーションサーバはクラスタ構成で複数設置され、クライアントマシンからの要求が負荷分散機などによって任意のアプリケーションサーバに振り分けられるようになっている。
また、クライアントマシンからの要求を処理しているアプリケーションサーバがダウン(故障などによる作動停止)した場合には、他のアプリケーションサーバがそのセッション情報を引き継いで処理を継続する必要がある。そして、そのセッション情報を引き継ぐ方式としては、たとえば、DB(Data Base)方式とメモリ方式とが挙げられる。
DB方式とは、すべてのアプリケーションサーバに接続され、各アプリケーションサーバのセッション情報を順次格納するDBサーバを設ける方式である(たとえば特許文献1参照)。
また、メモリ方式は、クラスタを構成するすべてのアプリケーションサーバに各アプリケーションサーバのセッション情報の複製を持たせる方式である。
【特許文献1】特開2004−78552号公報(段落0016〜0027、図1)
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、特許文献1に記載の方法では、システムが大掛かりになり、運用が難しく、また、不必要になったセッション情報が永続的に残存してしまうという問題があった。
また、メモリ方式では、クラスタを構成するアプリケーションサーバの数が多くなると、セッション情報の複製のためのオーバヘッドが大きくなるという問題があった。さらに、複製の一部が失敗すると、各アプリケーションサーバ間でセッション情報の整合性が保てなくなるという問題もあった。
そこで、本発明の目的は、セッション情報を処理引き継ぎ時に再利用できることにある。また、本発明の他の目的は、各アプリケーションサーバ間でセッション情報の整合性を保ちながら処理を継続することにある。
【課題を解決するための手段】
【0004】
前記課題を解決するために、本発明は、端末と接続された複数の第1の計算機と、その複数の第1の計算機と接続された第2の計算機とを備えたセッション情報管理システムであって、前記第2の計算機は、前記セッション情報の更新の有無を示す属性を当該セッション情報に付与し、前記第1の計算機は、前記第2の計算機によって付与されたセッション情報の属性に基いて、前記端末からの要求に応じた処理を継続することを特徴とする。
【発明の効果】
【0005】
本発明によれば、セッション情報を処理引き継ぎ時に再利用することが可能となる。
【発明を実施するための最良の形態】
【0006】
以下、本発明の実施の形態に係るセッション情報管理システムを、図面を参照しながら、全体構成、動作概要、データ構成、処理手順の順番で説明する。
【0007】
<<全体構成>>
図1は、実施形態のセッション情報管理システムの全体構成を示す図である。セッション情報管理システム1000は、クライアントマシン30〜32、ネットワーク40、負荷分散機50および計算機1〜nにより構成される。
【0008】
クライアントマシン30〜32は、クライアント(ユーザ)が使用するマシンで、たとえば、PC(Personal Computer)であり、端末やユーザ端末ともいう。
ネットワーク40は、広域通信網で、たとえば、インターネットであり、データや要求を送受信するための手段である。クライアントマシン30〜32は、ネットワーク40を介して、負荷分散機50に接続される。
負荷分散機50は、クライアントマシン30〜32からのアクセスを、通信回線60経由で計算機1〜(n−1)に振り分けるものであり、いわゆるロードバランサである。
計算機nは、通信回線70を介して計算機1〜(n−1)と接続されている。
【0009】
<計算機1〜(n−1)(第1の計算機)>
計算機1〜(n−1)は、クラスタ構成となっており、負荷分散機50からの振り分けによってクライアントマシン30〜32からのアクセスを受け付け、処理を行う計算機である。この計算機1〜(n−1)は、計算機や、情報処理装置、仮想計算機、論理サーバなどによって、上記処理を実現することができる。そして、計算機1〜(n−1)は、ハードウエア、ソフトウエアともに同様の構成となっているので、以下、代表して計算機1を例にとって説明する。
【0010】
計算機1は、CPU(Central Processing Unit)11と主記憶装置12とを含めて構成される。
CPU11は、中央処理装置であり、負荷分散機50から受信したデータや主記憶装置12内のプログラム等に基いて、各種演算処理を行う。
主記憶装置12は、メモリやRAM(Random Access Memory)、ROM(Read Only Memory)、ハードディスクなどから構成され、各種情報を記憶する。主記憶装置12には、プログラムであるアプリケーションサーバ100が記憶されている。
【0011】
アプリケーションサーバ100は、アプリケーションプログラム101、HTTPセッション情報登録部102およびHTTPセッション情報管理部110から構成される。
アプリケーションプログラム101は、クライアントマシン30〜32からのアクセスに対応するプログラムで、オブジェクトやプロセス、スレッドで実現可能であり、業務プログラムであってもよい。
HTTPセッション情報登録部102は、クライアントマシン30〜32からのアクセスによるセッション情報を登録するプログラムである。
HTTPセッション情報管理部110は、HTTPセッション情報登録部102に登録された情報を管理するプログラムであり、新規作成処理部111、更新処理部112、グローバルセッション情報取得部113、セッション情報管理サーバ状態テーブル114およびセッション情報管理サーバ監視部115から構成される。これらの各処理部は、プログラムやオブジェクト、プロセス、スレッドで実現してもよい。
【0012】
新規作成処理部111は、HTTPセッション情報登録部102に新たなHTTPセッションを作成するプログラムである。なお、「HTTPセッション」と表記した場合はHTTPセッション情報登録部102におけるそのセッション情報の記憶領域のことを指し、「HTTPセッション情報」と表記した場合はそのHTTPセッションに格納されるセッション情報を指すものとする。
更新処理部112は、アプリケーションサーバ100内で行われたセッション情報の処理に対応して、クライアントマシン30〜32やセッション情報管理サーバ200へグローバルセッション情報の送信や更新要求をするプログラムである。
グローバルセッション情報取得部113は、後記するセッション情報管理サーバ200のグローバルセッション情報提供部214から情報を取得するプログラムである。
セッション情報管理サーバ状態テーブル114は、セッション情報管理サーバ200のアドレスや障害の有無などを記憶するテーブルである。
セッション情報管理サーバ監視部115は、セッション情報管理サーバ200の障害の有無を、セッション情報管理サーバ200の定時発信機能などにより検知し、その検知結果をセッション情報管理サーバ状態テーブル114に書き込むプログラムである。
【0013】
<計算機n(第2の計算機)>
計算機nは、計算機1〜(n−1)と同様のハードウエアを有する計算機であり、CPU21と主記憶装置22を含んで構成される。主記憶装置22には、計算機1〜(n−1)に関するセッション情報を管理するためのプログラムであるセッション情報管理サーバ200が記憶されている。
セッション情報管理サーバ200は、グローバルセッション情報登録部201およびグローバルセッション情報管理部210とから構成される。
【0014】
グローバルセッション情報登録部201は、各アプリケーションサーバ100のHTTPセッション情報のうち、他のアプリケーションサーバ100に引き継ぐ必要のあるものを各アプリケーションサーバ100から受信して登録するプログラムである。
グローバルセッション情報管理部210は、新規作成処理部211、更新処理部212、削除処理部213およびグローバルセッション情報提供部214から構成される。
【0015】
新規作成処理部211は、アプリケーションサーバ100の新規作成処理部111からの要求を受けて、グローバルセッション情報登録部201にグローバルセッションを作成するプログラムである。
更新処理部212は、アプリケーションサーバ100の更新処理部112からの要求を受けて、グローバルセッション情報登録部201に対してグローバルセッション情報の追加、更新、削除などを行うプログラムである。なお、「グローバルセッション」と表記した場合はグローバルセッション情報登録部201におけるそのセッション情報の記憶領域のことを指し、「グローバルセッション情報」と表記した場合はそのグローバルセッションに格納されるセッション情報を指すものとする。
削除処理部213は、グローバルセッション情報登録部201において有効期限が切れたグローバルセッションを削除するプログラムである。
グローバルセッション情報提供部214は、アプリケーションサーバ100のグローバルセッション情報取得部113からの要求を受けて、グローバルセッション情報登録部201を参照し、必要なグローバルセッション情報をグローバルセッション情報取得部113に送信するプログラムである。
なお、各処理部は、オブジェクトやスレッド、プロセスによって実現可能である。
【0016】
<<動作概要>>
続いて、セッション情報管理システム1000の動作概要について説明する。ここでは、図2A〜図2Eを参照しながら、アプリケーションサーバ100間でセッション情報を引き継ぐ動作の概要について説明する。
【0017】
図2A〜図2Eの各図において、クライアントマシン30〜32はネットワーク40と負荷分散機50を経由してアプリケーションサーバ100a,100bと接続され、また、アプリケーションサーバ100a,100bはセッション情報管理サーバ200に接続されている。なお、アプリケーションサーバ100a,100bは、図1のアプリケーションサーバ100と同様のプログラムである。
【0018】
まず、図2Aに示すように、アプリケーションサーバ100aは、クライアントマシン30〜32のいずれか(たとえばクライアントマシン30)からのアクセスにより作成されたHTTPセッション情報のうち、他のアプリケーションサーバに引き継ぐべきHTTPセッション情報(key1=value1、key2=value2、key3=value3)を、セッション情報管理サーバ200のグローバルセッション情報に含めるように複製する(同図(1))。具体的には、アプリケーションサーバ100aが、そのHTTPセッション情報をセッション情報管理サーバ200に送信し、セッション情報管理サーバ200がそれをグローバルセッション情報として登録する。なお、key1〜3、value1〜3については、後記の図3で説明する。
【0019】
この場合、アプリケーションサーバ100aで作成されたHTTPセッション情報(key1=value1、key2=value2、key3=value3)、および、セッション情報管理サーバ200に複製されたグローバルセッション情報(key1=value1、key2=value2、key3=value3)は、セッション情報管理サーバ200によって、2つの属性(不変属性/更新属性)のうち不変を示す不変属性が与えられる。なお、不変属性とは、HTTPセッション情報が更新されていないことを意味する。また、更新属性とは、HTTPセッション情報が更新されたことを意味する。
また、HTTPセッション情報の“key”は項目を、“value”はその項目に対応する値を示すものであるが、その詳細については図3の説明のところで述べる。
【0020】
その後、図2Aに示したアプリケーションサーバ100aの処理中、図2Bに示すように、アプリケーションサーバ100aに障害が発生した場合(同図(1))、負荷分散機50はクライアントマシン30からのアクセスをアプリケーションサーバ100bに切り替え、セッション情報管理サーバ200はグローバルセッション情報(key1=value1、key2=value2、key3=value3)を不変属性としたまま、アプリケーションサーバ100bに引き継ぐ(同図(2))。
これによって、アプリケーションサーバ100aにアクセスしていたクライアントマシン30は、再ログインなどの操作をすることなく、引き続きアプリケーションサーバ100bに対してアクセスを切り替えることができる。したがって、クライアントマシン30に対する処理がアプリケーションサーバ100bで継続されることとなる。
【0021】
そして、図2Cに示すように、アプリケーションサーバ100bのHTTPセッション情報が書き換えられて更新された場合、アプリケーションサーバ100bはその更新情報をセッション情報管理サーバ200に送信する。図2Cでは、たとえば、“key2”が“value2”から“value2'”に更新されたものとする。
更新情報を受信したセッション情報管理サーバ200は、その更新情報に基いて、グローバルセッション情報のうち“key2”を“value2”から“value2'”に更新し、あわせて“key2”の属性を更新属性に変更する。
なお、この時点では、アプリケーションサーバ100bのHTTPセッション情報の“key2”の属性は不変属性のままである。
【0022】
続いて、図2Dに示すように、セッション情報管理サーバ200は、アプリケーションサーバ100a,100bに、“key2”の属性が不変属性から更新属性に変更されたことを通知する。
これを受けて、アプリケーションサーバ100aは、“key2”の属性を不変属性から更新属性に変更する。また、アプリケーションサーバ100bは、“key2”の属性を不変属性から更新属性に変更する。
このように、セッション情報管理サーバ200がアプリケーションサーバ100bに対して、“key2”の属性変更のみを送信して、その変更内容を送信しないことによって、各サーバの処理負担を軽減することができる。つまり、この属性変更のみの送信であれば、その変更時1回だけ送信すればよく、その後に同じセッション情報に関して書き換えが行われてもセッション情報管理サーバ200からアプリケーションサーバ100bに対して送信を行う必要がないのである。
なお、アプリケーションサーバ100bにおいて、“key2”の属性を不変属性から更新属性に変更するタイミングが、実際に“key2”が更新されたときではなく、前記のようにセッション情報管理サーバ200からの通知を受けたときにしているのは、アプリケーションサーバ100aと100bとの整合性を保つためである。それは、より具体的には、図2Cにおいて、アプリケーションサーバ100aの“key2”の属性が不変属性であるにもかかわらず、アプリケーションサーバ100bの“key2”の属性が更新属性である、といった不整合状態を避けるためである。
【0023】
次に、図2Eにおいて、セッション情報管理サーバ200に障害が発生した場合、アプリケーションサーバ100a,100bは、更新属性のHTTPセッション情報(“key2”)を削除し、不変属性のHTTPセッション情報(“key1”と“key3”)を残すことで、アプリケーションサーバ100aと100bの整合性を保つことができる。
つまり、たとえば、ログインに使用されるユーザIDなどは、一度も更新されることがないので、不変属性のHTTPセッション情報としてアプリケーションサーバ100aと100bに残る。一方、たとえば、画面のページIDなどは、一度でも更新されると属性が更新属性のHTTPセッション情報になり、セッション情報管理サーバ200に障害が起きたときにアプリケーションサーバ100a,100bから削除されることになるが、ユーザIDなどに比べれば重要性の低い情報であり、アプリケーションサーバ間の整合性維持、セッション情報管理システム1000全体の処理効率などの点で有益な効果を奏すると言える。
また、本例では、アプリケーションサーバ100に障害が起きた場合について説明したが、アプリケーションサーバ100が1つあるいは複数削除される縮退運転が行われたときにも適用可能である。さらに、アプリケーションサーバ100が追加された場合でも、セッション情報管理サーバ200からセッション情報をコピーすることにより、追加されたアプリケーションサーバ100でもセッションを利用することが可能となる。
【0024】
<<データ構成>>
<HTTPセッション情報登録部のデータ構成>
続いて、図1のアプリケーションサーバ100におけるHTTPセッション情報登録部102のデータ構成について、図3を参照しながら説明する。図3は、HTTPセッション情報登録部102のデータ構成を表わした図である。
図3において、2つのセッション情報が、HTTPセッションID301、KEY302、VALUE303、属性304の4項目を含んで表示されている。
【0025】
HTTPセッションID301は、そのアプリケーションサーバ100内でそのセッションを一意に特定する識別子であり、ここではHTTPセッションID1とHTTPセッションID2の2つが示されている。
KEY302は、セッション情報を構成するそれぞれの情報の種類を示したものである。“UserID”は、クライアント(ユーザ)がクライアントマシン30〜32でログインを行うためのIDである。“Role”は、“UserID”などによってクライアントマシン30〜32に与えられる権限を意味するものである。“PageID”は、クライアント(ユーザ)がクライアントマシン30〜32で見ている画面のページIDである。“Search”は、検索を行った結果を表わしている。“CartID”は、図1のアプリケーションサーバ100におけるアプリケーションプログラム101のクライアントへの提供サービスがオンラインショッピングなどであった場合に、画面上で商品を入れる入れ物のIDを表わすものである。
【0026】
VALUE303は、KEY302に対応する実際の値であり、ここでは、上から順に“user1”、“role1”、“page1”、“searchResult1”、“cart1”が格納されている。
属性304は、KEY302として表わされる各情報それぞれが属する属性を表わしている。属性は、前記したように不変属性と更新属性の2種類であり、その2種類に属さないものは「−」で表記されている。
なお、不変属性あるいは更新属性を付与されるセッション情報は、他のアプリケーションサーバ100へも引き継ぐべきセッション情報であり、アプリケーションサーバ100において、予めKEY302の種類によって設定された選択条件により、どのセッション情報が引き継ぐべきセッション情報に該当するかが決められている。
不変属性は、図2A〜図2Eで説明したように各アプリケーションサーバが共有すべき情報のうち、そのセッション内で変更されないものであることを表わす。
また、更新属性は、各アプリケーションサーバが共有すべき情報のうち、そのセッション内で変更されるものであることを表わす。
さらに、「−」と表記された情報は、各アプリケーションサーバが共有する必要のない情報であることを表わすものである。
【0027】
<グローバルセッション情報登録部のデータ構成>
次に、図1のセッション情報管理サーバ200におけるグローバルセッション情報登録部201のデータ構成について、図4を参照しながら説明する。図4は、グローバルセッション情報登録部201のデータ構成を表わした図である。
図4において、2つのセッション情報が、グローバルセッションID401、KEY402、VALUE403、属性404の4項目に対応した形で格納されている。
【0028】
グローバルセッションID401は、セッション情報管理サーバ200内でそのセッションを一意に特定する識別子であり、ここではグローバルセッションID1とグローバルセッションID2の2つが示されている。
KEY402、VALUE403および属性404は、図3のKEY302、VALUE303、属性304と同様であるので、説明を省略する。
【0029】
<<処理手順>>
続いて、セッション情報管理システム1000の具体的な処理手順について説明する。
<処理1>
まず、図5を参照しながら、処理1(HTTPセッションが存在しない場合のリクエスト処理)について詳細に説明する。なお、ここでは、HTTPセッション情報登録部102がHTTPセッション未作成、グローバルセッション情報登録部201がグローバルセッション未作成の状態から処理が開始される。
【0030】
処理1は、アプリケーションサーバ100とセッション情報管理サーバ200に、それぞれセッション情報を作成する処理であり、図2Aにおける動作に相当する(図5のアプリケーションサーバ100は図2のアプリケーションサーバ100aに相当)。
図5は、前記条件のときの処理フロー図である。
まず、クライアントマシン30は、アプリケーションプログラム101にリクエストの処理を要求する(S501)。
アプリケーションプログラム101は、新規作成処理部111にHTTPセッションの新規作成を要求する(S502)。
新規作成処理部111は、HTTPセッション情報登録部102にHTTPセッションを作成し(S503)、また、そのHTTPセッションに対応するグローバルセッションID401(図4参照)を発行する。
新規作成処理部111は、新規作成処理部211に当該グローバルセッションID401に対応するグローバルセッションの作成を要求する(S504)。
【0031】
新規作成処理部211は、当該グローバルセッションID401に対応するグローバルセッションをグローバルセッション情報登録部201に作成する(S505)。
アプリケーションプログラム101は、HTTPセッション情報登録部102を参照し、更新すべき情報があれば更新を行う(S506)。
アプリケーションプログラム101は、更新処理部112に、クライアントマシン30へのレスポンス送信を要求する(S507)。
【0032】
更新処理部112は、更新処理部212にグローバルセッション情報登録部201への更新を要求する(S508)。
更新処理部212は、グローバルセッション情報登録部201を参照し、更新すべき情報があれば更新を行う(S509)。
更新処理部112は、グローバルセッションID401(図4)を含めたレスポンスをクライアントマシン30に送信する(S510)。これを受けて、クライアントマシン30は、グローバルセッションID401(図4)を自身に登録する。
【0033】
<処理2>
次に、図6を参照しながら、処理2(HTTPセッションが存在する場合のリクエスト処理)について詳細に説明する。なお、ここでは、HTTPセッション情報登録部102がHTTPセッション作成済み、グローバルセッション情報登録部201がグローバルセッション作成済みの状態から処理が開始される。
【0034】
処理2は、セッション情報の属性を不変属性から更新に変更する処理であり、図2C・図2Dにおける動作に相当する(図6のアプリケーションサーバ100は図2のアプリケーションサーバ100bに相当)。
図6は、前記条件のときの処理フロー図である。
まず、クライアントマシン30は、グローバルセッション情報取得部113にリクエストの処理を要求する(S601)。
グローバルセッション情報取得部113は、グローバルセッション情報提供部214に最新のグローバルセッション情報の提供を要求する(S602)。
グローバルセッション情報提供部214は、グローバルセッション情報登録部201を参照し、グローバルセッション情報が更新されているか確認する(S603)。
【0035】
グローバルセッション情報提供部214は、グローバルセッション情報取得部113に、グローバルセッション情報が更新されている場合は最新のグローバルセッション情報を送信し、更新されていない場合はその旨を送信する(S604)。
グローバルセッション情報取得部113は、S604で最新のグローバルセッション情報を受信している場合は、HTTPセッション情報登録部102において、対応するHTTPセッション情報を更新する(S605)。
グローバルセッション情報取得部113は、アプリケーションプログラム101に、リクエストの処理を要求する(S606)。
アプリケーションプログラム101は、HTTPセッション情報登録部102を参照し、更新すべき情報があれば更新を行う(S607)。
アプリケーションプログラム101は、更新処理部112に、クライアントマシン30へのレスポンス送信を要求する(S608)。
更新処理部112は、更新処理部212にグローバルセッション情報登録部201への更新を要求する(S609)。
【0036】
更新処理部212は、グローバルセッション情報登録部201を参照し、更新すべき情報があれば更新を行う。更新処理部212は、その際、不変属性の情報を更新するときは、その属性を更新属性に変更し(S610)、すべてのアプリケーションサーバ100にその情報の属性の変更(不変属性→更新属性)を要求する(S611)。
セッション情報管理サーバ監視部115は、当該情報の属性を不変属性から更新属性に変更する(S612)。
更新処理部112は、クライアントマシン30にレスポンスを送信する(S613)。
この処理2の動作により、更新のあった情報を不変属性から更新属性に変更することができる。
【0037】
<処理3>
続いて、図7を参照しながら、処理3(HTTPセッションが削除される場合のリクエスト処理)について詳細に説明する。なお、ここでは、HTTPセッション情報登録部102がHTTPセッション作成済み、グローバルセッション情報登録部201がグローバルセッション作成済みの状態から処理が開始される。
【0038】
処理3は、クライアントマシン30からの要求によって、HTTPセッション情報登録部102とグローバルセッション情報登録部201のそれぞれのセッション情報を削除する処理である。
図7は、前記条件のときの処理フロー図である。
まず、クライアントマシン30は、グローバルセッション情報取得部113にリクエストの処理を要求する(S701)。
グローバルセッション情報取得部113は、グローバルセッション情報提供部214に最新のグローバルセッション情報の提供を要求する(S702)。
グローバルセッション情報提供部214は、グローバルセッション情報登録部201を参照し、グローバルセッション情報が更新されているか確認する(S703)。
【0039】
グローバルセッション情報提供部214は、グローバルセッション情報取得部113に、グローバルセッション情報が更新されている場合は最新のグローバルセッション情報を送信し、更新されていない場合はその旨を送信する(S704)。
グローバルセッション情報取得部113は、S704で最新のグローバルセッション情報を受信している場合は、HTTPセッション情報登録部102において、対応するHTTPセッション情報を更新する(S705)。
グローバルセッション情報取得部113は、アプリケーションプログラム101に、リクエストの処理を要求する(S706)。
アプリケーションプログラム101は、HTTPセッション情報登録部102のHTTPセッションを削除する(S707)。
アプリケーションプログラム101は、更新処理部112に、クライアントマシン30へのレスポンス送信を要求する(S708)。
更新処理部112は、更新処理部212にグローバルセッション情報登録部201からのグローバルセッション情報の削除を要求する(S709)。
更新処理部212は、グローバルセッション情報登録部201からグローバルセッション情報を削除する(S710)。
更新処理部112は、クライアントマシン30に対してグローバルセッションID401(図4)を削除させるレスポンスを送信する(S711)。
【0040】
<処理4>
次に、図8を参照しながら、処理4(HTTPセッションの有効期限が切れた場合の処理)について詳細に説明する。処理4は、HTTPセッションの有効期限が切れた場合の、セッション情報管理サーバ200における処理を示した処理フロー図である。
削除処理部213は、自身が保有するHTTPセッションの有効期限情報により、HTTPセッションの有効期限が切れたことを検知した場合、グローバルセッション情報登録部201からそのHTTPセッションに対応するグローバルセッションを削除する(S801)。
【0041】
なお、HTTPセッションの有効期限情報は、削除処理部213自身が保有していなくても、専用テーブルなど(図示なし)に記憶されるようにしておいて、削除処理部213がその専用テーブルなどを参照するようにしてもよい。
この処理4の動作により、不要なセッションがセッション情報管理サーバ200に蓄積することを回避できる。
【0042】
<処理5>
続いて、図9を参照しながら、処理5(グローバルセッション情報を引き継ぐ場合のリクエスト処理)について詳細に説明する。なお、ここでは、HTTPセッション情報登録部102がHTTPセッション未作成、グローバルセッション情報登録部201がグローバルセッション作成済みの状態で処理が開始される。
【0043】
処理5は、リクエスト処理を行うアプリケーションサーバ100が切り替わった場合の処理であり、図2Bにおける動作に相当する(図9のアプリケーションサーバ100は図2のアプリケーションサーバ100bに相当)。
図9は、前記条件のときの処理フロー図である。
この処理5は、クライアントマシン30からのリクエストの処理を行うアプリケーションサーバ100が、障害発生などよって切り替わった直後から始まる処理である。
まず、クライアントマシン30は、グローバルセッション情報取得部113にリクエストの処理を要求する(S901)。
クライアントマシン30からのリクエスト情報内のHTTPセッションIDに対応するHTTPセッションがHTTPセッション情報登録部102に存在しない場合、グローバルセッション情報取得部113は、グローバルセッション情報提供部214に、前記リクエスト情報内のグローバルセッションIDに対応するグローバルセッション情報の提供を要求する(S902)。
グローバルセッション情報提供部214は、グローバルセッション情報登録部201から当該グローバルセッション情報を取得する(S903)。
【0044】
グローバルセッション情報提供部214は、グローバルセッション情報取得部113に、当該グローバルセッション情報を送信する(S904)。
グローバルセッション情報取得部113は、HTTPセッション情報登録部102に、当該グローバルセッション情報を新規のHTTPセッション情報として格納する(S905)。
グローバルセッション情報取得部113は、アプリケーションプログラム101に、リクエストの処理を要求する(S906)。
アプリケーションプログラム101は、HTTPセッション情報登録部102のHTTPセッション情報を使用し、リクエスト処理を行う(S907)。
【0045】
アプリケーションプログラム101は、更新処理部112に、クライアントマシン30へのレスポンス送信を要求する(S908)。
更新処理部112は、更新処理部212にグローバルセッション情報の更新を要求する(S909)。
更新処理部212は、グローバルセッション情報登録部201のグローバルセッション情報を更新する(S910)。
更新処理部112は、クライアントマシン30にレスポンスを送信する(S911)。
【0046】
このように、クライアントマシン30からのリクエストの処理を引き継ぐアプリケーションサーバ100は、セッション情報管理サーバ200から必要なセッション情報を引き継ぐことができる。これによって、クライアントマシン30は、再ログインなどの面倒な操作をすることなく、円滑にアプリケーションサーバ100へのアクセス(リクエスト)を継続することができる。
【0047】
<処理6>
次に、図10を参照しながら、処理6(セッション情報管理サーバ200に障害が発生した場合のリクエスト処理)について詳細に説明する。なお、ここでは、HTTPセッション情報登録部102がHTTPセッション作成済み、グローバルセッション情報登録部201がグローバルセッション作成済みの状態で処理が開始される。
【0048】
処理6は、セッション情報管理サーバ200に障害が発生したときの処理であり、図2Eにおける動作に相当する(図10のアプリケーションサーバ100は図2Eのアプリケーションサーバ100aあるいは100bのいずれかに相当)。
図10は、前記条件のときの処理フロー図である。
セッション情報管理サーバ監視部115は、セッション情報管理サーバ200に障害が発生していることを検知する(S1001)。なお、この障害検知の方法としては、たとえば、セッション情報管理サーバ監視部115がセッション情報管理サーバ200からの定時発信を受信しなかったことをセッション情報管理サーバ200の障害と判断する方法が挙げられるが、その方法に限定されるものではなく、他の方法を用いてもよい。
セッション情報管理サーバ監視部115は、セッション情報管理サーバ状態テーブル114のセッション情報管理サーバ200の状態を「障害」と書き換える(S1002)。
クライアントマシン30は、グローバルセッション情報取得部113にリクエストの処理を要求する(S1003)。
【0049】
グローバルセッション情報取得部113は、セッション情報管理サーバ200に障害が発生しているので、そのとき処理中のリクエストに対応するHTTPセッション情報のうち更新属性の情報を削除する(S1004)。
このS1004の動作は、複数のアプリケーションサーバ100間の整合性を保つためのものである。つまり、セッション情報管理サーバ200に障害が発生していて、これ以降はアプリケーションサーバ100間でセッション情報の共有ができないため、複数のアプリケーションサーバ100間で内容が整合していない更新属性の情報を削除することによって、複数のアプリケーションサーバ100間の不整合状態を回避しておくのである。一方、不変属性の情報は、変更されることがないので削除する必要はなく、また、削除しないことによって、アプリケーションサーバ100が切り替わったときでも、クライアントマシン30において再ログインなどの面倒な操作が不要となり、利便性の高いセッション情報管理システム1000を実現することができる。
【0050】
図10の処理6に戻って、グローバルセッション情報取得部113は、アプリケーションプログラム101に、リクエストの処理を要求する(S1005)。
アプリケーションプログラム101は、HTTPセッション情報登録部102のHTTPセッション情報のうち残存している不変属性の情報を使用して、リクエスト処理を行う(S1006)。
アプリケーションプログラム101は、更新処理部112に、クライアントマシン30へのレスポンス送信を要求する(S1007)。
更新処理部112は、クライアントマシン30にレスポンスを送信する(S1008)。
【0051】
このように、実施の形態に係るセッション情報管理システム1000によれば、セッション情報のうち引き継ぐべき情報を2つの属性(不変属性/更新属性)に分けて、アプリケーションサーバ100およびセッション情報管理サーバ200で共有する。そして、セッション情報管理サーバ200に障害が発生した場合には、更新属性の情報を削除して不変属性の情報のみをアプリケーションサーバ100に残すことで、複数のアプリケーションサーバ100間におけるセッション情報の整合性を維持することができる。
また、アプリケーションサーバ100からセッション情報を最初にセッション情報管理サーバ200に記憶させるときはすべて不変属性の情報とし、その後、1回でも変更のあった情報を更新属性の情報と変更することで、自動的に適切な属性を決定および付与することができ、情報ごとの属性を事前に登録しておくなどの煩雑な操作が不要で利便性の高いセッション情報管理システム1000を実現することができる。ただし、セッション情報の種類(図3のKEY302の種類)が少ない場合などは、予め個別のセッション情報に関する属性を手動で設定するようにしておいてもよい。
【0052】
以上で実施の形態の説明を終えるが、本発明の態様はこれらに限定されるものではない。たとえば、クライアントマシンからのアクセスを複数のアプリケーションサーバに振り分けるには、負荷分散機を使わなくても、ラウンドロビン方式などを採用することにより実現してもよい。その他、具体的な構成について、本発明の主旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【0053】
【図1】実施の形態に係るセッション情報管理システムの全体構成を示す図である。
【図2A】セッション情報管理システムにおけるセッション情報の複製動作を示す図である。
【図2B】セッション情報管理システムにおいてアプリケーションサーバで障害が発生した場合の動作を示す図である。
【図2C】セッション情報管理システムにおけるセッション情報の書換え動作を示す図である。
【図2D】セッション情報管理システムにおけるセッション情報の属性変更動作を示す図である。
【図2E】セッション情報管理システムにおいてセッション情報管理サーバで障害が発生した場合の動作を示す図である。
【図3】HTTPセッション情報登録部のデータ構成を表わした図である。
【図4】グローバルセッション情報登録部のデータ構成を表わした図である。
【図5】HTTPセッションが存在しない場合の処理フロー図である。
【図6】HTTPセッションが存在する場合の処理フロー図である。
【図7】HTTPセッションを削除する場合の処理フロー図である。
【図8】HTTPセッションの有効期限が切れた場合の処理フロー図である。
【図9】グローバルセッション情報を引き継ぐ場合の処理フロー図である。
【図10】セッション情報管理サーバに障害が発生した場合の処理フロー図である。
【符号の説明】
【0054】
1〜n 計算機
30〜32 クライアントマシン
40 ネットワーク
50 負荷分散機
60、70 通信回線
100 アプリケーションサーバ
200 セッション情報管理サーバ
1000 セッション情報管理システム
【技術分野】
【0001】
本発明は、セッション情報を管理するセッション情報管理技術に関連するものである。
【背景技術】
【0002】
従来、クライアントマシンからの要求を処理するアプリケーションサーバはクラスタ構成で複数設置され、クライアントマシンからの要求が負荷分散機などによって任意のアプリケーションサーバに振り分けられるようになっている。
また、クライアントマシンからの要求を処理しているアプリケーションサーバがダウン(故障などによる作動停止)した場合には、他のアプリケーションサーバがそのセッション情報を引き継いで処理を継続する必要がある。そして、そのセッション情報を引き継ぐ方式としては、たとえば、DB(Data Base)方式とメモリ方式とが挙げられる。
DB方式とは、すべてのアプリケーションサーバに接続され、各アプリケーションサーバのセッション情報を順次格納するDBサーバを設ける方式である(たとえば特許文献1参照)。
また、メモリ方式は、クラスタを構成するすべてのアプリケーションサーバに各アプリケーションサーバのセッション情報の複製を持たせる方式である。
【特許文献1】特開2004−78552号公報(段落0016〜0027、図1)
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、特許文献1に記載の方法では、システムが大掛かりになり、運用が難しく、また、不必要になったセッション情報が永続的に残存してしまうという問題があった。
また、メモリ方式では、クラスタを構成するアプリケーションサーバの数が多くなると、セッション情報の複製のためのオーバヘッドが大きくなるという問題があった。さらに、複製の一部が失敗すると、各アプリケーションサーバ間でセッション情報の整合性が保てなくなるという問題もあった。
そこで、本発明の目的は、セッション情報を処理引き継ぎ時に再利用できることにある。また、本発明の他の目的は、各アプリケーションサーバ間でセッション情報の整合性を保ちながら処理を継続することにある。
【課題を解決するための手段】
【0004】
前記課題を解決するために、本発明は、端末と接続された複数の第1の計算機と、その複数の第1の計算機と接続された第2の計算機とを備えたセッション情報管理システムであって、前記第2の計算機は、前記セッション情報の更新の有無を示す属性を当該セッション情報に付与し、前記第1の計算機は、前記第2の計算機によって付与されたセッション情報の属性に基いて、前記端末からの要求に応じた処理を継続することを特徴とする。
【発明の効果】
【0005】
本発明によれば、セッション情報を処理引き継ぎ時に再利用することが可能となる。
【発明を実施するための最良の形態】
【0006】
以下、本発明の実施の形態に係るセッション情報管理システムを、図面を参照しながら、全体構成、動作概要、データ構成、処理手順の順番で説明する。
【0007】
<<全体構成>>
図1は、実施形態のセッション情報管理システムの全体構成を示す図である。セッション情報管理システム1000は、クライアントマシン30〜32、ネットワーク40、負荷分散機50および計算機1〜nにより構成される。
【0008】
クライアントマシン30〜32は、クライアント(ユーザ)が使用するマシンで、たとえば、PC(Personal Computer)であり、端末やユーザ端末ともいう。
ネットワーク40は、広域通信網で、たとえば、インターネットであり、データや要求を送受信するための手段である。クライアントマシン30〜32は、ネットワーク40を介して、負荷分散機50に接続される。
負荷分散機50は、クライアントマシン30〜32からのアクセスを、通信回線60経由で計算機1〜(n−1)に振り分けるものであり、いわゆるロードバランサである。
計算機nは、通信回線70を介して計算機1〜(n−1)と接続されている。
【0009】
<計算機1〜(n−1)(第1の計算機)>
計算機1〜(n−1)は、クラスタ構成となっており、負荷分散機50からの振り分けによってクライアントマシン30〜32からのアクセスを受け付け、処理を行う計算機である。この計算機1〜(n−1)は、計算機や、情報処理装置、仮想計算機、論理サーバなどによって、上記処理を実現することができる。そして、計算機1〜(n−1)は、ハードウエア、ソフトウエアともに同様の構成となっているので、以下、代表して計算機1を例にとって説明する。
【0010】
計算機1は、CPU(Central Processing Unit)11と主記憶装置12とを含めて構成される。
CPU11は、中央処理装置であり、負荷分散機50から受信したデータや主記憶装置12内のプログラム等に基いて、各種演算処理を行う。
主記憶装置12は、メモリやRAM(Random Access Memory)、ROM(Read Only Memory)、ハードディスクなどから構成され、各種情報を記憶する。主記憶装置12には、プログラムであるアプリケーションサーバ100が記憶されている。
【0011】
アプリケーションサーバ100は、アプリケーションプログラム101、HTTPセッション情報登録部102およびHTTPセッション情報管理部110から構成される。
アプリケーションプログラム101は、クライアントマシン30〜32からのアクセスに対応するプログラムで、オブジェクトやプロセス、スレッドで実現可能であり、業務プログラムであってもよい。
HTTPセッション情報登録部102は、クライアントマシン30〜32からのアクセスによるセッション情報を登録するプログラムである。
HTTPセッション情報管理部110は、HTTPセッション情報登録部102に登録された情報を管理するプログラムであり、新規作成処理部111、更新処理部112、グローバルセッション情報取得部113、セッション情報管理サーバ状態テーブル114およびセッション情報管理サーバ監視部115から構成される。これらの各処理部は、プログラムやオブジェクト、プロセス、スレッドで実現してもよい。
【0012】
新規作成処理部111は、HTTPセッション情報登録部102に新たなHTTPセッションを作成するプログラムである。なお、「HTTPセッション」と表記した場合はHTTPセッション情報登録部102におけるそのセッション情報の記憶領域のことを指し、「HTTPセッション情報」と表記した場合はそのHTTPセッションに格納されるセッション情報を指すものとする。
更新処理部112は、アプリケーションサーバ100内で行われたセッション情報の処理に対応して、クライアントマシン30〜32やセッション情報管理サーバ200へグローバルセッション情報の送信や更新要求をするプログラムである。
グローバルセッション情報取得部113は、後記するセッション情報管理サーバ200のグローバルセッション情報提供部214から情報を取得するプログラムである。
セッション情報管理サーバ状態テーブル114は、セッション情報管理サーバ200のアドレスや障害の有無などを記憶するテーブルである。
セッション情報管理サーバ監視部115は、セッション情報管理サーバ200の障害の有無を、セッション情報管理サーバ200の定時発信機能などにより検知し、その検知結果をセッション情報管理サーバ状態テーブル114に書き込むプログラムである。
【0013】
<計算機n(第2の計算機)>
計算機nは、計算機1〜(n−1)と同様のハードウエアを有する計算機であり、CPU21と主記憶装置22を含んで構成される。主記憶装置22には、計算機1〜(n−1)に関するセッション情報を管理するためのプログラムであるセッション情報管理サーバ200が記憶されている。
セッション情報管理サーバ200は、グローバルセッション情報登録部201およびグローバルセッション情報管理部210とから構成される。
【0014】
グローバルセッション情報登録部201は、各アプリケーションサーバ100のHTTPセッション情報のうち、他のアプリケーションサーバ100に引き継ぐ必要のあるものを各アプリケーションサーバ100から受信して登録するプログラムである。
グローバルセッション情報管理部210は、新規作成処理部211、更新処理部212、削除処理部213およびグローバルセッション情報提供部214から構成される。
【0015】
新規作成処理部211は、アプリケーションサーバ100の新規作成処理部111からの要求を受けて、グローバルセッション情報登録部201にグローバルセッションを作成するプログラムである。
更新処理部212は、アプリケーションサーバ100の更新処理部112からの要求を受けて、グローバルセッション情報登録部201に対してグローバルセッション情報の追加、更新、削除などを行うプログラムである。なお、「グローバルセッション」と表記した場合はグローバルセッション情報登録部201におけるそのセッション情報の記憶領域のことを指し、「グローバルセッション情報」と表記した場合はそのグローバルセッションに格納されるセッション情報を指すものとする。
削除処理部213は、グローバルセッション情報登録部201において有効期限が切れたグローバルセッションを削除するプログラムである。
グローバルセッション情報提供部214は、アプリケーションサーバ100のグローバルセッション情報取得部113からの要求を受けて、グローバルセッション情報登録部201を参照し、必要なグローバルセッション情報をグローバルセッション情報取得部113に送信するプログラムである。
なお、各処理部は、オブジェクトやスレッド、プロセスによって実現可能である。
【0016】
<<動作概要>>
続いて、セッション情報管理システム1000の動作概要について説明する。ここでは、図2A〜図2Eを参照しながら、アプリケーションサーバ100間でセッション情報を引き継ぐ動作の概要について説明する。
【0017】
図2A〜図2Eの各図において、クライアントマシン30〜32はネットワーク40と負荷分散機50を経由してアプリケーションサーバ100a,100bと接続され、また、アプリケーションサーバ100a,100bはセッション情報管理サーバ200に接続されている。なお、アプリケーションサーバ100a,100bは、図1のアプリケーションサーバ100と同様のプログラムである。
【0018】
まず、図2Aに示すように、アプリケーションサーバ100aは、クライアントマシン30〜32のいずれか(たとえばクライアントマシン30)からのアクセスにより作成されたHTTPセッション情報のうち、他のアプリケーションサーバに引き継ぐべきHTTPセッション情報(key1=value1、key2=value2、key3=value3)を、セッション情報管理サーバ200のグローバルセッション情報に含めるように複製する(同図(1))。具体的には、アプリケーションサーバ100aが、そのHTTPセッション情報をセッション情報管理サーバ200に送信し、セッション情報管理サーバ200がそれをグローバルセッション情報として登録する。なお、key1〜3、value1〜3については、後記の図3で説明する。
【0019】
この場合、アプリケーションサーバ100aで作成されたHTTPセッション情報(key1=value1、key2=value2、key3=value3)、および、セッション情報管理サーバ200に複製されたグローバルセッション情報(key1=value1、key2=value2、key3=value3)は、セッション情報管理サーバ200によって、2つの属性(不変属性/更新属性)のうち不変を示す不変属性が与えられる。なお、不変属性とは、HTTPセッション情報が更新されていないことを意味する。また、更新属性とは、HTTPセッション情報が更新されたことを意味する。
また、HTTPセッション情報の“key”は項目を、“value”はその項目に対応する値を示すものであるが、その詳細については図3の説明のところで述べる。
【0020】
その後、図2Aに示したアプリケーションサーバ100aの処理中、図2Bに示すように、アプリケーションサーバ100aに障害が発生した場合(同図(1))、負荷分散機50はクライアントマシン30からのアクセスをアプリケーションサーバ100bに切り替え、セッション情報管理サーバ200はグローバルセッション情報(key1=value1、key2=value2、key3=value3)を不変属性としたまま、アプリケーションサーバ100bに引き継ぐ(同図(2))。
これによって、アプリケーションサーバ100aにアクセスしていたクライアントマシン30は、再ログインなどの操作をすることなく、引き続きアプリケーションサーバ100bに対してアクセスを切り替えることができる。したがって、クライアントマシン30に対する処理がアプリケーションサーバ100bで継続されることとなる。
【0021】
そして、図2Cに示すように、アプリケーションサーバ100bのHTTPセッション情報が書き換えられて更新された場合、アプリケーションサーバ100bはその更新情報をセッション情報管理サーバ200に送信する。図2Cでは、たとえば、“key2”が“value2”から“value2'”に更新されたものとする。
更新情報を受信したセッション情報管理サーバ200は、その更新情報に基いて、グローバルセッション情報のうち“key2”を“value2”から“value2'”に更新し、あわせて“key2”の属性を更新属性に変更する。
なお、この時点では、アプリケーションサーバ100bのHTTPセッション情報の“key2”の属性は不変属性のままである。
【0022】
続いて、図2Dに示すように、セッション情報管理サーバ200は、アプリケーションサーバ100a,100bに、“key2”の属性が不変属性から更新属性に変更されたことを通知する。
これを受けて、アプリケーションサーバ100aは、“key2”の属性を不変属性から更新属性に変更する。また、アプリケーションサーバ100bは、“key2”の属性を不変属性から更新属性に変更する。
このように、セッション情報管理サーバ200がアプリケーションサーバ100bに対して、“key2”の属性変更のみを送信して、その変更内容を送信しないことによって、各サーバの処理負担を軽減することができる。つまり、この属性変更のみの送信であれば、その変更時1回だけ送信すればよく、その後に同じセッション情報に関して書き換えが行われてもセッション情報管理サーバ200からアプリケーションサーバ100bに対して送信を行う必要がないのである。
なお、アプリケーションサーバ100bにおいて、“key2”の属性を不変属性から更新属性に変更するタイミングが、実際に“key2”が更新されたときではなく、前記のようにセッション情報管理サーバ200からの通知を受けたときにしているのは、アプリケーションサーバ100aと100bとの整合性を保つためである。それは、より具体的には、図2Cにおいて、アプリケーションサーバ100aの“key2”の属性が不変属性であるにもかかわらず、アプリケーションサーバ100bの“key2”の属性が更新属性である、といった不整合状態を避けるためである。
【0023】
次に、図2Eにおいて、セッション情報管理サーバ200に障害が発生した場合、アプリケーションサーバ100a,100bは、更新属性のHTTPセッション情報(“key2”)を削除し、不変属性のHTTPセッション情報(“key1”と“key3”)を残すことで、アプリケーションサーバ100aと100bの整合性を保つことができる。
つまり、たとえば、ログインに使用されるユーザIDなどは、一度も更新されることがないので、不変属性のHTTPセッション情報としてアプリケーションサーバ100aと100bに残る。一方、たとえば、画面のページIDなどは、一度でも更新されると属性が更新属性のHTTPセッション情報になり、セッション情報管理サーバ200に障害が起きたときにアプリケーションサーバ100a,100bから削除されることになるが、ユーザIDなどに比べれば重要性の低い情報であり、アプリケーションサーバ間の整合性維持、セッション情報管理システム1000全体の処理効率などの点で有益な効果を奏すると言える。
また、本例では、アプリケーションサーバ100に障害が起きた場合について説明したが、アプリケーションサーバ100が1つあるいは複数削除される縮退運転が行われたときにも適用可能である。さらに、アプリケーションサーバ100が追加された場合でも、セッション情報管理サーバ200からセッション情報をコピーすることにより、追加されたアプリケーションサーバ100でもセッションを利用することが可能となる。
【0024】
<<データ構成>>
<HTTPセッション情報登録部のデータ構成>
続いて、図1のアプリケーションサーバ100におけるHTTPセッション情報登録部102のデータ構成について、図3を参照しながら説明する。図3は、HTTPセッション情報登録部102のデータ構成を表わした図である。
図3において、2つのセッション情報が、HTTPセッションID301、KEY302、VALUE303、属性304の4項目を含んで表示されている。
【0025】
HTTPセッションID301は、そのアプリケーションサーバ100内でそのセッションを一意に特定する識別子であり、ここではHTTPセッションID1とHTTPセッションID2の2つが示されている。
KEY302は、セッション情報を構成するそれぞれの情報の種類を示したものである。“UserID”は、クライアント(ユーザ)がクライアントマシン30〜32でログインを行うためのIDである。“Role”は、“UserID”などによってクライアントマシン30〜32に与えられる権限を意味するものである。“PageID”は、クライアント(ユーザ)がクライアントマシン30〜32で見ている画面のページIDである。“Search”は、検索を行った結果を表わしている。“CartID”は、図1のアプリケーションサーバ100におけるアプリケーションプログラム101のクライアントへの提供サービスがオンラインショッピングなどであった場合に、画面上で商品を入れる入れ物のIDを表わすものである。
【0026】
VALUE303は、KEY302に対応する実際の値であり、ここでは、上から順に“user1”、“role1”、“page1”、“searchResult1”、“cart1”が格納されている。
属性304は、KEY302として表わされる各情報それぞれが属する属性を表わしている。属性は、前記したように不変属性と更新属性の2種類であり、その2種類に属さないものは「−」で表記されている。
なお、不変属性あるいは更新属性を付与されるセッション情報は、他のアプリケーションサーバ100へも引き継ぐべきセッション情報であり、アプリケーションサーバ100において、予めKEY302の種類によって設定された選択条件により、どのセッション情報が引き継ぐべきセッション情報に該当するかが決められている。
不変属性は、図2A〜図2Eで説明したように各アプリケーションサーバが共有すべき情報のうち、そのセッション内で変更されないものであることを表わす。
また、更新属性は、各アプリケーションサーバが共有すべき情報のうち、そのセッション内で変更されるものであることを表わす。
さらに、「−」と表記された情報は、各アプリケーションサーバが共有する必要のない情報であることを表わすものである。
【0027】
<グローバルセッション情報登録部のデータ構成>
次に、図1のセッション情報管理サーバ200におけるグローバルセッション情報登録部201のデータ構成について、図4を参照しながら説明する。図4は、グローバルセッション情報登録部201のデータ構成を表わした図である。
図4において、2つのセッション情報が、グローバルセッションID401、KEY402、VALUE403、属性404の4項目に対応した形で格納されている。
【0028】
グローバルセッションID401は、セッション情報管理サーバ200内でそのセッションを一意に特定する識別子であり、ここではグローバルセッションID1とグローバルセッションID2の2つが示されている。
KEY402、VALUE403および属性404は、図3のKEY302、VALUE303、属性304と同様であるので、説明を省略する。
【0029】
<<処理手順>>
続いて、セッション情報管理システム1000の具体的な処理手順について説明する。
<処理1>
まず、図5を参照しながら、処理1(HTTPセッションが存在しない場合のリクエスト処理)について詳細に説明する。なお、ここでは、HTTPセッション情報登録部102がHTTPセッション未作成、グローバルセッション情報登録部201がグローバルセッション未作成の状態から処理が開始される。
【0030】
処理1は、アプリケーションサーバ100とセッション情報管理サーバ200に、それぞれセッション情報を作成する処理であり、図2Aにおける動作に相当する(図5のアプリケーションサーバ100は図2のアプリケーションサーバ100aに相当)。
図5は、前記条件のときの処理フロー図である。
まず、クライアントマシン30は、アプリケーションプログラム101にリクエストの処理を要求する(S501)。
アプリケーションプログラム101は、新規作成処理部111にHTTPセッションの新規作成を要求する(S502)。
新規作成処理部111は、HTTPセッション情報登録部102にHTTPセッションを作成し(S503)、また、そのHTTPセッションに対応するグローバルセッションID401(図4参照)を発行する。
新規作成処理部111は、新規作成処理部211に当該グローバルセッションID401に対応するグローバルセッションの作成を要求する(S504)。
【0031】
新規作成処理部211は、当該グローバルセッションID401に対応するグローバルセッションをグローバルセッション情報登録部201に作成する(S505)。
アプリケーションプログラム101は、HTTPセッション情報登録部102を参照し、更新すべき情報があれば更新を行う(S506)。
アプリケーションプログラム101は、更新処理部112に、クライアントマシン30へのレスポンス送信を要求する(S507)。
【0032】
更新処理部112は、更新処理部212にグローバルセッション情報登録部201への更新を要求する(S508)。
更新処理部212は、グローバルセッション情報登録部201を参照し、更新すべき情報があれば更新を行う(S509)。
更新処理部112は、グローバルセッションID401(図4)を含めたレスポンスをクライアントマシン30に送信する(S510)。これを受けて、クライアントマシン30は、グローバルセッションID401(図4)を自身に登録する。
【0033】
<処理2>
次に、図6を参照しながら、処理2(HTTPセッションが存在する場合のリクエスト処理)について詳細に説明する。なお、ここでは、HTTPセッション情報登録部102がHTTPセッション作成済み、グローバルセッション情報登録部201がグローバルセッション作成済みの状態から処理が開始される。
【0034】
処理2は、セッション情報の属性を不変属性から更新に変更する処理であり、図2C・図2Dにおける動作に相当する(図6のアプリケーションサーバ100は図2のアプリケーションサーバ100bに相当)。
図6は、前記条件のときの処理フロー図である。
まず、クライアントマシン30は、グローバルセッション情報取得部113にリクエストの処理を要求する(S601)。
グローバルセッション情報取得部113は、グローバルセッション情報提供部214に最新のグローバルセッション情報の提供を要求する(S602)。
グローバルセッション情報提供部214は、グローバルセッション情報登録部201を参照し、グローバルセッション情報が更新されているか確認する(S603)。
【0035】
グローバルセッション情報提供部214は、グローバルセッション情報取得部113に、グローバルセッション情報が更新されている場合は最新のグローバルセッション情報を送信し、更新されていない場合はその旨を送信する(S604)。
グローバルセッション情報取得部113は、S604で最新のグローバルセッション情報を受信している場合は、HTTPセッション情報登録部102において、対応するHTTPセッション情報を更新する(S605)。
グローバルセッション情報取得部113は、アプリケーションプログラム101に、リクエストの処理を要求する(S606)。
アプリケーションプログラム101は、HTTPセッション情報登録部102を参照し、更新すべき情報があれば更新を行う(S607)。
アプリケーションプログラム101は、更新処理部112に、クライアントマシン30へのレスポンス送信を要求する(S608)。
更新処理部112は、更新処理部212にグローバルセッション情報登録部201への更新を要求する(S609)。
【0036】
更新処理部212は、グローバルセッション情報登録部201を参照し、更新すべき情報があれば更新を行う。更新処理部212は、その際、不変属性の情報を更新するときは、その属性を更新属性に変更し(S610)、すべてのアプリケーションサーバ100にその情報の属性の変更(不変属性→更新属性)を要求する(S611)。
セッション情報管理サーバ監視部115は、当該情報の属性を不変属性から更新属性に変更する(S612)。
更新処理部112は、クライアントマシン30にレスポンスを送信する(S613)。
この処理2の動作により、更新のあった情報を不変属性から更新属性に変更することができる。
【0037】
<処理3>
続いて、図7を参照しながら、処理3(HTTPセッションが削除される場合のリクエスト処理)について詳細に説明する。なお、ここでは、HTTPセッション情報登録部102がHTTPセッション作成済み、グローバルセッション情報登録部201がグローバルセッション作成済みの状態から処理が開始される。
【0038】
処理3は、クライアントマシン30からの要求によって、HTTPセッション情報登録部102とグローバルセッション情報登録部201のそれぞれのセッション情報を削除する処理である。
図7は、前記条件のときの処理フロー図である。
まず、クライアントマシン30は、グローバルセッション情報取得部113にリクエストの処理を要求する(S701)。
グローバルセッション情報取得部113は、グローバルセッション情報提供部214に最新のグローバルセッション情報の提供を要求する(S702)。
グローバルセッション情報提供部214は、グローバルセッション情報登録部201を参照し、グローバルセッション情報が更新されているか確認する(S703)。
【0039】
グローバルセッション情報提供部214は、グローバルセッション情報取得部113に、グローバルセッション情報が更新されている場合は最新のグローバルセッション情報を送信し、更新されていない場合はその旨を送信する(S704)。
グローバルセッション情報取得部113は、S704で最新のグローバルセッション情報を受信している場合は、HTTPセッション情報登録部102において、対応するHTTPセッション情報を更新する(S705)。
グローバルセッション情報取得部113は、アプリケーションプログラム101に、リクエストの処理を要求する(S706)。
アプリケーションプログラム101は、HTTPセッション情報登録部102のHTTPセッションを削除する(S707)。
アプリケーションプログラム101は、更新処理部112に、クライアントマシン30へのレスポンス送信を要求する(S708)。
更新処理部112は、更新処理部212にグローバルセッション情報登録部201からのグローバルセッション情報の削除を要求する(S709)。
更新処理部212は、グローバルセッション情報登録部201からグローバルセッション情報を削除する(S710)。
更新処理部112は、クライアントマシン30に対してグローバルセッションID401(図4)を削除させるレスポンスを送信する(S711)。
【0040】
<処理4>
次に、図8を参照しながら、処理4(HTTPセッションの有効期限が切れた場合の処理)について詳細に説明する。処理4は、HTTPセッションの有効期限が切れた場合の、セッション情報管理サーバ200における処理を示した処理フロー図である。
削除処理部213は、自身が保有するHTTPセッションの有効期限情報により、HTTPセッションの有効期限が切れたことを検知した場合、グローバルセッション情報登録部201からそのHTTPセッションに対応するグローバルセッションを削除する(S801)。
【0041】
なお、HTTPセッションの有効期限情報は、削除処理部213自身が保有していなくても、専用テーブルなど(図示なし)に記憶されるようにしておいて、削除処理部213がその専用テーブルなどを参照するようにしてもよい。
この処理4の動作により、不要なセッションがセッション情報管理サーバ200に蓄積することを回避できる。
【0042】
<処理5>
続いて、図9を参照しながら、処理5(グローバルセッション情報を引き継ぐ場合のリクエスト処理)について詳細に説明する。なお、ここでは、HTTPセッション情報登録部102がHTTPセッション未作成、グローバルセッション情報登録部201がグローバルセッション作成済みの状態で処理が開始される。
【0043】
処理5は、リクエスト処理を行うアプリケーションサーバ100が切り替わった場合の処理であり、図2Bにおける動作に相当する(図9のアプリケーションサーバ100は図2のアプリケーションサーバ100bに相当)。
図9は、前記条件のときの処理フロー図である。
この処理5は、クライアントマシン30からのリクエストの処理を行うアプリケーションサーバ100が、障害発生などよって切り替わった直後から始まる処理である。
まず、クライアントマシン30は、グローバルセッション情報取得部113にリクエストの処理を要求する(S901)。
クライアントマシン30からのリクエスト情報内のHTTPセッションIDに対応するHTTPセッションがHTTPセッション情報登録部102に存在しない場合、グローバルセッション情報取得部113は、グローバルセッション情報提供部214に、前記リクエスト情報内のグローバルセッションIDに対応するグローバルセッション情報の提供を要求する(S902)。
グローバルセッション情報提供部214は、グローバルセッション情報登録部201から当該グローバルセッション情報を取得する(S903)。
【0044】
グローバルセッション情報提供部214は、グローバルセッション情報取得部113に、当該グローバルセッション情報を送信する(S904)。
グローバルセッション情報取得部113は、HTTPセッション情報登録部102に、当該グローバルセッション情報を新規のHTTPセッション情報として格納する(S905)。
グローバルセッション情報取得部113は、アプリケーションプログラム101に、リクエストの処理を要求する(S906)。
アプリケーションプログラム101は、HTTPセッション情報登録部102のHTTPセッション情報を使用し、リクエスト処理を行う(S907)。
【0045】
アプリケーションプログラム101は、更新処理部112に、クライアントマシン30へのレスポンス送信を要求する(S908)。
更新処理部112は、更新処理部212にグローバルセッション情報の更新を要求する(S909)。
更新処理部212は、グローバルセッション情報登録部201のグローバルセッション情報を更新する(S910)。
更新処理部112は、クライアントマシン30にレスポンスを送信する(S911)。
【0046】
このように、クライアントマシン30からのリクエストの処理を引き継ぐアプリケーションサーバ100は、セッション情報管理サーバ200から必要なセッション情報を引き継ぐことができる。これによって、クライアントマシン30は、再ログインなどの面倒な操作をすることなく、円滑にアプリケーションサーバ100へのアクセス(リクエスト)を継続することができる。
【0047】
<処理6>
次に、図10を参照しながら、処理6(セッション情報管理サーバ200に障害が発生した場合のリクエスト処理)について詳細に説明する。なお、ここでは、HTTPセッション情報登録部102がHTTPセッション作成済み、グローバルセッション情報登録部201がグローバルセッション作成済みの状態で処理が開始される。
【0048】
処理6は、セッション情報管理サーバ200に障害が発生したときの処理であり、図2Eにおける動作に相当する(図10のアプリケーションサーバ100は図2Eのアプリケーションサーバ100aあるいは100bのいずれかに相当)。
図10は、前記条件のときの処理フロー図である。
セッション情報管理サーバ監視部115は、セッション情報管理サーバ200に障害が発生していることを検知する(S1001)。なお、この障害検知の方法としては、たとえば、セッション情報管理サーバ監視部115がセッション情報管理サーバ200からの定時発信を受信しなかったことをセッション情報管理サーバ200の障害と判断する方法が挙げられるが、その方法に限定されるものではなく、他の方法を用いてもよい。
セッション情報管理サーバ監視部115は、セッション情報管理サーバ状態テーブル114のセッション情報管理サーバ200の状態を「障害」と書き換える(S1002)。
クライアントマシン30は、グローバルセッション情報取得部113にリクエストの処理を要求する(S1003)。
【0049】
グローバルセッション情報取得部113は、セッション情報管理サーバ200に障害が発生しているので、そのとき処理中のリクエストに対応するHTTPセッション情報のうち更新属性の情報を削除する(S1004)。
このS1004の動作は、複数のアプリケーションサーバ100間の整合性を保つためのものである。つまり、セッション情報管理サーバ200に障害が発生していて、これ以降はアプリケーションサーバ100間でセッション情報の共有ができないため、複数のアプリケーションサーバ100間で内容が整合していない更新属性の情報を削除することによって、複数のアプリケーションサーバ100間の不整合状態を回避しておくのである。一方、不変属性の情報は、変更されることがないので削除する必要はなく、また、削除しないことによって、アプリケーションサーバ100が切り替わったときでも、クライアントマシン30において再ログインなどの面倒な操作が不要となり、利便性の高いセッション情報管理システム1000を実現することができる。
【0050】
図10の処理6に戻って、グローバルセッション情報取得部113は、アプリケーションプログラム101に、リクエストの処理を要求する(S1005)。
アプリケーションプログラム101は、HTTPセッション情報登録部102のHTTPセッション情報のうち残存している不変属性の情報を使用して、リクエスト処理を行う(S1006)。
アプリケーションプログラム101は、更新処理部112に、クライアントマシン30へのレスポンス送信を要求する(S1007)。
更新処理部112は、クライアントマシン30にレスポンスを送信する(S1008)。
【0051】
このように、実施の形態に係るセッション情報管理システム1000によれば、セッション情報のうち引き継ぐべき情報を2つの属性(不変属性/更新属性)に分けて、アプリケーションサーバ100およびセッション情報管理サーバ200で共有する。そして、セッション情報管理サーバ200に障害が発生した場合には、更新属性の情報を削除して不変属性の情報のみをアプリケーションサーバ100に残すことで、複数のアプリケーションサーバ100間におけるセッション情報の整合性を維持することができる。
また、アプリケーションサーバ100からセッション情報を最初にセッション情報管理サーバ200に記憶させるときはすべて不変属性の情報とし、その後、1回でも変更のあった情報を更新属性の情報と変更することで、自動的に適切な属性を決定および付与することができ、情報ごとの属性を事前に登録しておくなどの煩雑な操作が不要で利便性の高いセッション情報管理システム1000を実現することができる。ただし、セッション情報の種類(図3のKEY302の種類)が少ない場合などは、予め個別のセッション情報に関する属性を手動で設定するようにしておいてもよい。
【0052】
以上で実施の形態の説明を終えるが、本発明の態様はこれらに限定されるものではない。たとえば、クライアントマシンからのアクセスを複数のアプリケーションサーバに振り分けるには、負荷分散機を使わなくても、ラウンドロビン方式などを採用することにより実現してもよい。その他、具体的な構成について、本発明の主旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【0053】
【図1】実施の形態に係るセッション情報管理システムの全体構成を示す図である。
【図2A】セッション情報管理システムにおけるセッション情報の複製動作を示す図である。
【図2B】セッション情報管理システムにおいてアプリケーションサーバで障害が発生した場合の動作を示す図である。
【図2C】セッション情報管理システムにおけるセッション情報の書換え動作を示す図である。
【図2D】セッション情報管理システムにおけるセッション情報の属性変更動作を示す図である。
【図2E】セッション情報管理システムにおいてセッション情報管理サーバで障害が発生した場合の動作を示す図である。
【図3】HTTPセッション情報登録部のデータ構成を表わした図である。
【図4】グローバルセッション情報登録部のデータ構成を表わした図である。
【図5】HTTPセッションが存在しない場合の処理フロー図である。
【図6】HTTPセッションが存在する場合の処理フロー図である。
【図7】HTTPセッションを削除する場合の処理フロー図である。
【図8】HTTPセッションの有効期限が切れた場合の処理フロー図である。
【図9】グローバルセッション情報を引き継ぐ場合の処理フロー図である。
【図10】セッション情報管理サーバに障害が発生した場合の処理フロー図である。
【符号の説明】
【0054】
1〜n 計算機
30〜32 クライアントマシン
40 ネットワーク
50 負荷分散機
60、70 通信回線
100 アプリケーションサーバ
200 セッション情報管理サーバ
1000 セッション情報管理システム
【特許請求の範囲】
【請求項1】
端末からの要求に応じた処理を行う複数の第1の計算機と、各第1の計算機で処理される前記要求のセッション情報を管理する第2の計算機とを備えたセッション情報管理システムにおけるセッション情報管理方法であって、
前記第2の計算機が、前記セッション情報の更新の有無を示す属性を当該セッション情報に付与するステップと、
前記各第1の計算機が、前記第2の計算機によって付与されたセッション情報の属性に基いて、前記端末からの要求に応じた処理を継続するステップと、
を有することを特徴とするセッション情報管理方法。
【請求項2】
請求項1に記載のセッション情報管理方法において、
前記各第1の計算機が、予め設定された選択条件に基いて、前記第2の計算機に前記属性を付与させる前記セッション情報を選択するステップをさらに有することを特徴とするセッション情報管理方法。
【請求項3】
請求項1または請求項2に記載のセッション情報管理方法において、
前記第1の計算機が、前記端末からの要求に応じた処理を行う際に登録済みの前記セッション情報を更新するセッション情報を受信した場合、当該第1の計算機は、そのセッション情報を前記第2の計算機に送信するステップと、
前記第2の計算機は、前記第1の計算機から送信されたセッション情報の属性を更新を示す更新属性に変更し、その変更したセッション情報の更新属性への変更を前記各第1の計算機に送信するステップとをさらに有することを特徴とするセッション情報管理方法。
【請求項4】
請求項3に記載のセッション情報管理方法において、
前記第1の計算機の切り替え後、当該第1の計算機が、処理対象の端末から要求された処理を行う場合にその要求のセッションが未登録のとき、当該第1の計算機は、前記第2の計算機に管理されているセッション情報を所定の属性とともに受信して登録するステップをさらに有することを特徴とするセッション情報管理方法。
【請求項5】
請求項3に記載のセッション情報管理方法において、
各第1の計算機が、第2の計算機が作動停止したことを検知したとき、セッション情報のうち更新属性のセッション情報を削除するステップをさらに有することを特徴とするセッション情報管理方法。
【請求項6】
端末からの要求に応じた処理を行う複数の第1の計算機と、各第1の計算機で処理される前記要求のセッション情報を管理する第2の計算機とを備えたセッション情報管理システムであって、
前記第2の計算機は、前記セッション情報の更新の有無を示す属性を当該セッション情報に付与し、
前記各第1の計算機は、前記第2の計算機によって付与されたセッション情報の属性に基いて、前記端末からの要求に応じた処理を継続する、
ことを特徴とするセッション情報管理システム。
【請求項7】
端末からの要求に応じた処理を行う複数の第1の計算機で処理される前記要求のセッション情報を管理する第2の計算機であって、
記憶部と処理部とを備え、前記処理部は、前記各第1の計算機から前記セッション情報を受信し、受信したセッション情報の更新の有無を示す属性を当該セッション情報に付与して前記記憶部に登録し、
前記記憶部から読み出したセッション情報をその属性と関連付けて所定の第1の計算機に送信し、当該第1の計算機にその属性を付与されたセッション情報に基いて前記端末からの要求に応じた処理を継続させる、
ことを特徴とする第2の計算機。
【請求項8】
請求項1から請求項5までのいずれか1項に記載のセッション情報管理方法をコンピュータに実行させるためのセッション情報管理プログラム。
【請求項1】
端末からの要求に応じた処理を行う複数の第1の計算機と、各第1の計算機で処理される前記要求のセッション情報を管理する第2の計算機とを備えたセッション情報管理システムにおけるセッション情報管理方法であって、
前記第2の計算機が、前記セッション情報の更新の有無を示す属性を当該セッション情報に付与するステップと、
前記各第1の計算機が、前記第2の計算機によって付与されたセッション情報の属性に基いて、前記端末からの要求に応じた処理を継続するステップと、
を有することを特徴とするセッション情報管理方法。
【請求項2】
請求項1に記載のセッション情報管理方法において、
前記各第1の計算機が、予め設定された選択条件に基いて、前記第2の計算機に前記属性を付与させる前記セッション情報を選択するステップをさらに有することを特徴とするセッション情報管理方法。
【請求項3】
請求項1または請求項2に記載のセッション情報管理方法において、
前記第1の計算機が、前記端末からの要求に応じた処理を行う際に登録済みの前記セッション情報を更新するセッション情報を受信した場合、当該第1の計算機は、そのセッション情報を前記第2の計算機に送信するステップと、
前記第2の計算機は、前記第1の計算機から送信されたセッション情報の属性を更新を示す更新属性に変更し、その変更したセッション情報の更新属性への変更を前記各第1の計算機に送信するステップとをさらに有することを特徴とするセッション情報管理方法。
【請求項4】
請求項3に記載のセッション情報管理方法において、
前記第1の計算機の切り替え後、当該第1の計算機が、処理対象の端末から要求された処理を行う場合にその要求のセッションが未登録のとき、当該第1の計算機は、前記第2の計算機に管理されているセッション情報を所定の属性とともに受信して登録するステップをさらに有することを特徴とするセッション情報管理方法。
【請求項5】
請求項3に記載のセッション情報管理方法において、
各第1の計算機が、第2の計算機が作動停止したことを検知したとき、セッション情報のうち更新属性のセッション情報を削除するステップをさらに有することを特徴とするセッション情報管理方法。
【請求項6】
端末からの要求に応じた処理を行う複数の第1の計算機と、各第1の計算機で処理される前記要求のセッション情報を管理する第2の計算機とを備えたセッション情報管理システムであって、
前記第2の計算機は、前記セッション情報の更新の有無を示す属性を当該セッション情報に付与し、
前記各第1の計算機は、前記第2の計算機によって付与されたセッション情報の属性に基いて、前記端末からの要求に応じた処理を継続する、
ことを特徴とするセッション情報管理システム。
【請求項7】
端末からの要求に応じた処理を行う複数の第1の計算機で処理される前記要求のセッション情報を管理する第2の計算機であって、
記憶部と処理部とを備え、前記処理部は、前記各第1の計算機から前記セッション情報を受信し、受信したセッション情報の更新の有無を示す属性を当該セッション情報に付与して前記記憶部に登録し、
前記記憶部から読み出したセッション情報をその属性と関連付けて所定の第1の計算機に送信し、当該第1の計算機にその属性を付与されたセッション情報に基いて前記端末からの要求に応じた処理を継続させる、
ことを特徴とする第2の計算機。
【請求項8】
請求項1から請求項5までのいずれか1項に記載のセッション情報管理方法をコンピュータに実行させるためのセッション情報管理プログラム。
【図1】
【図2A】
【図2B】
【図2C】
【図2D】
【図2E】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2A】
【図2B】
【図2C】
【図2D】
【図2E】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2006−146663(P2006−146663A)
【公開日】平成18年6月8日(2006.6.8)
【国際特許分類】
【出願番号】特願2004−337371(P2004−337371)
【出願日】平成16年11月22日(2004.11.22)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成18年6月8日(2006.6.8)
【国際特許分類】
【出願日】平成16年11月22日(2004.11.22)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]