同じレプリケーショングループに属するメンバーサーバの状態を同期化する方法及びそのシステム
同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステムは、第1サーバシーケンスを保存するサーバシーケンス保存部と、サービスサーバから外部メッセージを受信し、メンバーサーバと同じレプリケーショングループに属する第2メンバーサーバから第2サーバシーケンスを含む第2状態更新メッセージを受信するメッセージ受信部と、外部メッセージの受信に応答して第1サーバシーケンスを所定の値だけ増加させ、第1サーバシーケンスを含む第1状態更新メッセージを生成して第2メンバーサーバに送信する外部メッセージ処理部と、第2状態更新メッセージの受信に応答し、第2状態更新メッセージに含まれた第2サーバシーケンスがサーバシーケンス保存部に保持された第1サーバシーケンスよりも大きい場合に、第1サーバシーケンスを第2サーバシーケンスに変更する状態更新メッセージ処理部と、第1状態更新メッセージの第1サーバシーケンス及び第2状態更新メッセージの第2サーバシーケンスの大きさ順に、第1状態更新メッセージ及び第2状態更新メッセージの順序を決定するメッセージ順序決定部とを有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のサービスサーバによって独立的に管理されていたユーザログイン/ログアウト情報を、別途のロケーションサーバを介して管理するためのものであり、より詳細には、ロケーションサーバをレプリケーショングループで構成し、当該レプリケーショングループに属するロケーションサーバの状態を同期化する方法及びそのシステムに関する。
【背景技術】
【0002】
図1は、従来技術に係る複数のサービスサーバに接続するユーザ端末機のネットワーク接続を示した図である。
【0003】
本出願人であるNHNコーポレーションは、自社のハンゲームサイトを介して、ゴーストップ、フーラ、ポーカ、テトリス、チェスなど多数のオンラインゲームサービスを提供している。図1において、ユーザ端末機101、102を用いるユーザは、インターネット103を介して、プレイしたいオンラインゲームを提供するゲームサーバ104、105、106に接続する。例えば、ゲームサーバ104、105は、ゴーストップゲームサービスを提供したり、ゲームサーバ106は、フーラゲームサービスを提供したりする。このとき、ユーザのログイン/ログアウトは、各ゲームサーバ104、105、106で個別に行われる上、ユーザのログイン/ログアウト情報の管理も各ゲームサーバ104、105、106で個別に行われていた。したがって、従来技術では、1つのゲームサーバにログインしているユーザは、他のゲームサーバにログインしたユーザの現在状態(例えば、ログインしたのかログアウトしたのか、又はどのゲームをしているのか)について全く知ることができなかった。
【0004】
図2は、従来技術に係るユーザのロケーション情報を管理するためのロケーションサーバとサービスサーバのネットワーク接続を示した図である。
【0005】
図2では、図1に示した構成の問題点を解決するために、全ゲームサーバ204、205、206におけるユーザのログイン/ログアウト情報を集中的に管理するロケーションサーバ207(Location Server)を設けている。ユーザがユーザ端末機201、202及びインターネット203を介して、プレイしたいオンラインゲームを提供するゲームサーバ204、205、206に接続すると、ゲームサーバ204、205、206は、ユーザのログイン/ログアウト情報をロケーションサーバ207に送信する。これにより、ロケーションサーバ207は、全ゲームサーバ204、205、206におけるユーザのログイン/ログアウト情報を集中的に管理するようになるため、ユーザに、どのサーバにログインしたかのユーザ状態を提供することができる。
【0006】
しかしながら、現在、NHNコーポレーションによって提供されているオンラインゲームは、数百台のゲームサーバによって提供されているため、当該ゲームサーバそれぞれのログイン/ログアウト情報の管理を1つのロケーションサーバで行うには、ロケーションサーバに対するシステムの負荷が極めて大きくなるという問題が生じるようになる。
【0007】
したがって、このようなロケーションサーバに集中するシステム負荷の問題を解決するために、ロケーションサーバをレプリケーショングループ(replication group)で構成する方式が提案されている。図3は、レプリケーショングループで構成された複数のロケーションサーバとサービスサーバ及びユーザ端末機のネットワーク連結を示した図である。レプリケーショングループに属するロケーションサーバは、ユーザのログイン/ログアウト状態に関して同じ状態情報を有する必要がある。
【0008】
しかしながら、図4に示すように、レプリケーショングループに属するロケーションサーバに伝達されるユーザのログイン/ログアウトメッセージが、すべてのロケーションサーバに物理的に同じ順序で伝達される保障がない。図4は、レプリケーショングループに属する複数のロケーションサーバに到着したメッセージを順に示した図である。
【0009】
ユーザがユーザ端末機301、302及びインターネット303を介して、プレイしたいオンラインゲームを提供するゲームサーバ304、305、306に接続すると、ゲームサーバ304、305、306は、ユーザのログイン/ログアウトメッセージをレプリケーションループ307に属するロケーションサーバ308、309、310、311のうちの1つのロケーションサーバ308に送信する。その後、ユーザのログイン/ログアウトメッセージを受信したロケーションサーバ308は、ユーザのログイン/ログアウトメッセージをレプリケーショングループ307に属した他のロケーションサーバ309、310、311に送信する。しかし、このように伝達されるユーザのログイン/ログアウトメッセージは、すべての各ロケーションサーバに同じ順序で伝達される保証がし難い。
【0010】
例えば、図4は、ある瞬間にロケーションサーバ308、309、310に到着したメッセージを示した図である。ロケーションサーバ308には、ログイン/ログアウトメッセージ401、402、403がそれぞれT1、T2、T3の時間に到着している。メッセージ401は、ユーザ「aaa」が「ゴーストップ」というゲームの「1」番チャンネルに「ログイン」したことを示している。しかし、ロケーションサーバ309には、「aaa」が「ゴーストップ」というゲームの「1」番チャンネルにログインしたというメッセージ411と、「aaa」が「ゴーストップ」というゲームの「1」番チャンネルからログアウトしたというメッセージ412だけが到着している状態である。また、ロケーションサーバ310は、ロケーションサーバ308と同じ数のメッセージを有しているものの、ロケーションサーバ308とロケーションサーバ310に到着したメッセージの順序が相違している。すなわち、ロケーションサーバ308にはメッセージ401、メッセージ402、メッセージ403の順で到着しているが、ロケーションサーバ310にはメッセージ421、メッセージ422、メッセージ423の順で到着している。仮に、ロケーションサーバ308、309、310において、「aaa」というユーザの最終ログイン状態を最後に到着したメッセージに基づいて判断する場合は、ロケーションサーバ308では、ユーザ「aaa」が「フーラ」というゲームの「5」番チャンネルにログインしていると判断する。一方、ロケーションサーバ309及びロケーションサーバ310では、ユーザ「aaa」が「ゴーストップ」というゲームの「1」番チャンネルからログアウトしていると判断するようになる。したがって、レプリケーショングループ307に属するロケーションサーバ308、309、310で判断される現在の状態は、互いに異なるようになる。
【0011】
したがって、1つのレプリケーショングループに属するロケーションサーバにユーザのログイン/ログアウトメッセージが互いに異なる順序で伝達されたとしても、レプリケーショングループに属するロケーションサーバがすべて同じ状態情報を保持するようにする方法及びそのシステムが求められている。
【発明の開示】
【発明が解決しようとする課題】
【0012】
本発明は、このような従来技術を改善するために案出されたものであって、複数のサービスサーバからログイン/ログアウトメッセージを受信してユーザのログ状態情報を中央で管理しつつ、ログ状態情報を管理するサーバをレプリケーションすることで、ログ状態情報を管理するサーバの負荷を低減させる方法及びそのシステムを提供することを目的とする。
【0013】
また、本発明は、複数のサービスサーバから外部メッセージを受信し、当該メッセージをレプリケーショングループに属するメンバーサーバ間で同じ順序を有するように処理することで、各メンバーサーバが同じ状態を有するようにする方法及びそのシステムを提供することを目的とする。
【0014】
また、本発明は、レプリケーショングループに属するメンバーサーバにメッセージが互いに異なる順序で伝達されたとしても、1つのレプリケーショングループに属するメンバーサーバが、受信したメッセージを同じ順序で整列できる方法及びそのシステムを提供することを他の目的とする。
【0015】
また、本発明は、複数のサービスサーバを介してユーザにサービスを提供する環境において、任意のユーザが現在どのサービスサーバにログイン/ログアウトしているのかに関するログイン/ログアウト状態情報及び位置情報をユーザに提供することを他の目的とする。
【0016】
また、本発明は、複数のサービスサーバからログイン/ログアウトメッセージを受信してユーザのログ状態情報を中央で管理しつつ、ログ状態情報を管理するサーバをレプリケーションすることで、当該ログ状態情報を管理するサーバの負荷を低減させる方法及びシステムを提供することを目的とする。
【課題を解決するための手段】
【0017】
前記の目的を達成し、従来技術の問題点を解決するために、本発明の1つの側面における同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステムは、第1サーバシーケンスを保存するサーバシーケンス保存部と、サービスサーバから外部メッセージを受信し、上記メンバーサーバと同じレプリケーショングループに属する第2メンバーサーバから第2状態更新メッセージを受信するメッセージ受信部(上記第2状態更新メッセージは、第2サーバシーケンスを含む)と、上記外部メッセージの受信に応答して上記第1サーバシーケンスを所定の値だけ増加させ、上記第1サーバシーケンスを含む第1状態更新メッセージを生成して上記第2メンバーサーバに送信する外部メッセージ処理部と、上記第2状態更新メッセージの受信に応答して、上記第2状態更新メッセージに含まれた第2サーバシーケンスが上記サーバシーケンス保存部に保持された上記第1サーバシーケンスよりも大きければ、上記第1サーバシーケンスを上記第2サーバシーケンスに変更する状態更新メッセージ処理部と、上記第1状態更新メッセージの第1サーバシーケンス及び上記第2状態更新メッセージの第2サーバシーケンスの大きい順に、上記第1状態更新メッセージ及び上記第2状態更新メッセージの順序を決定するメッセージ順序決定部とを有することを特徴とする。これにより、本発明の各メンバーサーバは、自身の状態を同じレプリケーショングループに属する他のメンバーサーバと同期させることができる。
【0018】
本発明のさらに他の側面に係る同じレプリケーショングループに属するロケーションサーバを同期化するロケーションサーバ同期化方法は、上記ロケーションサーバに第1サーバシーケンスを保持する段階と、サービスサーバからログメッセージを受信する段階と、上記ログメッセージの受信に応答して上記第1サーバシーケンスを所定の値だけ増加させ、上記第1サーバシーケンスを含む状態更新メッセージを生成する段階と、上記生成された状態更新メッセージを上記ロケーションサーバと同じレプリケーショングループに属する他のロケーションサーバに送信する段階と、上記ロケーションサーバと同じレプリケーショングループに属する他のロケーションサーバから状態更新メッセージを受信する段階(上記受信した状態更新メッセージは、第2サーバシーケンスを含む)と、上記状態更新メッセージの受信に応答して、上記受信した状態更新メッセージに含まれる第2サーバシーケンスが上記ロケーションサーバに保持された第1サーバシーケンスよりも大きい場合に、上記ロケーションサーバに保持された第1サーバシーケンスを上記受信した状態更新メッセージに含まれる第2サーバシーケンスに変更する段階と、を含むことを特徴とする。
【0019】
また、本発明のさらに他の側面に係る同じレプリケーショングループに属する第1及び第2メンバーサーバを同期化する同じレプリケーショングループに属するサーバの同期化方法は、上記第1メンバーサーバに第1サーバシーケンス及び第1サーバ識別子を保持する段階と、サービスサーバから外部メッセージを受信する段階と、上記外部メッセージの受信に応答して上記第1サーバシーケンスを所定の値だけ増加させ、上記第1サーバシーケンス及び上記第1サーバ識別子を含む第1状態更新メッセージを生成する段階と、上記第1状態更新メッセージを上記第2メンバーサーバに送信する段階と、上記第2メンバーサーバから第2状態更新メッセージを受信する段階(上記第2状態更新メッセージは、第2サーバシーケンス及び第2サーバ識別子を含む)と、上記第2状態更新メッセージの受信に応答して、上記第2状態更新メッセージに含まれた第2サーバシーケンスが上記第1メンバーサーバに保持された上記第1サーバシーケンスよりも大きい場合に、上記第1メンバーサーバに保持された上記第1サーバシーケンスを上記第2サーバシーケンスに変更する段階と、上記第1状態更新メッセージの第1サーバシーケンス及び上記第2状態更新メッセージの第2サーバシーケンスの大きい順に、上記第1状態更新メッセージ及び上記第2状態更新メッセージの順序を決定する段階と、を含むことを特徴とする。
【0020】
この場合、上記第1状態更新メッセージの第1サーバシーケンス及び上記第2状態更新メッセージの第2サーバシーケンスが同じである場合に、上記第1状態更新メッセージの第1サーバ識別子及び上記状態更新メッセージの第2サーバ識別子の大きい順に、上記第1状態更新メッセージ及び上記第2状態更新メッセージの順序を決定することができる。
【発明の効果】
【0021】
本発明によれば、複数のサービスサーバからログイン/ログアウトメッセージを受信して、ユーザのログ状態情報を中央で管理しつつ、ログ状態情報を管理するサーバをレプリケーションすることでログ状態情報を管理するサーバの負荷を低減させる方法及びシステムが提供される。
【0022】
また、本発明によれば、複数のサービスサーバから外部メッセージを受信し、当該メッセージをレプリケーショングループに属するメンバーサーバ間で同じ順序を有するように処理することで、メンバーサーバが同じ状態を有するようにする方法及びシステムが提供される。
【0023】
また、本発明によれば、レプリケーショングループに属するメンバーサーバにメッセージが互いに異なる順序で伝達されたとしても、1つのレプリケーショングループに属するメンバーサーバは、受信したメッセージをすべて同じ順序で整列することができる。
【0024】
また、本発明によれば、複数のサービスサーバを介してユーザにサービスを提供する環境において、任意のユーザが現在どのサービスサーバにログイン/ログアウトしたのかに関するログイン/ログアウト状態情報及び位置情報をユーザに提供することができる。
【0025】
また、本発明によれば、複数のサービスサーバからログイン/ログアウトメッセージを受信してユーザのログ状態情報を中央で管理しつつ、ログ状態情報を管理するサーバをレプリケーションすることで、ログ状態情報を管理するサーバの負荷を低減させることができる。
【発明を実施するための最良の形態】
【0026】
以下、添付の図面を参照して、本発明の実施形態について詳しく説明する。
【0027】
図3は、本発明に係るレプリケーショングループで構成された複数のロケーションサーバとサービスサーバ及びユーザ端末機のネットワーク連結を示した図である。
【0028】
ユーザがユーザ端末機301、302及びインターネット303を介して、プレイしたいオンラインゲームを提供するサービスサーバ304、305、306に接続すると、サービスサーバ304、305、306は、ユーザのログイン/ログアウトメッセージ(外部メッセージ)をレプリケーショングループ307に属するロケーションサーバ308、309、310、311のうちの1つのロケーションサーバ308に送信する。
【0029】
このとき、サービスサーバ304、305、306が、レプリケーショングループ307に属するロケーションサーバ308、309、310、311のうちの1つのロケーションサーバではなく、全ロケーションサーバに外部メッセージを送信する場合、数百にも及ぶサービスサーバとロケーションサーバとの間の連結を管理しなければならなくなるため、レプリケーショングループ307に属するロケーションサーバ308、309、310、311間の状態の同期化が極めて困難になる。したがって、本発明では、サービスサーバは、外部メッセージをレプリケーショングループ307に属するロケーションサーバ308、309、310、311のうちの1つに送信する。
【0030】
このために、サービスサーバは、エニーキャスト(anycast)を用い、サービスサーバ304、305、306とロケーションサーバ308、309、310、311との間の連結を提供するネットワークが、エニーキャスト機能を提供する。
【0031】
また、他の実施形態としては、レプリケーショングループ307に属するロケーションサーバ308、309、310、311を1つのスイッチに連結し、当該スイッチがローリング方式によってロケーションサーバ308、309、310、311のうちの1つを選択し、選択されたロケーションサーバにサービスサーバ304、305、306から受信される外部メッセージを伝達する方法を採用することも可能である。
【0032】
さらに他の実施形態としては、サービスサーバ304、305、306それぞれにレプリケーショングループ307に属するすべてのロケーションサーバ308、309、310、311のアドレスを保存し、各サービスサーバから外部メッセージをロケーションサーバに送信する度に、ローリング方式によってロケーションサーバを選択して外部メッセージを送信することも可能である。
【0033】
外部メッセージとは、ユーザのユーザ識別子、ユーザのログイン/ログアウト状態、及びユーザの位置情報を含むものである。ユーザ識別子とは、ユーザを識別するためのものであって、例えば、サービスサーバにログイン/ログアウトしたユーザがログインに使用したユーザ識別子が用いられる。ユーザのログイン/ログアウト状態とは、ユーザがログインをしたのか又はログアウトをしたのかに関する情報を意味する。ユーザの位置情報とは、ユーザがどこにログインをしたのか又はどこからログアウトをしたのかに関する情報である。位置情報は、ユーザがログイン/ログアウトをしたサービスサーバに関する情報(サービスサーバのIPアドレス又はサービスサーバ名など)であったり、ユーザがログイン/ログアウトをしたサービスの識別子(例えば、「ゴーストップ」、「フーラ」、「ポーカ」など)であったりする。1つのサービスが複数のチャンネルで提供される場合、位置情報は、ユーザがログイン/ログアウトをしたサービスの識別子とユーザがログイン/ログアウトをしたチャンネルの識別子との組み合わせで成される。位置情報は、サービス環境全体において、ユーザが最後にどこにログインをしたのか又はどこからログアウトをしたのかに関する情報を提供する。
【0034】
外部メッセージを受信したロケーションサーバ308は、外部メッセージを処理して状態更新メッセージを生成する。状態更新メッセージは、ロケーションサーバ308によって、レプリケーショングループ307に属する他のロケーションサーバ309、310、311に伝達される。このとき、ロケーションサーバ308は、他のロケーションサーバ309、310、311にマルチキャスト(multicast)方式によって状態更新メッセージを伝達する。このためには、ロケーションサーバ308、309、310、311の連結を提供するネットワークが、マルチキャスト機能を提供する。
【0035】
また、他の実施形態としては、レプリケーショングループ307に属する他のロケーションサーバ309、310、311のアドレスを保存し、外部メッセージを受信したロケーションサーバ308が他のロケーションサーバ309、310、311それぞれにユニキャスト(unicast)方式によって状態更新メッセージを伝達することも可能である。
【0036】
しかしながら、このように伝達される外部メッセージ及び状態更新メッセージは、全ロケーションサーバに同じ順序で伝達される保証がない、当該メッセージを全ロケーションサーバにおいて同じ順序で整列する方法が必要となる。
【0037】
図5は、本発明に係る同じレプリケーショングループに属する他のメンバーサーバと状態を同期化するメンバーサーバの構成を示したブロック図である。
【0038】
本発明の一実施形態に係るメンバーサーバ500は、サーバ識別子保存部501と、サーバシーケンス保存部502と、メッセージ受信部503と、外部メッセージ処理部504と、状態更新メッセージ処理部505と、メッセージバッファ506と、メッセージ順序決定部507と、ユーザ状態識別部508とを含む。メンバーサーバとは、ユーザの位置情報を管理するロケーションサーバである。
【0039】
サーバ識別子保存部501は、メンバーサーバをレプリケーショングループ内で唯一に識別できるサーバ識別子を保存する。本発明の一実施形態では、IPアドレスをサーバ識別子として用いている。サーバ識別子は、以後、メッセージバッファに保存されたメッセージの順序を決定する際、メッセージのサーバシーケンスが同一である場合に用いられる。
【0040】
サーバシーケンス保存部502は、各メンバーサーバで管理されるサーバシーケンスを保存する。1つのレプリケーショングループが初めて生成される場合には、レプリケーショングループに属するすべてのメンバーサーバのサーバシーケンスは0で初期化される。
【0041】
メッセージ受信部503は、サービスサーバから外部メッセージを受信する。サービスサーバは、例えば、ゲームサービスを提供するゲームサーバである。外部メッセージは、ユーザのユーザ識別子、ユーザがログイン/ログアウトしたのかに関するユーザログイン/ログアウト状態、及びユーザがどこにログインをしたのか又はどこからログアウトをしたのかに関する位置情報を含む。
【0042】
さらに、メッセージ受信部503は、同じレプリケーショングループに属する他のメンバーサーバから状態更新メッセージ(第2状態更新メッセージ)を受信する。当該状態更新メッセージは、ユーザのユーザ識別子、ユーザのログイン/ログアウト状態、及びユーザの位置情報だけではなく、他のメンバーサーバに保存されたサーバシーケンス(第2サーバシーケンス)を含む。本発明のさらに他の実施形態によれば、第2状態更新メッセージは、他のメンバーサーバのサーバ識別子保存部に保存されているサーバ識別子を追加的に含んでいる。
【0043】
外部メッセージ処理部504は、外部メッセージの受信に応答して第1サーバシーケンスを所定の値(例えば、1)だけ増加させ、第1サーバシーケンスを含む第1状態更新メッセージを生成して第2メンバーサーバに送信する。外部メッセージ処理部504は、外部メッセージに含まれたユーザのユーザ識別子、ユーザのログイン/ログアウト状態、及びユーザの位置情報に、自身のサーバシーケンス保存部502に保存されている第1サーバシーケンスを含ませて第1状態更新メッセージを生成する。本発明のさらに他の実施形態によれば、外部メッセージ処理部504は、メンバーサーバのサーバ識別子保存部501に保存されたサーバ識別子を追加的に含んで第1状態更新メッセージを生成する。さらに、外部メッセージ処理部504は、生成された第1状態更新メッセージをメッセージバッファ506に保存する。
【0044】
状態更新メッセージ処理部505は、第2状態更新メッセージの受信に応答して、第2状態更新メッセージに含まれた第2サーバシーケンスがサーバシーケンス保存部501に保持された第1サーバシーケンスよりも大きい場合に、第1サーバシーケンスを第2サーバシーケンスに変更してサーバシーケンス保存部501に保存する。また、状態更新メッセージ処理部505は、受信された第2状態更新メッセージをメッセージバッファ506に保存する。第2状態更新メッセージは、ユーザ識別子、ユーザのログイン/ログアウト状態、ユーザの位置情報、及び第2状態更新メッセージを送信したメンバーサーバに保存された第2サーバシーケンスを含む。本発明のさらに他の実施形態によれば、第2状態更新メッセージは、第2状態更新メッセージを送信したメンバーサーバのサーバ識別子を追加的に含む。
【0045】
メッセージ順序決定部507は、メッセージバッファ506に保存された状態更新メッセージのサーバシーケンスに従って状態更新メッセージの順序を決定する。すなわち、メッセージ順序決定部507は、第1状態更新メッセージの第1サーバシーケンス及び第2状態更新メッセージの第2サーバシーケンスの大きさ順に第1状態更新メッセージ及び第2状態更新メッセージの順序を決定する。
【0046】
第1状態更新メッセージの第1サーバシーケンス及び第2状態更新メッセージの第2サーバシーケンスが同じであれば、メッセージ順序決定部507は、第1状態更新メッセージの第1サーバ識別子及び第2状態更新メッセージの第2サーバ識別子を用いて第1状態更新メッセージ及び第2状態更新メッセージの順序を決定する。例えば、2つの状態更新メッセージのサーバシーケンスが同じである場合には、状態更新メッセージのサーバ識別子の大きさ順に、第1状態更新メッセージ及び第2状態更新メッセージの順序を決定する。本発明によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するため、メンバーサーバは自身の状態を互いに同期化(synchronize)できる。
【0047】
ユーザ状態識別部508は、メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスの順序に従ってユーザの最終ログ状態を決定する。メッセージ順序決定部507によってメッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンス(又は、サーバシーケンス及びサーバ識別子の組み合わせ)の順序に従って状態更新メッセージの順序が決定されるため、ユーザ状態識別部508は、各ユーザ別の最終メッセージによって各ユーザの最終ログ状態を決定する。本発明によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するため、同じレプリケーショングループに属するメンバーサーバが決定した1つのユーザに対する最終ログ状態はすべて同じになる。すなわち、どのユーザが現在ログイン中であるのか又はログアウトしたのかに関して、全メンバーサーバが同じ値を有するようになる。
【0048】
本発明の一実施形態によれば、外部メッセージ、第1状態更新メッセージ、及び第2状態更新メッセージは、ユーザがログイン/ログアウトしたチャンネルに関する位置情報を含む。この場合、ユーザ状態識別部508は、メッセージバッファ506に保存された状態更新メッセージに含まれたサーバシーケンスの順序(又はサーバシーケンス及びサーバ識別子の組み合わせ)によってユーザの最終位置を決定する。すなわち、ユーザがログイン中である場合に、該ユーザがどのチャンネルにログイン中であるかを決定する。本発明によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するようになるため、同じレプリケーショングループに属するメンバーサーバが決定した1つのユーザに対する最終位置情報はすべて同じになる。すなわち、あるユーザがログイン中である場合、該ユーザがどこにログイン中であるのか関して、全メンバーサーバが同じ値を有するようになる。
【0049】
図6は、本発明に係る同じレプリケーショングループに属するメンバーサーバの状態を同期化するためにメッセージを処理する手順を示したフローチャートである。
【0050】
段階S601で、第1メンバーサーバは、サーバシーケンス保存部502に第1サーバシーケンスを保持する。また、第1メンバーサーバは、サーバ識別子保存部501に第1サーバ識別子を保持する。本実施形態において、第1メンバーサーバ及び第2メンバーサーバは、同じレプリケーショングループに属する。また、第1メンバーサーバ及び第2メンバーサーバは、ユーザの位置情報を管理するロケーションサーバである。
【0051】
段階S602で、第1メンバーサーバは、サービスサーバから外部メッセージを受信したか否かを判断する。サービスサーバは、ユーザにネットワークを介してサービスを提供するサーバであって、例えば、ゲームサービスを提供するゲームサーバである。また、外部メッセージは、ユーザのログイン/ログアウトに関するログメッセージである。ログメッセージは、ユーザのユーザ識別子、ユーザがログイン/ログアウトしたかに関するユーザログイン/ログアウト状態、及びユーザがどこにログインをしたのか又はどこからログアウトをしたのかに関する位置情報を含む。
【0052】
段階S602で、第1メンバーサーバがサービスサーバから外部メッセージを受信すると、段階S603で、第1メンバーサーバは、外部メッセージの受信に応答して第1サーバシーケンスを所定の値(例えば、1)だけ増加させる。本実施形態において、サーバシーケンスは1ずつ増加すると説明しているが、必ずしも1だけ増加させる必要はなく、一定の大きさ(例えば、2)を増加させるように構成してもよい。また、一定の大きさだけ減少させるように構成することもできる。このような構成も、本発明の技術的思想に含まれ、特許請求の範囲の記載された技術的範囲における均等な範囲に属するようになる。
【0053】
段階S604で、第1メンバーサーバは、第1サーバシーケンスを含む第1状態更新メッセージを生成する。第1メンバーサーバは、外部メッセージに含まれたユーザのユーザ識別子、ユーザログイン/ログアウト状態、ユーザの位置情報に、自身のサーバシーケンス保存部502に保存された第1サーバシーケンスを含ませて第1状態更新メッセージを生成する。本発明のさらに他の実施形態によれば、第1メンバーサーバは、メンバーサーバのサーバ識別子保存部501に保存されたサーバ識別子を追加的に含んで第1状態更新メッセージを生成する。
【0054】
段階S605で、第1メンバーサーバは、第1状態更新メッセージを第2メンバーサーバに送信する。段階S606で、第1メンバーサーバは、生成された第1状態更新メッセージをメッセージバッファ506に保存する。
【0055】
段階S602で、第1メンバーサーバがサービスサーバから外部メッセージを受信しない場合、段階S607で、第1メンバーサーバは、第1メンバーサーバが第2メンバーサーバから状態更新メッセージを受信したか否かを判断する。段階S607で、第1メンバーサーバが第2メンバーサーバから状態更新メッセージを受信しない場合、第1メンバーサーバは段階S602に戻る。
【0056】
第2状態更新メッセージは、ユーザ識別子、ユーザログイン/ログアウト状態、ユーザの位置情報、及び第2メンバーサーバに保存された第2サーバシーケンスを含む。本発明のさらに他の実施形態によれば、第2状態更新メッセージは、第2メンバーサーバのサーバ識別子を追加的に含む。サーバ識別子は、メンバーサーバをレプリケーショングループ内で唯一に識別する識別子であるが、本発明の一実施形態では、メンバーサーバのIPアドレスがサーバ識別子として用いられる。1つのサーバが複数のIPアドレスを有する場合には、大きさが小さいIPアドレスを選択する。
【0057】
段階S607で、第1メンバーサーバが第2メンバーサーバから状態更新メッセージを受信すると、第1メンバーサーバは第2状態更新メッセージの受信に応答して、段階S608で、第2状態更新メッセージに含まれた第2サーバシーケンスと第1メンバーサーバに保持された第1サーバシーケンスとを比較する。
【0058】
段階S608における比較の結果、第2状態更新メッセージに含まれた第2サーバシーケンスが第1メンバーサーバに保持された第1サーバシーケンスよりも大きい場合に、段階S609で、第1構成サーバは、第1メンバーサーバに保持された第1サーバシーケンスを第2サーバシーケンスに変更してサーバシーケンス保存部501に保存する。
【0059】
段階S609で、第1メンバーサーバは、受信した第2状態更新メッセージをメッセージバッファ506に保存する。本実施形態によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するため、メンバーサーバは自身の状態を互いに同期化できるようになる。
【0060】
図7は、本発明に係るメンバーサーバに保存されたメッセージの順序を決定する手順を示したフローチャートである。
【0061】
段階S701で、第1メンバーサーバは、メッセージバッファ506に保存された状態更新メッセージのサーバシーケンスを比較する。すなわち、第1状態更新メッセージの第1サーバシーケンス及び第2状態更新メッセージの第2サーバシーケンスを比較する。
【0062】
段階S701における比較の結果、メッセージバッファ506に保存された状態更新メッセージのサーバシーケンスが同じではなければ、段階S703で、第1メンバーサーバは、サーバシーケンスによって状態更新メッセージの順序を決定する。一方、段階S701で比較した結果、メッセージバッファ506に保存された状態更新メッセージのサーバシーケンスが同じであれば、段階S702で、第1メンバーサーバは、状態更新メッセージのサーバ識別子によって状態更新メッセージの順序を決定する。
【0063】
すなわち、第1状態更新メッセージの第1サーバシーケンス及び第2状態更新メッセージの第2サーバシーケンスが同じではなければ、第1メンバーサーバは、第1状態更新メッセージの第1サーバシーケンス及び第2状態更新メッセージの第2サーバシーケンスの大きさ順で第1状態更新メッセージ及び第2状態更新メッセージの順序を決定する。
【0064】
一方、第1状態更新メッセージの第1サーバシーケンス及び前記第2状態更新メッセージの第2サーバシーケンスが同じであれば、第1状態更新メッセージの第1サーバ識別子及び状態更新メッセージの第2サーバ識別子の大きさ順で第1状態更新メッセージ及び第2状態更新メッセージの順序を決定する。
【0065】
本発明の一実施形態によれば、状態更新メッセージは、ユーザのユーザ識別子、ユーザのログイン/ログアウト状態、及びユーザがログイン/ログアウトしたチャンネルに関する位置情報を含む。したがって、本発明に係るメンバーサーバは、自身のメッセージバッファに保存された状態更新メッセージを状態更新メッセージに含まれたサーバシーケンス(又はサーバシーケンス及びサーバ識別子の組み合わせ)の順序によって整列し、ユーザが最終的にログイン中であるかあるいはログアウト状態であるかを判断する。また、位置情報を参照して、ユーザがログイン中である場合には、ユーザがどのチャンネルにログインしたのかを判断する。
【0066】
本発明によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するようになるため、同じレプリケーショングループに属するメンバーサーバが決定した1つのユーザに対するログイン/ログアウト状態情報及び最終位置情報はすべて同じようになる。
【0067】
図8は、サービスサーバからレプリケーショングループに属するメンバーサーバのうちの1つに外部メッセージを送信する構成を示した図である。
【0068】
本実施形態において、サービスサーバ801は、オンラインゴーストップゲームサービスを提供するゲームサーバである。サービスサーバ801は、ゴーストップゲームサービスを複数のチャンネルで提供しており、ユーザは、該複数のチャンネルから1つを選択してゲームサービスを利用する。ユーザ「aaa」は、サービスサーバ801にログインしてゴーストップゲームの1番チャンネルでゴーストップゲームサービスを利用している。したがって、ロケーションサーバ1(符合802)のメッセージバッファ808、ロケーションサーバ2(符合803)のメッセージバッファ809、ロケーションサーバ3(面符合804)のメッセージバッファ810は、「aaa」がゴーストップ1番チャンネルにログインしたという状態更新メッセージを保存している。状態更新メッセージの「17」はサーバシーケンス値であるし、「#2」はサーバ識別子である。現在、ロケーションサーバ1(符合802)のサーバシーケンス805、ロケーションサーバ2(符合803)のサーバシーケンス806、ロケーションサーバ3(符合804)のサーバシーケンス807は、すべて「17」という同じ値を有している。本発明によれば、1つの状態更新メッセージのマルチキャスティングが終了すると、同じレプリケーショングループに属するメンバーサーバは、すべて同じサーバシーケンス値を有するようになる。
【0069】
ユーザ「aaa」がサービスサーバ801のゴーストップゲームの1番チャンネルでゴーストップゲームサービスを利用した後にログアウトすると、サービスサーバ801は、ログメッセージ811を1つのレプリケーショングループに属するロケーションサーバのうちの1つに送信する。例えば、ログメッセージ811が、ロケーションサーバ1(符合802)に送信される。ログメッセージ811は、ログアウトしたユーザのユーザ識別子である「aaa」、ユーザがログアウトした位置であるゲーム名及びチャンネル番号の組み合あわせ(「ゴーストップ−1」)、又はログインであるかログアウトであるかに関するログイン/ログアウト状態情報(図8では「ログアウト」)を含む。
【0070】
図9は、サービスサーバから外部メッセージを受信したメンバーサーバが同じレプリケーショングループに属する他のメンバーサーバに状態更新メッセージを送信する構成を示した図である。
【0071】
外部メッセージであるログメッセージ811を受信したロケーションサーバ1(符合902)は、ログメッセージの受信に応答して当該ロケーションサーバ1(図面符合902)のサーバシーケンスを所定の値(例えば、1)だけ増加させる。図8のロケーションサーバ1(図面符合802)のサーバシーケンスは17であったが、図9のロケーションサーバ1(図面符合902)のサーバシーケンスは18であり、1だけ増加されている。ロケーションサーバ1(図面符合902)は、ログメッセージ811に含まれたユーザのユーザ識別子、ユーザログイン/ログアウト状態、ユーザの位置情報に、自身のサーバシーケンス及びサーバ識別子を含ませて状態更新メッセージを生成する。符号908は、生成された状態更新メッセージを示したものである。生成された状態更新メッセージ908は、ログアウトしたユーザのユーザ識別子(「aaa」)、ユーザがログアウトした位置(「ゴーストップ−1」、ゴーストップゲームの1番チャンネルを意味する)、ログイン/ログアウト状態(「ログアウト」)、サーバシーケンス(「18」)、及びサーバ識別子(「#1」)を含む。ロケーションサーバ1(符合902)は、生成された状態更新メッセージ908を同じレプリケーショングループに属する他のロケーションサーバ903、904に送信する。
【0072】
図10は、本発明に係る図8及び図9のメッセージ処理を行った後の各メンバーサーバのメッセージバッファの状態及びサーバシーケンスの状態を示した図である。
【0073】
状態更新メッセージ908を送信したロケーションサーバ1(符合1002)は、自身のメッセージバッファ1008に状態更新メッセージ908、1011を保存する。このとき、状態更新メッセージをそのまま保存せずに、一部フォーマットを加工して保存することも可能であるが、これも本発明の技術的思想に含まれる。
【0074】
状態更新メッセージ908を受信したロケーションサーバ2、3(符合1003、1004)は、状態更新メッセージ908の受信に応答して、自身のサーバシーケンス保存部1006、1007に保持されたサーバシーケンスと状態更新メッセージ908に含まれたサーバシーケンスとを比較する。比較の結果、自身のサーバシーケンス保存部1006、1007に保持されたサーバシーケンスよりも状態更新メッセージ908に含まれたサーバシーケンスが大きいため、ロケーションサーバ2、3(符合1003、1004)は、自身のサーバシーケンス保存部1006、1007に保持されたサーバシーケンスである「17」を状態更新メッセージ908に含まれたサーバシーケンスである「18」に変更して保存する。
【0075】
また、ロケーションサーバ2、3(符合1003、1004)は、受信された状態更新メッセージ908をメッセージバッファ1009、1010に保存する。このとき、状態更新メッセージをそのまま保存せずに、一部フォーマットを加工して保存することも可能であるが、これも本発明の技術的思想に含まれる。
【0076】
ロケーションサーバ1、2、3(符合1002、1003、1004)のメッセージ順序決定部は、メッセージバッファに保存された状態更新メッセージのサーバ識別子によって状態更新メッセージの順序を決定する。図10に示したように、ロケーションサーバ1、2、3(符合1002、1003、1004)すべては、「aaa」がゴーストップ1番チャンネルにログインしたというメッセージのサーバシーケンス(「17」)が、「aaa」がゴーストップ1番チャンネルでログアウトしたというメッセージのサーバシーケンス(「18」)よりも小さいため、同じ順序でメッセージが整列される。
【0077】
図10に示したように、本発明によれば、同じレプリケーショングループに属するロケーションサーバ1、2、3(図面符合1002、1003、1004)は、すべてのメッセージバッファに同じ状態更新メッセージを含む。また、状態更新メッセージは同じ順序で整列されるため、ロケーションサーバ1、2、3(符合1002、1003、1004)は、自身の状態を互いに同期化できるようになる。
【0078】
図11は、本発明に係る複数のサービスサーバからそれぞれレプリケーショングループに属するメンバーサーバに外部メッセージを送信する構成を示した図である。
【0079】
図11は、サービスサーバ1、2(符合1101、1102)が、ほぼ同じくらいの時間にログインメッセージ1109、1110を互いに異なるロケーションサーバ1103、1105に送信する場合を示した図である。サービスサーバ1(符合1101)は、ロケーションサーバ1(符合1103)にユーザaaaがゴーストップ1番チャンネルにログインしたというログメッセージ1109を送信し、サービスサーバ2(符合1102)は、ロケーションサーバ3(符合1105)にユーザaaaがフーラ5番チャンネルにログインしたというログメッセージ1110を送信している。現在、ロケーションサーバ1103、1104、1105は、すべて同じサーバシーケンス値を有している。
【0080】
図12は、サービスサーバから外部メッセージを受信したメンバーサーバが、同じレプリケーショングループに属する他のメンバーサーバに状態更新メッセージを送信する構成を示した図である。
【0081】
ログメッセージ1109、1110を受信したロケーションサーバ1、3(符合1203、1205)は、それぞれ自身のサーバシーケンス1206、1208を1ずつ増加させ、状態更新メッセージ1209、1210を生成して自身のメッセージバッファに保存し、レプリケーショングループに属する他のロケーションサーバに送信する。このとき、状態更新メッセージ1209、1210は、サーバシーケンス値の他にもサーバ識別子を含む。本実施形態において、ロケーションサーバ1(符合1203)のサーバ識別子は「#1」であり、ロケーションサーバ3(符合1205)のサーバ識別子は「#3」である。
【0082】
図12で、状態更新メッセージ1209、1210を送信したロケーションサーバ1、3(符合1203、1205)のサーバシーケンスは、1ずつ増加されて「18」という値を有しているが、ロケーションサーバ2は、図11と同じように「17」という値をそのまま保持している。
【0083】
図13は、本発明に係る図11及び図12のメッセージ処理を行った後の各メンバーサーバのメッセージバッファの状態及びサーバシーケンスの状態を示した図である。
【0084】
ロケーションサーバ2(符合1204)が状態更新メッセージ1209、1210のうちのどちらを先に受信したかに関係なく、すべてが処理された後のサーバシーケンス及びメッセージバッファの状態は、図13に示す通りとなる。
【0085】
例えば、ロケーションサーバ2(符合1204)が状態更新メッセージ1209を先に受信した後に状態更新メッセージ1210を受信した場合について説明する。ロケーションサーバ2(符合1204)は、状態更新メッセージ1209のサーバシーケンス値(「18」)と自身のサーバシーケンス値(「17」)とを比較し、状態更新メッセージ1209のサーバシーケンス値(「18」)が自身のサーバシーケンス値(「17」)よりも大きいため、自身のサーバシーケンス値を状態更新メッセージ1209のサーバシーケンス値(「18」)に変更する。これによって、ロケーションサーバ2(符合1204)のサーバシーケンス保存部1307は、「18」というサーバシーケンス値を保存するようになる。その後に、受信した状態更新メッセージ1209をメッセージバッファ1310に保存する。
【0086】
その次に、ロケーションサーバ2(符合1304)は、状態更新メッセージ1210を受信するが、状態更新メッセージ1210のサーバシーケンス値「18」が自身のサーバシーケンス値「18」と同じであるため、自身のサーバシーケンス値は変更せず、単に受信した状態更新メッセージ1210をメッセージバッファ1310に保存する。
【0087】
結局、ロケーションサーバ2(符合1304)は、図13のような状態となる。ロケーションサーバ2(符合1304)が状態更新メッセージ1210を先に受信した後に状態更新メッセージ1209を受信しても、同じような結果となる。
【0088】
ロケーションサーバ1(符合1303)は、ロケーションサーバ3(符合1305)から受信した状態更新メッセージ1210のサーバシーケンス値「18」と自身のサーバシーケンス値(「18」)とを比較する。比較した結果、状態更新メッセージ1210のサーバシーケンス値(「18」)が自身のサーバシーケンス値(「18」)と同じであるため、自身のサーバシーケンス値は変更せず、単に受信した状態更新メッセージ1210をメッセージバッファ1309に保存する。
【0089】
ロケーションサーバ3(符合1305)も同様に、ロケーションサーバ1(符合1303)から状態更新メッセージ1209を受信した後、自身のサーバシーケンス値は変更せず、単に受信した状態更新メッセージ1209をメッセージバッファ1311に保存する。
【0090】
図13において、ロケーションサーバ1(符合1303)のメッセージバッファ1309に保存された状態更新メッセージ1312、1313は、サーバシーケンスの値が同じであるため、サーバ識別子によって整列される。同じように、ロケーションサーバ2、3(符合1304、1305)でも、状態更新メッセージがサーバ識別子によって整列され、ロケーションサーバ1、2、3(符合1303、1304、1305)はすべて同じ順序でメッセージを整列するようになる。
【0091】
本発明に係る実施形態は、コンピュータにより具現される多様な動作を実行するためのプログラム命令を含むコンピュータ読取可能な記録媒体を含む。当該記録媒体は、プログラム命令、データファイル、データ構造などを単独又は組み合わせて含むこともできる。また、記録媒体及びプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知であり使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク及び磁気テープのような磁気媒体、CD−ROM、DVDのような光記録媒体、フロプティカルディスクのような磁気−光媒体、及びROM、RAM、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれる。また、上記記録媒体は、プログラム命令、データ構造などを保存する信号を送信する搬送波を含む光又は金属線、導波管などの送信媒体でもある。プログラム命令の例としては、コンパイラによって生成されるもののような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行される高級言語コードを含む。
【0092】
上述したように、本発明を好ましい実施形態に則して説明したが、本発明の属する技術分野において熟練した当業者にとっては、特許請求の範囲に記載された本発明の技術的思想及びその領域から逸脱しない範囲内で、本発明を多様に修正及び変更させることができることを理解することができるであろう。すなわち、本発明の技術的範囲は、特許請求の範囲に基づいて定められ、発明を実施するための最良の形態により制限されるものではない。
【図面の簡単な説明】
【0093】
【図1】従来技術に係る複数のサービスサーバに接続するユーザ端末機のネットワーク接続を示した図である。
【図2】従来技術に係るユーザのロケーション情報を管理するためのロケーションサーバとサービスサーバのネットワーク接続を示した図である。
【図3】レプリケーショングループで構成された複数のロケーションサーバとサービスサーバ及びユーザ端末機のネットワーク連結を示した図である。
【図4】レプリケーショングループに属する複数のロケーションサーバに到着したメッセージを順に示した図である。
【図5】本発明に係る同じレプリケーショングループに属する他のメンバーサーバと状態を同期化するメンバーサーバの構成を示したブロック図である。
【図6】本発明に係る同じレプリケーショングループに属するメンバーサーバの状態を同期化するためにメッセージを処理する手順を示したフローチャートである。
【図7】本発明に係るメンバーサーバに保存されたメッセージの順序を決定する手順を示したフローチャート。
【図8】サービスサーバからレプリケーショングループに属するメンバーサーバのうちの1つに外部メッセージを送信する構成を示した図である。
【図9】サービスサーバから外部メッセージを受信したメンバーサーバが同じレプリケーショングループに属する他のメンバーサーバに状態更新メッセージを送信する構成を示した図である。
【図10】本発明に係る図8及び図9のメッセージ処理を行った後の各メンバーサーバのメッセージバッファの状態及びサーバシーケンスの状態を示した図である。
【図11】本発明に係る複数のサービスサーバからそれぞれのレプリケーショングループに属するメンバーサーバに外部メッセージを送信する構成を示した図である。
【図12】サービスサーバから外部メッセージを受信したメンバーサーバが同じレプリケーショングループに属する他のメンバーサーバに状態更新メッセージを送信する構成を示した図である。
【図13】本発明に係る図11及び図12のメッセージ処理を行った後の各メンバーサーバのメッセージバッファの状態及びサーバシーケンスの状態を示した図である。
【技術分野】
【0001】
本発明は、複数のサービスサーバによって独立的に管理されていたユーザログイン/ログアウト情報を、別途のロケーションサーバを介して管理するためのものであり、より詳細には、ロケーションサーバをレプリケーショングループで構成し、当該レプリケーショングループに属するロケーションサーバの状態を同期化する方法及びそのシステムに関する。
【背景技術】
【0002】
図1は、従来技術に係る複数のサービスサーバに接続するユーザ端末機のネットワーク接続を示した図である。
【0003】
本出願人であるNHNコーポレーションは、自社のハンゲームサイトを介して、ゴーストップ、フーラ、ポーカ、テトリス、チェスなど多数のオンラインゲームサービスを提供している。図1において、ユーザ端末機101、102を用いるユーザは、インターネット103を介して、プレイしたいオンラインゲームを提供するゲームサーバ104、105、106に接続する。例えば、ゲームサーバ104、105は、ゴーストップゲームサービスを提供したり、ゲームサーバ106は、フーラゲームサービスを提供したりする。このとき、ユーザのログイン/ログアウトは、各ゲームサーバ104、105、106で個別に行われる上、ユーザのログイン/ログアウト情報の管理も各ゲームサーバ104、105、106で個別に行われていた。したがって、従来技術では、1つのゲームサーバにログインしているユーザは、他のゲームサーバにログインしたユーザの現在状態(例えば、ログインしたのかログアウトしたのか、又はどのゲームをしているのか)について全く知ることができなかった。
【0004】
図2は、従来技術に係るユーザのロケーション情報を管理するためのロケーションサーバとサービスサーバのネットワーク接続を示した図である。
【0005】
図2では、図1に示した構成の問題点を解決するために、全ゲームサーバ204、205、206におけるユーザのログイン/ログアウト情報を集中的に管理するロケーションサーバ207(Location Server)を設けている。ユーザがユーザ端末機201、202及びインターネット203を介して、プレイしたいオンラインゲームを提供するゲームサーバ204、205、206に接続すると、ゲームサーバ204、205、206は、ユーザのログイン/ログアウト情報をロケーションサーバ207に送信する。これにより、ロケーションサーバ207は、全ゲームサーバ204、205、206におけるユーザのログイン/ログアウト情報を集中的に管理するようになるため、ユーザに、どのサーバにログインしたかのユーザ状態を提供することができる。
【0006】
しかしながら、現在、NHNコーポレーションによって提供されているオンラインゲームは、数百台のゲームサーバによって提供されているため、当該ゲームサーバそれぞれのログイン/ログアウト情報の管理を1つのロケーションサーバで行うには、ロケーションサーバに対するシステムの負荷が極めて大きくなるという問題が生じるようになる。
【0007】
したがって、このようなロケーションサーバに集中するシステム負荷の問題を解決するために、ロケーションサーバをレプリケーショングループ(replication group)で構成する方式が提案されている。図3は、レプリケーショングループで構成された複数のロケーションサーバとサービスサーバ及びユーザ端末機のネットワーク連結を示した図である。レプリケーショングループに属するロケーションサーバは、ユーザのログイン/ログアウト状態に関して同じ状態情報を有する必要がある。
【0008】
しかしながら、図4に示すように、レプリケーショングループに属するロケーションサーバに伝達されるユーザのログイン/ログアウトメッセージが、すべてのロケーションサーバに物理的に同じ順序で伝達される保障がない。図4は、レプリケーショングループに属する複数のロケーションサーバに到着したメッセージを順に示した図である。
【0009】
ユーザがユーザ端末機301、302及びインターネット303を介して、プレイしたいオンラインゲームを提供するゲームサーバ304、305、306に接続すると、ゲームサーバ304、305、306は、ユーザのログイン/ログアウトメッセージをレプリケーションループ307に属するロケーションサーバ308、309、310、311のうちの1つのロケーションサーバ308に送信する。その後、ユーザのログイン/ログアウトメッセージを受信したロケーションサーバ308は、ユーザのログイン/ログアウトメッセージをレプリケーショングループ307に属した他のロケーションサーバ309、310、311に送信する。しかし、このように伝達されるユーザのログイン/ログアウトメッセージは、すべての各ロケーションサーバに同じ順序で伝達される保証がし難い。
【0010】
例えば、図4は、ある瞬間にロケーションサーバ308、309、310に到着したメッセージを示した図である。ロケーションサーバ308には、ログイン/ログアウトメッセージ401、402、403がそれぞれT1、T2、T3の時間に到着している。メッセージ401は、ユーザ「aaa」が「ゴーストップ」というゲームの「1」番チャンネルに「ログイン」したことを示している。しかし、ロケーションサーバ309には、「aaa」が「ゴーストップ」というゲームの「1」番チャンネルにログインしたというメッセージ411と、「aaa」が「ゴーストップ」というゲームの「1」番チャンネルからログアウトしたというメッセージ412だけが到着している状態である。また、ロケーションサーバ310は、ロケーションサーバ308と同じ数のメッセージを有しているものの、ロケーションサーバ308とロケーションサーバ310に到着したメッセージの順序が相違している。すなわち、ロケーションサーバ308にはメッセージ401、メッセージ402、メッセージ403の順で到着しているが、ロケーションサーバ310にはメッセージ421、メッセージ422、メッセージ423の順で到着している。仮に、ロケーションサーバ308、309、310において、「aaa」というユーザの最終ログイン状態を最後に到着したメッセージに基づいて判断する場合は、ロケーションサーバ308では、ユーザ「aaa」が「フーラ」というゲームの「5」番チャンネルにログインしていると判断する。一方、ロケーションサーバ309及びロケーションサーバ310では、ユーザ「aaa」が「ゴーストップ」というゲームの「1」番チャンネルからログアウトしていると判断するようになる。したがって、レプリケーショングループ307に属するロケーションサーバ308、309、310で判断される現在の状態は、互いに異なるようになる。
【0011】
したがって、1つのレプリケーショングループに属するロケーションサーバにユーザのログイン/ログアウトメッセージが互いに異なる順序で伝達されたとしても、レプリケーショングループに属するロケーションサーバがすべて同じ状態情報を保持するようにする方法及びそのシステムが求められている。
【発明の開示】
【発明が解決しようとする課題】
【0012】
本発明は、このような従来技術を改善するために案出されたものであって、複数のサービスサーバからログイン/ログアウトメッセージを受信してユーザのログ状態情報を中央で管理しつつ、ログ状態情報を管理するサーバをレプリケーションすることで、ログ状態情報を管理するサーバの負荷を低減させる方法及びそのシステムを提供することを目的とする。
【0013】
また、本発明は、複数のサービスサーバから外部メッセージを受信し、当該メッセージをレプリケーショングループに属するメンバーサーバ間で同じ順序を有するように処理することで、各メンバーサーバが同じ状態を有するようにする方法及びそのシステムを提供することを目的とする。
【0014】
また、本発明は、レプリケーショングループに属するメンバーサーバにメッセージが互いに異なる順序で伝達されたとしても、1つのレプリケーショングループに属するメンバーサーバが、受信したメッセージを同じ順序で整列できる方法及びそのシステムを提供することを他の目的とする。
【0015】
また、本発明は、複数のサービスサーバを介してユーザにサービスを提供する環境において、任意のユーザが現在どのサービスサーバにログイン/ログアウトしているのかに関するログイン/ログアウト状態情報及び位置情報をユーザに提供することを他の目的とする。
【0016】
また、本発明は、複数のサービスサーバからログイン/ログアウトメッセージを受信してユーザのログ状態情報を中央で管理しつつ、ログ状態情報を管理するサーバをレプリケーションすることで、当該ログ状態情報を管理するサーバの負荷を低減させる方法及びシステムを提供することを目的とする。
【課題を解決するための手段】
【0017】
前記の目的を達成し、従来技術の問題点を解決するために、本発明の1つの側面における同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステムは、第1サーバシーケンスを保存するサーバシーケンス保存部と、サービスサーバから外部メッセージを受信し、上記メンバーサーバと同じレプリケーショングループに属する第2メンバーサーバから第2状態更新メッセージを受信するメッセージ受信部(上記第2状態更新メッセージは、第2サーバシーケンスを含む)と、上記外部メッセージの受信に応答して上記第1サーバシーケンスを所定の値だけ増加させ、上記第1サーバシーケンスを含む第1状態更新メッセージを生成して上記第2メンバーサーバに送信する外部メッセージ処理部と、上記第2状態更新メッセージの受信に応答して、上記第2状態更新メッセージに含まれた第2サーバシーケンスが上記サーバシーケンス保存部に保持された上記第1サーバシーケンスよりも大きければ、上記第1サーバシーケンスを上記第2サーバシーケンスに変更する状態更新メッセージ処理部と、上記第1状態更新メッセージの第1サーバシーケンス及び上記第2状態更新メッセージの第2サーバシーケンスの大きい順に、上記第1状態更新メッセージ及び上記第2状態更新メッセージの順序を決定するメッセージ順序決定部とを有することを特徴とする。これにより、本発明の各メンバーサーバは、自身の状態を同じレプリケーショングループに属する他のメンバーサーバと同期させることができる。
【0018】
本発明のさらに他の側面に係る同じレプリケーショングループに属するロケーションサーバを同期化するロケーションサーバ同期化方法は、上記ロケーションサーバに第1サーバシーケンスを保持する段階と、サービスサーバからログメッセージを受信する段階と、上記ログメッセージの受信に応答して上記第1サーバシーケンスを所定の値だけ増加させ、上記第1サーバシーケンスを含む状態更新メッセージを生成する段階と、上記生成された状態更新メッセージを上記ロケーションサーバと同じレプリケーショングループに属する他のロケーションサーバに送信する段階と、上記ロケーションサーバと同じレプリケーショングループに属する他のロケーションサーバから状態更新メッセージを受信する段階(上記受信した状態更新メッセージは、第2サーバシーケンスを含む)と、上記状態更新メッセージの受信に応答して、上記受信した状態更新メッセージに含まれる第2サーバシーケンスが上記ロケーションサーバに保持された第1サーバシーケンスよりも大きい場合に、上記ロケーションサーバに保持された第1サーバシーケンスを上記受信した状態更新メッセージに含まれる第2サーバシーケンスに変更する段階と、を含むことを特徴とする。
【0019】
また、本発明のさらに他の側面に係る同じレプリケーショングループに属する第1及び第2メンバーサーバを同期化する同じレプリケーショングループに属するサーバの同期化方法は、上記第1メンバーサーバに第1サーバシーケンス及び第1サーバ識別子を保持する段階と、サービスサーバから外部メッセージを受信する段階と、上記外部メッセージの受信に応答して上記第1サーバシーケンスを所定の値だけ増加させ、上記第1サーバシーケンス及び上記第1サーバ識別子を含む第1状態更新メッセージを生成する段階と、上記第1状態更新メッセージを上記第2メンバーサーバに送信する段階と、上記第2メンバーサーバから第2状態更新メッセージを受信する段階(上記第2状態更新メッセージは、第2サーバシーケンス及び第2サーバ識別子を含む)と、上記第2状態更新メッセージの受信に応答して、上記第2状態更新メッセージに含まれた第2サーバシーケンスが上記第1メンバーサーバに保持された上記第1サーバシーケンスよりも大きい場合に、上記第1メンバーサーバに保持された上記第1サーバシーケンスを上記第2サーバシーケンスに変更する段階と、上記第1状態更新メッセージの第1サーバシーケンス及び上記第2状態更新メッセージの第2サーバシーケンスの大きい順に、上記第1状態更新メッセージ及び上記第2状態更新メッセージの順序を決定する段階と、を含むことを特徴とする。
【0020】
この場合、上記第1状態更新メッセージの第1サーバシーケンス及び上記第2状態更新メッセージの第2サーバシーケンスが同じである場合に、上記第1状態更新メッセージの第1サーバ識別子及び上記状態更新メッセージの第2サーバ識別子の大きい順に、上記第1状態更新メッセージ及び上記第2状態更新メッセージの順序を決定することができる。
【発明の効果】
【0021】
本発明によれば、複数のサービスサーバからログイン/ログアウトメッセージを受信して、ユーザのログ状態情報を中央で管理しつつ、ログ状態情報を管理するサーバをレプリケーションすることでログ状態情報を管理するサーバの負荷を低減させる方法及びシステムが提供される。
【0022】
また、本発明によれば、複数のサービスサーバから外部メッセージを受信し、当該メッセージをレプリケーショングループに属するメンバーサーバ間で同じ順序を有するように処理することで、メンバーサーバが同じ状態を有するようにする方法及びシステムが提供される。
【0023】
また、本発明によれば、レプリケーショングループに属するメンバーサーバにメッセージが互いに異なる順序で伝達されたとしても、1つのレプリケーショングループに属するメンバーサーバは、受信したメッセージをすべて同じ順序で整列することができる。
【0024】
また、本発明によれば、複数のサービスサーバを介してユーザにサービスを提供する環境において、任意のユーザが現在どのサービスサーバにログイン/ログアウトしたのかに関するログイン/ログアウト状態情報及び位置情報をユーザに提供することができる。
【0025】
また、本発明によれば、複数のサービスサーバからログイン/ログアウトメッセージを受信してユーザのログ状態情報を中央で管理しつつ、ログ状態情報を管理するサーバをレプリケーションすることで、ログ状態情報を管理するサーバの負荷を低減させることができる。
【発明を実施するための最良の形態】
【0026】
以下、添付の図面を参照して、本発明の実施形態について詳しく説明する。
【0027】
図3は、本発明に係るレプリケーショングループで構成された複数のロケーションサーバとサービスサーバ及びユーザ端末機のネットワーク連結を示した図である。
【0028】
ユーザがユーザ端末機301、302及びインターネット303を介して、プレイしたいオンラインゲームを提供するサービスサーバ304、305、306に接続すると、サービスサーバ304、305、306は、ユーザのログイン/ログアウトメッセージ(外部メッセージ)をレプリケーショングループ307に属するロケーションサーバ308、309、310、311のうちの1つのロケーションサーバ308に送信する。
【0029】
このとき、サービスサーバ304、305、306が、レプリケーショングループ307に属するロケーションサーバ308、309、310、311のうちの1つのロケーションサーバではなく、全ロケーションサーバに外部メッセージを送信する場合、数百にも及ぶサービスサーバとロケーションサーバとの間の連結を管理しなければならなくなるため、レプリケーショングループ307に属するロケーションサーバ308、309、310、311間の状態の同期化が極めて困難になる。したがって、本発明では、サービスサーバは、外部メッセージをレプリケーショングループ307に属するロケーションサーバ308、309、310、311のうちの1つに送信する。
【0030】
このために、サービスサーバは、エニーキャスト(anycast)を用い、サービスサーバ304、305、306とロケーションサーバ308、309、310、311との間の連結を提供するネットワークが、エニーキャスト機能を提供する。
【0031】
また、他の実施形態としては、レプリケーショングループ307に属するロケーションサーバ308、309、310、311を1つのスイッチに連結し、当該スイッチがローリング方式によってロケーションサーバ308、309、310、311のうちの1つを選択し、選択されたロケーションサーバにサービスサーバ304、305、306から受信される外部メッセージを伝達する方法を採用することも可能である。
【0032】
さらに他の実施形態としては、サービスサーバ304、305、306それぞれにレプリケーショングループ307に属するすべてのロケーションサーバ308、309、310、311のアドレスを保存し、各サービスサーバから外部メッセージをロケーションサーバに送信する度に、ローリング方式によってロケーションサーバを選択して外部メッセージを送信することも可能である。
【0033】
外部メッセージとは、ユーザのユーザ識別子、ユーザのログイン/ログアウト状態、及びユーザの位置情報を含むものである。ユーザ識別子とは、ユーザを識別するためのものであって、例えば、サービスサーバにログイン/ログアウトしたユーザがログインに使用したユーザ識別子が用いられる。ユーザのログイン/ログアウト状態とは、ユーザがログインをしたのか又はログアウトをしたのかに関する情報を意味する。ユーザの位置情報とは、ユーザがどこにログインをしたのか又はどこからログアウトをしたのかに関する情報である。位置情報は、ユーザがログイン/ログアウトをしたサービスサーバに関する情報(サービスサーバのIPアドレス又はサービスサーバ名など)であったり、ユーザがログイン/ログアウトをしたサービスの識別子(例えば、「ゴーストップ」、「フーラ」、「ポーカ」など)であったりする。1つのサービスが複数のチャンネルで提供される場合、位置情報は、ユーザがログイン/ログアウトをしたサービスの識別子とユーザがログイン/ログアウトをしたチャンネルの識別子との組み合わせで成される。位置情報は、サービス環境全体において、ユーザが最後にどこにログインをしたのか又はどこからログアウトをしたのかに関する情報を提供する。
【0034】
外部メッセージを受信したロケーションサーバ308は、外部メッセージを処理して状態更新メッセージを生成する。状態更新メッセージは、ロケーションサーバ308によって、レプリケーショングループ307に属する他のロケーションサーバ309、310、311に伝達される。このとき、ロケーションサーバ308は、他のロケーションサーバ309、310、311にマルチキャスト(multicast)方式によって状態更新メッセージを伝達する。このためには、ロケーションサーバ308、309、310、311の連結を提供するネットワークが、マルチキャスト機能を提供する。
【0035】
また、他の実施形態としては、レプリケーショングループ307に属する他のロケーションサーバ309、310、311のアドレスを保存し、外部メッセージを受信したロケーションサーバ308が他のロケーションサーバ309、310、311それぞれにユニキャスト(unicast)方式によって状態更新メッセージを伝達することも可能である。
【0036】
しかしながら、このように伝達される外部メッセージ及び状態更新メッセージは、全ロケーションサーバに同じ順序で伝達される保証がない、当該メッセージを全ロケーションサーバにおいて同じ順序で整列する方法が必要となる。
【0037】
図5は、本発明に係る同じレプリケーショングループに属する他のメンバーサーバと状態を同期化するメンバーサーバの構成を示したブロック図である。
【0038】
本発明の一実施形態に係るメンバーサーバ500は、サーバ識別子保存部501と、サーバシーケンス保存部502と、メッセージ受信部503と、外部メッセージ処理部504と、状態更新メッセージ処理部505と、メッセージバッファ506と、メッセージ順序決定部507と、ユーザ状態識別部508とを含む。メンバーサーバとは、ユーザの位置情報を管理するロケーションサーバである。
【0039】
サーバ識別子保存部501は、メンバーサーバをレプリケーショングループ内で唯一に識別できるサーバ識別子を保存する。本発明の一実施形態では、IPアドレスをサーバ識別子として用いている。サーバ識別子は、以後、メッセージバッファに保存されたメッセージの順序を決定する際、メッセージのサーバシーケンスが同一である場合に用いられる。
【0040】
サーバシーケンス保存部502は、各メンバーサーバで管理されるサーバシーケンスを保存する。1つのレプリケーショングループが初めて生成される場合には、レプリケーショングループに属するすべてのメンバーサーバのサーバシーケンスは0で初期化される。
【0041】
メッセージ受信部503は、サービスサーバから外部メッセージを受信する。サービスサーバは、例えば、ゲームサービスを提供するゲームサーバである。外部メッセージは、ユーザのユーザ識別子、ユーザがログイン/ログアウトしたのかに関するユーザログイン/ログアウト状態、及びユーザがどこにログインをしたのか又はどこからログアウトをしたのかに関する位置情報を含む。
【0042】
さらに、メッセージ受信部503は、同じレプリケーショングループに属する他のメンバーサーバから状態更新メッセージ(第2状態更新メッセージ)を受信する。当該状態更新メッセージは、ユーザのユーザ識別子、ユーザのログイン/ログアウト状態、及びユーザの位置情報だけではなく、他のメンバーサーバに保存されたサーバシーケンス(第2サーバシーケンス)を含む。本発明のさらに他の実施形態によれば、第2状態更新メッセージは、他のメンバーサーバのサーバ識別子保存部に保存されているサーバ識別子を追加的に含んでいる。
【0043】
外部メッセージ処理部504は、外部メッセージの受信に応答して第1サーバシーケンスを所定の値(例えば、1)だけ増加させ、第1サーバシーケンスを含む第1状態更新メッセージを生成して第2メンバーサーバに送信する。外部メッセージ処理部504は、外部メッセージに含まれたユーザのユーザ識別子、ユーザのログイン/ログアウト状態、及びユーザの位置情報に、自身のサーバシーケンス保存部502に保存されている第1サーバシーケンスを含ませて第1状態更新メッセージを生成する。本発明のさらに他の実施形態によれば、外部メッセージ処理部504は、メンバーサーバのサーバ識別子保存部501に保存されたサーバ識別子を追加的に含んで第1状態更新メッセージを生成する。さらに、外部メッセージ処理部504は、生成された第1状態更新メッセージをメッセージバッファ506に保存する。
【0044】
状態更新メッセージ処理部505は、第2状態更新メッセージの受信に応答して、第2状態更新メッセージに含まれた第2サーバシーケンスがサーバシーケンス保存部501に保持された第1サーバシーケンスよりも大きい場合に、第1サーバシーケンスを第2サーバシーケンスに変更してサーバシーケンス保存部501に保存する。また、状態更新メッセージ処理部505は、受信された第2状態更新メッセージをメッセージバッファ506に保存する。第2状態更新メッセージは、ユーザ識別子、ユーザのログイン/ログアウト状態、ユーザの位置情報、及び第2状態更新メッセージを送信したメンバーサーバに保存された第2サーバシーケンスを含む。本発明のさらに他の実施形態によれば、第2状態更新メッセージは、第2状態更新メッセージを送信したメンバーサーバのサーバ識別子を追加的に含む。
【0045】
メッセージ順序決定部507は、メッセージバッファ506に保存された状態更新メッセージのサーバシーケンスに従って状態更新メッセージの順序を決定する。すなわち、メッセージ順序決定部507は、第1状態更新メッセージの第1サーバシーケンス及び第2状態更新メッセージの第2サーバシーケンスの大きさ順に第1状態更新メッセージ及び第2状態更新メッセージの順序を決定する。
【0046】
第1状態更新メッセージの第1サーバシーケンス及び第2状態更新メッセージの第2サーバシーケンスが同じであれば、メッセージ順序決定部507は、第1状態更新メッセージの第1サーバ識別子及び第2状態更新メッセージの第2サーバ識別子を用いて第1状態更新メッセージ及び第2状態更新メッセージの順序を決定する。例えば、2つの状態更新メッセージのサーバシーケンスが同じである場合には、状態更新メッセージのサーバ識別子の大きさ順に、第1状態更新メッセージ及び第2状態更新メッセージの順序を決定する。本発明によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するため、メンバーサーバは自身の状態を互いに同期化(synchronize)できる。
【0047】
ユーザ状態識別部508は、メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスの順序に従ってユーザの最終ログ状態を決定する。メッセージ順序決定部507によってメッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンス(又は、サーバシーケンス及びサーバ識別子の組み合わせ)の順序に従って状態更新メッセージの順序が決定されるため、ユーザ状態識別部508は、各ユーザ別の最終メッセージによって各ユーザの最終ログ状態を決定する。本発明によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するため、同じレプリケーショングループに属するメンバーサーバが決定した1つのユーザに対する最終ログ状態はすべて同じになる。すなわち、どのユーザが現在ログイン中であるのか又はログアウトしたのかに関して、全メンバーサーバが同じ値を有するようになる。
【0048】
本発明の一実施形態によれば、外部メッセージ、第1状態更新メッセージ、及び第2状態更新メッセージは、ユーザがログイン/ログアウトしたチャンネルに関する位置情報を含む。この場合、ユーザ状態識別部508は、メッセージバッファ506に保存された状態更新メッセージに含まれたサーバシーケンスの順序(又はサーバシーケンス及びサーバ識別子の組み合わせ)によってユーザの最終位置を決定する。すなわち、ユーザがログイン中である場合に、該ユーザがどのチャンネルにログイン中であるかを決定する。本発明によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するようになるため、同じレプリケーショングループに属するメンバーサーバが決定した1つのユーザに対する最終位置情報はすべて同じになる。すなわち、あるユーザがログイン中である場合、該ユーザがどこにログイン中であるのか関して、全メンバーサーバが同じ値を有するようになる。
【0049】
図6は、本発明に係る同じレプリケーショングループに属するメンバーサーバの状態を同期化するためにメッセージを処理する手順を示したフローチャートである。
【0050】
段階S601で、第1メンバーサーバは、サーバシーケンス保存部502に第1サーバシーケンスを保持する。また、第1メンバーサーバは、サーバ識別子保存部501に第1サーバ識別子を保持する。本実施形態において、第1メンバーサーバ及び第2メンバーサーバは、同じレプリケーショングループに属する。また、第1メンバーサーバ及び第2メンバーサーバは、ユーザの位置情報を管理するロケーションサーバである。
【0051】
段階S602で、第1メンバーサーバは、サービスサーバから外部メッセージを受信したか否かを判断する。サービスサーバは、ユーザにネットワークを介してサービスを提供するサーバであって、例えば、ゲームサービスを提供するゲームサーバである。また、外部メッセージは、ユーザのログイン/ログアウトに関するログメッセージである。ログメッセージは、ユーザのユーザ識別子、ユーザがログイン/ログアウトしたかに関するユーザログイン/ログアウト状態、及びユーザがどこにログインをしたのか又はどこからログアウトをしたのかに関する位置情報を含む。
【0052】
段階S602で、第1メンバーサーバがサービスサーバから外部メッセージを受信すると、段階S603で、第1メンバーサーバは、外部メッセージの受信に応答して第1サーバシーケンスを所定の値(例えば、1)だけ増加させる。本実施形態において、サーバシーケンスは1ずつ増加すると説明しているが、必ずしも1だけ増加させる必要はなく、一定の大きさ(例えば、2)を増加させるように構成してもよい。また、一定の大きさだけ減少させるように構成することもできる。このような構成も、本発明の技術的思想に含まれ、特許請求の範囲の記載された技術的範囲における均等な範囲に属するようになる。
【0053】
段階S604で、第1メンバーサーバは、第1サーバシーケンスを含む第1状態更新メッセージを生成する。第1メンバーサーバは、外部メッセージに含まれたユーザのユーザ識別子、ユーザログイン/ログアウト状態、ユーザの位置情報に、自身のサーバシーケンス保存部502に保存された第1サーバシーケンスを含ませて第1状態更新メッセージを生成する。本発明のさらに他の実施形態によれば、第1メンバーサーバは、メンバーサーバのサーバ識別子保存部501に保存されたサーバ識別子を追加的に含んで第1状態更新メッセージを生成する。
【0054】
段階S605で、第1メンバーサーバは、第1状態更新メッセージを第2メンバーサーバに送信する。段階S606で、第1メンバーサーバは、生成された第1状態更新メッセージをメッセージバッファ506に保存する。
【0055】
段階S602で、第1メンバーサーバがサービスサーバから外部メッセージを受信しない場合、段階S607で、第1メンバーサーバは、第1メンバーサーバが第2メンバーサーバから状態更新メッセージを受信したか否かを判断する。段階S607で、第1メンバーサーバが第2メンバーサーバから状態更新メッセージを受信しない場合、第1メンバーサーバは段階S602に戻る。
【0056】
第2状態更新メッセージは、ユーザ識別子、ユーザログイン/ログアウト状態、ユーザの位置情報、及び第2メンバーサーバに保存された第2サーバシーケンスを含む。本発明のさらに他の実施形態によれば、第2状態更新メッセージは、第2メンバーサーバのサーバ識別子を追加的に含む。サーバ識別子は、メンバーサーバをレプリケーショングループ内で唯一に識別する識別子であるが、本発明の一実施形態では、メンバーサーバのIPアドレスがサーバ識別子として用いられる。1つのサーバが複数のIPアドレスを有する場合には、大きさが小さいIPアドレスを選択する。
【0057】
段階S607で、第1メンバーサーバが第2メンバーサーバから状態更新メッセージを受信すると、第1メンバーサーバは第2状態更新メッセージの受信に応答して、段階S608で、第2状態更新メッセージに含まれた第2サーバシーケンスと第1メンバーサーバに保持された第1サーバシーケンスとを比較する。
【0058】
段階S608における比較の結果、第2状態更新メッセージに含まれた第2サーバシーケンスが第1メンバーサーバに保持された第1サーバシーケンスよりも大きい場合に、段階S609で、第1構成サーバは、第1メンバーサーバに保持された第1サーバシーケンスを第2サーバシーケンスに変更してサーバシーケンス保存部501に保存する。
【0059】
段階S609で、第1メンバーサーバは、受信した第2状態更新メッセージをメッセージバッファ506に保存する。本実施形態によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するため、メンバーサーバは自身の状態を互いに同期化できるようになる。
【0060】
図7は、本発明に係るメンバーサーバに保存されたメッセージの順序を決定する手順を示したフローチャートである。
【0061】
段階S701で、第1メンバーサーバは、メッセージバッファ506に保存された状態更新メッセージのサーバシーケンスを比較する。すなわち、第1状態更新メッセージの第1サーバシーケンス及び第2状態更新メッセージの第2サーバシーケンスを比較する。
【0062】
段階S701における比較の結果、メッセージバッファ506に保存された状態更新メッセージのサーバシーケンスが同じではなければ、段階S703で、第1メンバーサーバは、サーバシーケンスによって状態更新メッセージの順序を決定する。一方、段階S701で比較した結果、メッセージバッファ506に保存された状態更新メッセージのサーバシーケンスが同じであれば、段階S702で、第1メンバーサーバは、状態更新メッセージのサーバ識別子によって状態更新メッセージの順序を決定する。
【0063】
すなわち、第1状態更新メッセージの第1サーバシーケンス及び第2状態更新メッセージの第2サーバシーケンスが同じではなければ、第1メンバーサーバは、第1状態更新メッセージの第1サーバシーケンス及び第2状態更新メッセージの第2サーバシーケンスの大きさ順で第1状態更新メッセージ及び第2状態更新メッセージの順序を決定する。
【0064】
一方、第1状態更新メッセージの第1サーバシーケンス及び前記第2状態更新メッセージの第2サーバシーケンスが同じであれば、第1状態更新メッセージの第1サーバ識別子及び状態更新メッセージの第2サーバ識別子の大きさ順で第1状態更新メッセージ及び第2状態更新メッセージの順序を決定する。
【0065】
本発明の一実施形態によれば、状態更新メッセージは、ユーザのユーザ識別子、ユーザのログイン/ログアウト状態、及びユーザがログイン/ログアウトしたチャンネルに関する位置情報を含む。したがって、本発明に係るメンバーサーバは、自身のメッセージバッファに保存された状態更新メッセージを状態更新メッセージに含まれたサーバシーケンス(又はサーバシーケンス及びサーバ識別子の組み合わせ)の順序によって整列し、ユーザが最終的にログイン中であるかあるいはログアウト状態であるかを判断する。また、位置情報を参照して、ユーザがログイン中である場合には、ユーザがどのチャンネルにログインしたのかを判断する。
【0066】
本発明によれば、同じレプリケーショングループに属するメンバーサーバは、すべて同じ順序で状態更新メッセージを整列するようになるため、同じレプリケーショングループに属するメンバーサーバが決定した1つのユーザに対するログイン/ログアウト状態情報及び最終位置情報はすべて同じようになる。
【0067】
図8は、サービスサーバからレプリケーショングループに属するメンバーサーバのうちの1つに外部メッセージを送信する構成を示した図である。
【0068】
本実施形態において、サービスサーバ801は、オンラインゴーストップゲームサービスを提供するゲームサーバである。サービスサーバ801は、ゴーストップゲームサービスを複数のチャンネルで提供しており、ユーザは、該複数のチャンネルから1つを選択してゲームサービスを利用する。ユーザ「aaa」は、サービスサーバ801にログインしてゴーストップゲームの1番チャンネルでゴーストップゲームサービスを利用している。したがって、ロケーションサーバ1(符合802)のメッセージバッファ808、ロケーションサーバ2(符合803)のメッセージバッファ809、ロケーションサーバ3(面符合804)のメッセージバッファ810は、「aaa」がゴーストップ1番チャンネルにログインしたという状態更新メッセージを保存している。状態更新メッセージの「17」はサーバシーケンス値であるし、「#2」はサーバ識別子である。現在、ロケーションサーバ1(符合802)のサーバシーケンス805、ロケーションサーバ2(符合803)のサーバシーケンス806、ロケーションサーバ3(符合804)のサーバシーケンス807は、すべて「17」という同じ値を有している。本発明によれば、1つの状態更新メッセージのマルチキャスティングが終了すると、同じレプリケーショングループに属するメンバーサーバは、すべて同じサーバシーケンス値を有するようになる。
【0069】
ユーザ「aaa」がサービスサーバ801のゴーストップゲームの1番チャンネルでゴーストップゲームサービスを利用した後にログアウトすると、サービスサーバ801は、ログメッセージ811を1つのレプリケーショングループに属するロケーションサーバのうちの1つに送信する。例えば、ログメッセージ811が、ロケーションサーバ1(符合802)に送信される。ログメッセージ811は、ログアウトしたユーザのユーザ識別子である「aaa」、ユーザがログアウトした位置であるゲーム名及びチャンネル番号の組み合あわせ(「ゴーストップ−1」)、又はログインであるかログアウトであるかに関するログイン/ログアウト状態情報(図8では「ログアウト」)を含む。
【0070】
図9は、サービスサーバから外部メッセージを受信したメンバーサーバが同じレプリケーショングループに属する他のメンバーサーバに状態更新メッセージを送信する構成を示した図である。
【0071】
外部メッセージであるログメッセージ811を受信したロケーションサーバ1(符合902)は、ログメッセージの受信に応答して当該ロケーションサーバ1(図面符合902)のサーバシーケンスを所定の値(例えば、1)だけ増加させる。図8のロケーションサーバ1(図面符合802)のサーバシーケンスは17であったが、図9のロケーションサーバ1(図面符合902)のサーバシーケンスは18であり、1だけ増加されている。ロケーションサーバ1(図面符合902)は、ログメッセージ811に含まれたユーザのユーザ識別子、ユーザログイン/ログアウト状態、ユーザの位置情報に、自身のサーバシーケンス及びサーバ識別子を含ませて状態更新メッセージを生成する。符号908は、生成された状態更新メッセージを示したものである。生成された状態更新メッセージ908は、ログアウトしたユーザのユーザ識別子(「aaa」)、ユーザがログアウトした位置(「ゴーストップ−1」、ゴーストップゲームの1番チャンネルを意味する)、ログイン/ログアウト状態(「ログアウト」)、サーバシーケンス(「18」)、及びサーバ識別子(「#1」)を含む。ロケーションサーバ1(符合902)は、生成された状態更新メッセージ908を同じレプリケーショングループに属する他のロケーションサーバ903、904に送信する。
【0072】
図10は、本発明に係る図8及び図9のメッセージ処理を行った後の各メンバーサーバのメッセージバッファの状態及びサーバシーケンスの状態を示した図である。
【0073】
状態更新メッセージ908を送信したロケーションサーバ1(符合1002)は、自身のメッセージバッファ1008に状態更新メッセージ908、1011を保存する。このとき、状態更新メッセージをそのまま保存せずに、一部フォーマットを加工して保存することも可能であるが、これも本発明の技術的思想に含まれる。
【0074】
状態更新メッセージ908を受信したロケーションサーバ2、3(符合1003、1004)は、状態更新メッセージ908の受信に応答して、自身のサーバシーケンス保存部1006、1007に保持されたサーバシーケンスと状態更新メッセージ908に含まれたサーバシーケンスとを比較する。比較の結果、自身のサーバシーケンス保存部1006、1007に保持されたサーバシーケンスよりも状態更新メッセージ908に含まれたサーバシーケンスが大きいため、ロケーションサーバ2、3(符合1003、1004)は、自身のサーバシーケンス保存部1006、1007に保持されたサーバシーケンスである「17」を状態更新メッセージ908に含まれたサーバシーケンスである「18」に変更して保存する。
【0075】
また、ロケーションサーバ2、3(符合1003、1004)は、受信された状態更新メッセージ908をメッセージバッファ1009、1010に保存する。このとき、状態更新メッセージをそのまま保存せずに、一部フォーマットを加工して保存することも可能であるが、これも本発明の技術的思想に含まれる。
【0076】
ロケーションサーバ1、2、3(符合1002、1003、1004)のメッセージ順序決定部は、メッセージバッファに保存された状態更新メッセージのサーバ識別子によって状態更新メッセージの順序を決定する。図10に示したように、ロケーションサーバ1、2、3(符合1002、1003、1004)すべては、「aaa」がゴーストップ1番チャンネルにログインしたというメッセージのサーバシーケンス(「17」)が、「aaa」がゴーストップ1番チャンネルでログアウトしたというメッセージのサーバシーケンス(「18」)よりも小さいため、同じ順序でメッセージが整列される。
【0077】
図10に示したように、本発明によれば、同じレプリケーショングループに属するロケーションサーバ1、2、3(図面符合1002、1003、1004)は、すべてのメッセージバッファに同じ状態更新メッセージを含む。また、状態更新メッセージは同じ順序で整列されるため、ロケーションサーバ1、2、3(符合1002、1003、1004)は、自身の状態を互いに同期化できるようになる。
【0078】
図11は、本発明に係る複数のサービスサーバからそれぞれレプリケーショングループに属するメンバーサーバに外部メッセージを送信する構成を示した図である。
【0079】
図11は、サービスサーバ1、2(符合1101、1102)が、ほぼ同じくらいの時間にログインメッセージ1109、1110を互いに異なるロケーションサーバ1103、1105に送信する場合を示した図である。サービスサーバ1(符合1101)は、ロケーションサーバ1(符合1103)にユーザaaaがゴーストップ1番チャンネルにログインしたというログメッセージ1109を送信し、サービスサーバ2(符合1102)は、ロケーションサーバ3(符合1105)にユーザaaaがフーラ5番チャンネルにログインしたというログメッセージ1110を送信している。現在、ロケーションサーバ1103、1104、1105は、すべて同じサーバシーケンス値を有している。
【0080】
図12は、サービスサーバから外部メッセージを受信したメンバーサーバが、同じレプリケーショングループに属する他のメンバーサーバに状態更新メッセージを送信する構成を示した図である。
【0081】
ログメッセージ1109、1110を受信したロケーションサーバ1、3(符合1203、1205)は、それぞれ自身のサーバシーケンス1206、1208を1ずつ増加させ、状態更新メッセージ1209、1210を生成して自身のメッセージバッファに保存し、レプリケーショングループに属する他のロケーションサーバに送信する。このとき、状態更新メッセージ1209、1210は、サーバシーケンス値の他にもサーバ識別子を含む。本実施形態において、ロケーションサーバ1(符合1203)のサーバ識別子は「#1」であり、ロケーションサーバ3(符合1205)のサーバ識別子は「#3」である。
【0082】
図12で、状態更新メッセージ1209、1210を送信したロケーションサーバ1、3(符合1203、1205)のサーバシーケンスは、1ずつ増加されて「18」という値を有しているが、ロケーションサーバ2は、図11と同じように「17」という値をそのまま保持している。
【0083】
図13は、本発明に係る図11及び図12のメッセージ処理を行った後の各メンバーサーバのメッセージバッファの状態及びサーバシーケンスの状態を示した図である。
【0084】
ロケーションサーバ2(符合1204)が状態更新メッセージ1209、1210のうちのどちらを先に受信したかに関係なく、すべてが処理された後のサーバシーケンス及びメッセージバッファの状態は、図13に示す通りとなる。
【0085】
例えば、ロケーションサーバ2(符合1204)が状態更新メッセージ1209を先に受信した後に状態更新メッセージ1210を受信した場合について説明する。ロケーションサーバ2(符合1204)は、状態更新メッセージ1209のサーバシーケンス値(「18」)と自身のサーバシーケンス値(「17」)とを比較し、状態更新メッセージ1209のサーバシーケンス値(「18」)が自身のサーバシーケンス値(「17」)よりも大きいため、自身のサーバシーケンス値を状態更新メッセージ1209のサーバシーケンス値(「18」)に変更する。これによって、ロケーションサーバ2(符合1204)のサーバシーケンス保存部1307は、「18」というサーバシーケンス値を保存するようになる。その後に、受信した状態更新メッセージ1209をメッセージバッファ1310に保存する。
【0086】
その次に、ロケーションサーバ2(符合1304)は、状態更新メッセージ1210を受信するが、状態更新メッセージ1210のサーバシーケンス値「18」が自身のサーバシーケンス値「18」と同じであるため、自身のサーバシーケンス値は変更せず、単に受信した状態更新メッセージ1210をメッセージバッファ1310に保存する。
【0087】
結局、ロケーションサーバ2(符合1304)は、図13のような状態となる。ロケーションサーバ2(符合1304)が状態更新メッセージ1210を先に受信した後に状態更新メッセージ1209を受信しても、同じような結果となる。
【0088】
ロケーションサーバ1(符合1303)は、ロケーションサーバ3(符合1305)から受信した状態更新メッセージ1210のサーバシーケンス値「18」と自身のサーバシーケンス値(「18」)とを比較する。比較した結果、状態更新メッセージ1210のサーバシーケンス値(「18」)が自身のサーバシーケンス値(「18」)と同じであるため、自身のサーバシーケンス値は変更せず、単に受信した状態更新メッセージ1210をメッセージバッファ1309に保存する。
【0089】
ロケーションサーバ3(符合1305)も同様に、ロケーションサーバ1(符合1303)から状態更新メッセージ1209を受信した後、自身のサーバシーケンス値は変更せず、単に受信した状態更新メッセージ1209をメッセージバッファ1311に保存する。
【0090】
図13において、ロケーションサーバ1(符合1303)のメッセージバッファ1309に保存された状態更新メッセージ1312、1313は、サーバシーケンスの値が同じであるため、サーバ識別子によって整列される。同じように、ロケーションサーバ2、3(符合1304、1305)でも、状態更新メッセージがサーバ識別子によって整列され、ロケーションサーバ1、2、3(符合1303、1304、1305)はすべて同じ順序でメッセージを整列するようになる。
【0091】
本発明に係る実施形態は、コンピュータにより具現される多様な動作を実行するためのプログラム命令を含むコンピュータ読取可能な記録媒体を含む。当該記録媒体は、プログラム命令、データファイル、データ構造などを単独又は組み合わせて含むこともできる。また、記録媒体及びプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知であり使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク及び磁気テープのような磁気媒体、CD−ROM、DVDのような光記録媒体、フロプティカルディスクのような磁気−光媒体、及びROM、RAM、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれる。また、上記記録媒体は、プログラム命令、データ構造などを保存する信号を送信する搬送波を含む光又は金属線、導波管などの送信媒体でもある。プログラム命令の例としては、コンパイラによって生成されるもののような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行される高級言語コードを含む。
【0092】
上述したように、本発明を好ましい実施形態に則して説明したが、本発明の属する技術分野において熟練した当業者にとっては、特許請求の範囲に記載された本発明の技術的思想及びその領域から逸脱しない範囲内で、本発明を多様に修正及び変更させることができることを理解することができるであろう。すなわち、本発明の技術的範囲は、特許請求の範囲に基づいて定められ、発明を実施するための最良の形態により制限されるものではない。
【図面の簡単な説明】
【0093】
【図1】従来技術に係る複数のサービスサーバに接続するユーザ端末機のネットワーク接続を示した図である。
【図2】従来技術に係るユーザのロケーション情報を管理するためのロケーションサーバとサービスサーバのネットワーク接続を示した図である。
【図3】レプリケーショングループで構成された複数のロケーションサーバとサービスサーバ及びユーザ端末機のネットワーク連結を示した図である。
【図4】レプリケーショングループに属する複数のロケーションサーバに到着したメッセージを順に示した図である。
【図5】本発明に係る同じレプリケーショングループに属する他のメンバーサーバと状態を同期化するメンバーサーバの構成を示したブロック図である。
【図6】本発明に係る同じレプリケーショングループに属するメンバーサーバの状態を同期化するためにメッセージを処理する手順を示したフローチャートである。
【図7】本発明に係るメンバーサーバに保存されたメッセージの順序を決定する手順を示したフローチャート。
【図8】サービスサーバからレプリケーショングループに属するメンバーサーバのうちの1つに外部メッセージを送信する構成を示した図である。
【図9】サービスサーバから外部メッセージを受信したメンバーサーバが同じレプリケーショングループに属する他のメンバーサーバに状態更新メッセージを送信する構成を示した図である。
【図10】本発明に係る図8及び図9のメッセージ処理を行った後の各メンバーサーバのメッセージバッファの状態及びサーバシーケンスの状態を示した図である。
【図11】本発明に係る複数のサービスサーバからそれぞれのレプリケーショングループに属するメンバーサーバに外部メッセージを送信する構成を示した図である。
【図12】サービスサーバから外部メッセージを受信したメンバーサーバが同じレプリケーショングループに属する他のメンバーサーバに状態更新メッセージを送信する構成を示した図である。
【図13】本発明に係る図11及び図12のメッセージ処理を行った後の各メンバーサーバのメッセージバッファの状態及びサーバシーケンスの状態を示した図である。
【特許請求の範囲】
【請求項1】
同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステムであって、
第1サーバシーケンスを保存するサーバシーケンス保存部と、
サービスサーバから外部メッセージを受信し、前記メンバーサーバと同じレプリケーショングループに属する第2メンバーサーバから第2サーバシーケンスを含む第2状態更新メッセージを受信するメッセージ受信部と、
前記外部メッセージの受信に応答して前記第1サーバシーケンスを所定の値だけ増加させ、前記第1サーバシーケンスを含む第1状態更新メッセージを生成して前記第2メンバーサーバに送信する外部メッセージ処理部と、
前記第2状態更新メッセージの受信に応答して、前記第2状態更新メッセージに含まれた第2サーバシーケンスが前記サーバシーケンス保存部に保持された前記第1サーバシーケンスよりも大きい場合に、前記第1サーバシーケンスを前記第2サーバシーケンスに変更する状態更新メッセージ処理部と、を有することを特徴とする同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項2】
前記第1状態更新メッセージの第1サーバシーケンス及び前記第2状態更新メッセージの第2サーバシーケンスの大きさ順に、前記第1状態更新メッセージ及び前記第2状態更新メッセージの順序を決定するメッセージ順序決定部、をさらに有することを特徴とする請求項1に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項3】
前記外部メッセージ処理部は、前記第1状態更新メッセージをメッセージバッファに保存し、前記状態更新メッセージ処理部は、前記第2状態更新メッセージを前記メッセージバッファに保存することを特徴とする請求項1に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項4】
前記外部メッセージは、ユーザのユーザ識別子及び前記ユーザのログイン/ログアウト状態を含み、
前記外部メッセージ処理部は、前記外部メッセージの受信に応答して前記第1サーバシーケンスを所定の値だけ増加させ、前記第1サーバシーケンス、前記外部メッセージのユーザ識別子、及び前記外部メッセージのユーザのログイン/ログアウト状態を含む前記第1状態更新メッセージを生成して前記第2メンバーサーバに送信することを特徴とする請求項1に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項5】
前記第2状態更新メッセージは、ユーザのユーザ識別子及び前記ユーザのログイン/ログアウト状態を含み、
前記第1状態更新メッセージ及び前記第2状態更新メッセージを保存するメッセージバッファと、
前記メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスの順序に従って前記ユーザの最終ログ状態を決定するユーザ状態識別部と、をさらに有することを特徴とする請求項4に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項6】
前記外部メッセージ、前記第1状態更新メッセージ、及び前記第2状態更新メッセージは、ユーザがログイン/ログアウトしたチャンネルに関する位置情報を含み、
前記ユーザ状態識別部は、前記メッセージバッファに保存された状態更新メッセージに含まれた前記サーバシーケンスの順序に従って前記ユーザの最終位置を決定することを特徴とする請求項5に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項7】
前記外部メッセージ処理部は、前記メンバーサーバを識別する第1サーバ識別子を含む前記第1状態更新メッセージを前記第2メンバーサーバに送信し、
前記第2状態更新メッセージは、前記第2メンバーサーバを識別する第2サーバ識別子を含み、
前記メッセージ順序決定部は、前記第1状態更新メッセージの第1サーバシーケンス及び前記第2状態更新メッセージの第2サーバシーケンスが同じである場合に、前記第1状態更新メッセージの第1サーバ識別子及び前記第2状態更新メッセージの第2サーバ識別子を用いて、前記第1状態更新メッセージ及び前記第2状態更新メッセージの順序を決定することを特徴とする請求項1に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項8】
同じレプリケーショングループに属するロケーションサーバを同期化するロケーションサーバ同期化方法であって、
前記ロケーションサーバに第1サーバシーケンスを保持させる段階と、
サービスサーバからログメッセージを受信する段階と、
前記ログメッセージの受信に応答して前記第1サーバシーケンスを所定の値だけ増加させ、前記第1サーバシーケンスを含む状態更新メッセージを生成する段階と、
前記生成された状態更新メッセージを前記ロケーションサーバと同じレプリケーショングループに属する他のロケーションサーバに送信する段階と、
前記ロケーションサーバと同じレプリケーショングループに属する他のロケーションサーバから第2サーバシーケンスを含む状態更新メッセージを受信する段階と、
前記状態更新メッセージの受信に応答し、前記受信した状態更新メッセージに含まれた第2サーバシーケンスが前記ロケーションサーバに保持された第1サーバシーケンスよりも大きい場合に、前記ロケーションサーバに保持された第1サーバシーケンスを前記受信した状態更新メッセージに含まれた第2サーバシーケンスに変更する段階と、を含むことを特徴とするロケーションサーバ同期化方法。
【請求項9】
前記ログメッセージの受信に応答して前記第1サーバシーケンスを所定の値だけ増加させ、前記第1サーバシーケンスを含む状態更新メッセージを生成する段階は、
前記生成された状態更新メッセージをメッセージバッファに保存する段階を含むことを特徴とする請求項8に記載のロケーションサーバ同期化方法。
【請求項10】
前記他のロケーションサーバから受信した前記状態更新メッセージを前記メッセージバッファに保存する段階をさらに含むことを特徴とする請求項9に記載のロケーションサーバ同期化方法。
【請求項11】
前記メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスの順に前記メッセージバッファの状態更新メッセージの順序を決定する段階をさらに含むことを特徴とする請求項10に記載のロケーションサーバ同期化方法。
【請求項12】
前記状態更新メッセージは、ユーザのユーザ識別子及び前記ユーザのログイン又はログアウト状態を含み、
前記メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスの順序に従って前記ユーザの最終ログ状態を決定する段階をさらに含むことを特徴とする請求項10に記載のロケーションサーバ同期化方法。
【請求項13】
前記ロケーションサーバに第1サーバ識別子が保持され、
前記第1サーバシーケンスを含む状態更新メッセージを生成する段階は、前記第1サーバシーケンス及び第1サーバ識別子を含む状態更新メッセージを生成し、
前記他のロケーションサーバから受信した状態更新メッセージは、第2サーバシーケンス及び第2サーバシーケンスを含み、
前記メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスが同じである場合に、前記状態更新メッセージに含まれたサーバ識別子を用いて前記状態更新メッセージの順序を決定することを特徴とする請求項10に記載のロケーションサーバ同期化方法。
【請求項14】
前記第1サーバ識別子は、前記ロケーションサーバのIPアドレスであり、前記第2サーバ識別子は、前記他のロケーションサーバのIPアドレスであることを特徴とする請求項13に記載のロケーションサーバ同期化方法。
【請求項15】
同じレプリケーショングループに属する第1及び第2メンバーサーバを同期化する同じレプリケーショングループに属するサーバの同期化方法であって、
前記第1メンバーサーバに第1サーバシーケンス及び第1サーバ識別子を保持させる段階と、
サービスサーバから外部メッセージを受信する段階と、
前記外部メッセージの受信に応答して前記第1サーバシーケンスを所定の値だけ増加させ、前記第1サーバシーケンス及び前記第1サーバ識別子を含む第1状態更新メッセージを生成する段階と、
前記第1状態更新メッセージを前記第2メンバーサーバに送信する段階と、
前記第2メンバーサーバから第2サーバシーケンス及び第2サーバ識別子を含む第2状態更新メッセージを受信する段階と、
前記第2状態更新メッセージの受信に応答し、前記第2状態更新メッセージに含まれた第2サーバシーケンスが前記第1メンバーサーバに保持された前記第1サーバシーケンスよりも大きい場合に、前記第1メンバーサーバに保持された前記第1サーバシーケンスを前記第2サーバシーケンスに変更する段階と、
前記第1状態更新メッセージの第1サーバシーケンス及び前記第2状態更新メッセージの第2サーバシーケンスの大きさ順に、前記第1状態更新メッセージ及び前記第2状態更新メッセージの順序を決定する段階と、を含むことを特徴とする同じレプリケーショングループに属するサーバの同期化方法。
【請求項16】
前記第1状態更新メッセージの第1サーバシーケンス及び前記第2状態更新メッセージの第2サーバシーケンスが同じである場合に、前記第1状態更新メッセージの第1サーバ識別子及び前記状態更新メッセージの第2サーバ識別子の大きさ順序に、前記第1状態更新メッセージ及び前記第2状態更新メッセージの順序を決定する段階をさらに含むことを特徴にする請求項15に記載の同じレプリケーショングループに属するサーバの同期化方法。
【請求項17】
前記第1状態更新メッセージ及び前記第2状態更新メッセージは、ユーザのユーザ識別子、前記ユーザのログイン/ログアウト状態、及び前記ユーザがログイン/ログアウトしたチャンネルに関する位置情報を含み、
前記第1状態更新メッセージ及び前記第2状態更新メッセージをメッセージバッファに保存し、前記第1状態更新メッセージ及び前記第2状態更新メッセージの前記決定された順序に従って前記メッセージを処理して前記ユーザの最終ログ状態を決定する段階をさらに含むことを特徴とする請求項15に記載の同じレプリケーショングループに属するサーバの同期化方法。
【請求項18】
請求項8から17のいずれか一項に記載の方法を実行させるためのプログラムを記録したコンピュータ読取可能な記録媒体。
【請求項1】
同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステムであって、
第1サーバシーケンスを保存するサーバシーケンス保存部と、
サービスサーバから外部メッセージを受信し、前記メンバーサーバと同じレプリケーショングループに属する第2メンバーサーバから第2サーバシーケンスを含む第2状態更新メッセージを受信するメッセージ受信部と、
前記外部メッセージの受信に応答して前記第1サーバシーケンスを所定の値だけ増加させ、前記第1サーバシーケンスを含む第1状態更新メッセージを生成して前記第2メンバーサーバに送信する外部メッセージ処理部と、
前記第2状態更新メッセージの受信に応答して、前記第2状態更新メッセージに含まれた第2サーバシーケンスが前記サーバシーケンス保存部に保持された前記第1サーバシーケンスよりも大きい場合に、前記第1サーバシーケンスを前記第2サーバシーケンスに変更する状態更新メッセージ処理部と、を有することを特徴とする同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項2】
前記第1状態更新メッセージの第1サーバシーケンス及び前記第2状態更新メッセージの第2サーバシーケンスの大きさ順に、前記第1状態更新メッセージ及び前記第2状態更新メッセージの順序を決定するメッセージ順序決定部、をさらに有することを特徴とする請求項1に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項3】
前記外部メッセージ処理部は、前記第1状態更新メッセージをメッセージバッファに保存し、前記状態更新メッセージ処理部は、前記第2状態更新メッセージを前記メッセージバッファに保存することを特徴とする請求項1に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項4】
前記外部メッセージは、ユーザのユーザ識別子及び前記ユーザのログイン/ログアウト状態を含み、
前記外部メッセージ処理部は、前記外部メッセージの受信に応答して前記第1サーバシーケンスを所定の値だけ増加させ、前記第1サーバシーケンス、前記外部メッセージのユーザ識別子、及び前記外部メッセージのユーザのログイン/ログアウト状態を含む前記第1状態更新メッセージを生成して前記第2メンバーサーバに送信することを特徴とする請求項1に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項5】
前記第2状態更新メッセージは、ユーザのユーザ識別子及び前記ユーザのログイン/ログアウト状態を含み、
前記第1状態更新メッセージ及び前記第2状態更新メッセージを保存するメッセージバッファと、
前記メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスの順序に従って前記ユーザの最終ログ状態を決定するユーザ状態識別部と、をさらに有することを特徴とする請求項4に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項6】
前記外部メッセージ、前記第1状態更新メッセージ、及び前記第2状態更新メッセージは、ユーザがログイン/ログアウトしたチャンネルに関する位置情報を含み、
前記ユーザ状態識別部は、前記メッセージバッファに保存された状態更新メッセージに含まれた前記サーバシーケンスの順序に従って前記ユーザの最終位置を決定することを特徴とする請求項5に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項7】
前記外部メッセージ処理部は、前記メンバーサーバを識別する第1サーバ識別子を含む前記第1状態更新メッセージを前記第2メンバーサーバに送信し、
前記第2状態更新メッセージは、前記第2メンバーサーバを識別する第2サーバ識別子を含み、
前記メッセージ順序決定部は、前記第1状態更新メッセージの第1サーバシーケンス及び前記第2状態更新メッセージの第2サーバシーケンスが同じである場合に、前記第1状態更新メッセージの第1サーバ識別子及び前記第2状態更新メッセージの第2サーバ識別子を用いて、前記第1状態更新メッセージ及び前記第2状態更新メッセージの順序を決定することを特徴とする請求項1に記載の同じレプリケーショングループに属するメンバーサーバの状態を同期化するシステム。
【請求項8】
同じレプリケーショングループに属するロケーションサーバを同期化するロケーションサーバ同期化方法であって、
前記ロケーションサーバに第1サーバシーケンスを保持させる段階と、
サービスサーバからログメッセージを受信する段階と、
前記ログメッセージの受信に応答して前記第1サーバシーケンスを所定の値だけ増加させ、前記第1サーバシーケンスを含む状態更新メッセージを生成する段階と、
前記生成された状態更新メッセージを前記ロケーションサーバと同じレプリケーショングループに属する他のロケーションサーバに送信する段階と、
前記ロケーションサーバと同じレプリケーショングループに属する他のロケーションサーバから第2サーバシーケンスを含む状態更新メッセージを受信する段階と、
前記状態更新メッセージの受信に応答し、前記受信した状態更新メッセージに含まれた第2サーバシーケンスが前記ロケーションサーバに保持された第1サーバシーケンスよりも大きい場合に、前記ロケーションサーバに保持された第1サーバシーケンスを前記受信した状態更新メッセージに含まれた第2サーバシーケンスに変更する段階と、を含むことを特徴とするロケーションサーバ同期化方法。
【請求項9】
前記ログメッセージの受信に応答して前記第1サーバシーケンスを所定の値だけ増加させ、前記第1サーバシーケンスを含む状態更新メッセージを生成する段階は、
前記生成された状態更新メッセージをメッセージバッファに保存する段階を含むことを特徴とする請求項8に記載のロケーションサーバ同期化方法。
【請求項10】
前記他のロケーションサーバから受信した前記状態更新メッセージを前記メッセージバッファに保存する段階をさらに含むことを特徴とする請求項9に記載のロケーションサーバ同期化方法。
【請求項11】
前記メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスの順に前記メッセージバッファの状態更新メッセージの順序を決定する段階をさらに含むことを特徴とする請求項10に記載のロケーションサーバ同期化方法。
【請求項12】
前記状態更新メッセージは、ユーザのユーザ識別子及び前記ユーザのログイン又はログアウト状態を含み、
前記メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスの順序に従って前記ユーザの最終ログ状態を決定する段階をさらに含むことを特徴とする請求項10に記載のロケーションサーバ同期化方法。
【請求項13】
前記ロケーションサーバに第1サーバ識別子が保持され、
前記第1サーバシーケンスを含む状態更新メッセージを生成する段階は、前記第1サーバシーケンス及び第1サーバ識別子を含む状態更新メッセージを生成し、
前記他のロケーションサーバから受信した状態更新メッセージは、第2サーバシーケンス及び第2サーバシーケンスを含み、
前記メッセージバッファに保存された状態更新メッセージに含まれたサーバシーケンスが同じである場合に、前記状態更新メッセージに含まれたサーバ識別子を用いて前記状態更新メッセージの順序を決定することを特徴とする請求項10に記載のロケーションサーバ同期化方法。
【請求項14】
前記第1サーバ識別子は、前記ロケーションサーバのIPアドレスであり、前記第2サーバ識別子は、前記他のロケーションサーバのIPアドレスであることを特徴とする請求項13に記載のロケーションサーバ同期化方法。
【請求項15】
同じレプリケーショングループに属する第1及び第2メンバーサーバを同期化する同じレプリケーショングループに属するサーバの同期化方法であって、
前記第1メンバーサーバに第1サーバシーケンス及び第1サーバ識別子を保持させる段階と、
サービスサーバから外部メッセージを受信する段階と、
前記外部メッセージの受信に応答して前記第1サーバシーケンスを所定の値だけ増加させ、前記第1サーバシーケンス及び前記第1サーバ識別子を含む第1状態更新メッセージを生成する段階と、
前記第1状態更新メッセージを前記第2メンバーサーバに送信する段階と、
前記第2メンバーサーバから第2サーバシーケンス及び第2サーバ識別子を含む第2状態更新メッセージを受信する段階と、
前記第2状態更新メッセージの受信に応答し、前記第2状態更新メッセージに含まれた第2サーバシーケンスが前記第1メンバーサーバに保持された前記第1サーバシーケンスよりも大きい場合に、前記第1メンバーサーバに保持された前記第1サーバシーケンスを前記第2サーバシーケンスに変更する段階と、
前記第1状態更新メッセージの第1サーバシーケンス及び前記第2状態更新メッセージの第2サーバシーケンスの大きさ順に、前記第1状態更新メッセージ及び前記第2状態更新メッセージの順序を決定する段階と、を含むことを特徴とする同じレプリケーショングループに属するサーバの同期化方法。
【請求項16】
前記第1状態更新メッセージの第1サーバシーケンス及び前記第2状態更新メッセージの第2サーバシーケンスが同じである場合に、前記第1状態更新メッセージの第1サーバ識別子及び前記状態更新メッセージの第2サーバ識別子の大きさ順序に、前記第1状態更新メッセージ及び前記第2状態更新メッセージの順序を決定する段階をさらに含むことを特徴にする請求項15に記載の同じレプリケーショングループに属するサーバの同期化方法。
【請求項17】
前記第1状態更新メッセージ及び前記第2状態更新メッセージは、ユーザのユーザ識別子、前記ユーザのログイン/ログアウト状態、及び前記ユーザがログイン/ログアウトしたチャンネルに関する位置情報を含み、
前記第1状態更新メッセージ及び前記第2状態更新メッセージをメッセージバッファに保存し、前記第1状態更新メッセージ及び前記第2状態更新メッセージの前記決定された順序に従って前記メッセージを処理して前記ユーザの最終ログ状態を決定する段階をさらに含むことを特徴とする請求項15に記載の同じレプリケーショングループに属するサーバの同期化方法。
【請求項18】
請求項8から17のいずれか一項に記載の方法を実行させるためのプログラムを記録したコンピュータ読取可能な記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公表番号】特表2008−546087(P2008−546087A)
【公表日】平成20年12月18日(2008.12.18)
【国際特許分類】
【出願番号】特願2008−514541(P2008−514541)
【出願日】平成18年5月25日(2006.5.25)
【国際出願番号】PCT/KR2006/001975
【国際公開番号】WO2006/129931
【国際公開日】平成18年12月7日(2006.12.7)
【出願人】(505205812)エヌエイチエヌ コーポレーション (408)
【Fターム(参考)】
【公表日】平成20年12月18日(2008.12.18)
【国際特許分類】
【出願日】平成18年5月25日(2006.5.25)
【国際出願番号】PCT/KR2006/001975
【国際公開番号】WO2006/129931
【国際公開日】平成18年12月7日(2006.12.7)
【出願人】(505205812)エヌエイチエヌ コーポレーション (408)
【Fターム(参考)】
[ Back to top ]