(57)【要約】  同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステムは、第１サーバシーケンスを保存するサーバシーケンス保存部と、サービスサーバから外部メッセージを受信し、メンバーサーバと同じレプリケーショングループに属する第２メンバーサーバから第２サーバシーケンスを含む第２状態更新メッセージを受信するメッセージ受信部と、外部メッセージの受信に応答して第１サーバシーケンスを所定の値だけ増加させ、第１サーバシーケンスを含む第１状態更新メッセージを生成して第２メンバーサーバに送信する外部メッセージ処理部と、第２状態更新メッセージの受信に応答し、第２状態更新メッセージに含まれた第２サーバシーケンスがサーバシーケンス保存部に保持された第１サーバシーケンスよりも大きい場合に、第１サーバシーケンスを第２サーバシーケンスに変更する状態更新メッセージ処理部と、第１状態更新メッセージの第１サーバシーケンス及び第２状態更新メッセージの第２サーバシーケンスの大きさ順に、第１状態更新メッセージ及び第２状態更新メッセージの順序を決定するメッセージ順序決定部とを有する。【選択図】図５
2008546087.tif 000002
【特許請求の範囲】
【請求項１】
同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステムであって、
第１サーバシーケンスを保存するサーバシーケンス保存部と、
サービスサーバから外部メッセージを受信し、前記メンバーサーバと同じレプリケーショングループに属する第２メンバーサーバから第２サーバシーケンスを含む第２状態更新メッセージを受信するメッセージ受信部と、
前記外部メッセージの受信に応答して前記第１サーバシーケンスを所定の値だけ増加させ、前記第１サーバシーケンスを含む第１状態更新メッセージを生成して前記第２メンバーサーバに送信する外部メッセージ処理部と、
前記第２状態更新メッセージの受信に応答して、前記第２状態更新メッセージに含まれた第２サーバシーケンスが前記サーバシーケンス保存部に保持された前記第１サーバシーケンスよりも大きい場合に、前記第１サーバシーケンスを前記第２サーバシーケンスに変更する状態更新メッセージ処理部と、を有することを特徴とする同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項２】
前記第１状態更新メッセージの第１サーバシーケンス及び前記第２状態更新メッセージの第２サーバシーケンスの大きさ順に、前記第１状態更新メッセージ及び前記第２状態更新メッセージの順序を決定するメッセージ順序決定部、をさらに有することを特徴とする請求項１に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項３】
前記外部メッセージ処理部は、前記第１状態更新メッセージをメッセージバッファに保存し、前記状態更新メッセージ処理部は、前記第２状態更新メッセージを前記メッセージバッファに保存することを特徴とする請求項１に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項４】
前記外部メッセージは、ユーザのユーザ識別子及び前記ユーザのログイン／ログアウト状態を含み、
前記外部メッセージ処理部は、前記外部メッセージの受信に応答して前記第１サーバシーケンスを所定の値だけ増加させ、前記第１サーバシーケンス、前記外部メッセージのユーザ識別子、及び前記外部メッセージのユーザのログイン／ログアウト状態を含む前記第１状態更新メッセージを生成して前記第２メンバーサーバに送信することを特徴とする請求項１に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項５】
前記第２状態更新メッセージは、ユーザのユーザ識別子及び前記ユーザのログイン／ログアウト状態を含み、
前記第１状態更新メッセージ及び前記第２状態更新メッセージを保存するメッセージバッファと、
前記メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスの順序に従って前記ユーザの最終ログ状態を決定するユーザ状態識別部と、をさらに有することを特徴とする請求項４に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項６】
前記外部メッセージ、前記第１状態更新メッセージ、及び前記第２状態更新メッセージは、ユーザがログイン／ログアウトしたチャンネルに関する位置情報を含み、
前記ユーザ状態識別部は、前記メッセージバッファに保存された状態更新メッセージに含まれた前記サーバシーケンスの順序に従って前記ユーザの最終位置を決定することを特徴とする請求項５に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項７】
前記外部メッセージ処理部は、前記メンバーサーバを識別する第１サーバ識別子を含む前記第１状態更新メッセージを前記第２メンバーサーバに送信し、
前記第２状態更新メッセージは、前記第２メンバーサーバを識別する第２サーバ識別子を含み、
前記メッセージ順序決定部は、前記第１状態更新メッセージの第１サーバシーケンス及び前記第２状態更新メッセージの第２サーバシーケンスが同じである場合に、前記第１状態更新メッセージの第１サーバ識別子及び前記第２状態更新メッセージの第２サーバ識別子を用いて、前記第１状態更新メッセージ及び前記第２状態更新メッセージの順序を決定することを特徴とする請求項１に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項８】
同じレプリケーショングループに属するロケーションサーバを同期化するロケーションサーバ同期化方法であって、
前記ロケーションサーバに第１サーバシーケンスを保持させる段階と、
サービスサーバからログメッセージを受信する段階と、
前記ログメッセージの受信に応答して前記第１サーバシーケンスを所定の値だけ増加させ、前記第１サーバシーケンスを含む状態更新メッセージを生成する段階と、
前記生成された状態更新メッセージを前記ロケーションサーバと同じレプリケーショングループに属する他のロケーションサーバに送信する段階と、
前記ロケーションサーバと同じレプリケーショングループに属する他のロケーションサーバから第２サーバシーケンスを含む状態更新メッセージを受信する段階と、
前記状態更新メッセージの受信に応答し、前記受信した状態更新メッセージに含まれた第２サーバシーケンスが前記ロケーションサーバに保持された第１サーバシーケンスよりも大きい場合に、前記ロケーションサーバに保持された第１サーバシーケンスを前記受信した状態更新メッセージに含まれた第２サーバシーケンスに変更する段階と、を含むことを特徴とするロケーションサーバ同期化方法。
【請求項９】
前記ログメッセージの受信に応答して前記第１サーバシーケンスを所定の値だけ増加させ、前記第１サーバシーケンスを含む状態更新メッセージを生成する段階は、
前記生成された状態更新メッセージをメッセージバッファに保存する段階を含むことを特徴とする請求項８に記載のロケーションサーバ同期化方法。
【請求項１０】
前記他のロケーションサーバから受信した前記状態更新メッセージを前記メッセージバッファに保存する段階をさらに含むことを特徴とする請求項９に記載のロケーションサーバ同期化方法。
【請求項１１】
前記メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスの順に前記メッセージバッファの状態更新メッセージの順序を決定する段階をさらに含むことを特徴とする請求項１０に記載のロケーションサーバ同期化方法。
【請求項１２】
前記状態更新メッセージは、ユーザのユーザ識別子及び前記ユーザのログイン又はログアウト状態を含み、
前記メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスの順序に従って前記ユーザの最終ログ状態を決定する段階をさらに含むことを特徴とする請求項１０に記載のロケーションサーバ同期化方法。
【請求項１３】
前記ロケーションサーバに第１サーバ識別子が保持され、
前記第１サーバシーケンスを含む状態更新メッセージを生成する段階は、前記第１サーバシーケンス及び第１サーバ識別子を含む状態更新メッセージを生成し、
前記他のロケーションサーバから受信した状態更新メッセージは、第２サーバシーケンス及び第２サーバシーケンスを含み、
前記メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスが同じである場合に、前記状態更新メッセージに含まれたサーバ識別子を用いて前記状態更新メッセージの順序を決定することを特徴とする請求項１０に記載のロケーションサーバ同期化方法。
【請求項１４】
前記第１サーバ識別子は、前記ロケーションサーバのＩＰアドレスであり、前記第２サーバ識別子は、前記他のロケーションサーバのＩＰアドレスであることを特徴とする請求項１３に記載のロケーションサーバ同期化方法。
【請求項１５】
同じレプリケーショングループに属する第１及び第２メンバーサーバを同期化する同じレプリケーショングループに属するサーバの同期化方法であって、
前記第１メンバーサーバに第１サーバシーケンス及び第１サーバ識別子を保持させる段階と、
サービスサーバから外部メッセージを受信する段階と、
前記外部メッセージの受信に応答して前記第１サーバシーケンスを所定の値だけ増加させ、前記第１サーバシーケンス及び前記第１サーバ識別子を含む第１状態更新メッセージを生成する段階と、
前記第１状態更新メッセージを前記第２メンバーサーバに送信する段階と、
前記第２メンバーサーバから第２サーバシーケンス及び第２サーバ識別子を含む第２状態更新メッセージを受信する段階と、
前記第２状態更新メッセージの受信に応答し、前記第２状態更新メッセージに含まれた第２サーバシーケンスが前記第１メンバーサーバに保持された前記第１サーバシーケンスよりも大きい場合に、前記第１メンバーサーバに保持された前記第１サーバシーケンスを前記第２サーバシーケンスに変更する段階と、
前記第１状態更新メッセージの第１サーバシーケンス及び前記第２状態更新メッセージの第２サーバシーケンスの大きさ順に、前記第１状態更新メッセージ及び前記第２状態更新メッセージの順序を決定する段階と、を含むことを特徴とする同じレプリケーショングループに属するサーバの同期化方法。
【請求項１６】
前記第１状態更新メッセージの第１サーバシーケンス及び前記第２状態更新メッセージの第２サーバシーケンスが同じである場合に、前記第１状態更新メッセージの第１サーバ識別子及び前記状態更新メッセージの第２サーバ識別子の大きさ順序に、前記第１状態更新メッセージ及び前記第２状態更新メッセージの順序を決定する段階をさらに含むことを特徴にする請求項１５に記載の同じレプリケーショングループに属するサーバの同期化方法。
【請求項１７】
前記第１状態更新メッセージ及び前記第２状態更新メッセージは、ユーザのユーザ識別子、前記ユーザのログイン／ログアウト状態、及び前記ユーザがログイン／ログアウトしたチャンネルに関する位置情報を含み、
前記第１状態更新メッセージ及び前記第２状態更新メッセージをメッセージバッファに保存し、前記第１状態更新メッセージ及び前記第２状態更新メッセージの前記決定された順序に従って前記メッセージを処理して前記ユーザの最終ログ状態を決定する段階をさらに含むことを特徴とする請求項１５に記載の同じレプリケーショングループに属するサーバの同期化方法。
【請求項１８】
請求項８から１７のいずれか一項に記載の方法を実行させるためのプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサービスサーバによって独立的に管理されていたユーザログイン／ログアウト情報を、別途のロケーションサーバを介して管理するためのものであり、より詳細には、ロケーションサーバをレプリケーショングループで構成し、当該レプリケーショングループに属するロケーションサーバの状態を同期化する方法及びそのシステムに関する。
【背景技術】
【０００２】
図１は、従来技術に係る複数のサービスサーバに接続するユーザ端末機のネットワーク接続を示した図である。
【０００３】
本出願人であるＮＨＮコーポレーションは、自社のハンゲームサイトを介して、ゴーストップ、フーラ、ポーカ、テトリス、チェスなど多数のオンラインゲームサービスを提供している。図１において、ユーザ端末機１０１、１０２を用いるユーザは、インターネット１０３を介して、プレイしたいオンラインゲームを提供するゲームサーバ１０４、１０５、１０６に接続する。例えば、ゲームサーバ１０４、１０５は、ゴーストップゲームサービスを提供したり、ゲームサーバ１０６は、フーラゲームサービスを提供したりする。このとき、ユーザのログイン／ログアウトは、各ゲームサーバ１０４、１０５、１０６で個別に行われる上、ユーザのログイン／ログアウト情報の管理も各ゲームサーバ１０４、１０５、１０６で個別に行われていた。したがって、従来技術では、１つのゲームサーバにログインしているユーザは、他のゲームサーバにログインしたユーザの現在状態（例えば、ログインしたのかログアウトしたのか、又はどのゲームをしているのか）について全く知ることができなかった。
【０００４】
図２は、従来技術に係るユーザのロケーション情報を管理するためのロケーションサーバとサービスサーバのネットワーク接続を示した図である。
【０００５】
図２では、図１に示した構成の問題点を解決するために、全ゲームサーバ２０４、２０５、２０６におけるユーザのログイン／ログアウト情報を集中的に管理するロケーションサーバ２０７（Ｌｏｃａｔｉｏｎ  Ｓｅｒｖｅｒ）を設けている。ユーザがユーザ端末機２０１、２０２及びインターネット２０３を介して、プレイしたいオンラインゲームを提供するゲームサーバ２０４、２０５、２０６に接続すると、ゲームサーバ２０４、２０５、２０６は、ユーザのログイン／ログアウト情報をロケーションサーバ２０７に送信する。これにより、ロケーションサーバ２０７は、全ゲームサーバ２０４、２０５、２０６におけるユーザのログイン／ログアウト情報を集中的に管理するようになるため、ユーザに、どのサーバにログインしたかのユーザ状態を提供することができる。
【０００６】
しかしながら、現在、ＮＨＮコーポレーションによって提供されているオンラインゲームは、数百台のゲームサーバによって提供されているため、当該ゲームサーバそれぞれのログイン／ログアウト情報の管理を１つのロケーションサーバで行うには、ロケーションサーバに対するシステムの負荷が極めて大きくなるという問題が生じるようになる。
【０００７】
したがって、このようなロケーションサーバに集中するシステム負荷の問題を解決するために、ロケーションサーバをレプリケーショングループ（ｒｅｐｌｉｃａｔｉｏｎ  ｇｒｏｕｐ）で構成する方式が提案されている。図３は、レプリケーショングループで構成された複数のロケーションサーバとサービスサーバ及びユーザ端末機のネットワーク連結を示した図である。レプリケーショングループに属するロケーションサーバは、ユーザのログイン／ログアウト状態に関して同じ状態情報を有する必要がある。
【０００８】
しかしながら、図４に示すように、レプリケーショングループに属するロケーションサーバに伝達されるユーザのログイン／ログアウトメッセージが、すべてのロケーションサーバに物理的に同じ順序で伝達される保障がない。図４は、レプリケーショングループに属する複数のロケーションサーバに到着したメッセージを順に示した図である。
【０００９】
ユーザがユーザ端末機３０１、３０２及びインターネット３０３を介して、プレイしたいオンラインゲームを提供するゲームサーバ３０４、３０５、３０６に接続すると、ゲームサーバ３０４、３０５、３０６は、ユーザのログイン／ログアウトメッセージをレプリケーションループ３０７に属するロケーションサーバ３０８、３０９、３１０、３１１のうちの１つのロケーションサーバ３０８に送信する。その後、ユーザのログイン／ログアウトメッセージを受信したロケーションサーバ３０８は、ユーザのログイン／ログアウトメッセージをレプリケーショングループ３０７に属した他のロケーションサーバ３０９、３１０、３１１に送信する。しかし、このように伝達されるユーザのログイン／ログアウトメッセージは、すべての各ロケーションサーバに同じ順序で伝達される保証がし難い。
【００１０】
例えば、図４は、ある瞬間にロケーションサーバ３０８、３０９、３１０に到着したメッセージを示した図である。ロケーションサーバ３０８には、ログイン／ログアウトメッセージ４０１、４０２、４０３がそれぞれＴ１、Ｔ２、Ｔ３の時間に到着している。メッセージ４０１は、ユーザ「ａａａ」が「ゴーストップ」というゲームの「１」番チャンネルに「ログイン」したことを示している。しかし、ロケーションサーバ３０９には、「ａａａ」が「ゴーストップ」というゲームの「１」番チャンネルにログインしたというメッセージ４１１と、「ａａａ」が「ゴーストップ」というゲームの「１」番チャンネルからログアウトしたというメッセージ４１２だけが到着している状態である。また、ロケーションサーバ３１０は、ロケーションサーバ３０８と同じ数のメッセージを有しているものの、ロケーションサーバ３０８とロケーションサーバ３１０に到着したメッセージの順序が相違している。すなわち、ロケーションサーバ３０８にはメッセージ４０１、メッセージ４０２、メッセージ４０３の順で到着しているが、ロケーションサーバ３１０にはメッセージ４２1、メッセージ４２２、メッセージ４２３の順で到着している。仮に、ロケーションサーバ３０８、３０９、３１０において、「ａａａ」というユーザの最終ログイン状態を最後に到着したメッセージに基づいて判断する場合は、ロケーションサーバ３０８では、ユーザ「ａａａ」が「フーラ」というゲームの「５」番チャンネルにログインしていると判断する。一方、ロケーションサーバ３０９及びロケーションサーバ３１０では、ユーザ「ａａａ」が「ゴーストップ」というゲームの「１」番チャンネルからログアウトしていると判断するようになる。したがって、レプリケーショングループ３０７に属するロケーションサーバ３０８、３０９、３１０で判断される現在の状態は、互いに異なるようになる。
【００１１】
したがって、１つのレプリケーショングループに属するロケーションサーバにユーザのログイン／ログアウトメッセージが互いに異なる順序で伝達されたとしても、レプリケーショングループに属するロケーションサーバがすべて同じ状態情報を保持するようにする方法及びそのシステムが求められている。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、このような従来技術を改善するために案出されたものであって、複数のサービスサーバからログイン／ログアウトメッセージを受信してユーザのログ状態情報を中央で管理しつつ、ログ状態情報を管理するサーバをレプリケーションすることで、ログ状態情報を管理するサーバの負荷を低減させる方法及びそのシステムを提供することを目的とする。
【００１３】
また、本発明は、複数のサービスサーバから外部メッセージを受信し、当該メッセージをレプリケーショングループに属するメンバーサーバ間で同じ順序を有するように処理することで、各メンバーサーバが同じ状態を有するようにする方法及びそのシステムを提供することを目的とする。
【００１４】
また、本発明は、レプリケーショングループに属するメンバーサーバにメッセージが互いに異なる順序で伝達されたとしても、１つのレプリケーショングループに属するメンバーサーバが、受信したメッセージを同じ順序で整列できる方法及びそのシステムを提供することを他の目的とする。
【００１５】
また、本発明は、複数のサービスサーバを介してユーザにサービスを提供する環境において、任意のユーザが現在どのサービスサーバにログイン／ログアウトしているのかに関するログイン／ログアウト状態情報及び位置情報をユーザに提供することを他の目的とする。
【００１６】
また、本発明は、複数のサービスサーバからログイン／ログアウトメッセージを受信してユーザのログ状態情報を中央で管理しつつ、ログ状態情報を管理するサーバをレプリケーションすることで、当該ログ状態情報を管理するサーバの負荷を低減させる方法及びシステムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
前記の目的を達成し、従来技術の問題点を解決するために、本発明の１つの側面における同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステムは、第１サーバシーケンスを保存するサーバシーケンス保存部と、サービスサーバから外部メッセージを受信し、上記メンバーサーバと同じレプリケーショングループに属する第２メンバーサーバから第２状態更新メッセージを受信するメッセージ受信部（上記第２状態更新メッセージは、第２サーバシーケンスを含む）と、上記外部メッセージの受信に応答して上記第１サーバシーケンスを所定の値だけ増加させ、上記第１サーバシーケンスを含む第１状態更新メッセージを生成して上記第２メンバーサーバに送信する外部メッセージ処理部と、上記第２状態更新メッセージの受信に応答して、上記第２状態更新メッセージに含まれた第２サーバシーケンスが上記サーバシーケンス保存部に保持された上記第１サーバシーケンスよりも大きければ、上記第１サーバシーケンスを上記第２サーバシーケンスに変更する状態更新メッセージ処理部と、上記第１状態更新メッセージの第１サーバシーケンス及び上記第２状態更新メッセージの第２サーバシーケンスの大きい順に、上記第１状態更新メッセージ及び上記第２状態更新メッセージの順序を決定するメッセージ順序決定部とを有することを特徴とする。これにより、本発明の各メンバーサーバは、自身の状態を同じレプリケーショングループに属する他のメンバーサーバと同期させることができる。
【００１８】
本発明のさらに他の側面に係る同じレプリケーショングループに属するロケーションサーバを同期化するロケーションサーバ同期化方法は、上記ロケーションサーバに第１サーバシーケンスを保持する段階と、サービスサーバからログメッセージを受信する段階と、上記ログメッセージの受信に応答して上記第１サーバシーケンスを所定の値だけ増加させ、上記第１サーバシーケンスを含む状態更新メッセージを生成する段階と、上記生成された状態更新メッセージを上記ロケーションサーバと同じレプリケーショングループに属する他のロケーションサーバに送信する段階と、上記ロケーションサーバと同じレプリケーショングループに属する他のロケーションサーバから状態更新メッセージを受信する段階（上記受信した状態更新メッセージは、第２サーバシーケンスを含む）と、上記状態更新メッセージの受信に応答して、上記受信した状態更新メッセージに含まれる第２サーバシーケンスが上記ロケーションサーバに保持された第１サーバシーケンスよりも大きい場合に、上記ロケーションサーバに保持された第１サーバシーケンスを上記受信した状態更新メッセージに含まれる第２サーバシーケンスに変更する段階と、を含むことを特徴とする。
【００１９】
また、本発明のさらに他の側面に係る同じレプリケーショングループに属する第１及び第２メンバーサーバを同期化する同じレプリケーショングループに属するサーバの同期化方法は、上記第１メンバーサーバに第１サーバシーケンス及び第１サーバ識別子を保持する段階と、サービスサーバから外部メッセージを受信する段階と、上記外部メッセージの受信に応答して上記第１サーバシーケンスを所定の値だけ増加させ、上記第１サーバシーケンス及び上記第１サーバ識別子を含む第１状態更新メッセージを生成する段階と、上記第１状態更新メッセージを上記第２メンバーサーバに送信する段階と、上記第２メンバーサーバから第２状態更新メッセージを受信する段階（上記第２状態更新メッセージは、第２サーバシーケンス及び第２サーバ識別子を含む）と、上記第２状態更新メッセージの受信に応答して、上記第２状態更新メッセージに含まれた第２サーバシーケンスが上記第１メンバーサーバに保持された上記第１サーバシーケンスよりも大きい場合に、上記第１メンバーサーバに保持された上記第１サーバシーケンスを上記第２サーバシーケンスに変更する段階と、上記第１状態更新メッセージの第１サーバシーケンス及び上記第２状態更新メッセージの第２サーバシーケンスの大きい順に、上記第１状態更新メッセージ及び上記第２状態更新メッセージの順序を決定する段階と、を含むことを特徴とする。
【００２０】
この場合、上記第１状態更新メッセージの第１サーバシーケンス及び上記第２状態更新メッセージの第２サーバシーケンスが同じである場合に、上記第１状態更新メッセージの第１サーバ識別子及び上記状態更新メッセージの第２サーバ識別子の大きい順に、上記第１状態更新メッセージ及び上記第２状態更新メッセージの順序を決定することができる。
【発明の効果】
【００２１】
本発明によれば、複数のサービスサーバからログイン／ログアウトメッセージを受信して、ユーザのログ状態情報を中央で管理しつつ、ログ状態情報を管理するサーバをレプリケーションすることでログ状態情報を管理するサーバの負荷を低減させる方法及びシステムが提供される。
【００２２】
また、本発明によれば、複数のサービスサーバから外部メッセージを受信し、当該メッセージをレプリケーショングループに属するメンバーサーバ間で同じ順序を有するように処理することで、メンバーサーバが同じ状態を有するようにする方法及びシステムが提供される。
【００２３】
また、本発明によれば、レプリケーショングループに属するメンバーサーバにメッセージが互いに異なる順序で伝達されたとしても、１つのレプリケーショングループに属するメンバーサーバは、受信したメッセージをすべて同じ順序で整列することができる。
【００２４】
また、本発明によれば、複数のサービスサーバを介してユーザにサービスを提供する環境において、任意のユーザが現在どのサービスサーバにログイン／ログアウトしたのかに関するログイン／ログアウト状態情報及び位置情報をユーザに提供することができる。
【００２５】
また、本発明によれば、複数のサービスサーバからログイン／ログアウトメッセージを受信してユーザのログ状態情報を中央で管理しつつ、ログ状態情報を管理するサーバをレプリケーションすることで、ログ状態情報を管理するサーバの負荷を低減させることができる。
【発明を実施するための最良の形態】
【００２６】
以下、添付の図面を参照して、本発明の実施形態について詳しく説明する。
【００２７】
図３は、本発明に係るレプリケーショングループで構成された複数のロケーションサーバとサービスサーバ及びユーザ端末機のネットワーク連結を示した図である。
【００２８】
ユーザがユーザ端末機３０１、３０２及びインターネット３０３を介して、プレイしたいオンラインゲームを提供するサービスサーバ３０４、３０５、３０６に接続すると、サービスサーバ３０４、３０５、３０６は、ユーザのログイン／ログアウトメッセージ（外部メッセージ）をレプリケーショングループ３０７に属するロケーションサーバ３０８、３０９、３１０、３１１のうちの１つのロケーションサーバ３０８に送信する。
【００２９】
このとき、サービスサーバ３０４、３０５、３０６が、レプリケーショングループ３０７に属するロケーションサーバ３０８、３０９、３１０、３１１のうちの１つのロケーションサーバではなく、全ロケーションサーバに外部メッセージを送信する場合、数百にも及ぶサービスサーバとロケーションサーバとの間の連結を管理しなければならなくなるため、レプリケーショングループ３０７に属するロケーションサーバ３０８、３０９、３１０、３１１間の状態の同期化が極めて困難になる。したがって、本発明では、サービスサーバは、外部メッセージをレプリケーショングループ３０７に属するロケーションサーバ３０８、３０９、３１０、３１１のうちの１つに送信する。
【００３０】
このために、サービスサーバは、エニーキャスト（ａｎｙｃａｓｔ）を用い、サービスサーバ３０４、３０５、３０６とロケーションサーバ３０８、３０９、３１０、３１１との間の連結を提供するネットワークが、エニーキャスト機能を提供する。
【００３１】
また、他の実施形態としては、レプリケーショングループ３０７に属するロケーションサーバ３０８、３０９、３１０、３１１を１つのスイッチに連結し、当該スイッチがローリング方式によってロケーションサーバ３０８、３０９、３１０、３１１のうちの１つを選択し、選択されたロケーションサーバにサービスサーバ３０４、３０５、３０６から受信される外部メッセージを伝達する方法を採用することも可能である。
【００３２】
さらに他の実施形態としては、サービスサーバ３０４、３０５、３０６それぞれにレプリケーショングループ３０７に属するすべてのロケーションサーバ３０８、３０９、３１０、３１１のアドレスを保存し、各サービスサーバから外部メッセージをロケーションサーバに送信する度に、ローリング方式によってロケーションサーバを選択して外部メッセージを送信することも可能である。
【００３３】
外部メッセージとは、ユーザのユーザ識別子、ユーザのログイン／ログアウト状態、及びユーザの位置情報を含むものである。ユーザ識別子とは、ユーザを識別するためのものであって、例えば、サービスサーバにログイン／ログアウトしたユーザがログインに使用したユーザ識別子が用いられる。ユーザのログイン／ログアウト状態とは、ユーザがログインをしたのか又はログアウトをしたのかに関する情報を意味する。ユーザの位置情報とは、ユーザがどこにログインをしたのか又はどこからログアウトをしたのかに関する情報である。位置情報は、ユーザがログイン／ログアウトをしたサービスサーバに関する情報（サービスサーバのＩＰアドレス又はサービスサーバ名など）であったり、ユーザがログイン／ログアウトをしたサービスの識別子（例えば、「ゴーストップ」、「フーラ」、「ポーカ」など）であったりする。１つのサービスが複数のチャンネルで提供される場合、位置情報は、ユーザがログイン／ログアウトをしたサービスの識別子とユーザがログイン／ログアウトをしたチャンネルの識別子との組み合わせで成される。位置情報は、サービス環境全体において、ユーザが最後にどこにログインをしたのか又はどこからログアウトをしたのかに関する情報を提供する。
【００３４】
外部メッセージを受信したロケーションサーバ３０８は、外部メッセージを処理して状態更新メッセージを生成する。状態更新メッセージは、ロケーションサーバ３０８によって、レプリケーショングループ３０７に属する他のロケーションサーバ３０９、３１０、３１１に伝達される。このとき、ロケーションサーバ３０８は、他のロケーションサーバ３０９、３１０、３１１にマルチキャスト（ｍｕｌｔｉｃａｓｔ）方式によって状態更新メッセージを伝達する。このためには、ロケーションサーバ３０８、３０９、３１０、３１１の連結を提供するネットワークが、マルチキャスト機能を提供する。
【００３５】
また、他の実施形態としては、レプリケーショングループ３０７に属する他のロケーションサーバ３０９、３１０、３１１のアドレスを保存し、外部メッセージを受信したロケーションサーバ３０８が他のロケーションサーバ３０９、３１０、３１１それぞれにユニキャスト（ｕｎｉｃａｓｔ）方式によって状態更新メッセージを伝達することも可能である。
【００３６】
しかしながら、このように伝達される外部メッセージ及び状態更新メッセージは、全ロケーションサーバに同じ順序で伝達される保証がない、当該メッセージを全ロケーションサーバにおいて同じ順序で整列する方法が必要となる。
【００３７】
図５は、本発明に係る同じレプリケーショングループに属する他のメンバーサーバと状態を同期化するメンバーサーバの構成を示したブロック図である。
【００３８】
本発明の一実施形態に係るメンバーサーバ５００は、サーバ識別子保存部５０１と、サーバシーケンス保存部５０２と、メッセージ受信部５０３と、外部メッセージ処理部５０４と、状態更新メッセージ処理部５０５と、メッセージバッファ５０６と、メッセージ順序決定部５０７と、ユーザ状態識別部５０８とを含む。メンバーサーバとは、ユーザの位置情報を管理するロケーションサーバである。
【００３９】
サーバ識別子保存部５０１は、メンバーサーバをレプリケーショングループ内で唯一に識別できるサーバ識別子を保存する。本発明の一実施形態では、ＩＰアドレスをサーバ識別子として用いている。サーバ識別子は、以後、メッセージバッファに保存されたメッセージの順序を決定する際、メッセージのサーバシーケンスが同一である場合に用いられる。
【００４０】
サーバシーケンス保存部５０２は、各メンバーサーバで管理されるサーバシーケンスを保存する。１つのレプリケーショングループが初めて生成される場合には、レプリケーショングループに属するすべてのメンバーサーバのサーバシーケンスは０で初期化される。
【００４１】
メッセージ受信部５０３は、サービスサーバから外部メッセージを受信する。サービスサーバは、例えば、ゲームサービスを提供するゲームサーバである。外部メッセージは、ユーザのユーザ識別子、ユーザがログイン／ログアウトしたのかに関するユーザログイン／ログアウト状態、及びユーザがどこにログインをしたのか又はどこからログアウトをしたのかに関する位置情報を含む。
【００４２】
さらに、メッセージ受信部５０３は、同じレプリケーショングループに属する他のメンバーサーバから状態更新メッセージ（第２状態更新メッセージ）を受信する。当該状態更新メッセージは、ユーザのユーザ識別子、ユーザのログイン／ログアウト状態、及びユーザの位置情報だけではなく、他のメンバーサーバに保存されたサーバシーケンス（第２サーバシーケンス）を含む。本発明のさらに他の実施形態によれば、第２状態更新メッセージは、他のメンバーサーバのサーバ識別子保存部に保存されているサーバ識別子を追加的に含んでいる。
【００４３】
外部メッセージ処理部５０４は、外部メッセージの受信に応答して第１サーバシーケンスを所定の値（例えば、１）だけ増加させ、第１サーバシーケンスを含む第１状態更新メッセージを生成して第２メンバーサーバに送信する。外部メッセージ処理部５０４は、外部メッセージに含まれたユーザのユーザ識別子、ユーザのログイン／ログアウト状態、及びユーザの位置情報に、自身のサーバシーケンス保存部５０２に保存されている第１サーバシーケンスを含ませて第１状態更新メッセージを生成する。本発明のさらに他の実施形態によれば、外部メッセージ処理部５０４は、メンバーサーバのサーバ識別子保存部５０１に保存されたサーバ識別子を追加的に含んで第１状態更新メッセージを生成する。さらに、外部メッセージ処理部５０４は、生成された第１状態更新メッセージをメッセージバッファ５０６に保存する。
【００４４】
状態更新メッセージ処理部５０５は、第２状態更新メッセージの受信に応答して、第２状態更新メッセージに含まれた第２サーバシーケンスがサーバシーケンス保存部５０１に保持された第１サーバシーケンスよりも大きい場合に、第１サーバシーケンスを第２サーバシーケンスに変更してサーバシーケンス保存部５０１に保存する。また、状態更新メッセージ処理部５０５は、受信された第２状態更新メッセージをメッセージバッファ５０６に保存する。第２状態更新メッセージは、ユーザ識別子、ユーザのログイン／ログアウト状態、ユーザの位置情報、及び第２状態更新メッセージを送信したメンバーサーバに保存された第２サーバシーケンスを含む。本発明のさらに他の実施形態によれば、第２状態更新メッセージは、第２状態更新メッセージを送信したメンバーサーバのサーバ識別子を追加的に含む。
【００４５】
メッセージ順序決定部５０７は、メッセージバッファ５０６に保存された状態更新メッセージのサーバシーケンスに従って状態更新メッセージの順序を決定する。すなわち、メッセージ順序決定部５０７は、第１状態更新メッセージの第１サーバシーケンス及び第２状態更新メッセージの第２サーバシーケンスの大きさ順に第１状態更新メッセージ及び第２状態更新メッセージの順序を決定する。
【００４６】
第１状態更新メッセージの第１サーバシーケンス及び第２状態更新メッセージの第２サーバシーケンスが同じであれば、メッセージ順序決定部５０７は、第１状態更新メッセージの第１サーバ識別子及び第２状態更新メッセージの第２サーバ識別子を用いて第１状態更新メッセージ及び第２状態更新メッセージの順序を決定する。例えば、２つの状態更新メッセージのサーバシーケンスが同じである場合には、状態更新メッセージのサーバ識別子の大きさ順に、第１状態更新メッセージ及び第２状態更新メッセージの順序を決定する。本発明によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するため、メンバーサーバは自身の状態を互いに同期化（ｓｙｎｃｈｒｏｎｉｚｅ）できる。
【００４７】
ユーザ状態識別部５０８は、メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスの順序に従ってユーザの最終ログ状態を決定する。メッセージ順序決定部５０７によってメッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンス（又は、サーバシーケンス及びサーバ識別子の組み合わせ）の順序に従って状態更新メッセージの順序が決定されるため、ユーザ状態識別部５０８は、各ユーザ別の最終メッセージによって各ユーザの最終ログ状態を決定する。本発明によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するため、同じレプリケーショングループに属するメンバーサーバが決定した１つのユーザに対する最終ログ状態はすべて同じになる。すなわち、どのユーザが現在ログイン中であるのか又はログアウトしたのかに関して、全メンバーサーバが同じ値を有するようになる。
【００４８】
本発明の一実施形態によれば、外部メッセージ、第１状態更新メッセージ、及び第２状態更新メッセージは、ユーザがログイン／ログアウトしたチャンネルに関する位置情報を含む。この場合、ユーザ状態識別部５０８は、メッセージバッファ５０６に保存された状態更新メッセージに含まれたサーバシーケンスの順序（又はサーバシーケンス及びサーバ識別子の組み合わせ）によってユーザの最終位置を決定する。すなわち、ユーザがログイン中である場合に、該ユーザがどのチャンネルにログイン中であるかを決定する。本発明によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するようになるため、同じレプリケーショングループに属するメンバーサーバが決定した１つのユーザに対する最終位置情報はすべて同じになる。すなわち、あるユーザがログイン中である場合、該ユーザがどこにログイン中であるのか関して、全メンバーサーバが同じ値を有するようになる。
【００４９】
図６は、本発明に係る同じレプリケーショングループに属するメンバーサーバの状態を同期化するためにメッセージを処理する手順を示したフローチャートである。
【００５０】
段階Ｓ６０１で、第１メンバーサーバは、サーバシーケンス保存部５０２に第１サーバシーケンスを保持する。また、第１メンバーサーバは、サーバ識別子保存部５０１に第１サーバ識別子を保持する。本実施形態において、第１メンバーサーバ及び第２メンバーサーバは、同じレプリケーショングループに属する。また、第１メンバーサーバ及び第２メンバーサーバは、ユーザの位置情報を管理するロケーションサーバである。
【００５１】
段階Ｓ６０２で、第１メンバーサーバは、サービスサーバから外部メッセージを受信したか否かを判断する。サービスサーバは、ユーザにネットワークを介してサービスを提供するサーバであって、例えば、ゲームサービスを提供するゲームサーバである。また、外部メッセージは、ユーザのログイン／ログアウトに関するログメッセージである。ログメッセージは、ユーザのユーザ識別子、ユーザがログイン／ログアウトしたかに関するユーザログイン／ログアウト状態、及びユーザがどこにログインをしたのか又はどこからログアウトをしたのかに関する位置情報を含む。
【００５２】
段階Ｓ６０２で、第１メンバーサーバがサービスサーバから外部メッセージを受信すると、段階Ｓ６０３で、第１メンバーサーバは、外部メッセージの受信に応答して第１サーバシーケンスを所定の値（例えば、１）だけ増加させる。本実施形態において、サーバシーケンスは１ずつ増加すると説明しているが、必ずしも１だけ増加させる必要はなく、一定の大きさ（例えば、２）を増加させるように構成してもよい。また、一定の大きさだけ減少させるように構成することもできる。このような構成も、本発明の技術的思想に含まれ、特許請求の範囲の記載された技術的範囲における均等な範囲に属するようになる。
【００５３】
段階Ｓ６０４で、第１メンバーサーバは、第１サーバシーケンスを含む第１状態更新メッセージを生成する。第１メンバーサーバは、外部メッセージに含まれたユーザのユーザ識別子、ユーザログイン／ログアウト状態、ユーザの位置情報に、自身のサーバシーケンス保存部５０２に保存された第１サーバシーケンスを含ませて第１状態更新メッセージを生成する。本発明のさらに他の実施形態によれば、第１メンバーサーバは、メンバーサーバのサーバ識別子保存部５０１に保存されたサーバ識別子を追加的に含んで第１状態更新メッセージを生成する。
【００５４】
段階Ｓ６０５で、第１メンバーサーバは、第１状態更新メッセージを第２メンバーサーバに送信する。段階Ｓ６０６で、第１メンバーサーバは、生成された第１状態更新メッセージをメッセージバッファ５０６に保存する。
【００５５】
段階Ｓ６０２で、第１メンバーサーバがサービスサーバから外部メッセージを受信しない場合、段階Ｓ６０７で、第１メンバーサーバは、第１メンバーサーバが第２メンバーサーバから状態更新メッセージを受信したか否かを判断する。段階Ｓ６０７で、第１メンバーサーバが第２メンバーサーバから状態更新メッセージを受信しない場合、第１メンバーサーバは段階Ｓ６０２に戻る。
【００５６】
第２状態更新メッセージは、ユーザ識別子、ユーザログイン／ログアウト状態、ユーザの位置情報、及び第２メンバーサーバに保存された第２サーバシーケンスを含む。本発明のさらに他の実施形態によれば、第２状態更新メッセージは、第２メンバーサーバのサーバ識別子を追加的に含む。サーバ識別子は、メンバーサーバをレプリケーショングループ内で唯一に識別する識別子であるが、本発明の一実施形態では、メンバーサーバのＩＰアドレスがサーバ識別子として用いられる。１つのサーバが複数のＩＰアドレスを有する場合には、大きさが小さいＩＰアドレスを選択する。
【００５７】
段階Ｓ６０７で、第１メンバーサーバが第２メンバーサーバから状態更新メッセージを受信すると、第１メンバーサーバは第２状態更新メッセージの受信に応答して、段階Ｓ６０８で、第２状態更新メッセージに含まれた第２サーバシーケンスと第１メンバーサーバに保持された第１サーバシーケンスとを比較する。
【００５８】
段階Ｓ６０８における比較の結果、第２状態更新メッセージに含まれた第２サーバシーケンスが第１メンバーサーバに保持された第１サーバシーケンスよりも大きい場合に、段階Ｓ６０９で、第１構成サーバは、第１メンバーサーバに保持された第１サーバシーケンスを第２サーバシーケンスに変更してサーバシーケンス保存部５０１に保存する。
【００５９】
段階Ｓ６０９で、第１メンバーサーバは、受信した第２状態更新メッセージをメッセージバッファ５０６に保存する。本実施形態によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するため、メンバーサーバは自身の状態を互いに同期化できるようになる。
【００６０】
図７は、本発明に係るメンバーサーバに保存されたメッセージの順序を決定する手順を示したフローチャートである。
【００６１】
段階Ｓ７０１で、第１メンバーサーバは、メッセージバッファ５０６に保存された状態更新メッセージのサーバシーケンスを比較する。すなわち、第１状態更新メッセージの第１サーバシーケンス及び第２状態更新メッセージの第２サーバシーケンスを比較する。
【００６２】
段階Ｓ７０１における比較の結果、メッセージバッファ５０６に保存された状態更新メッセージのサーバシーケンスが同じではなければ、段階Ｓ７０３で、第１メンバーサーバは、サーバシーケンスによって状態更新メッセージの順序を決定する。一方、段階Ｓ７０１で比較した結果、メッセージバッファ５０６に保存された状態更新メッセージのサーバシーケンスが同じであれば、段階Ｓ７０２で、第１メンバーサーバは、状態更新メッセージのサーバ識別子によって状態更新メッセージの順序を決定する。
【００６３】
すなわち、第１状態更新メッセージの第１サーバシーケンス及び第２状態更新メッセージの第２サーバシーケンスが同じではなければ、第１メンバーサーバは、第１状態更新メッセージの第１サーバシーケンス及び第２状態更新メッセージの第２サーバシーケンスの大きさ順で第１状態更新メッセージ及び第２状態更新メッセージの順序を決定する。
【００６４】
一方、第１状態更新メッセージの第１サーバシーケンス及び前記第２状態更新メッセージの第２サーバシーケンスが同じであれば、第１状態更新メッセージの第１サーバ識別子及び状態更新メッセージの第２サーバ識別子の大きさ順で第１状態更新メッセージ及び第２状態更新メッセージの順序を決定する。
【００６５】
本発明の一実施形態によれば、状態更新メッセージは、ユーザのユーザ識別子、ユーザのログイン／ログアウト状態、及びユーザがログイン／ログアウトしたチャンネルに関する位置情報を含む。したがって、本発明に係るメンバーサーバは、自身のメッセージバッファに保存された状態更新メッセージを状態更新メッセージに含まれたサーバシーケンス（又はサーバシーケンス及びサーバ識別子の組み合わせ）の順序によって整列し、ユーザが最終的にログイン中であるかあるいはログアウト状態であるかを判断する。また、位置情報を参照して、ユーザがログイン中である場合には、ユーザがどのチャンネルにログインしたのかを判断する。
【００６６】
本発明によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するようになるため、同じレプリケーショングループに属するメンバーサーバが決定した１つのユーザに対するログイン／ログアウト状態情報及び最終位置情報はすべて同じようになる。
【００６７】
図８は、サービスサーバからレプリケーショングループに属するメンバーサーバのうちの１つに外部メッセージを送信する構成を示した図である。
【００６８】
本実施形態において、サービスサーバ８０１は、オンラインゴーストップゲームサービスを提供するゲームサーバである。サービスサーバ８０１は、ゴーストップゲームサービスを複数のチャンネルで提供しており、ユーザは、該複数のチャンネルから１つを選択してゲームサービスを利用する。ユーザ「ａａａ」は、サービスサーバ８０１にログインしてゴーストップゲームの１番チャンネルでゴーストップゲームサービスを利用している。したがって、ロケーションサーバ１（符合８０２）のメッセージバッファ８０８、ロケーションサーバ２（符合８０３）のメッセージバッファ８０９、ロケーションサーバ３（面符合８０４）のメッセージバッファ８１０は、「ａａａ」がゴーストップ１番チャンネルにログインしたという状態更新メッセージを保存している。状態更新メッセージの「１７」はサーバシーケンス値であるし、「＃２」はサーバ識別子である。現在、ロケーションサーバ１（符合８０２）のサーバシーケンス８０５、ロケーションサーバ２（符合８０３）のサーバシーケンス８０６、ロケーションサーバ３（符合８０４）のサーバシーケンス８０７は、すべて「１７」という同じ値を有している。本発明によれば、１つの状態更新メッセージのマルチキャスティングが終了すると、同じレプリケーショングループに属するメンバーサーバは、すべて同じサーバシーケンス値を有するようになる。
【００６９】
ユーザ「ａａａ」がサービスサーバ８０１のゴーストップゲームの１番チャンネルでゴーストップゲームサービスを利用した後にログアウトすると、サービスサーバ８０１は、ログメッセージ８１１を１つのレプリケーショングループに属するロケーションサーバのうちの１つに送信する。例えば、ログメッセージ８１１が、ロケーションサーバ１（符合８０２）に送信される。ログメッセージ８１１は、ログアウトしたユーザのユーザ識別子である「ａａａ」、ユーザがログアウトした位置であるゲーム名及びチャンネル番号の組み合あわせ（「ゴーストップ−１」）、又はログインであるかログアウトであるかに関するログイン／ログアウト状態情報（図８では「ログアウト」）を含む。
【００７０】
図９は、サービスサーバから外部メッセージを受信したメンバーサーバが同じレプリケーショングループに属する他のメンバーサーバに状態更新メッセージを送信する構成を示した図である。
【００７１】
外部メッセージであるログメッセージ８１１を受信したロケーションサーバ１（符合９０２）は、ログメッセージの受信に応答して当該ロケーションサーバ１（図面符合９０２）のサーバシーケンスを所定の値（例えば、１）だけ増加させる。図８のロケーションサーバ１（図面符合８０２）のサーバシーケンスは１７であったが、図９のロケーションサーバ１（図面符合９０２）のサーバシーケンスは１８であり、１だけ増加されている。ロケーションサーバ１（図面符合９０２）は、ログメッセージ８１１に含まれたユーザのユーザ識別子、ユーザログイン／ログアウト状態、ユーザの位置情報に、自身のサーバシーケンス及びサーバ識別子を含ませて状態更新メッセージを生成する。符号９０８は、生成された状態更新メッセージを示したものである。生成された状態更新メッセージ９０８は、ログアウトしたユーザのユーザ識別子（「ａａａ」）、ユーザがログアウトした位置（「ゴーストップ−１」、ゴーストップゲームの１番チャンネルを意味する）、ログイン／ログアウト状態（「ログアウト」）、サーバシーケンス（「１８」）、及びサーバ識別子（「＃１」）を含む。ロケーションサーバ１（符合９０２）は、生成された状態更新メッセージ９０８を同じレプリケーショングループに属する他のロケーションサーバ９０３、９０４に送信する。
【００７２】
図１０は、本発明に係る図８及び図９のメッセージ処理を行った後の各メンバーサーバのメッセージバッファの状態及びサーバシーケンスの状態を示した図である。
【００７３】
状態更新メッセージ９０８を送信したロケーションサーバ１（符合１００２）は、自身のメッセージバッファ１００８に状態更新メッセージ９０８、１０１１を保存する。このとき、状態更新メッセージをそのまま保存せずに、一部フォーマットを加工して保存することも可能であるが、これも本発明の技術的思想に含まれる。
【００７４】
状態更新メッセージ９０８を受信したロケーションサーバ２、３（符合１００３、１００４）は、状態更新メッセージ９０８の受信に応答して、自身のサーバシーケンス保存部１００６、１００７に保持されたサーバシーケンスと状態更新メッセージ９０８に含まれたサーバシーケンスとを比較する。比較の結果、自身のサーバシーケンス保存部１００６、１００７に保持されたサーバシーケンスよりも状態更新メッセージ９０８に含まれたサーバシーケンスが大きいため、ロケーションサーバ２、３（符合１００３、１００４）は、自身のサーバシーケンス保存部１００６、１００７に保持されたサーバシーケンスである「１７」を状態更新メッセージ９０８に含まれたサーバシーケンスである「１８」に変更して保存する。
【００７５】
また、ロケーションサーバ２、３（符合１００３、１００４）は、受信された状態更新メッセージ９０８をメッセージバッファ１００９、１０１０に保存する。このとき、状態更新メッセージをそのまま保存せずに、一部フォーマットを加工して保存することも可能であるが、これも本発明の技術的思想に含まれる。
【００７６】
ロケーションサーバ１、２、３（符合１００２、１００３、１００４）のメッセージ順序決定部は、メッセージバッファに保存された状態更新メッセージのサーバ識別子によって状態更新メッセージの順序を決定する。図１０に示したように、ロケーションサーバ１、２、３（符合１００２、１００３、１００４）すべては、「ａａａ」がゴーストップ１番チャンネルにログインしたというメッセージのサーバシーケンス（「１７」）が、「ａａａ」がゴーストップ１番チャンネルでログアウトしたというメッセージのサーバシーケンス（「１８」）よりも小さいため、同じ順序でメッセージが整列される。
【００７７】
図１０に示したように、本発明によれば、同じレプリケーショングループに属するロケーションサーバ１、２、３（図面符合１００２、１００３、１００４）は、すべてのメッセージバッファに同じ状態更新メッセージを含む。また、状態更新メッセージは同じ順序で整列されるため、ロケーションサーバ１、２、３（符合１００２、１００３、１００４）は、自身の状態を互いに同期化できるようになる。
【００７８】
図１１は、本発明に係る複数のサービスサーバからそれぞれレプリケーショングループに属するメンバーサーバに外部メッセージを送信する構成を示した図である。
【００７９】
図１１は、サービスサーバ１、２（符合１１０１、１１０２）が、ほぼ同じくらいの時間にログインメッセージ１１０９、１１１０を互いに異なるロケーションサーバ１１０３、１１０５に送信する場合を示した図である。サービスサーバ１（符合１１０１）は、ロケーションサーバ１（符合１１０３）にユーザａａａがゴーストップ１番チャンネルにログインしたというログメッセージ１１０９を送信し、サービスサーバ２（符合１１０２）は、ロケーションサーバ３（符合１１０５）にユーザａａａがフーラ５番チャンネルにログインしたというログメッセージ１１１０を送信している。現在、ロケーションサーバ１１０３、１１０４、１１０５は、すべて同じサーバシーケンス値を有している。
【００８０】
図１２は、サービスサーバから外部メッセージを受信したメンバーサーバが、同じレプリケーショングループに属する他のメンバーサーバに状態更新メッセージを送信する構成を示した図である。
【００８１】
ログメッセージ１１０９、１１１０を受信したロケーションサーバ１、３（符合１２０３、１２０５）は、それぞれ自身のサーバシーケンス１２０６、１２０８を１ずつ増加させ、状態更新メッセージ１２０９、１２１０を生成して自身のメッセージバッファに保存し、レプリケーショングループに属する他のロケーションサーバに送信する。このとき、状態更新メッセージ１２０９、１２１０は、サーバシーケンス値の他にもサーバ識別子を含む。本実施形態において、ロケーションサーバ１（符合１２０３）のサーバ識別子は「＃１」であり、ロケーションサーバ３（符合１２０５）のサーバ識別子は「＃３」である。
【００８２】
図１２で、状態更新メッセージ１２０９、１２１０を送信したロケーションサーバ１、３（符合１２０３、１２０５）のサーバシーケンスは、１ずつ増加されて「１８」という値を有しているが、ロケーションサーバ２は、図１１と同じように「１７」という値をそのまま保持している。
【００８３】
図１３は、本発明に係る図１１及び図１２のメッセージ処理を行った後の各メンバーサーバのメッセージバッファの状態及びサーバシーケンスの状態を示した図である。
【００８４】
ロケーションサーバ２（符合１２０４）が状態更新メッセージ１２０９、１２１０のうちのどちらを先に受信したかに関係なく、すべてが処理された後のサーバシーケンス及びメッセージバッファの状態は、図１３に示す通りとなる。
【００８５】
例えば、ロケーションサーバ２（符合１２０４）が状態更新メッセージ１２０９を先に受信した後に状態更新メッセージ１２１０を受信した場合について説明する。ロケーションサーバ２（符合１２０４）は、状態更新メッセージ１２０９のサーバシーケンス値（「１８」）と自身のサーバシーケンス値（「１７」）とを比較し、状態更新メッセージ１２０９のサーバシーケンス値（「１８」）が自身のサーバシーケンス値（「１７」）よりも大きいため、自身のサーバシーケンス値を状態更新メッセージ１２０９のサーバシーケンス値（「１８」）に変更する。これによって、ロケーションサーバ２（符合１２０４）のサーバシーケンス保存部１３０７は、「１８」というサーバシーケンス値を保存するようになる。その後に、受信した状態更新メッセージ１２０９をメッセージバッファ１３１０に保存する。
【００８６】
その次に、ロケーションサーバ２（符合１３０４）は、状態更新メッセージ１２１０を受信するが、状態更新メッセージ１２１０のサーバシーケンス値「１８」が自身のサーバシーケンス値「１８」と同じであるため、自身のサーバシーケンス値は変更せず、単に受信した状態更新メッセージ１２１０をメッセージバッファ１３１０に保存する。
【００８７】
結局、ロケーションサーバ２（符合１３０４）は、図１３のような状態となる。ロケーションサーバ２（符合１３０４）が状態更新メッセージ１２１０を先に受信した後に状態更新メッセージ１２０９を受信しても、同じような結果となる。
【００８８】
ロケーションサーバ１（符合１３０３）は、ロケーションサーバ３（符合１３０５）から受信した状態更新メッセージ１２１０のサーバシーケンス値「１８」と自身のサーバシーケンス値（「１８」）とを比較する。比較した結果、状態更新メッセージ１２１０のサーバシーケンス値（「１８」）が自身のサーバシーケンス値（「１８」）と同じであるため、自身のサーバシーケンス値は変更せず、単に受信した状態更新メッセージ１２１０をメッセージバッファ１３０９に保存する。
【００８９】
ロケーションサーバ３（符合１３０５）も同様に、ロケーションサーバ１（符合１３０３）から状態更新メッセージ１２０９を受信した後、自身のサーバシーケンス値は変更せず、単に受信した状態更新メッセージ１２０９をメッセージバッファ１３１１に保存する。
【００９０】
図１３において、ロケーションサーバ１（符合１３０３）のメッセージバッファ１３０９に保存された状態更新メッセージ１３１２、１３１３は、サーバシーケンスの値が同じであるため、サーバ識別子によって整列される。同じように、ロケーションサーバ２、３（符合１３０４、１３０５）でも、状態更新メッセージがサーバ識別子によって整列され、ロケーションサーバ１、２、３（符合１３０３、１３０４、１３０５）はすべて同じ順序でメッセージを整列するようになる。
【００９１】
本発明に係る実施形態は、コンピュータにより具現される多様な動作を実行するためのプログラム命令を含むコンピュータ読取可能な記録媒体を含む。当該記録媒体は、プログラム命令、データファイル、データ構造などを単独又は組み合わせて含むこともできる。また、記録媒体及びプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知であり使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー（登録商標）ディスク及び磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体、フロプティカルディスクのような磁気−光媒体、及びＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれる。また、上記記録媒体は、プログラム命令、データ構造などを保存する信号を送信する搬送波を含む光又は金属線、導波管などの送信媒体でもある。プログラム命令の例としては、コンパイラによって生成されるもののような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行される高級言語コードを含む。
【００９２】
上述したように、本発明を好ましい実施形態に則して説明したが、本発明の属する技術分野において熟練した当業者にとっては、特許請求の範囲に記載された本発明の技術的思想及びその領域から逸脱しない範囲内で、本発明を多様に修正及び変更させることができることを理解することができるであろう。すなわち、本発明の技術的範囲は、特許請求の範囲に基づいて定められ、発明を実施するための最良の形態により制限されるものではない。
【図面の簡単な説明】
【００９３】
【図１】従来技術に係る複数のサービスサーバに接続するユーザ端末機のネットワーク接続を示した図である。
【図２】従来技術に係るユーザのロケーション情報を管理するためのロケーションサーバとサービスサーバのネットワーク接続を示した図である。
【図３】レプリケーショングループで構成された複数のロケーションサーバとサービスサーバ及びユーザ端末機のネットワーク連結を示した図である。
【図４】レプリケーショングループに属する複数のロケーションサーバに到着したメッセージを順に示した図である。
【図５】本発明に係る同じレプリケーショングループに属する他のメンバーサーバと状態を同期化するメンバーサーバの構成を示したブロック図である。
【図６】本発明に係る同じレプリケーショングループに属するメンバーサーバの状態を同期化するためにメッセージを処理する手順を示したフローチャートである。
【図７】本発明に係るメンバーサーバに保存されたメッセージの順序を決定する手順を示したフローチャート。
【図８】サービスサーバからレプリケーショングループに属するメンバーサーバのうちの１つに外部メッセージを送信する構成を示した図である。
【図９】サービスサーバから外部メッセージを受信したメンバーサーバが同じレプリケーショングループに属する他のメンバーサーバに状態更新メッセージを送信する構成を示した図である。
【図１０】本発明に係る図８及び図９のメッセージ処理を行った後の各メンバーサーバのメッセージバッファの状態及びサーバシーケンスの状態を示した図である。
【図１１】本発明に係る複数のサービスサーバからそれぞれのレプリケーショングループに属するメンバーサーバに外部メッセージを送信する構成を示した図である。
【図１２】サービスサーバから外部メッセージを受信したメンバーサーバが同じレプリケーショングループに属する他のメンバーサーバに状態更新メッセージを送信する構成を示した図である。
【図１３】本発明に係る図１１及び図１２のメッセージ処理を行った後の各メンバーサーバのメッセージバッファの状態及びサーバシーケンスの状態を示した図である。
【図１】
2008546087.tif 000003
【図２】
2008546087.tif 000004
【図３】
2008546087.tif 000005
【図４】
2008546087.tif 000006
【図５】
2008546087.tif 000007
【図６】
2008546087.tif 000008
【図７】
2008546087.tif 000009
【図８】
2008546087.tif 000010
【図９】
2008546087.tif 000011
【図１０】
2008546087.tif 000012
【図１１】
2008546087.tif 000013
【図１２】
2008546087.tif 000014
【図１３】
2008546087.tif 000015
【国際調査報告】
2008546087.tif 000016
2008546087.tif 000017