(58)【調査した分野】(Int.Cl.,DB名)
前記コントローラは、受信したリクエストを複数の前記サーバーへ送信した後、所定の時間内に、前記コントローラに対してレスポンスを送信しない前記サーバーは異常を有すると判断し、異常を有すると判断された前記サーバーの情報を所定のアドレスに送信する請求項1〜3の何れか一項に記載の情報処理システム。
前記コントローラは、複数の前記サーバーから受信したレスポンスの内、最も早く受信したレスポンスを、リクエストを送信したクライアント端末へ送信する請求項1〜4の何れか一項に記載の情報処理システム。
前記コントローラは、複数の前記サーバーから受信したレスポンスに対して、多数決判断を用いて多数派のレスポンスを採用し、多数派のレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末へ送信する請求項1〜4の何れか一項に記載の情報処理システム。
前記コントローラは、複数の前記サーバーから受信したレスポンスが一致しない場合には、レスポンスを無効と判断して、リクエストを実行できないことを、リクエストを送信したクライアント端末へ送信する請求項1〜5の何れか一項に記載の情報処理システム。
リソースは、データベース、又は、ファイル、又は、メモリ、又は、情報出力部、又は、これらの組み合わせである請求項1〜7の何れか一項に記載の情報処理システム。
複数の前記サーバーにより構成するグループを一つ又は複数個備え、同じグループ内のサーバーはそれぞれ同じリソースを有し、異なるグループ間では、それぞれ異なるリソースを有し、
前記コントローラは、クライアント端末から受信したリクエストに対して、グループ毎に連続する前記識別番号を付して、受信したリクエストを、受信したリクエストに指定される送付先に基づいて定まる前記グループ内の複数の前記サーバーへ送信し、
クライアント端末から受信した複数の連続するリクエストにより構成されるトランザクションを実行するときには、
各グループ内に配置された前記サーバーは、トランザクションの処理に失敗した時は、前記サーバーが有するリソースを、前記トランザクションの実行を開始する前のリソースの状態へ戻し、次回のリクエストを受信した時に、欠落している前記識別番号と関連付けられたリソースの変更内容をリソースに反映してリソースを変更することにより、リソースの同期を行う請求項1〜8の何れか一項に記載の情報処理システム。
【発明を実施するための形態】
【0021】
以下、本明細書で開示する情報処理システムの好ましい第1実施形態を、図を参照して説明する。但し、本発明の技術範囲はそれらの実施形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【0022】
図1は、本明細書に開示する情報処理システム(以下、単にシステムともいう)の第1実施形態のシステム構成図である。
図2は、コントローラの構成図である。
図3は、サーバーの構成図である。
図4は、クライアント端末の構成図である。
【0023】
本実施形態のシステム10は、リソースを有するサーバーS1〜S3が、クライアント端末T1〜T4から受信したリクエストに応じて所定の処理を行い、レスポンスを作成すると共に、処理内容に対応したリソースの変更を行って、クライアント端末T1〜T4に対してレスポンスを送信する。
【0024】
ここで、リクエストは、クライアント端末からのサーバーへの処理の要求であり、レスポンスは、サーバーが要求を処理した結果である。
【0025】
また、リソースは、サーバーが有するデータベース、又は、ファイル、又は、メモリ、又は、情報出力部、又は、これらの組み合わせ等である。
【0026】
システム10は、クライアント端末T1〜T4からのリクエストに対して、所定の処理を行い、レスポンスを作成する複数のサーバーS1〜S3を備えた冗長性を有している。
図1に示す例では、システム10は、3つのサーバーS1〜S3を備えているが、サーバーの数は2つ以上であれば、特に限定されるものではない。
【0027】
システム10は、例えば、1台又は2台のサーバーが故障により停止した場合、又は、ネットワークの障害によって1台又は2台のサーバーとの通信が切断された場合、又は、1台又は2台のサーバーの故障によりデータが消失した場合でも、システム10は停止することなく動作を継続することができる。更に、1台又は2台のサーバーが動作しない状態になったときも、正常なサーバーに切り替える特別な操作を必要としない。
【0028】
また、システム10では、故障したサーバーが正常に機能するサーバーに置き換えられた時には、置き換えられた新たなサーバーは、リソースの更新を自動的に行って、他のサーバーのリソースと同期することができる。
【0029】
図1に示すように、システム10は、複数のクライアント端末T1〜T4と、ネットワークN1を介して、通信可能に接続されたコントローラCと、コントローラCと、ネットワークN2を介して、通信可能に接続された複数のサーバーS1〜S3を備える。
【0030】
サーバーS3は、ネットワークN2と通信可能に接続されたネットワークN3を介して、コントローラCと接続される。
【0031】
ネットワークN1としては、例えば、イーサネット(登録商標)、WiFi(登録商標)等の無線LAN、インターネット等の広域ネットワークを用いることができる。
【0032】
ネットワークN2としては、例えば、イーサネット(登録商標)等の構内ネットワークを用いることができる。ネットワークN3としては、例えば、インターネット等の広域ネットワークを用いることができる。
【0033】
コントローラCは、クライアント端末T1〜T4から受信したリクエストに対して連続する識別番号を付して、受信したリクエストを複数のサーバーS1〜S3へ送信する。ここで、識別番号は、サーバーS1〜S3の間で同一である。また、コントローラCは、複数のサーバーS1〜S3から受信したレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末T1〜T4へ送信する。
【0034】
図2に示すように、コントローラCは、演算部Caと、記憶部Cbと、操作部Ccと、表示部Cdと、通信部Ceを有する。
【0035】
演算部Caは、記憶部Cbに予め記憶されている所定のプログラムに従い、コントローラCの各要素の制御及び各種処理を行い、処理中に生じるデータを一時的に保存するために記憶部Cbを利用する。記憶部Cbは、1次記憶装置及び2次記憶装置を有していても良い。記憶部Cbは、生成した識別番号に関する情報を記録する。
【0036】
操作部Ccは、システム10の管理者等によって操作されて、各種の情報を入力する。操作部Ccとしては、例えば、キーボード又はマウスを用いることができる。管理者は、操作部Ccを使用せず、ネットワークN2に接続したパーソナルコンピュータ等の端末を用いて操作するよう構成しても良い。演算部Caは、操作部Ccから入力された各種の情報を用いて、各種処理を行う。
【0037】
表示部Cdは、演算部Caの動作によって、各種の情報を表示する。表示部Cdとしては、例えば、液晶パネルを用いることができる。
【0038】
通信部Ceは、ネットワークN1を介して、クライアント端末T1〜T4との間でデータの送受信を行う。また、通信部Ceは、ネットワークN2及びネットワークN3を介して、サーバーS1〜S3及び保守センターMの間でデータの送受信を行う。
【0039】
コントローラCとしては、例えば、コンピュータ又はワンチップマイコン又はステートマシン等を用いることができる。演算部Caが、記憶部Cbに予め記憶されている所定のプログラムに従い、コントローラCの各要素の制御及び各種処理を行うことにより、クライアント端末から受信したリクエストに対し、識別番号を記録するメモリを参照し、前回受信したリクエストに対して生成した識別番号に関する情報を読み出して、今回受信したリクエストに対して連続する識別番号を生成する識別番号生成手段が実現される。
【0040】
また、
図2に示すように、コントローラCは、システム10が有するサーバーのリストを記憶するサーバリストデータベース(DB)30を有する。サーバーリストDB30には、サーバーリスト表30aが記憶される。
【0041】
図3は、サーバーリスト表を説明する図である。
【0042】
サーバーリスト表30aには、サーバーを識別するサーバー識別番号と、サーバーアドレスと、サーバーの異常の有無を示す状態とが関連付けられて記録されている。
【0043】
コントローラCは、稼働しているサーバーのサーバー識別番号及びサーバーアドレスを、システム10の起動時又は変更が生じた時に、各サーバーへ送信する。
【0044】
サーバーS1〜S3は、コントローラーCから受信したリクエストに応じたレスポンスを作成して、作成したレスポンスをコントローラCへ送信する。
【0045】
図4に示すように、サーバーS1〜S3は、演算部Saと、記憶部Sbと、操作部Scと、表示部Sdと、通信部Seを有する。
【0046】
演算部Saは、記憶部Sbに予め記憶されている所定のプログラムに従い、サーバーS1〜S3の各要素の制御及び各種処理を行い、処理中に生じるデータを一時的に保存するために記憶部Sbを利用する。記憶部Sbは、1次記憶装置及び2次記憶装置を有していても良い。
【0047】
操作部Scは、システム10の管理者等によって操作されて、各種の情報を入力する。操作部Scとしては、例えば、キーボード又はマウスを用いることができる。演算部Saは、操作部Scから入力された各種の情報を用いて、各種処理を行う。
【0048】
表示部Sdは、演算部Saの動作によって、各種の情報を表示する。表示部Sdとしては、例えば、液晶パネルを用いることができる。
【0049】
通信部Seは、ネットワークN2又はネットワークN3を介して、コントローラC又は他のサーバーとの間でデータの送受信を行う。演算部Saが、記憶部Sbに予め記憶されている所定のプログラムに従い、サーバーS1〜S3の各要素の制御及び各種処理を行うことにより、コントローラから受信したリクエストに付加された識別子の連続性を利用して、前回受信したリクエストと今回受信したリクエストの間に、受信していないリクエストが存在するか否かを判定する手段が実現される。また、演算部Saが、記憶部Sbに予め記憶されている所定のプログラムに従い、サーバーS1〜S3の各要素の制御及び各種処理を行うことにより、受信していないリクエストに対応して変更されるべきリソースの変更内容の情報を他のサーバーへ問い合わせる手段が実現される。
【0050】
本実施形態では、説明のために、クライアント端末の位置を無線通信の電波強度に基づいて測定し、測定されたクライアント端末の位置をデーターベースに記録し、クライアント端末からの問い合わせに対して、クライアント端末の位置情報を回答する位置情報サービスシステムへの応用に即して述べる。具体的には、システム10において、ネットワークN1としては、WiFi(登録商標)等の無線LANを用い、コントローラCと、複数のクライアント端末T1〜T4とは、図示しない3つのアクセスポイントAP1〜AP3を介して、通信可能に接続される。なお、本例では、3つのアクセスポイントを備えているが、アクセスポイントの数は特に限定されるものではない。
図4に示すように、サーバーS1〜S3は、システム10が有するアクセスポイントAP1〜AP3の位置を記憶するアクセスポイント位置データベース(AP位置DB)31と、クライアント端末の位置を記憶するクライアント端末位置データベース(DB)32と、他のサーバーのアドレスを記憶するサーバーアドレスデータベース(DB)33を有する。
【0051】
AP位置DB31には、アクセスポイント位置情報表31aが記憶される。
【0052】
図5は、アクセスポイント位置情報表を説明する図である。
【0053】
アクセスポイント位置情報表31aには、アクセスポイントを識別するAP識別番号と、アクセスポイントの位置を示すAP位置情報とが関連付けられて記録される。
【0054】
クライアント端末位置DB32には、端末位置情報表32aが記憶される。
【0055】
図6は、端末位置情報表を説明する図である。
【0056】
端末位置情報表32aには、クライアント端末を識別する端末番号と、クライアント端末の位置を示す端末位置情報とが関連付けられて記録される。
【0057】
サーバーアドレスDB33には、サーバーアドレス表33aが記憶される。
【0058】
図7は、サーバーアドレス表を説明する図である。
【0059】
サーバーアドレス表33aには、サーバーを識別するサーバー識別番号と、サーバーアドレスとが関連付けられて記録される。サーバーS1〜S3は、コントローラCから受信した稼働しているサーバーの識別番号及びサーバーアドレスを、サーバーアドレス表33aに記録する。
【0060】
クライアント端末T1〜T4は、リクエストをコントローラCへ送信して、レスポンスをコントローラCから受信する。
【0061】
図8に示すように、クライアント端末T1〜T4は、演算部Taと、記憶部Tbと、操作部Tcと、表示部Tdと、通信部Teを有する。
【0062】
演算部Taは、記憶部Tbに予め記憶されている所定のプログラムに従い、クライアント端末T1〜T4の各要素の制御及び各種処理を行い、処理中に生じるデータを一時的に保存するために記憶部Tbを利用する。記憶部Tbは、1次記憶装置及び2次記憶装置を有していても良い。
【0063】
操作部Tcは、クライアント端末の操作者等によって操作されて、各種の情報を入力する。操作部Tcとしては、例えば、タッチパネルを用いることができる。演算部Taは、操作部Tcから入力された各種の情報を用いて、各種処理を行う。
【0064】
表示部Tdは、演算部Taの動作によって、各種の情報を表示する。表示部Tdとしては、例えば、液晶パネルを用いることができる。
【0065】
通信部Teは、ネットワークN1を介して、コントローラCとの間でデータの送受信を行う。
【0066】
クライアント端末T1〜T4としては、例えば、多機能型携帯電話機、タブレット端末、ノート型パーソナルコンピュータ等を用いることができる。
【0067】
また、ネットワークN3には、保守センターMが接続される。コントローラCは、異常を有すると判断したサーバーのサーバー識別番号を、電子メールを用いて、ネットワークN3を介して、保守センターMのメールアドレスに送信する。保守センターMの管理者は、電子メールを用いて連絡を受けたサーバーの保守を行う。
【0068】
次に、上述したシステム10の第1の動作例を、
図9〜
図11を参照して、以下に説明する。
【0069】
システム10の第1の動作例では、自己の位置情報を問い合わせるクライアント端末のリクエストに対して、サーバーがクライアント端末の位置情報を計算し、コントローラが、クライアント端末に対してレスポンスを送信する。
【0070】
まず、ステップS10において、クライアント端末T1〜T4は、自己の位置情報を問い合わせるリクエストを、3つのアクセスポイントAP1〜AP3から受信した電波強度及び端末番号と共に、コントローラCへ送信する。端末番号は、MACアドレス又はIPアドレスの何れかであっても良い。
【0071】
図1に示す例では、クライアント端末T1〜T4は、3つのアクセスポイントAP1〜AP3からの電波を受信しており、それぞれのアクセスポイントからの電波強度を、通信部Teを用いて計測している。
【0072】
クライアント端末の操作者は、クライアント端末を携帯して移動しており、クライアント端末と各アクセスポイントAP1〜AP3との距離は変動するので、クライアント端末の位置に応じて、それぞれのアクセスポイントからの電波強度も変化する。
【0073】
次に、ステップS12において、コントローラCは、クライアント端末から受信したリクエストに対して連続する識別番号を付して、受信したリクエストを複数のサーバーS1〜S3へ送信する。識別番号は、一のリクエストを、他のリクエストから識別する一意性を有する番号である。識別番号は、システムの単位運用時間内に処理されるリクエストの件数を考慮して、十分に大きい数を表現できる桁数を有する整数とすることができる。連続する識別番号は、隣り合う識別番号の増分が1であるように生成することができる。同桁数の整数で表現できる最大の数で表す識別番号の次の識別番号は、0としても良い。コントローラCは、サーバーリスト表30aを参照して、異常の無いサーバーに対して、リクエストを送信する。
【0074】
次に、ステップS14において、各サーバーS1〜S3は、受信したリクエストに付された今回の識別番号が、前回に受信したリクエストに付された前回の識別番号と連続しているかを判断する。識別番号が連続していれば、ステップS16へ進む。一方、識別番号が連続していなければ、ステップS30へ進む。
【0075】
ステップS16へ進んだ場合、各サーバーS1〜S3は、端末位置情報表31aを参照して、リクエストを送信したクライアント端末の位置情報を計算して、レスポンスを作成する。各サーバーS1〜S3の記憶部Sbには、端末位置情報表31aを参照して、3つのアクセスポイントAP1〜AP3からの電波強度に基づいて、クライアント端末と各アクセスポイント間の距離を計算し、更に各アクセスポイントの位置データとこれらの距離データから、クライアント端末の位置情報を求めるプログラムが記憶されている。各サーバーS1〜S3は、このプログラムを実行して、クライアント端末の位置情報を計算する。
【0076】
次に、ステップS18において、各サーバーS1〜S3は、計算されたクライアント端末の位置情報が、端末位置情報表31aに記録されていなければ、クライアント端末の識別番号と関連付けて記録する。また、各サーバーS1〜S3は、計算されたクライアント端末の位置情報が、端末位置情報表31aに記録されている位置情報と異なっていれば、記録されているクライアント端末の位置情報を今回計算された位置情報に更新する。このようにして、各サーバーS1〜S3は、処理内容に対応したリソースの変更を行う。
【0077】
次に、ステップS20において、各サーバーS1〜S3は、今回の識別番号及び今回の識別番号と関連付けられた端末位置情報表31aの変更内容をログとしてログファイルに記憶する。ログファイルは、記憶部Sbに記憶される。
【0078】
次に、ステップS22において、各サーバーS1〜S3は、コントローラCに対して算出した位置情報をレスポンスとして送信する。なお、ステップS18〜S22の順番は、前後が入れ替わっていても良い。
【0079】
次に、ステップS24において、コントローラCは、複数のサーバーS1〜S3から受信したレスポンスの内の一のレスポンスを、識別番号を取り除いて、リクエストを送信したクライアント端末T1〜T4へ送信する。コントローラCは、複数のサーバーS1〜S3から受信したレスポンスの内の一のレスポンスを選択する方法として、例えば、以下の方法を用いることができる。このように、コントローラCは、リクエストを送信したクライアント端末へ送信するレスポンスを、複数のサーバーから受信したレスポンスの内の一のレスポンスに基づいて生成しても良い。また、コントローラCは、リクエストを送信したクライアント端末へ送信するレスポンスを、複数のサーバーから受信した複数のレスポンスに基づいて生成しても良い。
【0080】
ステップS24aに示す例では、コントローラCは、複数のサーバーS1〜S3から受信したレスポンスの内、最も早く受信したレスポンスを、リクエストを送信したクライアント端末T1〜T4へ送信する。
【0081】
ステップS24bに示す例では、コントローラCは、複数のサーバーS1〜S3から受信したレスポンスに対して、多数決判断を用いて多数派のレスポンスを決定し、多数派のレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末T1〜T4へ送信する。
【0082】
ステップS24cに示す例では、コントローラは、複数のサーバーS1〜S3から受信したレスポンスが一致しない場合には、レスポンスを無効と判断して、リクエストに対応した所定の処理の実行ができないことを、リクエストを送信したクライアント端末T1〜T4へ送信する。
【0083】
次に、ステップS26において、コントローラCは、受信したリクエストを複数のサーバーS1〜S3へ送信した後、所定の時間内に、コントローラCに対してレスポンスを送信しないサーバーは異常を有すると判断し、異常を有すると判断されたサーバーのサーバー識別番号を、電子メールを用いて、ネットワークN3を介して、保守センターMのメールアドレスに送信する。
【0084】
そして、コントローラCは、サーバーリスト表30aに対して、異常を有するサーバーの状態として、異常有りのフラグを記録する。状態として、異常有りのフラグが記録されたサーバーは、稼働停止のサーバーとして判断される。そして、コントローラCは、稼働しているサーバーのサーバー識別番号及びサーバーアドレスを、各サーバーへ送信する。
【0085】
次に、ステップS28において、リクエストを送信したクライアント端末T1〜T4は、コントローラCからのレスポンスを受信して、受信したクライアント端末の位置情報を表示部Tdに表示する。
【0086】
一方、ステップS14において、識別番号が連続していない場合には、ステップS30へ進む。識別番号が連続していない場合としては、例えば、サーバーが故障により停止した場合、又は、ネットワークの障害によってコントローラとサーバーとの通信が切断された場合、又は、サーバーの故障によりデータが消失した場合等が挙げられる。このような異常を有するサーバーは、リクエストが送信されたとしても、リクエストを受信できないか又は正常にリクエストを処理することができない状態にある。そのため、異常を有するサーバーは、リクエストに付された識別番号を受信できないか、又はリクエストに対応する処理の実行を正常に完了できないので、欠落した識別番号が存在することになる。
【0087】
ステップS30へ進んだ場合、一のサーバーS1〜S3は、今回の識別番号と、前回の識別番号との間に位置する欠落している識別番号と関連付けられた端末位置情報表31aの変更内容を、他のサーバーから受信して、欠落している識別番号と関連付けられた端末位置情報表31aの変更内容をリソースに加えて、端末位置情報表31aの変更を行う。一のサーバーS1〜S3は、サーバーアドレス表33aを参照して、他のサーバーと通信する。他のサーバーは、ログファイルを参照して、問い合わされた欠落している識別番号と関連付けられた端末位置情報表31aの変更内容を、一のサーバーS1〜S3へ送信する。ここで、データが消失等により、クライアント端末位置DB32に端末位置情報表31aが存在しない場合もあり得る。
【0088】
このような場合には、ステップS30aに示すように、他のサーバから端末位置情報表31aを受信して、クライアント端末位置DB32に端末位置情報表31aを記憶する。
【0089】
次に、ステップS32において、一のサーバーS1〜S3は、受信したリクエストに応じて所定の処理を行い、今回の識別番号が付されたレスポンスを作成すると共に、処理内容に対応した端末位置情報表31aの変更を行って、コントローラCに対してレスポンスを送信し、且つ今回の識別番号及び今回の識別番号と関連付けられた端末位置情報表31aの変更内容をログとしてログファイルに記憶する。そして、ステップS24へ進む。
【0090】
このようにして、一のサーバーS1〜S3は、他のサーバーとリソースの同期をとる。他のサーバーとの同期を取った一のサーバーは、コントローラCへ自身が稼働可能であることを通知し、コントローラCはサーバーリスト表30a内の対応するサーバーの状態を、異常無しと更新する。
【0091】
次に、上述したシステム10の第2の動作例を、
図12〜
図13を参照して、以下に説明する。
【0092】
システム10の第2の動作例では、一のクライアント端末が、他のクライアント端末の位置情報を問い合わせるリクエストに対して、サーバーが指定されたクライアント端末の位置情報を端末位置情報表31aから読み出してレスポンスを作成し、コントローラが、問い合わせたクライアント端末にレスポンスを送信する。
【0093】
まず、ステップS40において、一のクライアント端末T1〜T4は、他のクライアント端末T1〜T4の位置情報を問い合わせるリクエストを、端末番号と共に、コントローラCへ送信する。
【0094】
次に、ステップS42において、コントローラCは、一のクライアント端末T1〜T4から受信したリクエストに対して連続する識別番号を付して、受信したリクエストを複数のサーバーS1〜S3へ送信する。
【0095】
次に、ステップS44において、各サーバーS1〜S3は、受信したリクエストに付された今回の識別番号が、前回に受信したリクエストに付された前回の識別番号と連続しているかを判断する。識別番号が連続していれば、ステップS46へ進む。一方、識別番号が連続していなければ、ステップS50へ進む。
【0096】
ステップS46へ進んだ場合、各サーバーS1〜S3は、端末位置情報表31aを参照して、他のクライアント端末T1〜T4の位置情報を読み出して、レスポンスを作成する。この処理では、端末位置情報表31aの内容の変更は行われない。
【0097】
次に、ステップS48において、各サーバーS1〜S3は、コントローラCに対してレスポンスを送信する。その後のシステム10の動作は、上述したステップS24〜S28と同様である。
【0098】
一方、ステップS44において、識別番号が連続していない場合には、ステップS50へ進む。
【0099】
ステップS50へ進んだ場合、一のサーバーS1〜S3は、今回の識別番号と、前回の識別番号との間に位置する欠落している識別番号と関連付けられた端末位置情報表31aの変更内容を、他のサーバーから受信して、欠落している識別番号と関連付けられた端末位置情報表31aの変更内容をリソースに加えて、端末位置情報表31aの変更を行う。識別番号が連続していない場合には、端末位置情報表31aに記録されているクライアント端末の位置情報が最新のものではない可能性がある。そこで、上述したように、端末位置情報表31aの更新処理を行う。ここで、データが消失等により、クライアント端末位置DB32に端末位置情報表31aが存在しない場合もあり得る。
【0100】
このような場合には、ステップS50aに示すように、一のサーバーS1〜S3は、他のサーバーS1〜S3から端末位置情報表31aを受信して、クライアント端末位置DB32に端末位置情報表31aを記憶する。
【0101】
次に、ステップS52において、受信したリクエストに応じて所定の処理を行い、今回の識別番号が付されたレスポンスを作成して、コントローラCに対してレスポンスを送信する。その後のシステム10の動作は、上述したステップS24〜S28と同様である。
【0102】
上述した第2の動作例では、コントローラCは、一のクライアント端末T1〜T4から受信したリクエストに対して連続する識別番号を付していたが、リソースの変更を伴わないリクエストに対しては、連続する識別番号を付さなくても良い。また、コントローラCは、リソースの変更を伴わないリクエストに対しては、物理的な距離が近いサーバー(例えばサーバーS1、S2)のみにリクエストを送信して、物理的な距離が遠いサーバー(例えば、サーバーS3)にはリクエストを送信しなくても良い。また、コントローラCは、リソースの変更を伴わないリクエストに対しては、サーバーの優先順位を設けて、優先順位の高いサーバーから順番にリクエストを送信するようにしても良い。ここで、サーバーの優先順位は、サーバーの処理能力に基づいて決定することができる。
【0103】
次に、異常を有すると判断されたサーバーを正常に機能するサーバーに置き換えて、ネットワークに接続する手順を、
図14を参照して、以下に説明する。
【0104】
まず、ステップS60において、正常に機能するサーバーを用意して、所定のプログラムをインストールする。
【0105】
次に、ステップS62において、稼働しているサーバーに問い合わせて、アクセスポイント位置表31a及びサーバーアドレス表33aを、正常に機能するサーバーに読み込ませる。アクセスポイント位置表31aは、AP位置DB31に記憶され、サーバーアドレス表33aは、サーバーアドレスDB33に記憶される。
【0106】
次に、ステップS64において、異常を有すると判断されたサーバーから、最新のリクエストに付された識別番号と、端末位置情報表を読み出して、正常に機能するサーバーへ読み込ませる。なお、このステップは、異常を有すると判断されたサーバーから、最新のリクエストに付された識別番号と、端末位置情報表の読み出しを行えない場合には、行われなくてもよい。
【0107】
次に、ステップS66において、異常を有すると判断されたサーバーをネットワークから取り外して、正常に機能するサーバーをネットワークに接続する。正常に機能するサーバーは、リクエストを処理する際に、リソースの更新を自動的に行って、他のサーバーのリソースと同期することができる。
【0108】
上述した実施形態のシステムによれば、複数のサーバーが同じリソースを有し且つリソースの同期をとりながら同じ動作をする冗長性を有しているので、システムを停止させないで動作することができる。また、システム10によれば、故障した運用系のサーバーから待機系のサーバーに切り替え作業が不要なので、切り替えのための切り替え時間及び切り替え作業が不要となる。更に、故障したサーバーを正常なサーバーに交換する手順が簡単であり、交換と復旧を確実に行うことができる。
【0109】
次に、上述したシステムの他の実施形態を、図を参照しながら以下に説明する。他の実施形態について特に説明しない点については、上述の第1実施形態に関して詳述した説明が適宜適用される。また、同一の構成要素には同一の符号を付してある。
【0110】
図15は、本明細書に開示するシステムの第2実施形態のコントローラの構成図である。
【0111】
本実施形態のシステム10では、コントローラCは、分配部Dと、複数のサブコントローラSC1〜SC3を有している。複数のサブコントローラSC1〜SC3は、上述した第1実施形態のコントローラと同様の機能を有している。即ち、本実施形態のシステムのコントローラCは、上述した第1実施形態のコントローラに対して冗長性を有している。
【0112】
分配部Dは、クライアント端末T1〜T4から受信したリクエストを、複数のサブコントローラSC1〜SC3へ送信し、サブコントローラSC1〜SC3から受信した識別番号が付されたリクエストの内の一のリクエストを、複数のサーバーS1〜S3へ送信する。また、分配部Dは、複数のサーバーS1〜S3から受信したレスポンスを、複数のサブコントローラSC1〜SC3へ送信し、複数のサブコントローラSC1〜SC3から受信したレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末T1〜T4へ送信する。
【0113】
図16に示すように、分配部Dは、演算部Daと、記憶部Dbと、操作部Dcと、表示部Ddと、通信部Deを有する。
【0114】
演算部Daは、記憶部Dbに予め記憶されている所定のプログラムに従い、分配部Dの各要素の制御及び各種処理を行い、処理中に生じるデータを一時的に保存するために記憶部Dbを利用する。記憶部Dbは、1次記憶装置及び2次記憶装置を有していても良い。
【0115】
操作部Dcは、システム10の管理者等によって操作されて、各種の情報を入力する。操作部Dcとしては、例えば、キーボード又はマウスを用いることができる。演算部Daは、操作部Dcから入力された各種の情報を用いて、各種処理を行う。管理者は、操作部Dcを使用せず、ネットワークN2に接続したパーソナルコンピュータ等の端末で操作するよう構成しても良い。
【0116】
表示部Ddは、演算部Daの動作によって、各種の情報を表示する。表示部Ddとしては、例えば、液晶パネルを用いることができる。
【0117】
通信部Deは、ネットワークN1を介して、クライアント端末T1〜T4との間でデータの送受信を行う。また、通信部Deは、ネットワークN2及びネットワークN3を介して、サーバーS1〜S3との間でデータの送受信を行う。また、通信部Deは、リンクR1〜R3を介して、サブコントローラSC1〜SC3とデータの送受信を行う。
【0118】
また、
図16に示すように、分配部Dは、コントローラCが有するサブコントローラのリストを記憶するサブコントローラリストデータベース(DB)34を有する。サブコントローラリストDB34には、サブコントローラリスト表34aが記憶される。
【0119】
図17は、サブコントローラリスト表を説明する図である。
【0120】
サブコントローラリスト表34aには、コントローラCが有するサブコントローラを識別するサブコントローラ識別番号と、サブコントローラアドレスと、サブコントローラの異常の有無を示す状態とが関連付けられて記録されている。
【0121】
サブコントローラSC1〜SC3は、上述した第1実施形態のコントローラと同様の構成及び機能を有している。
【0122】
サブコントローラSC1〜SC3は、分配部Dから受信したリクエストに対して連続する識別番号を付して、受信したリクエストを、分配部へ送信する。また、サブコントローラSC1〜SC3は、複数のサーバーS1〜S3から受信したレスポンスの内の一のレスポンスを、分配部Dへ送信する。
【0123】
次に、上述した本明細書のシステム10の動作例を、
図18及び
図19を参照して、以下に説明する。
【0124】
まず、ステップS70において、クライアント端末T1〜T4は、自己の位置情報を求めるリクエストを、3つのアクセスポイントAP1〜AP3から受信した電波強度及び端末番号と共に、コントローラCへ送信して、分配部Dはリクエストを受信する。
【0125】
次に、ステップS72において、分配部Dは、クライアント端末T1〜T4から受信したリクエストを、複数のサブコントローラSC1〜SC3へ送信する。
【0126】
次に、ステップS74において、各サブコントローラSC1〜SC3は、分配部Dから受信したリクエストに対して連続する識別番号を付して、受信したリクエストを、分配部Dへ送信する。各サブコントローラSC1〜SC3は、同じ動作をするので、一のリクエストに対して、同じ識別番号を付す。
【0127】
次に、ステップS76において、分配部Dは、各サブコントローラSC1〜SC3から受信した識別番号が付されたリクエストの内の一のリクエストを、複数のサーバーS1〜S3へ送信する。そして、各サーバーS1〜S3は、上述したステップS14〜S22又はステップS30〜S32の動作を行って、コントローラCに対してレスポンスを送信し、分配部Dはレスポンスを受信する。
【0128】
次に、ステップS78において、分配部Dは、複数のサーバーS1〜S3それぞれから受信したレスポンスを、複数のサブコントローラSC1〜SC3へ送信する。
【0129】
次に、ステップS80において、各サブコントローラSC1〜SC3は、複数のサーバーS1〜S3から受信したレスポンスの内の一のレスポンスを、分配部Dへ送信する。各サブコントローラSC1〜SC3は、上述したステップS24と同様の処理を行う。
【0130】
次に、ステップS82において、分配部Dは、複数のサブコントローラSC1〜SC3から受信したレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末T1〜T4へ送信する。複数のサブコントローラSC1〜SC3には、優先順位が付けられており、分配部Dは、この優先順位に基づいて、クライアント端末へ送信するリクエストを選択することができる。又は、分配部Dは、複数のサブコントローラから受信したレスポンスの内、最も早く受信したレスポンスを、リクエストを送信したクライアント端末へ送信しても良い。又は、分配部Dは、複数の前記サブコントローラから受信したレスポンスに対して、多数決判断を用いて多数派のレスポンスを採用し、多数派のレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末へ送信しても良い。
【0131】
次に、ステップS84において、分配部Dは、クライアント端末T1〜T4から受信したリクエストを、複数のサブコントローラSC1〜SC3へ送信した後、所定の時間内に、識別番号が付されたリクエストを分配部Dに送信しないサブコントローラSC1〜SC3は異常を有すると判断し、異常を有すると判断されたサブコントローラSC1〜SC3の識別番号を、電子メールを用いて、ネットワークN3を介して、保守センターMのメールアドレスに送信する。また、分配部Dは、複数のサーバーS1〜S3から受信したレスポンスを、複数のサブコントローラSC1〜SC3へ送信した後、所定の時間内に、一のレスポンスを、分配部Dへ送信しないサブコントローラSC1〜SC3は異常を有すると判断し、異常を有すると判断されたサブコントローラSC1〜SC3の識別番号を、電子メールを用いて、ネットワークN3を介して、保守センターMのメールアドレスに送信する。
【0132】
次に、ステップS86において、リクエストを送信したクライアント端末T1〜T4は、コントローラCからのレスポンスを受信して、受信したレスポンスを表示部Tdに表示する。
【0133】
上述した実施形態のシステムによれば、一のサブコントローラが故障しても、他のサブコントローラが動作するので、システム10が停止することを防止できる。
【0134】
次に、本明細書に開示するシステムの第3実施形態を、図を参照して、以下に説明する。
【0135】
図20は、本明細書に開示するシステムの第3実施形態のシステム構成図である。
【0136】
本実施形態のシステム10は、複数のサーバーS1〜S3により構成されるグループG1と、複数のサーバーS4〜S6により構成されるグループG2とを備える。同じグループに属するサーバーは、それぞれ同じリソースを有し且つ同じプログラムを実行して同じ動作を行う。また、同じグループに属するサーバーは、リソースの同期を行う。一方、異なるグループに配置されるサーバーは、異なるリソースを有しており、異なるプログラムを実行して、異なる処理を実行し得る。
【0137】
システム10は、クライアント端末から受信した複数の連続するリクエストにより構成されるトランザクションを実行する。
【0138】
図20に示す例では、システム10は、2つのグループG1,G2を備えているが、システム10は、3つ以上のグループを備えていても良い。また、システム10は、1つのグループだけを備えていても良い。
【0139】
図21は、サーバーリスト表30aを説明する図である。
【0140】
コントローラCが有するサーバーリストDB30に記憶されるサーバーリスト表30aには、サーバー識別番号と、サーバーアドレスと、状態と共に、トランザクションに対する各サーバーの有効性を記録するTSフラグが関連付けられて記録される。
【0141】
次に、本実施形態のシステム10の動作例を、
図22〜
図25を参照して、以下に説明する。
【0142】
まず、ステップS90において、クライアント端末T1〜T4は、トランザクションを構成する複数の連続する一群のリクエストを、トランザクションの開始を示す情報及び終了を示す情報を付して、端末番号と共に、コントローラCへ送信する。
【0143】
次に、ステップS92において、コントローラCは、一群のリクエストであるトランザクションの開始を伝える開始通知に対して、グループ毎に連続する識別番号を付して、各グループG1、G2内の複数のサーバーS1〜S3,S4〜S6へ送信する。なお、トランザクションを確実に実行するための一つの方法として、コントローラCは、受信したトランザクションを構成する一群のリクエストの処理が全て完了するまで、他のリクエストを受け付けないようにしても良い。ここで、各グループG1、G2へ送信されるリクエストは、通常、グループG1とグループG2との間で異なっている。一方、同じグループ内のサーバーへは、同じリクエストが送信される。複数の連続するリクエストにより構成されるトランザクションを実行する時には、グループ毎に、各グループへ送信される全てのリクエストに対して連続する識別番号が付けられる。このように、本実施形態では、コントローラCは、クライアント端末から受信したリクエストに対して、グループ毎に連続する識別番号を付して、受信したリクエストを各グループG1,G2内の複数のサーバーへ送信する。また、システム10は、トランザクションを構成しないリクエストを処理することもできる。識別番号は、トランザクションを構成する各リクエストと同様に、トランザクションを構成しないリクエストに対してもグループ毎に連続して付けられる。
【0144】
次に、ステップS94において、各サーバーS1〜S3,S4〜S6は、受信したリクエストに付された今回の識別番号が、前回に受信したリクエストに付された前回の識別番号と連続しているかを判断する。識別番号が連続していれば、ステップS96へ進む。一方、識別番号が連続していなければ、ステップS116へ進む。
【0145】
ステップS96へ進んだ場合、各サーバーS1〜S3,S4〜S6は、現在の状態を保存するスナップショットを記録した後、開始通知を受信したことを伝える開始受信通知をコントローラCへ送信する。スナップショットは、記憶部Sbに記録される。
【0146】
次に、ステップS98において、コントローラCは、開始受信通知を受信したサーバーを有効と判断する。コントローラCは、サーバーリスト表30aを更新すると共に、最初のリクエストに対して、グループ毎に連続する識別番号を付して、受信したリクエストに指定される送付先に基づいて定まる各グループG1,G2内の有効なサーバーに送信する。有効と判断されたサーバーのTSフラグには、サーバーが有効であることを示すフラグが記録される。一方、有効と判断されないサーバーのTSフラグには、サーバーが無効であることを示すフラグが記録される。有効と判断されないサーバーに対しては、最初のリクエストは送信されない。有効であると判断されたサーバーは、最初のリクエストに対して付された今回の識別番号と、前回の識別番号とが連続しているので、受信したリクエストに応じて所定の処理を行う。
【0147】
次に、ステップS100において、各サーバーS1〜S3,S4〜S6は、最初のリクエストを処理した後、処理が完了したことを伝える処理完了通知をコントローラCへ送信すると共に、今回の識別番号及び今回の識別番号と関連付けられたリソースの変更内容をログファイルに記憶する。
【0148】
次に、ステップS102において、コントローラCは、処理完了通知を受信したサーバーを有効と判断して、サーバーリスト表30aを更新すると共に、複数の連続するリクエストの内の次のリクエストに対して、グループ毎に連続する識別番号を付して、受信したリクエストに指定される送付先に基づいて定まる各グループG1,G2内の有効なサーバーに送信する。有効と判断されないサーバーに対しては、次のリクエストは送信されない。有効であると判断されたサーバーは、受信したリクエストに対して付された今回の識別番号と、前回の識別番号とが連続しているので、受信したリクエストに応じて所定の処理を行う。
【0149】
次に、ステップS104において、各サーバーS1〜S3,S4〜S6は、複数の連続するリクエストの内の次のリクエストを処理した後、処理が完了したことを伝える処理完了通知をコントローラへ送信すると共に、今回の識別番号及び今回の識別番号と関連付けられたリソースの変更内容をログファイルに記憶する。ステップS102〜ステップS104は、一群を構成するリクエストの数に応じて繰り返される。
【0150】
次に、ステップS106において、コントローラCは、複数の連続するリクエストの内の最後のリクエストに対する処理完了通知を受信した後、トランザクションの終了を伝える終了通知に対して、グループ毎に連続する識別番号を付して、各グループG1,G2内の有効なサーバーに送信する。
【0151】
次に、ステップS108において、各サーバーS1〜S3,S4〜S6は、終了通知を受信すると、終了通知を受信したことを伝える終了受信通知を、コントローラCへ送信する。
【0152】
次に、ステップS110において、コントローラCは、グループG1及びグループG2のそれぞれについて、各グループG1,G2内の少なくとも1つのサーバーから終了受信通知を受信すると、クライアント端末T1〜T4から受信したトランザクションである一群のリクエストの実行を完了したと判断する。そして、コントローラCは、グループG1及びグループG2のそれぞれについて、各グループG1,G2内の少なくとも1つのサーバーから受信した終了受信通知に基づいて、トランザクション処理の実行の成功を示すレスポンスを生成して、そのレスポンスを、リクエストを送信したクライアント端末へ送信する。もし、グループG1又はグループG2の何れか一つにおいて、グループ内のサーバーの何れからも終了受信通知が受信されない場合は、コントローラCは、トランザクション処理の実行の失敗を示すレスポンスを、リクエストを送信したクライアント端末へ送信する。
【0153】
次に、ステップS112において、コントローラCは、サーバーリスト表30aを参照して、TSフラグに無効が記録されている、今回のトランザクションの実行に失敗したサーバーに対して、ロールバックすることを指示する。
【0154】
次に、ステップS114において、ロールバックの指示を受けたサーバーS1〜S3,S4〜S6は、スナップショットを用いて、ロールバックして、トランザクションを開始する前の状態に戻る。
【0155】
一方、ステップS94において、識別番号が連続していない場合には、ステップS116へ進む。
【0156】
ステップS116へ進んだ場合には、各サーバーS1〜S3,S4〜S6は、今回の識別番号と、前回の識別番号との間に位置する欠落している識別番号と関連付けられたリソースの変更内容を、同じグループ内の他のサーバーから受信して、欠落している識別番号と関連付けられたリソースの変更内容をリソースに反映して、リソースを変更して同期を行う。そして、ステップS96へ進む。
【0157】
このように、本実施形態では、各サーバーS1〜S3,S4〜S6は、トランザクションの実行に失敗した時にはロールバックして、次回のリクエストを受信した時に、欠落している前記識別番号と関連付けられたリソースの変更内容をリソースに反映して、リソースの同期を行う。また、ステップS118に示すように、コントローラCは、トランザクションの実行が完了しなかった場合には、全てのグループ内の複数のサーバーS1〜S3,S4〜S6に対して、サーバーが有するリソースを、トランザクションの実行を開始する前のリソースの状態へ戻すようにロールバックを指示する。
【0158】
上述した本実施形態のシステムによれば、一部のサーバーに障害が発生した場合も、複数のリソースにまたがってリソースの変更を行うような複数のリクエストから構成するトランザクションを、動作を停止せずに実行することができる。また、システムは、一般にトランザクション処理システムに要求されるACID特性のうち、原子性(Atomicity)、一貫性(Consistency)及び耐障害性(Durability)の特性を有する。なお、独立性(Isolation)の特性については、本発明では対象とせず、言及しない。
【0159】
本発明では、上述した実施形態の情報処理システム及びその方法は、本発明の趣旨を逸脱しない限り適宜変更が可能である。また、一の実施形態が有する構成要件は、他の実施形態にも適宜適用することができる。
【0160】
例えば、本明細書に開示する情報処理システムは、クライアント端末として、駐車場に配置された入出ゲートの制御装置を用いても良い。この場合、サーバーは、駐車料金の精算処理及び車両の入退場の管理をしても良い。また、クライアント端末をスマートフォンやタブレット端末、パーソナルコンピュータとし、コントローラとクライアント端末が通信するネットワークをインターネットとして、商品の通信販売の管理、航空券やコンサート等の切符の予約販売の管理、駐車場の予約の管理等を行うサーバーを複数設置しても良い。