(57)【要約】【課題】第１サーバと第２サーバの同期が適切なタイミングで行われ、ユーザ装置に対する処理が第１サーバから第２サーバへ正しく引き継がれる通信システムを提供する。【解決手段】第１サーバは、第２サーバとリーダライタとにネットワークを介して接続され、データ更新情報を第２サーバに対して送信し、データ更新情報を第２サーバに対して送信した後、リーダライタを介してユーザ装置に対しコマンドとコマンドの付随情報とを送信し、第２サーバは、リーダライタにネットワークを介して接続され、第１サーバからデータ更新情報を受信した場合に、受信したデータ更新情報に基づいて第２サーバ内のデータを更新し、更新後、第１サーバから第２サーバへの切り替えが生じた場合、第２サーバ内のデータに基づいてコマンドとコマンドの付随情報とをリーダライタを介してユーザ装置に対し送信する通信システム。【選択図】図１
2018131082.tif 000002
【特許請求の範囲】
【請求項１】
第１サーバと第２サーバを備えた通信システムであって、
前記第１サーバは、
前記第２サーバとリーダライタとにネットワークを介して接続され、
データ更新情報を前記第２サーバに対して送信し、
前記データ更新情報を前記第２サーバに対して送信した後、前記リーダライタを介してユーザ装置に対しコマンドとコマンドの付随情報とを送信し、
前記第２サーバは、
前記リーダライタにネットワークを介して接続され、
前記第１サーバから前記データ更新情報を受信した場合に、前記受信したデータ更新情報に基づいて前記第２サーバ内のデータを更新し、
前記更新後、前記第１サーバから前記第２サーバへの切り替えが生じた場合、前記第２サーバ内のデータに基づいてコマンドとコマンドの付随情報とを前記リーダライタを介して前記ユーザ装置に対し送信する通信システム。
【請求項２】
前記データ更新情報にはシーケンス番号が含まれ、
前記シーケンス番号はシーケンスごとに値が異なる請求項１に記載の通信システム。
【請求項３】
前記データ更新情報には実行番号が含まれ、
前記実行番号はコマンドごとに値が異なる請求項１または２に記載の通信システム。
【請求項４】
前記データ更新情報にはセッション鍵が含まれ、
前記セッション鍵はセッションごとに生成される鍵であり、
前記コマンド及び前記コマンドの付随情報並びに前記ユーザ装置から送信されるレスポンスは前記セッション鍵により暗号化されている請求項１から３のいずれか１項に記載の通信システム。
【請求項５】
前記第２サーバは前記受信したデータ更新情報を暗号化して記憶している請求項１から４のいずれか１項に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信システムに関する。
【背景技術】
【０００２】
ネットワーク上のサーバがリーダライタを介してユーザ装置を制御する通信システムが提案されている（特許文献１、２参照）。また、リーダライタからのコマンドに基づき、ユーザ装置が所定の処理を実行してレスポンスをリーダライタに返す通信システムが提案されている（特許文献３参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３１２７２６号公報
【特許文献２】特開２０１２−１８５５６３号公報
【特許文献３】特開２０００−３２２５３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ネットワーク上のサーバがリーダライタを介してユーザ装置を制御する通信システムにおいては、サーバがデータを送受信できなくなる事態に備えて、予備のサーバを設けておくことが好ましい。しかしながら、通常時のサーバと予備のサーバの同期（レプリケーション）が適切なタイミングで行なわれない場合には、ユーザ装置に対する処理が通常時のサーバから予備のサーバへ正しく引き継がれない虞がある。
【課題を解決するための手段】
【０００５】
上記の課題は、例えば、次の手段により解決することができる。【０００６】
第１サーバと第２サーバを備えた通信システムであって、前記第１サーバは、前記第２サーバとリーダライタにネットワークを介して接続され、データ更新情報を前記第２サーバに対して送信し、前記データ更新情報を前記第２サーバに対して送信した後、前記リーダライタを介してユーザ装置に対しコマンドとコマンドの付随情報とを送信し、前記第２サーバは、前記リーダライタにネットワークを介して接続され、前記第１サーバから前記データ更新情報を受信した場合に、前記受信したデータ更新情報に基づいて前記第２サーバ内のデータを更新し、前記更新後、前記第１サーバから前記第２サーバへの切り替えが生じた場合、前記第２サーバ内のデータに基づいてコマンドとコマンドの付随情報とを前記リーダライタを介して前記ユーザ装置に対し送信する通信システム。
【発明の効果】
【０００７】
第１サーバと第２サーバの同期が適切なタイミングで行われ、ユーザ装置に対する処理が第１サーバから第２サーバへ正しく引き継がれる通信システムを提供することができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態１に係る通信システム１の構成を示す模式図である。
【図２】第１サーバ３０内のデータを説明する模式図である。
【図３】第２サーバ４０内のデータを説明する模式図である。
【図４】実施形態１に係る通信システム１の動作例を説明するシーケンス図である。
【発明を実施するための形態】
【０００９】
［実施形態１に係る通信システム１の構成］
図１は実施形態１に係る通信システム１の構成を示す模式図である。図１に示すように、実施形態１に係る通信システム１は、第１サーバ３０と第２サーバ４０を備えた通信システムであって、第１サーバ３０は、第２サーバ４０とリーダライタ２２、２４とにネットワーク５０を介して接続され、データ更新情報を第２サーバ４０に対して送信し、データ更新情報を第２サーバ４０に対して送信した後、リーダライタ２２、２４を介してユーザ装置１２、１４に対しコマンドとコマンドの付随情報とを送信し、第２サーバ４０は、リーダライタ２２、２４にネットワーク５０を介して接続され、第１サーバ３０からデータ更新情報を受信した場合に、受信したデータ更新情報に基づいて第２サーバ４０内のデータを更新し、更新後、第１サーバ３０から第２サーバ４０への切り替えが生じた場合、第２サーバ４０内のデータに基づいてコマンドとコマンドの付随情報とをリーダライタ２２、２４を介してユーザ装置１２、１４に対し送信する通信システムである。以下、詳細に説明する。
【００１０】
（ユーザ装置１２、１４、リーダライタ２２、２４）
ユーザ装置１２、１４には例えば非接触ＩＣカード（Ｃｏｎｔａｃｔｌｅｓｓ  ｓｍａｒｔ  ｃａｒｄｓ）やスマートフォンなどを用いることができる。ユーザ装置１２、１４とリーダライタ２２、２４との間の通信は例えば近距離無線通信方式（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）に従って行なわれる。ユーザ装置１２、１４は例えばＩＣチップと記憶装置を備えており、記憶装置には例えば電子マネーの残高などのデータが記憶されている。ユーザ装置１２、１４の記憶装置に記憶されているデータは、ユーザ装置１２、１４が例えばコマンドを実行することにより更新することができる。リーダライタ２２、２４は、ユーザ装置１２、１４内のデータを読み書きする装置であり、例えばスーパーマーケットのレジ装置や駅の改札機などからなる。ユーザ装置やリーダライタの数は特に限定されないが、本実施形態では、２台のユーザ装置１２、１４と２台のリーダライタ２２、２４が通信システム１に配置されているものとする。
【００１１】
（第１サーバ３０）
第１サーバ３０はネットワーク５０を介して第２サーバ４０とリーダライタ２２、２４に接続されている。ネットワーク５０は例えばインターネットである。第１サーバ３０はＣＰＵやメモリなどを備えており、ＣＰＵがメモリなどに記憶されているプログラムを実行することにより動作する。第１サーバ３０のメモリにはデータが記憶されている。第１サーバ３０は、第１サーバ３０内のデータに基づいてユーザ装置１２、１４に対しコマンド及びコマンドの付随情報を送信する。コマンドの付随情報にはシーケンス番号や実行番号などが含まれる。本実施形態では、シーケンス番号と実行番号の双方がコマンドの付随情報に含まれるものとする。
【００１２】
図２は第１サーバ３０内のデータを説明する模式図である。図２に示すように、第１サーバ３０内のデータは例えばテーブル形式で記憶される。テーブルはレコードを有しており、レコードはレコード番号、コマンド、シーケンス番号、実行番号、セッション鍵、リーダライタ番号、ステータス、及び更新時刻のフィールドを有している。レコードの更新は新たなレコードを追加することにより行なわれる。レコードに格納される各データは暗号化されていることが好ましい。暗号化は例えばＡＥＳやＤＥＳなどの対称鍵方式やＲＳＡやＥＣＣなどの非対称鍵方式により行うことができる。
【００１３】
＜レコード番号のフィールド＞
レコード番号のフィールドにはレコード番号が格納される。レコード番号はレコードを識別する番号である。第１サーバ３０や第２サーバ４０は例えばレコードを追加する際にレコード番号を生成することができる。
【００１４】
＜コマンドのフィールド＞
コマンドのフィールドにはコマンドが格納される。コマンドには、例えば、「電子マネーの残高を１００円増額する」や「電子マネーの残高を１００円減額する」などがある。どのような値でコマンドを符号化するのかは、第１サーバ３０とユーザ装置１２、１４との間で予め取り決められたプロトコルに従う。例えば、「電子マネーの残高を１００円増額する」＝Ｕ￥１００、「電子マネーの残高を１００円減額する」＝Ｄ￥１００などと取り決めることができる。
【００１５】
＜シーケンス番号のフィールド＞
シーケンス番号のフィールドにはシーケンス番号が格納される。シーケンス番号は一のセッション内のシーケンスを識別する番号である。例えば、あるセッションにおける一のシーケンスにシーケンス番号０００１を割り当てたとすると、次のシーケンスには０００２を割り当て、その次のシーケンスには０００３を割り当てることができる。シーケンス番号を用いれば、シーケンス番号の値が規則正しく変化しているかどうかを判断することにより（上記の例ではシーケンスごとにシーケンス番号が一つずつインクリメントされているかどうかを判断することにより）、コマンドやレスポンスが外部から不正に送信されたものであるかどうかなどを容易に判断することができる。
【００１６】
＜実行番号のフィールド＞
実行番号のフィールドには実行番号が格納される。実行番号はコマンドごとに値が異なる番号である。例えば、コマンド１に対して実行番号００ＡＡを割り当てたとすると、次のコマンド２には実行番号００ＡＢを割り当てることができる。なお、一度送信したコマンドを再送する場合には先に割り当てた番号と同じ実行番号を割り当てるものとする。このようにすれば、同じ実行番号のコマンドは実行しないとのプロトコルをサーバとユーザ装置との間で取り決めることにより、コマンドがサーバから再送される場合において、ユーザ装置１２、１４がユーザ装置１２、１４内のデータを誤って二重に更新することが防止される。
【００１７】
＜セッション鍵のフィールド＞
セッション鍵のフィールドにはセッション鍵が格納される。セッション鍵は、ユーザ装置１２、１４と第１サーバ３０とがセッションごとに相互認証を行うことにより生成されるデータである。セッション鍵は、生成後、第１サーバ３０とユーザ装置１２、１４とに記憶される。一のセッション用に生成されたセッション鍵は、当該一のセッションに限り有効である。ユーザ装置１２、１４と第１サーバ３０との間で送受信されるデータは、コマンド及びコマンドの付随情報を含め、セッション鍵により暗号化することができる。セッション鍵は例えばＡＥＳやＤＥＳなどの対称鍵方式やＲＳＡやＥＣＣなどの非対称鍵方式に従い生成することができる。
【００１８】
＜リーダライタ番号のフィールド＞
リーダライタ番号のフィールドにはリーダライタ番号が格納される。リーダライタ番号はリーダライタを識別する番号である。
【００１９】
＜ステータスのフィールド＞
ステータスのフィールドにはステータスが格納される。ステータスには例えばＲｅａｄｙとＷａｉｔを含めることができる。Ｒｅａｄｙはサーバからユーザ装置にコマンドを送信する準備ができている状態を示し、Ｗａｉｔはユーザ装置のレスポンスを待っている状態を示す。
【００２０】
＜更新時刻のフィールド＞
更新時刻のフィールドにはレコードを追加した時刻が格納される。
【００２１】
第１サーバ３０は、コマンドの送信前に、データ更新情報を第２サーバ４０に対して送信する。そして、第１サーバ３０は、第２サーバ４０からのデータ更新完了通知をトリガーとして、リーダライタ２２、２４を介して、ユーザ装置１２、１４に対し、コマンドとコマンドの付随情報とを送信する。例えば、まず、第１サーバ３０は、第１サーバ３０内のテーブルからステータスがＲｅａｄｙであるレコードを特定し、この特定したレコードのステータスをＲｅａｄｙからＷａｉｔに変更する。次いで、第１サーバ３０は、このステータスが変更されたレコードに含まれるデータをデータ更新情報に含めて、第２サーバ４０に送信する。次いで、第１サーバ３０は、第２サーバ４０からのデータ更新完了通知を受信した場合に、この通知をトリガーとして、そのステータスを変更したレコードに格納されるコマンドとコマンドの付随情報（例：シーケンス番号と実行番号）を、そのステータスを変更したレコードのセッション鍵で暗号化し、これを、そのステータスを変更したレコードのリーダライタ番号により識別されるリーダライタ２２、２４を介して、ユーザ装置１２、１４に対して送信する。
【００２２】
第１サーバ３０は、コマンドの送信後、所定の時間内にユーザ装置１２、１４からレスポンスを受信しなかった場合、コマンドとコマンドの付随情報とを再び送信（再送）する。なお、本明細書における「送信」には、初めての送信のほか、再度の送信（再送）も含まれる。
【００２３】
（第２サーバ４０）
第２サーバ４０はネットワーク５０を介して第１サーバ３０とリーダライタ２２、２４とに接続されている。第２サーバ４０はＣＰＵやメモリなどを備えており、ＣＰＵがメモリなどに記憶されているプログラムを実行することにより動作する。第２サーバ４０のメモリにはデータが記憶されている。
【００２４】
図３は第２サーバ４０内のデータを説明する模式図である。図３に示すように、第２サーバ４０内のデータは、第１サーバ３０内のデータと同様に、テーブル形式で記憶されている。テーブルはレコードを有している。レコードに格納されるデータやレコードの暗号化などについては第１サーバ３０の場合と同様であるので説明を省略する。
【００２５】
第２サーバ４０は、第１サーバ３０からデータ更新情報を受信した場合に、受信したデータ更新情報に基づいて第２サーバ４０内のデータを更新する。これにより、第２サーバ４０内のデータが第１サーバ３０内のデータに同期される。データの更新は、新たなレコードを追加することにより行なわれ、新たなレコード中の各フィールドには、データ更新情報に含まれる各データが格納される。
【００２６】
第２サーバ４０は、データの更新後、データ更新完了通知を第１サーバ３０に対して送信する。データ更新完了通知はデータの更新が完了したこと示す通知である。
【００２７】
第２サーバ４０は、第２サーバ４０内のデータの更新後、第１サーバ３０から第２サーバ４０への切り替えが生じた場合、第２サーバ４０内のデータに基づいて、コマンドとコマンドの付随情報とをリーダライタ２２、２４を介してユーザ装置１２、１４に対し送信する。つまり、第２サーバ４０は、第１サーバ３０から第２サーバ４０への切り替えが生じた場合、第１サーバ３０に代わり、ユーザ装置１２、１４に対する処理を受け持つことになる。第２サーバ４０からの送信は、第２サーバ４０内のデータに基づいて行なわれる。第２サーバ４０内のデータは第１サーバ１０から受信したデータ更新情報に基づき最新の状態に保たれているため、第２サーバ４０によるコマンドなどの送信は、第１サーバ３０によるコマンドなどの送信と同様に行なわれる。切り替わりの原因は特に限定されない。一例を挙げると、切り替わりは、第１サーバ３０に障害が発生した場合や第１サーバ３０が過負荷である場合に生じる。
【００２８】
［実施形態１に係る通信システム１の動作例］
図４は実施形態１に係る通信システム１の動作例を説明するシーケンス図である。以下、図４を参照しつつ、実施形態１に係る通信システム１の動作例について説明する。
【００２９】
（ステップＳ１１）
まず、第１サーバ３０が第１サーバ３０内のデータを更新する。データの更新は、例えば、第１サーバ３０内のテーブルに新しいレコードを追加することにより行う。ここでは、新しいレコードに、レコード番号＝１、コマンド＝電子マネーの残高を１００円増額、シーケンス番号＝０００１、実行番号＝００ＡＡ、セッション鍵、リーダライタ番号＝リーダライタ２２、ステータス＝Ｒｅａｄｙ、及び更新時刻が格納されるものとする。
【００３０】
（ステップＳ１２）
次いで、第１サーバ３０が、コマンドの送信前に、データ更新情報を第２サーバ４０に対して送信する。例えば、まず、第１サーバ３０は、第１サーバ３０内のテーブルからステータスがＲｅａｄｙであるレコードを特定し、この特定したレコードのステータスをＲｅａｄｙからＷａｉｔに変更する。次いで、第１サーバ３０は、このステータスが変更されたレコードに含まれるデータをデータ更新情報に含めて、第２サーバ４０に送信する。
【００３１】
（ステップＳ１３）
次いで、第２サーバ４０が、第１サーバ３０から受信したデータ更新情報に基づいて第２サーバ４０内のデータを更新する。データの更新は、例えば、データ更新情報に基づいて第２サーバ４０内のテーブルに新しいレコードを追加することにより行う。新たに追加されるレコードの各フィールドには、受信したデータ更新情報に含まれるデータが格納される。なお、第２サーバ４０は、第２サーバ４０内のテーブルに、受信したデータ更新情報に含まれる更新時刻よりも新しい更新時刻を有するレコードが含まれている場合には、新しくレコードを追加することなく、受信したデータ更新情報を破棄することができる。
【００３２】
（ステップＳ１４）
次いで、第２サーバ４０が、第１サーバ３０に対して、データ更新完了通知を送信する。
【００３３】
（ステップＳ１５、ステップＳ１６）
次いで、第１サーバ３０が、第２サーバ４０からのデータ更新完了通知をトリガーとして、リーダライタ２２、２４を介して、ユーザ装置１２、１４に対し、コマンドとコマンドの付随情報とを送信する。例えば、第１サーバ３０は、第２サーバ４０からのデータ更新完了通知を受信した場合に、ステップＳ１２でステータスを変更したレコードに格納されるコマンド＝電子マネーの残高を１００円増額、シーケンス番号＝０００１、及び実行番号＝００ＡＡを、そのステータスを変更したレコードのセッション鍵で暗号化し、これを、そのステータスを変更したレコードのリーダライタ番号により識別されるリーダライタ２２を介して、ユーザ装置１２に対して送信する。本ステップによりコマンドを送信するシーケンスは、シーケンス番号＝０００１で識別される。
【００３４】
（ステップＳ１７）
次いで、ユーザ装置１２が、第１サーバ３０から受信したシーケンス番号＝０００１、及び実行番号＝００ＡＡを参照しつつ、第１サーバ３０から受信したコマンドを実行し、データの更新条件が満たされているかどうかを判断する（ステップＳ１７）。そして、ユーザ装置１２は、満たされている場合にはユーザ装置１２内のデータを更新する（ステップＳ１８）。ここでは、データの更新条件が満たされているものとして、ユーザ装置１２はデータを更新する。また、ユーザ装置１２内に記憶される電子マネーの残高があらかじめ２００円であったものとし、電子マネーの残高は２００円から３００円に変更されるものとする。なお、ユーザ装置１２、１４は、例えば、ユーザ装置１２、１４内の記憶装置に、データ更新を行ったコマンドの実行番号を記憶しておくことができる。このようすれば、既にデータ更新を行ったコマンドであるかどうかを容易に判断することができる。
【００３５】
（ステップＳ１９）
次いで、ユーザ装置１２が、第１サーバ３０に対して、データの更新が正常に完了したことを示すレスポンスを送信する。ユーザ装置１２は、レスポンスの送信前に、このレスポンスを第１サーバ３０との相互認証により生成したセッション鍵により暗号化する。本ステップによりレスポンスを送信するシーケンスは、シーケンス番号＝０００２で識別される。なお、本実施形態では、本ステップによりユーザ装置１２から送信されたレスポンスが第１サーバ３０に到達する前に喪失されてしまうものとする。
【００３６】
（ステップＳ２０）
次いで、第１サーバ３０に障害が発生し、第１サーバ３０から第２サーバ４０へユーザ装置１２、１４に対する処理が引き継がれるものとする。これにより、以後、ユーザ装置１２、１４に対する処理は第１サーバ３０ではなく第２サーバ４０が受け持つことになる。なお、例えば、第２サーバ４０は第１サーバ３０に対して所定のインターバルでポーリングを送信し、第１サーバ３０からポーリングに対する返答がない場合には、第１サーバ３０に障害が生じたと判断して、第１サーバ３０から処理を引き継ぐことができる。また、例えば、第２サーバ４０は、第１サーバ３０と第２サーバ４０の負荷を監視する負荷分担装置（ロードバランサ）から引き継ぎを行う旨の命令を受信した場合に、この受信した命令に従い、第１サーバ３０の処理を引き継ぐことができる。
【００３７】
（ステップＳ２１、ステップＳ２２）
次いで、第２サーバ４０が、第２サーバ４０内のデータに基づき、ユーザ装置１２、１４から所定時間以内にレスポンスが届いていないかどうかを判断し（ステップＳ２１）、届いていない場合には第２サーバ４０内のデータを更新する（ステップＳ２２）。本実施形態では、第２サーバ４０は、ユーザ装置１２から所定時間以内にレスポンスが届いていないものと判断し、第２サーバ４０内のデータを更新する。レスポンスが届いていないかどうかの判断は、例えば、第２サーバ４０内のテーブルに記憶されているレコードのうち、ステータスがＷａｉｔであるレコードを特定し、この特定したレコードの更新時刻から所定の時間が経過しているかどうかを判断することにより行うことができる。
【００３８】
ステップＳ２２によるデータの更新は、例えば、次のように行うことができる。すなわち、まず、第２サーバ４０が、第２サーバ４０内に記憶するテーブルからステータスがＷａｉｔであるレコードを特定する。次いで、第２サーバ４０が、この特定したレコードからコマンド＝電子マネーの残高を１００円増額、シーケンス番号＝０００１、実行番号＝００ＡＡ、セッション鍵、リーダライタ番号＝リーダライタ２２、及びステータス＝Ｗａｉｔを読み出す。次いで、第２サーバ４０が、読み出したシーケンス番号＝０００１に基づき新たなシーケンス番号＝０００３を生成し、新たなレコード番号＝２、読み出したコマンド＝電子マネーの残高を１００円増額、生成したシーケンス番号＝０００３、読み出した実行番号＝００ＡＡ、読み出したセッション鍵、読み出したリーダライタ番号＝リーダライタ２２、ステータス＝Ｒｅａｄｙ、及び更新時刻を有する新たなレコードを第２サーバ４０内のテーブルに追加する。
【００３９】
（ステップＳ２３、ステップＳ２４）
次いで、第２サーバ４０が、第２サーバ４０内のデータに基づいて、コマンド、シーケンス番号、及び実行番号をリーダライタ２２を介してユーザ装置１２に対し送信する。例えば、第２サーバ４０は、第２サーバ４０内のテーブルからステータスがＲｅａｄｙであるレコードを特定し、この特定したレコードのステータスをＲｅａｄｙからＷａｉｔに変更する。次いで、第２サーバ４０は、このステータスを変更したレコードに格納されているコマンド、シーケンス番号、及び実行番号を、このステータスを変更したレコードに格納されているセッション鍵で暗号化し、このステータスを変更したレコードのリーダライタ番号で識別されるリーダライタ２２を介して、そのリーダライタ２２との間で通信を行うユーザ装置１２に対して送信する。本ステップによりコマンドを送信するシーケンスは、シーケンス番号＝０００３で識別される。
【００４０】
（ステップＳ２５、ステップＳ２６）
次いで、ユーザ装置１２が、第２サーバ４０から受信したシーケンス番号＝０００３及び実行番号＝００ＡＡを参照しつつ、第２サーバ４０から受信したコマンドを実行し、データの更新条件が満たされているかどうか判断する（ステップＳ２４）。そして、ユーザ装置１２は、データの更新条件が満たされている場合にはユーザ装置１２内のデータを更新する（ステップＳ２５）。ここでは、シーケンス番号が予め定められたプロトコルに従い０００２から０００３に規則正しくインクリメントされているが、実行番号が既にデータ更新を行ったコマンドの実行番号と同じ００ＡＡであるため、データの更新条件は満たされていないものとする。したがって、ユーザ装置１２によるデータの更新は行われない。なお、ユーザ装置１２は、ユーザ装置１２内の記憶装置に既にデータ更新を行ったコマンドの実行番号が記憶されている場合は、第２サーバ４０から受信した実行番号をこの記憶されている実行番号と比較することにより、実行番号が既にデータ更新を行ったコマンドの実行番号と同じであるかどうかを容易に判断することができる。
【００４１】
（ステップＳ２７、ステップＳ２８）
次いで、ユーザ装置１２が、第２サーバ４０に対して、データの更新に対するレスポンスを送信する。ユーザ装置１２は、このレスポンスの送信前に、このレスポンスを第１サーバ３０との相互認証により生成したセッション鍵により暗号化する。本ステップによりレスポンスを送信するシーケンスは、シーケンス番号＝０００４で識別される。
【００４２】
以上説明した実施形態１に係る通信システムによれば、第１サーバ３０と第２サーバ４０の同期（レプリケーション）が適切なタイミングで行われる。すなわち、第１サーバ３０からユーザ装置１２、１４に対しコマンドを送信する前に、第１サーバ３０から第２サーバ４０に対してデータ更新情報が送信され、第１サーバ３０内のデータと第２サーバ４０内のデータとが同期（レプリケーション）される。したがって、第１サーバ３０からユーザ装置１２、１４に対しコマンドを送信した後に第１サーバ３０から第２サーバ４０への切り替わりが生じても、第１サーバ３０から第２サーバ４０へユーザ装置１２、１４に対する処理を正しく引き継ぐことができる。
【００４３】
なお、本実施形態では、通信システム１が、第１サーバ３０と第２サーバ４０という２台のサーバを備えるものとしたが、通信システム１は、３台以上のサーバを備えていてもよい。この場合、３台目以降のサーバは、例えば、上記で説明した第２サーバ４０と同様に動作させることができる。また、３台目以降のサーバには、例えば、第１サーバ３０ではなく、第１サーバ３０の処理を引き継ぐ場合と同様の方法により、第２サーバ４０の処理を引き継がせることもできる。
【００４４】
［比較例１］
比較例１として、第１サーバ３０からユーザ装置１２、１４に対しコマンドを送信した後、１秒経過後、第１サーバ３０から第２サーバ４０に対してデータ更新情報が送信される通信システムを検討する。比較例１では、第１サーバ３０からユーザ装置１２、１４に対しコマンドを送信した後、第１サーバ３０から第２サーバ４０に対してデータ更新情報を送信する前に、第１サーバ３０に障害が生じ、第１サーバ３０から第２サーバ４０への切り替わりが生じるものとする。
【００４５】
比較例１では、第２サーバ４０内のデータはコマンド送信後における第１サーバ３０内の最新データと同期されず、第２サーバ４０内のテーブルには、コマンド＝電子マネーの残高を１００円増額、シーケンス番号＝０００１、実行番号＝００ＡＡ、セッション鍵、リーダライタ番号＝リーダライタ２２、及びステータス＝Ｗａｉｔが存在しない。したがって、比較例１では、第１サーバ３０から第２サーバ４０に対してユーザ装置１２、１４に対する処理を正しく引き継ぐことができない。
【００４６】
具体的には、比較例１によると、シーケンス番号が正しく引き継がれないため、ユーザ装置１２は、上記したステップＳ２５でデータの更新条件を満たさないと判断し、ユーザ装置１２内のデータを更新するステップＳ２６を実行しない。
【００４７】
また、実行番号が正しく引き継がれないため、仮にステップＳ２６のデータ更新が実行されると、ユーザ装置１２内に記憶される電子マネーの残高が既に１００円増加されているにもかかわらず、誤って再び１００円増額されることになる。
【００４８】
以上、実施形態について説明したが、これらの説明は、本発明の一例に関するものであり、本発明は、これらの説明によって何ら限定されるものではない。
【符号の説明】
【００４９】
１          通信システム
１２、１４  ユーザ装置
２２、２４  リーダライタ
３０        第１サーバ
４０        第２サーバ
５０        ネットワーク
【図１】
2018131082.tif 000003
【図２】
2018131082.tif 000004
【図３】
2018131082.tif 000005
【図４】
2018131082.tif 000006
【国際調査報告】
2018131082.tif 000007
2018131082.tif 000008