(57)【要約】【課題】動作を停止しない情報処理システムを提供する。【解決手段】情報処理システムは、端末と通信可能に接続されたコントローラと、コントローラと通信可能に接続された複数のサーバーを備え、コントローラは、端末から受信したリクエストに連続する識別番号を付して複数のサーバーへ送信し、複数のサーバーから受信したレスポンスの内の一のレスポンスを端末へ送信し、各サーバーは、今回の識別番号が前回の識別番号と連続していなければ、今回と前回の識別番号の間に位置する欠落識別番号と関連付けられたリソースの変更内容を他のサーバーから受信し、リソースの変更内容を反映してリソースの変更を行った後、受信したリクエストに応じて所定の処理を行いレスポンスを作成し、前記処理内容に対応したリソースの変更を行って、コントローラにレスポンスを送信し且つ今回の識別番号及び今回の識別番号と関連付けられたリソースの変更内容を記憶する。【選択図】図１
2015194912.tif 000002
【特許請求の範囲】
【請求項１】
リソースを有するサーバーが、クライアント端末から受信したリクエストに応じて所定の処理を行い、レスポンスを作成すると共に、前記処理内容に対応したリソースの変更を行って、クライアント端末に対してレスポンスを送信するシステムであって、
クライアント端末と通信可能に接続されたコントローラと、
前記コントローラと通信可能に接続された複数の前記サーバーと、
を備え、
前記コントローラは、
クライアント端末から受信したリクエストに対して連続する識別番号を付して、受信したリクエストを複数の前記サーバーへ送信し、
複数の前記サーバーから受信したレスポンスの内の一のレスポンス又は複数のレスポンスに基づいて生成したレスポンスを、リクエストを送信したクライアント端末へ送信し、
各前記サーバーは、
受信したリクエストに付された今回の前記識別番号が、前回に受信したリクエストに付された前回の前記識別番号と連続していれば、受信したリクエストに応じて所定の処理を行い、レスポンスを作成すると共に、前記処理内容に対応したリソースの変更を行って、前記コントローラに対してレスポンスを送信し、且つ今回の前記識別番号及び今回の前記識別番号と関連付けられたリソースの変更内容を記憶し、
今回の前記識別番号が、前回の前記識別番号と連続していなければ、今回の前記識別番号と、前回の前記識別番号との間に位置する欠落している前記識別番号と関連付けられたリソースの変更内容を、他の前記サーバーから受信して、欠落している前記識別番号と関連付けられたリソースの変更内容をリソースに反映して、リソースの変更を行った後、受信したリクエストに応じて所定の処理を行い、レスポンスを作成すると共に、前記処理内容に対応したリソースの変更を行って、前記コントローラに対してレスポンスを送信し、且つ今回の前記識別番号及び今回の前記識別番号と関連付けられたリソースの変更内容を記憶する、情報処理システム。
【請求項２】
前記コントローラは、
分配部と、
複数のサブコントローラと、
を有し、
前記分配部は、
クライアント端末から受信したリクエストを、複数の前記サブコントローラへ送信し、
各前記サブコントローラから受信した識別番号が付されたリクエストの内の一のリクエストを、複数の前記サーバーへ送信し、
複数の前記サーバーから受信したレスポンスを、複数の前記サブコントローラへ送信し、
複数の前記サブコントローラから受信したレスポンスの内の一のレスポンス又は複数のレスポンスに基づいて生成されたレスポンスを、リクエストを送信したクライアント端末へ送信し、
各前記サブコントローラは、
前記分配部から受信したリクエストに対して連続する識別番号を付して、受信したリクエストを、前記分配部へ送信し、
複数の前記サーバーから受信したレスポンスの内の一のレスポンス又は複数のレスポンスに基づいて生成したレスポンスを、前記分配部へ送信する請求項１に記載の情報処理システム。
【請求項３】
前記分配部は、
クライアント端末から受信したリクエストを、複数の前記サブコントローラへ送信した後、所定の時間内に、識別番号が付されたリクエストを前記分配部に送信しない前記サブコントローラは異常を有すると判断し、
複数の前記サーバーから受信したレスポンスを、複数の前記サブコントローラへ送信した後、所定の時間内に、レスポンスを、前記分配部へ送信しない前記サブコントローラは異常を有すると判断し、
異常を有すると判断された前記サブコントローラの情報を所定のアドレスに送信する請求項２に記載の情報処理システム。
【請求項４】
前記コントローラは、受信したリクエストを複数の前記サーバーへ送信した後、所定の時間内に、前記コントローラに対してレスポンスを送信しない前記サーバーは異常を有すると判断し、異常を有すると判断された前記サーバーの情報を所定のアドレスに送信する請求項１〜３の何れか一項に記載の情報処理システム。
【請求項５】
前記コントローラは、複数の前記サーバーから受信したレスポンスの内、最も早く受信したレスポンスを、リクエストを送信したクライアント端末へ送信する請求項１〜４の何れか一項に記載の情報処理システム。
【請求項６】
前記コントローラは、複数の前記サーバーから受信したレスポンスに対して、多数決判断を用いて多数派のレスポンスを採用し、多数派のレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末へ送信する請求項１〜４の何れか一項に記載の情報処理システム。
【請求項７】
前記コントローラは、複数の前記サーバーから受信したレスポンスが一致しない場合には、レスポンスを無効と判断して、リクエストを実行できないことを、リクエストを送信したクライアント端末へ送信する請求項１〜５の何れか一項に記載の情報処理システム。
【請求項８】
リソースは、データベース、又は、ファイル、又は、メモリ、又は、情報出力部、又は、これらの組み合わせである請求項１〜７の何れか一項に記載の情報処理システム。
【請求項９】
複数の前記サーバーにより構成するグループを一つ又は複数個備え、同じグループ内のサーバーはそれぞれ同じリソースを有し、異なるグループ間では、それぞれ異なるリソースを有し、
前記コントローラは、クライアント端末から受信したリクエストに対して、グループ毎に連続する前記識別番号を付して、受信したリクエストを、受信したリクエストに指定される送付先に基づいて定まる前記グループ内の複数の前記サーバーへ送信し、
クライアント端末から受信した複数の連続するリクエストにより構成されるトランザクションを実行するときには、
各グループ内に配置された前記サーバーは、トランザクションの処理に失敗した時は、前記サーバーが有するリソースを、前記トランザクションの実行を開始する前のリソースの状態へ戻し、次回のリクエストを受信した時に、欠落している前記識別番号と関連付けられたリソースの変更内容をリソースに反映してリソースを変更することにより、リソースの同期を行う請求項１〜８の何れか一項に記載の情報処理システム。
【請求項１０】
前記コントローラは、
前記トランザクションを構成するリクエストの一つを送信したサーバーからリクエスト実行の成功を示すレスポンスを受信しない場合、前記トランザクションを構成する残りのリクエストを当該サーバーへ送信せず、
前記トランザクションを構成するリクエストの一つを送信したグループのサーバーから、リクエスト実行の成功を示すレスポンスをひとつも受信しない場合、
前記トランザクションの実行に失敗したと判断し、
全てのグループ内の全ての前記サーバーへ対して、前記サーバーが有するリソースを、前記トランザクションの実行を開始する前のリソースの状態へ戻すよう指示し、
前記トランザクションを送信したクライアント端末へ、トランザクションの実行の失敗を送信する請求項９に記載の情報処理システム。
【請求項１１】
リソースを有する前記サーバーが、クライアント端末から受信したリクエストに応じて所定の処理を行い、レスポンスを作成すると共に、前記処理内容に対応したリソースの変更を行って、クライアント端末に対してレスポンスを送信する情報処理方法であって、
クライアント端末と通信可能に接続されたコントローラが、クライアント端末から受信したリクエストに対して連続する識別番号を付して、受信したリクエストを複数の前記サーバーへ送信するステップと、
各前記サーバーが、受信したリクエストに付された今回の前記識別番号が、前回に受信したリクエストに付された前回の前記識別番号と連続していれば、受信したリクエストに応じて所定の処理を行い、レスポンスを作成すると共に、前記処理内容に対応したリソースの変更を行って、前記コントローラに対してレスポンスを送信し、且つ今回の前記識別番号及び今回の前記識別番号と関連付けられたリソースの変更内容を記憶するステップと、
各前記サーバーが、今回の前記識別番号が、前回の前記識別番号と連続していなければ、今回の前記識別番号と、前回の前記識別番号との間に位置する欠落している前記識別番号と関連付けられたリソースの変更内容を、他の前記サーバーから受信して、欠落している前記識別番号と関連付けられたリソースの変更内容をリソースに反映して、リソースの変更を行った後、受信したリクエストに応じた所定の処理を行い、レスポンスを作成すると共に、前記処理内容に対応したリソースの変更を行って、前記コントローラに対してレスポンスを送信し、且つ今回の前記識別番号及び今回の前記識別番号と関連付けられたリソースの変更内容を記憶するステップと、
前記コントローラが、複数の前記サーバーから受信したレスポンスの内の一のレスポンス又は複数のレスポンスに基づいて生成したレスポンスを、リクエストを送信したクライアント端末へ送信するステップと、
を備える情報処理方法。
【請求項１２】
前記コントローラは、
分配部と、
複数のサブコントローラを有し、
前記コントローラが、クライアント端末から受信したリクエストに対して連続する識別番号を付して、受信したリクエストを複数の前記サーバーへ送信する前記ステップは、
前記分配部が、クライアント端末から受信したリクエストを、複数の前記サブコントローラへ送信するステップと、
各前記サブコントローラが、前記分配部から受信したリクエストに対して連続する識別番号を付して、受信したリクエストを、前記分配部へ送信するステップと、
前記分配部が、各前記サブコントローラから受信した識別番号が付されたリクエストの内の一のリクエストを、複数の前記サーバーへ送信するステップと、
を有し、
前記コントローラが、複数の前記サーバーから受信したレスポンスの内の一のレスポンス又は複数のレスポンスに基づいて生成したレスポンスを、リクエストを送信したクライアント端末へ送信する前記ステップは、
前記分配部が、複数の前記サーバーから受信したレスポンスを、複数の前記サブコントローラへ送信するステップと、
各前記サブコントローラが、複数の前記サーバーから受信したレスポンスの内の一のレスポンス又は複数のレスポンスに基づいて生成したレスポンスを、前記分配部へ送信するステップと、
前記分配部が、複数の前記サブコントローラから受信したレスポンスの内の一のレスポンス又は複数のレスポンスに基づいて生成されたレスポンスを、リクエストを送信したクライアント端末へ送信するステップと、
を有する請求項１１に記載の情報処理方法。
【請求項１３】
前記コントローラが、複数の前記サーバーから受信したレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末へ送信する前記ステップでは、
前記コントローラは、複数の前記サーバーから受信したレスポンスの内、最も早く受信したレスポンスを、リクエストを送信したクライアント端末へ送信する請求項１１又は１２に記載の情報処理方法。
【請求項１４】
前記コントローラが、複数の前記サーバーから受信したレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末へ送信する前記ステップでは、
前記コントローラは、複数の前記サーバーから受信したレスポンスに対して、多数決判断を用いて多数派のレスポンスを採用し、多数派のレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末へ送信する請求項１１又は１２に記載の情報処理方法。
【請求項１５】
リソースを有するサーバーが、クライアント端末から受信したリクエストに応じて所定の処理を行い、前記処理内容に対応してリソースを変更し、一つ又は複数のリクエストの処理結果をクライアント端末に対して送信する情報処理システムであって、
各々がリソースを有する複数のサーバーと、
複数のサーバーとクライアント端末と双方に通信可能なコントローラを備え、
前記コントローラは、クライアント端末から受信したリクエストに対し、受信した順番に対応して連続する識別子を生成して各々のリクエストに付加し、サーバーへ送信する手段を有し、
前記サーバーは、前記コントローラから受信したリクエストに付加された識別子の連続性を利用して、前回受信したリクエストと今回受信したリクエストの間に、受信していないリクエストが存在するか否かを判定する手段と、受信していないリクエストが存在すると判定したときは、受信していないリクエストに対応して変更されるべきリソースの変更内容の情報を他の前記サーバーへ問い合わせる手段を有する情報処理システム。
【請求項１６】
請求項１及び請求項１５に記載の情報処理システムのコントローラにおいて、
連続する識別番号を生成する識別番号生成手段と、
生成した前記識別番号に関する情報を記録するメモリと、
を備え、
クライアント端末から受信したリクエストに対し、前記識別番号を記録する前記メモリを参照し、前回受信したリクエストに対して生成した前記識別番号に関する情報を読み出して、今回受信したリクエストに対して連続する前記識別番号を生成する識別番号生成手段により連続する前記識別番号を生成し、前記受信したリクエストに付して、複数の前記サーバーへ送信し、
複数の前記サーバーから受信した一つ又は複数のレスポンスに基づいてレスポンスを生成して、前記リクエストを送信した前記クライアント端末へ送信するコントローラ。
【請求項１７】
請求項１に記載の情報処理システムのサーバー並びに請求項１６に記載のコントローラを有する請求項１５に記載の情報処理システムのサーバーにおいて、
受信したリクエストに付された今回の前記識別番号が、
前回に受信したリクエストに付された前回の前記識別番号と連続しているときは、
前記リクエストに応じて所定の処理を行い、前記処理内容に対応してリソースに対して行った変更の内容を前記識別番号に関連づけて記憶し、
受信したリクエストに付された今回の前記識別番号が、
前回に受信したリクエストに付された前回の前記識別番号と連続していないときは、
今回の前記識別番号と、前回の前記識別番号との間に位置する欠落している前記識別番号と関連づけられたリソースの変更内容を、他の前記サーバーから受信して、欠落している前記識別番号と関連づけられたリソースの変更内容をリソースに反映して、リソースの変更を行った後、
前記リクエストに応じて所定の処理を行い、前記処理内容に対応してリソースに対して行った変更の内容を前記識別番号に関連づけて記憶するサーバー。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム及びその方法に関する。
【背景技術】
【０００２】
従来、リソースを有するサーバーが、クライアント端末から受信したリクエストに応じて所定の処理を行い、レスポンスを作成すると共に、処理内容に対応したリソースの変更を行って、クライアント端末に対してレスポンスを送信するシステムが用いられている。
【０００３】
このようなシステムの多くでは、サーバーは２４時間３６５日、連続して稼働することが求められる。システムの核となるサーバーが故障すると、システム全体の動作が停止するなど、致命的な影響を与える場合がある。
【０００４】
そこで、サーバーに故障が発生した場合には、代替の正常なサーバーに切り替える等の対応を行って、システムの機能を失わないように対策されている。
【０００５】
具体的には、システムは、実際の処理を行う運用系のサーバーと、実際の処理は行わずに待機する待機系のサーバーとを備えた冗長性を持つように対策することが通例である。もし、運用系のサーバーが故障した時には、待機系のサーバーに切り替えて、システムの機能が失われないようになされている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−１３４２１０号公報
【特許文献２】特表２００２−５２５７４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、運用系のサーバーの異常を検知し、故障した運用系のサーバーから待機系のサーバーに切り替える間には、その手順を実行するために、システムの停止する時間が生じる。
【０００８】
また、待機系のサーバーが異常を有している場合には、運用系のサーバーから待機系のサーバーへの切り替えが行えない場合もある。
【０００９】
更に、故障した運用系のサーバーから待機系のサーバーに切り替える作業が複雑なので、切り替え作業にトラブルが生じるおそれがある。
【００１０】
そこで、２重化されたプロセッサ又はメモリなどのハードウェアをリアルタイムで同期させて動作するフォールトトレラント型のサーバーが提案されている。
【００１１】
しかし、フォールトトレラント型のサーバーは、ハードウェアの結合度が高く、制約が大きいので、遠隔地にサーバーを分散して配置するようなシステムを構成することが困難であり、また、高価であるという問題点を有する。
【００１２】
そこで、本明細書では、上述した問題点を解決し、２台を超える数のサーバーで容易に冗長化でき、また、一部のサーバーを遠隔地に配置しうる情報処理システム及びその方法を提供することを課題とする。
【課題を解決するための手段】
【００１３】
本明細書に開示する情報処理システムによれば、リソースを有するサーバーが、クライアント端末から受信したリクエストに応じて所定の処理を行い、レスポンスを作成すると共に、上記処理内容に対応したリソースの変更を行って、クライアント端末に対してレスポンスを送信するシステムであって、クライアント端末と通信可能に接続されたコントローラと、上記コントローラと通信可能に接続された複数の上記サーバーと、を備え、上記コントローラは、クライアント端末から受信したリクエストに対して連続する識別番号を付して、受信したリクエストを複数の上記サーバーへ送信し、複数の上記サーバーから受信したレスポンスの内の一のレスポンス又は複数のレスポンスに基づいて生成したレスポンスを、リクエストを送信したクライアント端末へ送信し、各上記サーバーは、受信したリクエストに付された今回の上記識別番号が、前回に受信したリクエストに付された前回の上記識別番号と連続していれば、受信したリクエストに応じて所定の処理を行い、レスポンスを作成すると共に、上記処理内容に対応したリソースの変更を行って、上記コントローラに対してレスポンスを送信し、且つ今回の上記識別番号及び今回の上記識別番号と関連付けられたリソースの変更内容を記憶し、今回の上記識別番号が、前回の上記識別番号と連続していなければ、今回の上記識別番号と、前回の上記識別番号との間に位置する欠落している上記識別番号と関連付けられたリソースの変更内容を、他の上記サーバーから受信して、欠落している上記識別番号と関連付けられたリソースの変更内容をリソースに反映して、リソースの変更を行った後、受信したリクエストに応じて所定の処理を行い、レスポンスを作成すると共に、上記処理内容に対応したリソースの変更を行って、上記コントローラに対してレスポンスを送信し、且つ今回の上記識別番号及び今回の上記識別番号と関連付けられたリソースの変更内容を記憶する。
【００１４】
また、本明細書に開示する情報処理方法によれば、リソースを有する上記サーバーが、クライアント端末から受信したリクエストに応じて所定の処理を行い、レスポンスを作成すると共に、上記処理内容に対応したリソースの変更を行って、クライアント端末に対してレスポンスを送信する情報処理方法であって、クライアント端末と通信可能に接続されたコントローラが、クライアント端末から受信したリクエストに対して連続する識別番号を付して、受信したリクエストを複数の上記サーバーへ送信するステップと、各上記サーバーが、受信したリクエストに付された今回の上記識別番号が、前回に受信したリクエストに付された前回の上記識別番号と連続していれば、受信したリクエストに応じて所定の処理を行い、レスポンスを作成すると共に、上記処理内容に対応したリソースの変更を行って、上記コントローラに対してレスポンスを送信し、且つ今回の上記識別番号及び今回の上記識別番号と関連付けられたリソースの変更内容を記憶するステップと、各上記サーバーが、今回の上記識別番号が、前回の上記識別番号と連続していなければ、今回の上記識別番号と、前回の上記識別番号との間に位置する欠落している上記識別番号と関連付けられたリソースの変更内容を、他の上記サーバーから受信して、欠落している上記識別番号と関連付けられたリソースの変更内容をリソースに反映して、リソースの変更を行った後、受信したリクエストに応じた所定の処理を行い、レスポンスを作成すると共に、上記処理内容に対応したリソースの変更を行って、上記コントローラに対してレスポンスを送信し、且つ今回の上記識別番号及び今回の上記識別番号と関連付けられたリソースの変更内容を記憶するステップと、上記コントローラが、複数の上記サーバーから受信したレスポンスの内の一のレスポンス又は複数のレスポンスに基づいて生成したレスポンスを、リクエストを送信したクライアント端末へ送信するステップと、を備える。
【００１５】
また、本明細書に開示する情報処理システムによれば、リソースを有するサーバーが、クライアント端末から受信したリクエストに応じて所定の処理を行い、前記処理内容に対応してリソースを変更し、一つ又は複数のリクエストの処理結果をクライアント端末に対して送信する情報処理システムであって、各々がリソースを有する複数のサーバーと、複数のサーバーとクライアント端末と双方に通信可能なコントローラを備え、前記コントローラは、クライアント端末から受信したリクエストに対し、受信した順番に対応して連続する識別子を生成して各々のリクエストに付加し、サーバーへ送信する手段を有し、前記サーバーは、前記コントローラから受信したリクエストに付加された識別子の連続性を利用して、前回受信したリクエストと今回受信したリクエストの間に、受信していないリクエストが存在するか否かを判定する手段と、受信していないリクエストが存在すると判定したときは、受信していないリクエストに対応して変更されるべきリソースの変更内容の情報を他の前記サーバーへ問い合わせる手段を有する。
【００１６】
また、本明細書に開示するコントローラによれば、上述した情報処理システムのコントローラにおいて、連続する識別番号を生成する識別番号生成手段と、生成した前記識別番号に関する情報を記録するメモリと、を備え、クライアント端末から受信したリクエストに対し、前記識別番号を記録する前記メモリを参照し、前回受信したリクエストに対して生成した識別番号に関する情報を読み出して、今回受信したリクエストに対して連続する識別番号を生成する識別番号生成手段により連続する前記識別番号を生成し、前記受信したリクエストに付して、複数の前記サーバーへ送信し、複数の前記サーバーから受信した一つ又は複数のレスポンスに基づいてレスポンスを生成して、前記リクエストを送信した前記クライアント端末へ送信する。
【００１７】
更に、本明細書に開示するサーバーによれば、上述した情報処理システムのサーバー並びに上述したコントローラを有する情報処理システムのサーバーにおいて、受信したリクエストに付された今回の前記識別番号が、前回に受信したリクエストに付された前回の識別番号と連続しているときは、前記リクエストに応じて所定の処理を行い、前記処理内容に対応してリソースに対して行った変更の内容を前記識別番号に関連づけて記憶し、受信したリクエストに付された今回の識別番号が、前回に受信したリクエストに付された前回の識別番号と連続していないときは、今回の前記識別番号と、前回の前記識別番号との間に位置する欠落している前記識別番号と関連づけられたリソースの変更内容を、他の前記サーバーから受信して、欠落している前記識別番号と関連づけられたリソースの変更内容をリソースに反映して、リソースの変更を行った後、前記リクエストに応じて所定の処理を行い、前記処理内容に対応してリソースに対して行った変更の内容を前記識別番号に関連づけて記憶する。
【発明の効果】
【００１８】
上述した本明細書に開示する情報処理システムによれば、動作を停止しない情報処理システムが得られる。
【００１９】
また、上述した本明細書に開示する情報処理方法によれば、情報処理システムを停止させないで動作させることできる。
【図面の簡単な説明】
【００２０】
【図１】本明細書に開示するシステムの第１実施形態のシステム構成図である。
【図２】コントローラの構成図である。
【図３】サーバーリスト表を説明する図である。
【図４】サーバーの構成図である。
【図５】アクセスポイント位置情報表を説明する図である。
【図６】端末位置情報表を説明する図である。
【図７】サーバーアドレス表を説明する図である。
【図８】クライアント端末の構成図である。
【図９】システムの第１実施形態の動作を説明するフローチャート（その１）である。
【図１０】システムの第１実施形態の動作を説明するフローチャート（その２）である。
【図１１】システムの第１実施形態の動作を説明するフローチャート（その３）である。
【図１２】システムの第１実施形態の動作を説明するフローチャート（その４）である。
【図１３】システムの第１実施形態の動作を説明するフローチャート（その５）である。
【図１４】システムの第１実施形態の動作を説明するフローチャート（その６）である。
【図１５】本明細書に開示するシステムの第２実施形態のコントローラの構成図である。
【図１６】分配部の構成図である。
【図１７】サブコントローラリスト表を説明する図である。
【図１８】システムの第２実施形態の動作を説明するフローチャート（その１）である。
【図１９】システムの第２実施形態の動作を説明するフローチャート（その２）である。
【図２０】本明細書に開示するシステムの第３実施形態のシステム構成図である。
【図２１】サーバーリスト表を説明する図である。
【図２２】システムの第３実施形態の動作を説明するフローチャート（その１）である。
【図２３】システムの第３実施形態の動作を説明するフローチャート（その２）である。
【図２４】システムの第３実施形態の動作を説明するフローチャート（その３）である。
【図２５】システムの第３実施形態の動作を説明するフローチャート（その４）である。
【発明を実施するための形態】
【００２１】
以下、本明細書で開示する情報処理システムの好ましい第１実施形態を、図を参照して説明する。但し、本発明の技術範囲はそれらの実施形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【００２２】
図１は、本明細書に開示する情報処理システム（以下、単にシステムともいう）の第１実施形態のシステム構成図である。図２は、コントローラの構成図である。図３は、サーバーの構成図である。図４は、クライアント端末の構成図である。
【００２３】
本実施形態のシステム１０は、リソースを有するサーバーＳ１〜Ｓ３が、クライアント端末Ｔ１〜Ｔ４から受信したリクエストに応じて所定の処理を行い、レスポンスを作成すると共に、処理内容に対応したリソースの変更を行って、クライアント端末Ｔ１〜Ｔ４に対してレスポンスを送信する。
【００２４】
ここで、リクエストは、クライアント端末からのサーバーへの処理の要求であり、レスポンスは、サーバーが要求を処理した結果である。
【００２５】
また、リソースは、サーバーが有するデータベース、又は、ファイル、又は、メモリ、又は、情報出力部、又は、これらの組み合わせ等である。
【００２６】
システム１０は、クライアント端末Ｔ１〜Ｔ４からのリクエストに対して、所定の処理を行い、レスポンスを作成する複数のサーバーＳ１〜Ｓ３を備えた冗長性を有している。図１に示す例では、システム１０は、３つのサーバーＳ１〜Ｓ３を備えているが、サーバーの数は２つ以上であれば、特に限定されるものではない。
【００２７】
システム１０は、例えば、１台又は２台のサーバーが故障により停止した場合、又は、ネットワークの障害によって１台又は２台のサーバーとの通信が切断された場合、又は、１台又は２台のサーバーの故障によりデータが消失した場合でも、システム１０は停止することなく動作を継続することができる。更に、１台又は２台のサーバーが動作しない状態になったときも、正常なサーバーに切り替える特別な操作を必要としない。
【００２８】
また、システム１０では、故障したサーバーが正常に機能するサーバーに置き換えられた時には、置き換えられた新たなサーバーは、リソースの更新を自動的に行って、他のサーバーのリソースと同期することができる。
【００２９】
図１に示すように、システム１０は、複数のクライアント端末Ｔ１〜Ｔ４と、ネットワークＮ１を介して、通信可能に接続されたコントローラＣと、コントローラＣと、ネットワークＮ２を介して、通信可能に接続された複数のサーバーＳ１〜Ｓ３を備える。
【００３０】
サーバーＳ３は、ネットワークＮ２と通信可能に接続されたネットワークＮ３を介して、コントローラＣと接続される。
【００３１】
ネットワークＮ１としては、例えば、イーサネット（登録商標）、ＷｉＦｉ（登録商標）等の無線ＬＡＮ、インターネット等の広域ネットワークを用いることができる。
【００３２】
ネットワークＮ２としては、例えば、イーサネット（登録商標）等の構内ネットワークを用いることができる。ネットワークＮ３としては、例えば、インターネット等の広域ネットワークを用いることができる。
【００３３】
コントローラＣは、クライアント端末Ｔ１〜Ｔ４から受信したリクエストに対して連続する識別番号を付して、受信したリクエストを複数のサーバーＳ１〜Ｓ３へ送信する。ここで、識別番号は、サーバーＳ１〜Ｓ３の間で同一である。また、コントローラＣは、複数のサーバーＳ１〜Ｓ３から受信したレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末Ｔ１〜Ｔ４へ送信する。
【００３４】
図２に示すように、コントローラＣは、演算部Ｃａと、記憶部Ｃｂと、操作部Ｃｃと、表示部Ｃｄと、通信部Ｃｅを有する。
【００３５】
演算部Ｃａは、記憶部Ｃｂに予め記憶されている所定のプログラムに従い、コントローラＣの各要素の制御及び各種処理を行い、処理中に生じるデータを一時的に保存するために記憶部Ｃｂを利用する。記憶部Ｃｂは、１次記憶装置及び２次記憶装置を有していても良い。記憶部Ｃｂは、生成した識別番号に関する情報を記録する。
【００３６】
操作部Ｃｃは、システム１０の管理者等によって操作されて、各種の情報を入力する。操作部Ｃｃとしては、例えば、キーボード又はマウスを用いることができる。管理者は、操作部Ｃｃを使用せず、ネットワークＮ２に接続したパーソナルコンピュータ等の端末を用いて操作するよう構成しても良い。演算部Ｃａは、操作部Ｃｃから入力された各種の情報を用いて、各種処理を行う。
【００３７】
表示部Ｃｄは、演算部Ｃａの動作によって、各種の情報を表示する。表示部Ｃｄとしては、例えば、液晶パネルを用いることができる。
【００３８】
通信部Ｃｅは、ネットワークＮ１を介して、クライアント端末Ｔ１〜Ｔ４との間でデータの送受信を行う。また、通信部Ｃｅは、ネットワークＮ２及びネットワークＮ３を介して、サーバーＳ１〜Ｓ３及び保守センターＭの間でデータの送受信を行う。
【００３９】
コントローラＣとしては、例えば、コンピュータ又はワンチップマイコン又はステートマシン等を用いることができる。演算部Ｃａが、記憶部Ｃｂに予め記憶されている所定のプログラムに従い、コントローラＣの各要素の制御及び各種処理を行うことにより、クライアント端末から受信したリクエストに対し、識別番号を記録するメモリを参照し、前回受信したリクエストに対して生成した識別番号に関する情報を読み出して、今回受信したリクエストに対して連続する識別番号を生成する識別番号生成手段が実現される。
【００４０】
また、図２に示すように、コントローラＣは、システム１０が有するサーバーのリストを記憶するサーバリストデータベース（ＤＢ）３０を有する。サーバーリストＤＢ３０には、サーバーリスト表３０ａが記憶される。
【００４１】
図３は、サーバーリスト表を説明する図である。
【００４２】
サーバーリスト表３０ａには、サーバーを識別するサーバー識別番号と、サーバーアドレスと、サーバーの異常の有無を示す状態とが関連付けられて記録されている。
【００４３】
コントローラＣは、稼働しているサーバーのサーバー識別番号及びサーバーアドレスを、システム１０の起動時又は変更が生じた時に、各サーバーへ送信する。
【００４４】
サーバーＳ１〜Ｓ３は、コントローラーＣから受信したリクエストに応じたレスポンスを作成して、作成したレスポンスをコントローラＣへ送信する。
【００４５】
図４に示すように、サーバーＳ１〜Ｓ３は、演算部Ｓａと、記憶部Ｓｂと、操作部Ｓｃと、表示部Ｓｄと、通信部Ｓｅを有する。
【００４６】
演算部Ｓａは、記憶部Ｓｂに予め記憶されている所定のプログラムに従い、サーバーＳ１〜Ｓ３の各要素の制御及び各種処理を行い、処理中に生じるデータを一時的に保存するために記憶部Ｓｂを利用する。記憶部Ｓｂは、１次記憶装置及び２次記憶装置を有していても良い。
【００４７】
操作部Ｓｃは、システム１０の管理者等によって操作されて、各種の情報を入力する。操作部Ｓｃとしては、例えば、キーボード又はマウスを用いることができる。演算部Ｓａは、操作部Ｓｃから入力された各種の情報を用いて、各種処理を行う。
【００４８】
表示部Ｓｄは、演算部Ｓａの動作によって、各種の情報を表示する。表示部Ｓｄとしては、例えば、液晶パネルを用いることができる。
【００４９】
通信部Ｓｅは、ネットワークＮ２又はネットワークＮ３を介して、コントローラＣ又は他のサーバーとの間でデータの送受信を行う。演算部Ｓａが、記憶部Ｓｂに予め記憶されている所定のプログラムに従い、サーバーＳ１〜Ｓ３の各要素の制御及び各種処理を行うことにより、コントローラから受信したリクエストに付加された識別子の連続性を利用して、前回受信したリクエストと今回受信したリクエストの間に、受信していないリクエストが存在するか否かを判定する手段が実現される。また、演算部Ｓａが、記憶部Ｓｂに予め記憶されている所定のプログラムに従い、サーバーＳ１〜Ｓ３の各要素の制御及び各種処理を行うことにより、受信していないリクエストに対応して変更されるべきリソースの変更内容の情報を他のサーバーへ問い合わせる手段が実現される。
【００５０】
本実施形態では、説明のために、クライアント端末の位置を無線通信の電波強度に基づいて測定し、測定されたクライアント端末の位置をデーターベースに記録し、クライアント端末からの問い合わせに対して、クライアント端末の位置情報を回答する位置情報サービスシステムへの応用に即して述べる。具体的には、システム１０において、ネットワークＮ１としては、ＷｉＦｉ（登録商標）等の無線ＬＡＮを用い、コントローラＣと、複数のクライアント端末Ｔ１〜Ｔ４とは、図示しない３つのアクセスポイントＡＰ１〜ＡＰ３を介して、通信可能に接続される。なお、本例では、３つのアクセスポイントを備えているが、アクセスポイントの数は特に限定されるものではない。図４に示すように、サーバーＳ１〜Ｓ３は、システム１０が有するアクセスポイントＡＰ１〜ＡＰ３の位置を記憶するアクセスポイント位置データベース（ＡＰ位置ＤＢ）３１と、クライアント端末の位置を記憶するクライアント端末位置データベース（ＤＢ）３２と、他のサーバーのアドレスを記憶するサーバーアドレスデータベース（ＤＢ）３３を有する。
【００５１】
ＡＰ位置ＤＢ３１には、アクセスポイント位置情報表３１ａが記憶される。
【００５２】
図５は、アクセスポイント位置情報表を説明する図である。
【００５３】
アクセスポイント位置情報表３１ａには、アクセスポイントを識別するＡＰ識別番号と、アクセスポイントの位置を示すＡＰ位置情報とが関連付けられて記録される。
【００５４】
クライアント端末位置ＤＢ３２には、端末位置情報表３２ａが記憶される。
【００５５】
図６は、端末位置情報表を説明する図である。
【００５６】
端末位置情報表３２ａには、クライアント端末を識別する端末番号と、クライアント端末の位置を示す端末位置情報とが関連付けられて記録される。
【００５７】
サーバーアドレスＤＢ３３には、サーバーアドレス表３３ａが記憶される。
【００５８】
図７は、サーバーアドレス表を説明する図である。
【００５９】
サーバーアドレス表３３ａには、サーバーを識別するサーバー識別番号と、サーバーアドレスとが関連付けられて記録される。サーバーＳ１〜Ｓ３は、コントローラＣから受信した稼働しているサーバーの識別番号及びサーバーアドレスを、サーバーアドレス表３３ａに記録する。
【００６０】
クライアント端末Ｔ１〜Ｔ４は、リクエストをコントローラＣへ送信して、レスポンスをコントローラＣから受信する。
【００６１】
図８に示すように、クライアント端末Ｔ１〜Ｔ４は、演算部Ｔａと、記憶部Ｔｂと、操作部Ｔｃと、表示部Ｔｄと、通信部Ｔｅを有する。
【００６２】
演算部Ｔａは、記憶部Ｔｂに予め記憶されている所定のプログラムに従い、クライアント端末Ｔ１〜Ｔ４の各要素の制御及び各種処理を行い、処理中に生じるデータを一時的に保存するために記憶部Ｔｂを利用する。記憶部Ｔｂは、１次記憶装置及び２次記憶装置を有していても良い。
【００６３】
操作部Ｔｃは、クライアント端末の操作者等によって操作されて、各種の情報を入力する。操作部Ｔｃとしては、例えば、タッチパネルを用いることができる。演算部Ｔａは、操作部Ｔｃから入力された各種の情報を用いて、各種処理を行う。
【００６４】
表示部Ｔｄは、演算部Ｔａの動作によって、各種の情報を表示する。表示部Ｔｄとしては、例えば、液晶パネルを用いることができる。
【００６５】
通信部Ｔｅは、ネットワークＮ１を介して、コントローラＣとの間でデータの送受信を行う。
【００６６】
クライアント端末Ｔ１〜Ｔ４としては、例えば、多機能型携帯電話機、タブレット端末、ノート型パーソナルコンピュータ等を用いることができる。
【００６７】
また、ネットワークＮ３には、保守センターＭが接続される。コントローラＣは、異常を有すると判断したサーバーのサーバー識別番号を、電子メールを用いて、ネットワークＮ３を介して、保守センターＭのメールアドレスに送信する。保守センターＭの管理者は、電子メールを用いて連絡を受けたサーバーの保守を行う。
【００６８】
次に、上述したシステム１０の第１の動作例を、図９〜図１１を参照して、以下に説明する。
【００６９】
システム１０の第１の動作例では、自己の位置情報を問い合わせるクライアント端末のリクエストに対して、サーバーがクライアント端末の位置情報を計算し、コントローラが、クライアント端末に対してレスポンスを送信する。
【００７０】
まず、ステップＳ１０において、クライアント端末Ｔ１〜Ｔ４は、自己の位置情報を問い合わせるリクエストを、３つのアクセスポイントＡＰ１〜ＡＰ３から受信した電波強度及び端末番号と共に、コントローラＣへ送信する。端末番号は、ＭＡＣアドレス又はＩＰアドレスの何れかであっても良い。
【００７１】
図１に示す例では、クライアント端末Ｔ１〜Ｔ４は、３つのアクセスポイントＡＰ１〜ＡＰ３からの電波を受信しており、それぞれのアクセスポイントからの電波強度を、通信部Ｔｅを用いて計測している。
【００７２】
クライアント端末の操作者は、クライアント端末を携帯して移動しており、クライアント端末と各アクセスポイントＡＰ１〜ＡＰ３との距離は変動するので、クライアント端末の位置に応じて、それぞれのアクセスポイントからの電波強度も変化する。
【００７３】
次に、ステップＳ１２において、コントローラＣは、クライアント端末から受信したリクエストに対して連続する識別番号を付して、受信したリクエストを複数のサーバーＳ１〜Ｓ３へ送信する。識別番号は、一のリクエストを、他のリクエストから識別する一意性を有する番号である。識別番号は、システムの単位運用時間内に処理されるリクエストの件数を考慮して、十分に大きい数を表現できる桁数を有する整数とすることができる。連続する識別番号は、隣り合う識別番号の増分が１であるように生成することができる。同桁数の整数で表現できる最大の数で表す識別番号の次の識別番号は、０としても良い。コントローラＣは、サーバーリスト表３０ａを参照して、異常の無いサーバーに対して、リクエストを送信する。
【００７４】
次に、ステップＳ１４において、各サーバーＳ１〜Ｓ３は、受信したリクエストに付された今回の識別番号が、前回に受信したリクエストに付された前回の識別番号と連続しているかを判断する。識別番号が連続していれば、ステップＳ１６へ進む。一方、識別番号が連続していなければ、ステップＳ３０へ進む。
【００７５】
ステップＳ１６へ進んだ場合、各サーバーＳ１〜Ｓ３は、端末位置情報表３１ａを参照して、リクエストを送信したクライアント端末の位置情報を計算して、レスポンスを作成する。各サーバーＳ１〜Ｓ３の記憶部Ｓｂには、端末位置情報表３１ａを参照して、３つのアクセスポイントＡＰ１〜ＡＰ３からの電波強度に基づいて、クライアント端末と各アクセスポイント間の距離を計算し、更に各アクセスポイントの位置データとこれらの距離データから、クライアント端末の位置情報を求めるプログラムが記憶されている。各サーバーＳ１〜Ｓ３は、このプログラムを実行して、クライアント端末の位置情報を計算する。
【００７６】
次に、ステップＳ１８において、各サーバーＳ１〜Ｓ３は、計算されたクライアント端末の位置情報が、端末位置情報表３１ａに記録されていなければ、クライアント端末の識別番号と関連付けて記録する。また、各サーバーＳ１〜Ｓ３は、計算されたクライアント端末の位置情報が、端末位置情報表３１ａに記録されている位置情報と異なっていれば、記録されているクライアント端末の位置情報を今回計算された位置情報に更新する。このようにして、各サーバーＳ１〜Ｓ３は、処理内容に対応したリソースの変更を行う。
【００７７】
次に、ステップＳ２０において、各サーバーＳ１〜Ｓ３は、今回の識別番号及び今回の識別番号と関連付けられた端末位置情報表３１ａの変更内容をログとしてログファイルに記憶する。ログファイルは、記憶部Ｓｂに記憶される。
【００７８】
次に、ステップＳ２２において、各サーバーＳ１〜Ｓ３は、コントローラＣに対して算出した位置情報をレスポンスとして送信する。なお、ステップＳ１８〜Ｓ２２の順番は、前後が入れ替わっていても良い。
【００７９】
次に、ステップＳ２４において、コントローラＣは、複数のサーバーＳ１〜Ｓ３から受信したレスポンスの内の一のレスポンスを、識別番号を取り除いて、リクエストを送信したクライアント端末Ｔ１〜Ｔ４へ送信する。コントローラＣは、複数のサーバーＳ１〜Ｓ３から受信したレスポンスの内の一のレスポンスを選択する方法として、例えば、以下の方法を用いることができる。このように、コントローラＣは、リクエストを送信したクライアント端末へ送信するレスポンスを、複数のサーバーから受信したレスポンスの内の一のレスポンスに基づいて生成しても良い。また、コントローラＣは、リクエストを送信したクライアント端末へ送信するレスポンスを、複数のサーバーから受信した複数のレスポンスに基づいて生成しても良い。
【００８０】
ステップＳ２４ａに示す例では、コントローラＣは、複数のサーバーＳ１〜Ｓ３から受信したレスポンスの内、最も早く受信したレスポンスを、リクエストを送信したクライアント端末Ｔ１〜Ｔ４へ送信する。
【００８１】
ステップＳ２４ｂに示す例では、コントローラＣは、複数のサーバーＳ１〜Ｓ３から受信したレスポンスに対して、多数決判断を用いて多数派のレスポンスを決定し、多数派のレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末Ｔ１〜Ｔ４へ送信する。
【００８２】
ステップＳ２４ｃに示す例では、コントローラは、複数のサーバーＳ１〜Ｓ３から受信したレスポンスが一致しない場合には、レスポンスを無効と判断して、リクエストに対応した所定の処理の実行ができないことを、リクエストを送信したクライアント端末Ｔ１〜Ｔ４へ送信する。
【００８３】
次に、ステップＳ２６において、コントローラＣは、受信したリクエストを複数のサーバーＳ１〜Ｓ３へ送信した後、所定の時間内に、コントローラＣに対してレスポンスを送信しないサーバーは異常を有すると判断し、異常を有すると判断されたサーバーのサーバー識別番号を、電子メールを用いて、ネットワークＮ３を介して、保守センターＭのメールアドレスに送信する。
【００８４】
そして、コントローラＣは、サーバーリスト表３０ａに対して、異常を有するサーバーの状態として、異常有りのフラグを記録する。状態として、異常有りのフラグが記録されたサーバーは、稼働停止のサーバーとして判断される。そして、コントローラＣは、稼働しているサーバーのサーバー識別番号及びサーバーアドレスを、各サーバーへ送信する。
【００８５】
次に、ステップＳ２８において、リクエストを送信したクライアント端末Ｔ１〜Ｔ４は、コントローラＣからのレスポンスを受信して、受信したクライアント端末の位置情報を表示部Ｔｄに表示する。
【００８６】
一方、ステップＳ１４において、識別番号が連続していない場合には、ステップＳ３０へ進む。識別番号が連続していない場合としては、例えば、サーバーが故障により停止した場合、又は、ネットワークの障害によってコントローラとサーバーとの通信が切断された場合、又は、サーバーの故障によりデータが消失した場合等が挙げられる。このような異常を有するサーバーは、リクエストが送信されたとしても、リクエストを受信できないか又は正常にリクエストを処理することができない状態にある。そのため、異常を有するサーバーは、リクエストに付された識別番号を受信できないか、又はリクエストに対応する処理の実行を正常に完了できないので、欠落した識別番号が存在することになる。
【００８７】
ステップＳ３０へ進んだ場合、一のサーバーＳ１〜Ｓ３は、今回の識別番号と、前回の識別番号との間に位置する欠落している識別番号と関連付けられた端末位置情報表３１ａの変更内容を、他のサーバーから受信して、欠落している識別番号と関連付けられた端末位置情報表３１ａの変更内容をリソースに加えて、端末位置情報表３１ａの変更を行う。一のサーバーＳ１〜Ｓ３は、サーバーアドレス表３３ａを参照して、他のサーバーと通信する。他のサーバーは、ログファイルを参照して、問い合わされた欠落している識別番号と関連付けられた端末位置情報表３１ａの変更内容を、一のサーバーＳ１〜Ｓ３へ送信する。ここで、データが消失等により、クライアント端末位置ＤＢ３２に端末位置情報表３１ａが存在しない場合もあり得る。
【００８８】
このような場合には、ステップＳ３０ａに示すように、他のサーバから端末位置情報表３１ａを受信して、クライアント端末位置ＤＢ３２に端末位置情報表３１ａを記憶する。
【００８９】
次に、ステップＳ３２において、一のサーバーＳ１〜Ｓ３は、受信したリクエストに応じて所定の処理を行い、今回の識別番号が付されたレスポンスを作成すると共に、処理内容に対応した端末位置情報表３１ａの変更を行って、コントローラＣに対してレスポンスを送信し、且つ今回の識別番号及び今回の識別番号と関連付けられた端末位置情報表３１ａの変更内容をログとしてログファイルに記憶する。そして、ステップＳ２４へ進む。
【００９０】
このようにして、一のサーバーＳ１〜Ｓ３は、他のサーバーとリソースの同期をとる。他のサーバーとの同期を取った一のサーバーは、コントローラＣへ自身が稼働可能であることを通知し、コントローラＣはサーバーリスト表３０ａ内の対応するサーバーの状態を、異常無しと更新する。
【００９１】
次に、上述したシステム１０の第２の動作例を、図１２〜図１３を参照して、以下に説明する。
【００９２】
システム１０の第２の動作例では、一のクライアント端末が、他のクライアント端末の位置情報を問い合わせるリクエストに対して、サーバーが指定されたクライアント端末の位置情報を端末位置情報表３１ａから読み出してレスポンスを作成し、コントローラが、問い合わせたクライアント端末にレスポンスを送信する。
【００９３】
まず、ステップＳ４０において、一のクライアント端末Ｔ１〜Ｔ４は、他のクライアント端末Ｔ１〜Ｔ４の位置情報を問い合わせるリクエストを、端末番号と共に、コントローラＣへ送信する。
【００９４】
次に、ステップＳ４２において、コントローラＣは、一のクライアント端末Ｔ１〜Ｔ４から受信したリクエストに対して連続する識別番号を付して、受信したリクエストを複数のサーバーＳ１〜Ｓ３へ送信する。
【００９５】
次に、ステップＳ４４において、各サーバーＳ１〜Ｓ３は、受信したリクエストに付された今回の識別番号が、前回に受信したリクエストに付された前回の識別番号と連続しているかを判断する。識別番号が連続していれば、ステップＳ４６へ進む。一方、識別番号が連続していなければ、ステップＳ５０へ進む。
【００９６】
ステップＳ４６へ進んだ場合、各サーバーＳ１〜Ｓ３は、端末位置情報表３１ａを参照して、他のクライアント端末Ｔ１〜Ｔ４の位置情報を読み出して、レスポンスを作成する。この処理では、端末位置情報表３１ａの内容の変更は行われない。
【００９７】
次に、ステップＳ４８において、各サーバーＳ１〜Ｓ３は、コントローラＣに対してレスポンスを送信する。その後のシステム１０の動作は、上述したステップＳ２４〜Ｓ２８と同様である。
【００９８】
一方、ステップＳ４４において、識別番号が連続していない場合には、ステップＳ５０へ進む。
【００９９】
ステップＳ５０へ進んだ場合、一のサーバーＳ１〜Ｓ３は、今回の識別番号と、前回の識別番号との間に位置する欠落している識別番号と関連付けられた端末位置情報表３１ａの変更内容を、他のサーバーから受信して、欠落している識別番号と関連付けられた端末位置情報表３１ａの変更内容をリソースに加えて、端末位置情報表３１ａの変更を行う。識別番号が連続していない場合には、端末位置情報表３１ａに記録されているクライアント端末の位置情報が最新のものではない可能性がある。そこで、上述したように、端末位置情報表３１ａの更新処理を行う。ここで、データが消失等により、クライアント端末位置ＤＢ３２に端末位置情報表３１ａが存在しない場合もあり得る。
【０１００】
このような場合には、ステップＳ５０ａに示すように、一のサーバーＳ１〜Ｓ３は、他のサーバーＳ１〜Ｓ３から端末位置情報表３１ａを受信して、クライアント端末位置ＤＢ３２に端末位置情報表３１ａを記憶する。
【０１０１】
次に、ステップＳ５２において、受信したリクエストに応じて所定の処理を行い、今回の識別番号が付されたレスポンスを作成して、コントローラＣに対してレスポンスを送信する。その後のシステム１０の動作は、上述したステップＳ２４〜Ｓ２８と同様である。
【０１０２】
上述した第２の動作例では、コントローラＣは、一のクライアント端末Ｔ１〜Ｔ４から受信したリクエストに対して連続する識別番号を付していたが、リソースの変更を伴わないリクエストに対しては、連続する識別番号を付さなくても良い。また、コントローラＣは、リソースの変更を伴わないリクエストに対しては、物理的な距離が近いサーバー（例えばサーバーＳ１、Ｓ２）のみにリクエストを送信して、物理的な距離が遠いサーバー（例えば、サーバーＳ３）にはリクエストを送信しなくても良い。また、コントローラＣは、リソースの変更を伴わないリクエストに対しては、サーバーの優先順位を設けて、優先順位の高いサーバーから順番にリクエストを送信するようにしても良い。ここで、サーバーの優先順位は、サーバーの処理能力に基づいて決定することができる。
【０１０３】
次に、異常を有すると判断されたサーバーを正常に機能するサーバーに置き換えて、ネットワークに接続する手順を、図１４を参照して、以下に説明する。
【０１０４】
まず、ステップＳ６０において、正常に機能するサーバーを用意して、所定のプログラムをインストールする。
【０１０５】
次に、ステップＳ６２において、稼働しているサーバーに問い合わせて、アクセスポイント位置表３１ａ及びサーバーアドレス表３３ａを、正常に機能するサーバーに読み込ませる。アクセスポイント位置表３１ａは、ＡＰ位置ＤＢ３１に記憶され、サーバーアドレス表３３ａは、サーバーアドレスＤＢ３３に記憶される。
【０１０６】
次に、ステップＳ６４において、異常を有すると判断されたサーバーから、最新のリクエストに付された識別番号と、端末位置情報表を読み出して、正常に機能するサーバーへ読み込ませる。なお、このステップは、異常を有すると判断されたサーバーから、最新のリクエストに付された識別番号と、端末位置情報表の読み出しを行えない場合には、行われなくてもよい。
【０１０７】
次に、ステップＳ６６において、異常を有すると判断されたサーバーをネットワークから取り外して、正常に機能するサーバーをネットワークに接続する。正常に機能するサーバーは、リクエストを処理する際に、リソースの更新を自動的に行って、他のサーバーのリソースと同期することができる。
【０１０８】
上述した実施形態のシステムによれば、複数のサーバーが同じリソースを有し且つリソースの同期をとりながら同じ動作をする冗長性を有しているので、システムを停止させないで動作することができる。また、システム１０によれば、故障した運用系のサーバーから待機系のサーバーに切り替え作業が不要なので、切り替えのための切り替え時間及び切り替え作業が不要となる。更に、故障したサーバーを正常なサーバーに交換する手順が簡単であり、交換と復旧を確実に行うことができる。
【０１０９】
次に、上述したシステムの他の実施形態を、図を参照しながら以下に説明する。他の実施形態について特に説明しない点については、上述の第１実施形態に関して詳述した説明が適宜適用される。また、同一の構成要素には同一の符号を付してある。
【０１１０】
図１５は、本明細書に開示するシステムの第２実施形態のコントローラの構成図である。
【０１１１】
本実施形態のシステム１０では、コントローラＣは、分配部Ｄと、複数のサブコントローラＳＣ１〜ＳＣ３を有している。複数のサブコントローラＳＣ１〜ＳＣ３は、上述した第１実施形態のコントローラと同様の機能を有している。即ち、本実施形態のシステムのコントローラＣは、上述した第１実施形態のコントローラに対して冗長性を有している。
【０１１２】
分配部Ｄは、クライアント端末Ｔ１〜Ｔ４から受信したリクエストを、複数のサブコントローラＳＣ１〜ＳＣ３へ送信し、サブコントローラＳＣ１〜ＳＣ３から受信した識別番号が付されたリクエストの内の一のリクエストを、複数のサーバーＳ１〜Ｓ３へ送信する。また、分配部Ｄは、複数のサーバーＳ１〜Ｓ３から受信したレスポンスを、複数のサブコントローラＳＣ１〜ＳＣ３へ送信し、複数のサブコントローラＳＣ１〜ＳＣ３から受信したレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末Ｔ１〜Ｔ４へ送信する。
【０１１３】
図１６に示すように、分配部Ｄは、演算部Ｄａと、記憶部Ｄｂと、操作部Ｄｃと、表示部Ｄｄと、通信部Ｄｅを有する。
【０１１４】
演算部Ｄａは、記憶部Ｄｂに予め記憶されている所定のプログラムに従い、分配部Ｄの各要素の制御及び各種処理を行い、処理中に生じるデータを一時的に保存するために記憶部Ｄｂを利用する。記憶部Ｄｂは、１次記憶装置及び２次記憶装置を有していても良い。
【０１１５】
操作部Ｄｃは、システム１０の管理者等によって操作されて、各種の情報を入力する。操作部Ｄｃとしては、例えば、キーボード又はマウスを用いることができる。演算部Ｄａは、操作部Ｄｃから入力された各種の情報を用いて、各種処理を行う。管理者は、操作部Ｄｃを使用せず、ネットワークＮ２に接続したパーソナルコンピュータ等の端末で操作するよう構成しても良い。
【０１１６】
表示部Ｄｄは、演算部Ｄａの動作によって、各種の情報を表示する。表示部Ｄｄとしては、例えば、液晶パネルを用いることができる。
【０１１７】
通信部Ｄｅは、ネットワークＮ１を介して、クライアント端末Ｔ１〜Ｔ４との間でデータの送受信を行う。また、通信部Ｄｅは、ネットワークＮ２及びネットワークＮ３を介して、サーバーＳ１〜Ｓ３との間でデータの送受信を行う。また、通信部Ｄｅは、リンクＲ１〜Ｒ３を介して、サブコントローラＳＣ１〜ＳＣ３とデータの送受信を行う。
【０１１８】
また、図１６に示すように、分配部Ｄは、コントローラＣが有するサブコントローラのリストを記憶するサブコントローラリストデータベース（ＤＢ）３４を有する。サブコントローラリストＤＢ３４には、サブコントローラリスト表３４ａが記憶される。
【０１１９】
図１７は、サブコントローラリスト表を説明する図である。
【０１２０】
サブコントローラリスト表３４ａには、コントローラＣが有するサブコントローラを識別するサブコントローラ識別番号と、サブコントローラアドレスと、サブコントローラの異常の有無を示す状態とが関連付けられて記録されている。
【０１２１】
サブコントローラＳＣ１〜ＳＣ３は、上述した第１実施形態のコントローラと同様の構成及び機能を有している。
【０１２２】
サブコントローラＳＣ１〜ＳＣ３は、分配部Ｄから受信したリクエストに対して連続する識別番号を付して、受信したリクエストを、分配部へ送信する。また、サブコントローラＳＣ１〜ＳＣ３は、複数のサーバーＳ１〜Ｓ３から受信したレスポンスの内の一のレスポンスを、分配部Ｄへ送信する。
【０１２３】
次に、上述した本明細書のシステム１０の動作例を、図１８及び図１９を参照して、以下に説明する。
【０１２４】
まず、ステップＳ７０において、クライアント端末Ｔ１〜Ｔ４は、自己の位置情報を求めるリクエストを、３つのアクセスポイントＡＰ１〜ＡＰ３から受信した電波強度及び端末番号と共に、コントローラＣへ送信して、分配部Ｄはリクエストを受信する。
【０１２５】
次に、ステップＳ７２において、分配部Ｄは、クライアント端末Ｔ１〜Ｔ４から受信したリクエストを、複数のサブコントローラＳＣ１〜ＳＣ３へ送信する。
【０１２６】
次に、ステップＳ７４において、各サブコントローラＳＣ１〜ＳＣ３は、分配部Ｄから受信したリクエストに対して連続する識別番号を付して、受信したリクエストを、分配部Ｄへ送信する。各サブコントローラＳＣ１〜ＳＣ３は、同じ動作をするので、一のリクエストに対して、同じ識別番号を付す。
【０１２７】
次に、ステップＳ７６において、分配部Ｄは、各サブコントローラＳＣ１〜ＳＣ３から受信した識別番号が付されたリクエストの内の一のリクエストを、複数のサーバーＳ１〜Ｓ３へ送信する。そして、各サーバーＳ１〜Ｓ３は、上述したステップＳ１４〜Ｓ２２又はステップＳ３０〜Ｓ３２の動作を行って、コントローラＣに対してレスポンスを送信し、分配部Ｄはレスポンスを受信する。
【０１２８】
次に、ステップＳ７８において、分配部Ｄは、複数のサーバーＳ１〜Ｓ３それぞれから受信したレスポンスを、複数のサブコントローラＳＣ１〜ＳＣ３へ送信する。
【０１２９】
次に、ステップＳ８０において、各サブコントローラＳＣ１〜ＳＣ３は、複数のサーバーＳ１〜Ｓ３から受信したレスポンスの内の一のレスポンスを、分配部Ｄへ送信する。各サブコントローラＳＣ１〜ＳＣ３は、上述したステップＳ２４と同様の処理を行う。
【０１３０】
次に、ステップＳ８２において、分配部Ｄは、複数のサブコントローラＳＣ１〜ＳＣ３から受信したレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末Ｔ１〜Ｔ４へ送信する。複数のサブコントローラＳＣ１〜ＳＣ３には、優先順位が付けられており、分配部Ｄは、この優先順位に基づいて、クライアント端末へ送信するリクエストを選択することができる。又は、分配部Ｄは、複数のサブコントローラから受信したレスポンスの内、最も早く受信したレスポンスを、リクエストを送信したクライアント端末へ送信しても良い。又は、分配部Ｄは、複数の前記サブコントローラから受信したレスポンスに対して、多数決判断を用いて多数派のレスポンスを採用し、多数派のレスポンスの内の一のレスポンスを、リクエストを送信したクライアント端末へ送信しても良い。
【０１３１】
次に、ステップＳ８４において、分配部Ｄは、クライアント端末Ｔ１〜Ｔ４から受信したリクエストを、複数のサブコントローラＳＣ１〜ＳＣ３へ送信した後、所定の時間内に、識別番号が付されたリクエストを分配部Ｄに送信しないサブコントローラＳＣ１〜ＳＣ３は異常を有すると判断し、異常を有すると判断されたサブコントローラＳＣ１〜ＳＣ３の識別番号を、電子メールを用いて、ネットワークＮ３を介して、保守センターＭのメールアドレスに送信する。また、分配部Ｄは、複数のサーバーＳ１〜Ｓ３から受信したレスポンスを、複数のサブコントローラＳＣ１〜ＳＣ３へ送信した後、所定の時間内に、一のレスポンスを、分配部Ｄへ送信しないサブコントローラＳＣ１〜ＳＣ３は異常を有すると判断し、異常を有すると判断されたサブコントローラＳＣ１〜ＳＣ３の識別番号を、電子メールを用いて、ネットワークＮ３を介して、保守センターＭのメールアドレスに送信する。
【０１３２】
次に、ステップＳ８６において、リクエストを送信したクライアント端末Ｔ１〜Ｔ４は、コントローラＣからのレスポンスを受信して、受信したレスポンスを表示部Ｔｄに表示する。
【０１３３】
上述した実施形態のシステムによれば、一のサブコントローラが故障しても、他のサブコントローラが動作するので、システム１０が停止することを防止できる。
【０１３４】
次に、本明細書に開示するシステムの第３実施形態を、図を参照して、以下に説明する。
【０１３５】
図２０は、本明細書に開示するシステムの第３実施形態のシステム構成図である。
【０１３６】
本実施形態のシステム１０は、複数のサーバーＳ１〜Ｓ３により構成されるグループＧ１と、複数のサーバーＳ４〜Ｓ６により構成されるグループＧ２とを備える。同じグループに属するサーバーは、それぞれ同じリソースを有し且つ同じプログラムを実行して同じ動作を行う。また、同じグループに属するサーバーは、リソースの同期を行う。一方、異なるグループに配置されるサーバーは、異なるリソースを有しており、異なるプログラムを実行して、異なる処理を実行し得る。
【０１３７】
システム１０は、クライアント端末から受信した複数の連続するリクエストにより構成されるトランザクションを実行する。
【０１３８】
図２０に示す例では、システム１０は、２つのグループＧ１，Ｇ２を備えているが、システム１０は、３つ以上のグループを備えていても良い。また、システム１０は、１つのグループだけを備えていても良い。
【０１３９】
図２１は、サーバーリスト表３０ａを説明する図である。
【０１４０】
コントローラＣが有するサーバーリストＤＢ３０に記憶されるサーバーリスト表３０ａには、サーバー識別番号と、サーバーアドレスと、状態と共に、トランザクションに対する各サーバーの有効性を記録するＴＳフラグが関連付けられて記録される。
【０１４１】
次に、本実施形態のシステム１０の動作例を、図２２〜図２５を参照して、以下に説明する。
【０１４２】
まず、ステップＳ９０において、クライアント端末Ｔ１〜Ｔ４は、トランザクションを構成する複数の連続する一群のリクエストを、トランザクションの開始を示す情報及び終了を示す情報を付して、端末番号と共に、コントローラＣへ送信する。
【０１４３】
次に、ステップＳ９２において、コントローラＣは、一群のリクエストであるトランザクションの開始を伝える開始通知に対して、グループ毎に連続する識別番号を付して、各グループＧ１、Ｇ２内の複数のサーバーＳ１〜Ｓ３，Ｓ４〜Ｓ６へ送信する。なお、トランザクションを確実に実行するための一つの方法として、コントローラＣは、受信したトランザクションを構成する一群のリクエストの処理が全て完了するまで、他のリクエストを受け付けないようにしても良い。ここで、各グループＧ１、Ｇ２へ送信されるリクエストは、通常、グループＧ１とグループＧ２との間で異なっている。一方、同じグループ内のサーバーへは、同じリクエストが送信される。複数の連続するリクエストにより構成されるトランザクションを実行する時には、グループ毎に、各グループへ送信される全てのリクエストに対して連続する識別番号が付けられる。このように、本実施形態では、コントローラＣは、クライアント端末から受信したリクエストに対して、グループ毎に連続する識別番号を付して、受信したリクエストを各グループＧ１，Ｇ２内の複数のサーバーへ送信する。また、システム１０は、トランザクションを構成しないリクエストを処理することもできる。識別番号は、トランザクションを構成する各リクエストと同様に、トランザクションを構成しないリクエストに対してもグループ毎に連続して付けられる。
【０１４４】
次に、ステップＳ９４において、各サーバーＳ１〜Ｓ３，Ｓ４〜Ｓ６は、受信したリクエストに付された今回の識別番号が、前回に受信したリクエストに付された前回の識別番号と連続しているかを判断する。識別番号が連続していれば、ステップＳ９６へ進む。一方、識別番号が連続していなければ、ステップＳ１１６へ進む。
【０１４５】
ステップＳ９６へ進んだ場合、各サーバーＳ１〜Ｓ３，Ｓ４〜Ｓ６は、現在の状態を保存するスナップショットを記録した後、開始通知を受信したことを伝える開始受信通知をコントローラＣへ送信する。スナップショットは、記憶部Ｓｂに記録される。
【０１４６】
次に、ステップＳ９８において、コントローラＣは、開始受信通知を受信したサーバーを有効と判断する。コントローラＣは、サーバーリスト表３０ａを更新すると共に、最初のリクエストに対して、グループ毎に連続する識別番号を付して、受信したリクエストに指定される送付先に基づいて定まる各グループＧ１，Ｇ２内の有効なサーバーに送信する。有効と判断されたサーバーのＴＳフラグには、サーバーが有効であることを示すフラグが記録される。一方、有効と判断されないサーバーのＴＳフラグには、サーバーが無効であることを示すフラグが記録される。有効と判断されないサーバーに対しては、最初のリクエストは送信されない。有効であると判断されたサーバーは、最初のリクエストに対して付された今回の識別番号と、前回の識別番号とが連続しているので、受信したリクエストに応じて所定の処理を行う。
【０１４７】
次に、ステップＳ１００において、各サーバーＳ１〜Ｓ３，Ｓ４〜Ｓ６は、最初のリクエストを処理した後、処理が完了したことを伝える処理完了通知をコントローラＣへ送信すると共に、今回の識別番号及び今回の識別番号と関連付けられたリソースの変更内容をログファイルに記憶する。
【０１４８】
次に、ステップＳ１０２において、コントローラＣは、処理完了通知を受信したサーバーを有効と判断して、サーバーリスト表３０ａを更新すると共に、複数の連続するリクエストの内の次のリクエストに対して、グループ毎に連続する識別番号を付して、受信したリクエストに指定される送付先に基づいて定まる各グループＧ１，Ｇ２内の有効なサーバーに送信する。有効と判断されないサーバーに対しては、次のリクエストは送信されない。有効であると判断されたサーバーは、受信したリクエストに対して付された今回の識別番号と、前回の識別番号とが連続しているので、受信したリクエストに応じて所定の処理を行う。
【０１４９】
次に、ステップＳ１０４において、各サーバーＳ１〜Ｓ３，Ｓ４〜Ｓ６は、複数の連続するリクエストの内の次のリクエストを処理した後、処理が完了したことを伝える処理完了通知をコントローラへ送信すると共に、今回の識別番号及び今回の識別番号と関連付けられたリソースの変更内容をログファイルに記憶する。ステップＳ１０２〜ステップＳ１０４は、一群を構成するリクエストの数に応じて繰り返される。
【０１５０】
次に、ステップＳ１０６において、コントローラＣは、複数の連続するリクエストの内の最後のリクエストに対する処理完了通知を受信した後、トランザクションの終了を伝える終了通知に対して、グループ毎に連続する識別番号を付して、各グループＧ１，Ｇ２内の有効なサーバーに送信する。
【０１５１】
次に、ステップＳ１０８において、各サーバーＳ１〜Ｓ３，Ｓ４〜Ｓ６は、終了通知を受信すると、終了通知を受信したことを伝える終了受信通知を、コントローラＣへ送信する。
【０１５２】
次に、ステップＳ１１０において、コントローラＣは、グループＧ１及びグループＧ２のそれぞれについて、各グループＧ１，Ｇ２内の少なくとも１つのサーバーから終了受信通知を受信すると、クライアント端末Ｔ１〜Ｔ４から受信したトランザクションである一群のリクエストの実行を完了したと判断する。そして、コントローラＣは、グループＧ１及びグループＧ２のそれぞれについて、各グループＧ１，Ｇ２内の少なくとも１つのサーバーから受信した終了受信通知に基づいて、トランザクション処理の実行の成功を示すレスポンスを生成して、そのレスポンスを、リクエストを送信したクライアント端末へ送信する。もし、グループＧ１又はグループＧ２の何れか一つにおいて、グループ内のサーバーの何れからも終了受信通知が受信されない場合は、コントローラＣは、トランザクション処理の実行の失敗を示すレスポンスを、リクエストを送信したクライアント端末へ送信する。
【０１５３】
次に、ステップＳ１１２において、コントローラＣは、サーバーリスト表３０ａを参照して、ＴＳフラグに無効が記録されている、今回のトランザクションの実行に失敗したサーバーに対して、ロールバックすることを指示する。
【０１５４】
次に、ステップＳ１１４において、ロールバックの指示を受けたサーバーＳ１〜Ｓ３，Ｓ４〜Ｓ６は、スナップショットを用いて、ロールバックして、トランザクションを開始する前の状態に戻る。
【０１５５】
一方、ステップＳ９４において、識別番号が連続していない場合には、ステップＳ１１６へ進む。
【０１５６】
ステップＳ１１６へ進んだ場合には、各サーバーＳ１〜Ｓ３，Ｓ４〜Ｓ６は、今回の識別番号と、前回の識別番号との間に位置する欠落している識別番号と関連付けられたリソースの変更内容を、同じグループ内の他のサーバーから受信して、欠落している識別番号と関連付けられたリソースの変更内容をリソースに反映して、リソースを変更して同期を行う。そして、ステップＳ９６へ進む。
【０１５７】
このように、本実施形態では、各サーバーＳ１〜Ｓ３，Ｓ４〜Ｓ６は、トランザクションの実行に失敗した時にはロールバックして、次回のリクエストを受信した時に、欠落している前記識別番号と関連付けられたリソースの変更内容をリソースに反映して、リソースの同期を行う。また、ステップＳ１１８に示すように、コントローラＣは、トランザクションの実行が完了しなかった場合には、全てのグループ内の複数のサーバーＳ１〜Ｓ３，Ｓ４〜Ｓ６に対して、サーバーが有するリソースを、トランザクションの実行を開始する前のリソースの状態へ戻すようにロールバックを指示する。
【０１５８】
上述した本実施形態のシステムによれば、一部のサーバーに障害が発生した場合も、複数のリソースにまたがってリソースの変更を行うような複数のリクエストから構成するトランザクションを、動作を停止せずに実行することができる。また、システムは、一般にトランザクション処理システムに要求されるＡＣＩＤ特性のうち、原子性（Ａｔｏｍｉｃｉｔｙ）、一貫性（Ｃｏｎｓｉｓｔｅｎｃｙ）及び耐障害性（Ｄｕｒａｂｉｌｉｔｙ）の特性を有する。なお、独立性（Ｉｓｏｌａｔｉｏｎ）の特性については、本発明では対象とせず、言及しない。
【０１５９】
本発明では、上述した実施形態の情報処理システム及びその方法は、本発明の趣旨を逸脱しない限り適宜変更が可能である。また、一の実施形態が有する構成要件は、他の実施形態にも適宜適用することができる。
【０１６０】
例えば、本明細書に開示する情報処理システムは、クライアント端末として、駐車場に配置された入出ゲートの制御装置を用いても良い。この場合、サーバーは、駐車料金の精算処理及び車両の入退場の管理をしても良い。また、クライアント端末をスマートフォンやタブレット端末、パーソナルコンピュータとし、コントローラとクライアント端末が通信するネットワークをインターネットとして、商品の通信販売の管理、航空券やコンサート等の切符の予約販売の管理、駐車場の予約の管理等を行うサーバーを複数設置しても良い。
【符号の説明】
【０１６１】
１０    システム
Ｃ    コントローラ
Ｃａ    演算部
Ｃｂ    記憶部
Ｃｃ    操作部
Ｃｄ    表示部
Ｃｅ    通信部
Ｄ    分配部
Ｄａ    演算部
Ｄｂ    記憶部
Ｄｃ    操作部
Ｄｄ    表示部
Ｄｅ    通信部
ＳＣ１〜ＳＣ３    サブコントローラ
Ｒ１〜Ｒ３    リンク
Ｔ１〜Ｔ４    クライアント端末
Ｔａ    演算部
Ｔｂ    記憶部
Ｔｃ    操作部
Ｔｄ    表示部
Ｔｅ    通信部
Ｓ１〜Ｓ３、Ｓ４〜Ｓ６    サーバー
Ｓａ    演算部
Ｓｂ    記憶部
Ｓｃ    操作部
Ｓｄ    表示部
Ｓｅ    通信部
ＡＰ１〜ＡＰ３    アクセスポイント
Ｎ１〜Ｎ３    ネットワーク
Ｍ    保守センター
３０    サーバーリストＤＢ
３０ａ    サーバーリスト表
３１    アクセスポイント位置ＤＢ
３１ａ    アクセスポイント位置情報表
３２    クライアント端末位置ＤＢ
３２ａ    クライアント端末位置情報表
３３    サーバーアドレスＤＢ
３３ａ    サーバーアドレス表
３４    サブコントローラリストＤＢ
３４ａ    サブコントローラリスト表
【図１】
2015194912.tif 000003
【図２】
2015194912.tif 000004
【図３】
2015194912.tif 000005
【図４】
2015194912.tif 000006
【図５】
2015194912.tif 000007
【図６】
2015194912.tif 000008
【図７】
2015194912.tif 000009
【図８】
2015194912.tif 000010
【図９】
2015194912.tif 000011
【図１０】
2015194912.tif 000012
【図１１】
2015194912.tif 000013
【図１２】
2015194912.tif 000014
【図１３】
2015194912.tif 000015
【図１４】
2015194912.tif 000016
【図１５】
2015194912.tif 000017
【図１６】
2015194912.tif 000018
【図１７】
2015194912.tif 000019
【図１８】
2015194912.tif 000020
【図１９】
2015194912.tif 000021
【図２０】
2015194912.tif 000022
【図２１】
2015194912.tif 000023
【図２２】
2015194912.tif 000024
【図２３】
2015194912.tif 000025
【図２４】
2015194912.tif 000026
【図２５】
2015194912.tif 000027