(57)【要約】  本開示は、ユーザ情報が検索される際の単数または複数のユーザ情報管理サーバの頻繁なアクセスに起因する、既存の技術における、システムの作業負荷の増大、ネットワークのオーバーヘッドの増大、およびシステム性能の低下の問題に対処するために、ユーザ情報をインスタントメッセージシステム内で管理するための方法を開示する。開示される方法に従うと、アクセスサーバは、ログインしているユーザのコンタクトの情報を取得して保存し、アクセスサーバは、ログインしているユーザのユーザ情報を他のアクセスサーバに通知し、通知を受信するアクセスサーバは、そのコンタクトがそこにローカルで見つかることを判断し次第、ログインしているユーザのユーザ情報を保存し、アクセスサーバがユーザのコンタクトの情報を取得することを必要とする場合、アクセスサーバは、ローカルで、または他のアクセスサーバで検索を実行する。さらに、通信システムもまた提供される。開示される方法およびシステムは、ユーザ情報管理サーバにおけるユーザ情報の検索の頻度の大幅な低減、ユーザ情報管理サーバの負荷の低減、ユーザ情報を検索する性能の向上、およびシステムのネットワークのオーバーヘッドの低減をもたらすものと考えられる。
2010541341.tif 000002
【特許請求の範囲】
【請求項１】
インスタントメッセージシステム内でユーザ情報を管理するための方法であって、
アクセスサーバによって、前記アクセスサーバにログインしているユーザのコンタクトの情報を取得し保存するステップと、
前記アクセスサーバによって、他のアクセスサーバのうちの少なくとも１つに前記ユーザのユーザ情報を通知するために通知を送信するステップと、
前記通知を受け取る前記少なくとも１つの他のアクセスサーバによって、前記ユーザの任意のコンタクトがそこに存在することが判断され次第、前記ユーザの前記ユーザ情報を保存するステップと、
前記アクセスサーバが、前記ユーザの前記コンタクトの前記情報を取得する必要がある場合、前記アクセスサーバ内でローカルに、または前記少なくとも１つの他のアクセスサーバ内で検索を実行するステップとを含む、方法。
【請求項２】
前記アクセスサーバによって、前記ユーザのクライアント端末に、前記ユーザの前記コンタクトのステータス情報を送信するステップと、
前記少なくとも１つの他のアクセスサーバによって、前記ユーザのステータス情報を、関連するコンタクトに送信するステップと
をさらに含む請求項１に記載の方法。
【請求項３】
前記ユーザの前記コンタクトの前記情報は、前記ユーザのバディ情報と、逆バディ情報と
を含む請求項２に記載の方法。
【請求項４】
前記アクセスサーバ内に、前記ユーザの前記バディ情報を保存するバディ表と、前記ユーザの前記逆バディ情報を保存する逆バディ表とを確立するステップと、
前記ユーザの識別子を、前記バディ表の中の前記ユーザのローカルバディ情報と関連付けるステップと、
前記ユーザの前記識別子を、前記ユーザのローカル逆バディ情報と関連付けるステップと、
前記ユーザの位置情報を、前記逆バディ表の中に記録するステップと、
をさらに含む請求項３に記載の方法。
【請求項５】
前記アクセスサーバによって、前記ユーザの前記コンタクトの前記情報を取得し保存する前記ステップは、
前記ユーザがログオンしている前記アクセスサーバによって、前記ユーザのバディ識別子および逆バディの識別子をデータベースから見つけるステップと、
前記アクセスサーバによって、前記逆バディ表の中の前記バディ識別子を見つけるステップと、
前記バディ識別子を見つけ次第、前記ユーザの前記ユーザ識別子を、それぞれの関連付けられた逆バディ情報の中に記録するステップと、
前記アクセスサーバの前記バディ表の中で、前記逆バディ識別子を見つけるステップと、
前記逆バディ識別子を見つけ次第、それぞれの関連付けられたバディ情報の中に前記ユーザの前記ユーザ識別子を記録するステップと、
を含む請求項４に記載の方法。
【請求項６】
前記バディ識別子が前記逆バディ表の中に見つからない場合、前記逆バディ表の中にバディ識別子を記録するステップと、
前記ユーザの前記ユーザ識別子を、逆バディ情報として扱うステップと、
前記バディ識別子を、前記ユーザ識別子に関連付けるステップと、
をさらに含む請求項５に記載の方法。
【請求項７】
逆バディ識別子が前記バディ表の中に見つからない場合、前記バディ表の中に前記逆バディ識別子を記録するステップと、
前記ユーザの前記ユーザ識別子を、バディ情報として扱うステップと、
前記逆バディ識別子を、前記ユーザ識別子に関連付けるステップと、
をさらに含む請求項５に記載の方法。
【請求項８】
前記方法は、前記ユーザが前記アクセスサーバにログインした後、
前記アクセスサーバによって、前記ローカルバディ表の中で、前記ユーザの前記識別子を検索するステップと、
前記識別子を見つけ次第、対応するバディ情報から、すべてのローカルバディ識別子を取得するステップと、
前記アクセスサーバの位置情報を、前記逆バディ表の中の前記ローカルバディ識別子に関連付けられた、それぞれの位置情報の中に記録するステップと、
をさらに含む、請求項５に記載の方法。
【請求項９】
前記アクセスサーバが、前記ユーザの前記ユーザ情報を、前記少なくとも１つの他のアクセスサーバに通知した後、および前記少なくとも１つの他のアクセスサーバが、前記ユーザの前記識別子を見つけた後、前記少なくとも１つのアクセスサーバは、前記識別子に関連付けられた位置情報の中に、前記ユーザの前記位置情報を記録し、前記逆バディ情報の中の前記識別子に関連付けられたユーザ識別子に基づいて、前記ユーザの前記ステータス情報を、関連するユーザに送信する、請求項８に記載の方法。
【請求項１０】
前記アクセスサーバが、前記少なくとも１つの他のアクセスサーバから前記ユーザの前記ステータス情報を要求した場合、前記少なくとも１つの他のアクセスサーバが、それぞれのローカルバディ表の中で前記ユーザの前記識別子を検索するステップと、関連付けられたバディ情報の中のユーザ識別子を、前記アクセスサーバに戻すステップと、をさらに含む請求項８に記載の方法。
【請求項１１】
前記アクセスサーバが、前記少なくとも１つの他のアクセスサーバによって戻された前記ユーザ識別子を、前記ローカル逆バディ表の中で検索するステップと、
前記ユーザ識別子を見つけ次第、前記ユーザ識別子と関連付けられたユーザの位置情報を、それぞれの関連付けられた位置情報の中に記録するステップと、をさらに含む請求項１０に記載の方法。
【請求項１２】
前記ユーザのステータスの変更が発生した場合、前記アクセスサーバが、前記ユーザの前記ステータスの変更を、前記少なくとも１つの他のアクセスサーバに通知するステップと、
前記少なくとも１つの他のアクセスサーバが、それぞれの逆バディ表の中に、前記ユーザの前記識別子を見つけた場合、前記識別子に関連付けられた逆バディ情報の中の、前記ユーザ識別子に基づいて、前記ユーザの前記ステータス変更の情報を、関連するユーザに送信するステップと、
をさらに含む請求項５及至１１のいずれか１項に記載の方法。
【請求項１３】
前記ユーザの前記ステータスがログアウトに変更されると、前記アクセスサーバが、前記ユーザ識別子に関連付けられた前記ユーザの情報を、前記アクセスサーバ内の前記バディ表および前記逆バディ表から削除するステップと、
それぞれの逆バディ表の中に、前記ユーザの前記識別子を見つけ次第、前記少なくとも１つの他のアクセスサーバが、前記識別子に関連付けられたそれぞれの位置情報を消去するステップと、
をさらに含む請求項１２に記載の方法。
【請求項１４】
前記ユーザが、あるコンタクトにインスタントメッセージを送信し、前記アクセスサーバが、その内部にある前記逆バディ表に前記コンタクトの識別子を見つけた場合、前記アクセスサーバが、前記コンタクトの前記識別子に関連付けられた位置情報に基づいて、前記インスタントメッセージを伝送するステップをさらに含む請求項１２に記載の方法。
【請求項１５】
前記アクセスサーバが、前記アクセスサーバ内にある前記逆バディ表の中に、前記コンタクトの前記識別子を見つけることができない場合、前記アクセスサーバが、前記少なくとも１つの他のアクセスサーバから、前記ユーザの前記コンタクトの情報を要求するステップと、前記コンタクトの情報に基づいて、前記インスタントメッセージを伝送するステップと、をさらに含む請求項１４に記載の方法。
【請求項１６】
前記アクセスサーバは、前記少なくとも１つの他のアクセスサーバに、マルチキャストによって通知および要求を送信する請求項１２に記載の方法。
【請求項１７】
通信システムであって、
第１のアクセスサーバと、
第２のアクセスサーバとを備え、
前記第２のアクセスサーバは、
ユーザがログインすることを可能にし、
前記ユーザのコンタクトの情報を取得して保存し、
前記ユーザのユーザ情報を前記第１のサーバに提供し、
前記ユーザの前記コンタクトの前記情報を、ローカルで検索するか、または前記第１のアクセスサーバに、前記ユーザの前記コンタクトの前記情報を検索させ、
インスタントメッセージを前記第１のアクセスサーバに伝送し、
前記第１のアクセスサーバからインスタントメッセージを受信する、
通信システム。
【請求項１８】
前記第２のアクセスサーバは、前記ユーザのバディ情報を保存するバディ表と、前記ユーザの逆バディ情報を保存する逆バディ表とを含み、前記バディ表は、前記ユーザの識別子と、前記第２のアクセスサーバに対してローカルである前記ユーザのバディの情報とを含み、前記逆バディ表は、前記ユーザの前記識別子、前記ユーザの逆バディ情報と、前記ユーザの位置情報とを含む、請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、参照によって全体として本願に組み込まれる、２００７年９月２６日に出願された国際特許出願第ＰＣＴ／ＣＮ２００７／０７０７８６号、名称「Ａ  ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＦＯＲ  ＭＡＮＡＧＩＮＧ  ＴＨＥ  ＵＳＥＲ  ＩＮＦＯＲＭＡＴＩＯＮ  ＩＮ  ＴＨＥ  ＩＮＳＴＡＮＴ  ＭＥＳＳＡＧＩＮＧ  ＳＹＳＴＥＭ」の優先的利益を主張する。
本開示は、通信およびコンピュータの分野におけるインスタントメッセージ技術に関し、より具体的には、インスタントメッセージシステムにおけるユーザ情報の管理に関する。
【背景技術】
【０００２】
インスタントメッセージシステムにおいて、ユーザは、インスタントメッセージシステムにログインする際、そのユーザのバディのオンライン情報を取得することが必要である。一方、ユーザのログイン情報は、このユーザを彼らのバディとして追加したユーザに送信される。ユーザのオンラインステータスが変更されると、ユーザのオンラインステータスの変更に関する情報もまた、このユーザを彼らのバディとして追加したこれらのユーザに送信される必要がある。
【０００３】
ユーザのオンライン情報の管理に関し、現行の技術の下での集中化された管理法は、典型的に、指定のユーザ情報管理サーバを採用して、ユーザのオンライン情報を管理する。ユーザがシステムにログインすると、このユーザのログイン情報は、ユーザ情報管理サーバに送信され、ユーザ情報管理サーバによって管理される。ユーザのログイン中であろうと、ユーザのログイン後のオンラインステータスの変更であろうと、またはユーザ間のインスタントメッセージの交換であろうと、ユーザのコンタクトのオンライン情報に対するいかなる検索も、ユーザ情報管理サーバを経由することが必要である。したがって、ユーザ情報管理サーバの負荷が増大するだけでなく、ネットワークのオーバーヘッドもまた大幅に増大する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
大規模なインスタントメッセージシステム内におけるオンラインユーザの数がますます増加するにつれ、単一のユーザ情報管理サーバでは、もはやすべてのユーザのオンライン情報の集中的管理の需要を満たすことができない。ユーザのオンライン情報は、複数のユーザ情報管理サーバに分散される。したがって、複数のユーザ情報管理サーバにおけるユーザのオンライン情報の検索の実行が必要となり、検索効率の低下をもたらす。ユーザの数がさらに増加するにつれて、ユーザ情報管理サーバの検索効率は、さらに大幅に低下することになる。これは、ユーザのオンライン情報の管理の悪化につながり、これがインスタントメッセージシステム全体のボトルネックとなる。
【課題を解決するための手段】
【０００５】
本開示は、システムの作業負荷の増大、ネットワークのオーバーヘッドの増大、および現行の技術の下でユーザ情報が検索される際のユーザ情報管理サーバへの頻繁なアクセスによって生じる、システム性能への影響という問題に対処するための、インスタントメッセージシステム内でユーザ情報を管理するための方法およびシステムを提供する。
【０００６】
本開示は、以下の技術的スキームを提供する。
【０００７】
インスタントメッセージシステム内でユーザ情報を管理するための方法は、
アクセスサーバが、ログインしているユーザの情報を取得し、保存するステップと、
アクセスサーバが、他のアクセスサーバに、ログインしているユーザのユーザ情報を通知するステップと、
通知を受けたアクセスサーバがログインしているユーザのコンタクトをローカルで有していることを見出すと、ログインしているユーザのユーザ情報を保存するステップと、
アクセスサーバがユーザのコンタクトの情報を取得する必要がある場合、アクセスサーバは、ローカルで、または他のアクセスサーバ内で、検索を実行するステップとを含む。
【０００８】
アクセスサーバはさらに、ログインしているユーザのコンタクトのステータス情報を、ログインしているユーザが使用しているクライアント端末に送信する。ログインしているユーザのユーザ情報をそこに保存して有している他のアクセスサーバは、さらに、ログインしているユーザのステータス情報を、関連するコンタクトに送信する。
【０００９】
ログインしているユーザのコンタクトの情報は、ユーザのバディ情報および逆バディ情報を含む。
【００１０】
好ましくは、ユーザのバディ情報を保存するために使用されるバディ表（バディテーブル）と、ユーザの逆バディ情報を保存するために使用される逆バディ表（逆バディテーブル）は、アクセスサーバ内に確立される。バディ表は、前記ユーザの識別子を、ユーザのローカルバディ情報に関連付ける。逆バディ表は、ユーザの識別子を、ユーザの逆バディ情報に関連付け、ユーザの位置情報を記録する。
【００１１】
ログインしているユーザのコンタクトの情報をアクセスサーバによって取得し保存するステップは、
ユーザがログインしているアクセスサーバが、バディの識別子と、ログインしているユーザの逆バディの識別子を、データベースから見つけるステップと、
アクセスサーバが逆バディ表の中でバディの識別子を検索し、バディの識別子を見つけ次第、関連付けられた逆バディ情報の中に、ログインユーザのユーザ識別子を記録するステップと、
アクセスサーバがバディ表の中で逆バディの識別子を検索し、逆バディの識別子を見つけ次第、ログインユーザのユーザ識別子を、関連するバディ情報の中に記録するステップと、を含む。
【００１２】
好ましくは、バディの識別子が逆バディ表の中に見つからない場合、バディの識別子は、逆バディ表の中に記録され、ログインユーザのユーザ識別子は、逆バディ情報として扱われ、バディの識別子に関連付けられる。
【００１３】
逆バディの識別子がバディ表の中に見つからない場合、逆バディの識別子は、バディ表の中に記録され、ログインしているユーザのユーザ識別子は、バディ情報として扱われ、逆バディの識別子に関連付けられる。
【００１４】
さらに好ましくは、ユーザがログインした後、方法は、
アクセスサーバが、そこのローカルバディ表の中でユーザ識別子を検索し、識別子を見つけ次第、対応するバディ情報から、すべての関連付けられたローカルバディの識別子を取得するステップと、
アクセスサーバの位置情報を、逆バディ表の中の関連付けられたローカルバディの識別子に関連付けられた、それぞれの位置情報の中に記録するステップと、を含む。
【００１５】
好ましくは、アクセスサーバが、ログインしているユーザのユーザ情報を他のアクセスサーバに通知し、通知を受信するアクセスサーバが、ログインしているユーザの識別子を見つけた後、ログインしているユーザの位置情報は、識別子に関連付けられた位置情報の中に記録され、ログインしているユーザのステータス情報は、識別子に関連付けられた逆バディ情報の中のユーザ識別子に基づいて、関連するユーザに送信される。
【００１６】
好ましくは、本方法は、アクセスサーバが、ログインしているユーザのステータス情報を他のアクセスサーバから要求した場合、他のアクセスサーバは、それぞれのローカルバディ表からログインユーザの識別子を見つけ、ログインしているユーザの識別子に関連付けられたバディ情報の中のユーザ識別子を、アクセスサーバに戻すステップをさらに含む。
【００１７】
好ましくは、本方法は、アクセスサーバが、そこのローカル逆バディ表の中で、他のアクセスサーバから戻されたユーザ識別子を検索し、ユーザ識別子を見つけ次第、ユーザの位置情報をそれぞれの関連する位置情報の中に記録するステップをさらに含む。
【００１８】
好ましくは、ログインしているユーザのステータスが変更されると、アクセスサーバは、ユーザのステータス変更に関する情報を、他のアクセスサーバに通知する。それぞれの逆バディ表の中にログインしているユーザ識別子を見つけ次第、通知を受信したアクセスサーバは、識別子に関連付けられた逆バディ情報の中のユーザ識別子に基づいて、ログインユーザにステータス変更に関する情報を、関連するユーザに送信する。
【００１９】
ログインしているユーザのユーザステータスが「ログアウト」に変更されると、アクセスサーバはさらに、ユーザ識別子に関連付けられたログインしているユーザの情報を、現在のサーバ内のバディ表および逆バディ表から削除する。ログインしているユーザの識別子をそれぞれの逆バディ表の中に見つけ次第、通知を受け取ったアクセスサーバはさらに、ログインしているユーザの識別子に関連付けられたそれぞれの位置情報を消去する。
【００２０】
ログインしているユーザが、コンタクトにインスタントメッセージを送信し、アクセスサーバが、そこの逆バディ表の中に前記コンタクトの識別子を見つけた場合、アクセスサーバは、このコンタクトの識別子に関連付けられた位置情報に基づいて、このインスタントメッセージを伝送する。
【００２１】
アクセスサーバが、現在のサーバ内の逆バディ表の中にコンタクトの識別子を見つけられなかった場合、アクセスサーバは、他のアクセスサーバからユーザのコンタクトの情報を要求し、このコンタクトの情報に基づいて、このインスタントメッセージを伝送する。
【００２２】
アクセスサーバは、他のアクセスサーバに、マルチキャストの手段によって、通知および要求を送信する。
【００２３】
通信システムは、
複数のアクセスサーバであって、各アクセスサーバは、ログインしているユーザのコンタクトの情報を取得し、保存し、ログインしているユーザのユーザ情報を他のアクセスサーバに通知し、ユーザのコンタクトの情報を、ローカルでまたは他のアクセスサーバ内で検索し、インスタントメッセージを伝送するために使用される、複数のアクセスサーバ、および、
アクセスサーバを経由してインスタントメッセージシステムにアクセスし、アクセスサーバからコンタクトの情報を見つけ、送信し、アクセスサーバを経由してインスタントメッセージを受信する、ユーザクライアントを含むことを特徴とする。
【００２４】
アクセスサーバは、ユーザのバディ情報を保存するために使用されるバディ表と、ユーザの逆バディ情報を保存するために使用される逆バディ表とを含む。バディ表は、ユーザの識別子と、アクセスサーバに対してローカルであるユーザのバディの情報とを含む。逆バディ表は、ユーザ識別子と、ユーザの逆バディ情報と、ユーザの位置情報とを含む。
【００２５】
本開示は、ユーザのバディ情報を保存するために使用されるバディ表と、ユーザの逆バディ情報を保存するために使用される逆バディ表とをアクセスサーバ内に確立することによって、ユーザ情報を管理し、よってユーザ情報管理サーバ内におけるユーザ情報の検索の頻度を大幅に低減する。ユーザ情報管理サーバの負荷が低減されるだけでなく、ユーザ情報を検索し、ユーザのオンライン情報を管理する性能もまた向上される。さらに、システムのネットワークのオーバーヘッドが軽減される。
【図面の簡単な説明】
【００２６】
【図１Ａ】本開示に従う、システムの構造的概念図を示す図である。
【図１Ｂ】本開示に従う、バディ表の構造的概念図を示す図である。
【図１Ｃ】本開示に従う、逆バディ表の構造的概念図を示す図である。
【図２】本開示に従う、ユーザログインプロセスの取り扱いの時系列図を示す図である。
【図３】本開示に従う、ユーザのためのオンラインバディ情報の検索の取り扱いの時系列図を示す図である。
【図４】本開示に従う、ユーザのオンラインステータス変更に関する通知の取り扱いの時系列図を示す図である。
【図５】本開示に従う、ユーザからメッセージを送信するプロセスのフローチャートを示す図である。
【図６】本開示に従う、ユーザからメッセージを送信するプロセスの別のフローチャートを示す図である。
【図７】本開示に従う、ユーザログアウトプロセスの取り扱いの時系列図を示す図である。
【発明を実施するための形態】
【００２７】
既存のインスタントメッセージシステム内での、ユーザ情報の検索における効率低下、ユーザ情報管理サーバ上の大きな負荷、ユーザのオンライン情報の管理における性能低下等の問題に対処するため、ユーザの情報およびそのそれぞれのコンタクトを管理するための、ユーザのバディ表および逆バディ表がアクセスサーバ内に確立される。ユーザ情報の検索は、アクセスサーバ上で直接実行することができる。
【００２８】
本開示は、図面を参照して以下で詳細に説明される。
【００２９】
図１Ａに示すように、通信システム１００Ａは、一実施形態では、複数のアクセスサーバと、ネットワークを経由してアクセスサーバに通信可能に結合される、ユーザログインのための複数のクライアント端末とを含む。
【００３０】
各アクセスサーバは、ログインしているユーザのコンタクトの情報を取得して保存し、ログインしているユーザのユーザ情報を他のアクセスサーバに通知し、ユーザのコンタクトの情報をローカルで検索し、インスタントメッセージを伝送する。
【００３１】
アクセスサーバを経由して、ログインしているユーザのクライアント端末は、インスタントメッセージシステムにアクセスし、それぞれのコンタクトの情報を検索し、それぞれのコンタクトにインスタントメッセージを送信する。
【００３２】
ログインすると、ユーザはシステム１００Ａのサーバに接続し、これは複数の他のサーバとＵＤＰマルチキャストグループを形成する。グループ内の各サーバは、グループ内の他のサーバからマルチキャストＵＤＰメッセージを受信することができる。
【００３３】
ユーザのバディ情報を保存するバディ表と、ユーザの逆バディ情報を保存する逆バディ表が、アクセスサーバ内に確立される。バディ表は、それぞれのユーザ識別子を経由してユーザのローカルバディ情報をリンクする。逆バディ表は、それぞれのユーザ識別子を経由してユーザの逆バディ情報をリンクし、ユーザのそれぞれの位置情報を記録する。
【００３４】
バディ表および逆バディ表は、インデックスとしてユーザＩＤを採用する。逆バディとは、別のユーザを自身のバディとして追加するユーザをいう。例えば、ユーザＡが自身のバディとしてユーザＢを追加する。すると、ユーザＢはユーザＡのバディであり、一方ユーザＡはユーザＢの逆バディである。所与のサーバ上のバディ表は、そのサーバ上のあるユーザのバディ情報を検索するために使用される。バディ表１００Ｂの構造を、図１Ｂに示す。バディ表１００Ｂには、ユーザ識別子ＩＤのノードがあり、各ノードは、それぞれのユーザのローカルバディ情報を記録する対応するバディ一覧を有する。
【００３５】
所与のユーザのバディをサーバ上で検索する際、サーバのバディ表の中のこのユーザと関連するノードが、ノードの記録に対応して、ユーザのローカルバディ情報を見つけるように検索される。
【００３６】
全てのユーザがサーバにログインすると、それぞれのユーザの逆バディ情報が取得される。それぞれのユーザが接続されるサーバのバディ表において、ユーザの情報は、それぞれのユーザの逆バディのノードのバディ一覧に記録される。例えば、ユーザＡは、ユーザＢおよびユーザＣのバディである。ユーザＡがサーバＡを経由してインスタントメッセージシステムにアクセスすると、ユーザＡの逆バディ、つまりユーザＢおよびユーザＣのＩＤが、データベースから見つけられる。ユーザＡの情報は、次にサーバＡのバディ表の中にある、ユーザＢおよびユーザＣのノードのバディ一覧の中に記録される。記録プロセスは、サーバＡのバディ表の中でユーザＢのノードを検索するステップと、かかるユーザＢのノードが存在しない場合、バディ表の中にユーザＢのノードを確立するステップと、および、ユーザＢのノードのバディ一覧の中でユーザＡの情報を記録するステップと、バディ表の中でユーザＣのノードを検索するステップと、および、ユーザＣのノードがすでに存在する場合、ユーザＡの情報を、ユーザＣのノードのバディ一覧の中に直接記録するステップとを含む。したがって、ユーザＡがインスタントメッセージシステムにログインすると、ユーザＡの情報は、サーバＡのバディ表の中の、ユーザＢおよびユーザＣのノードのバディ一覧の中に記録される。
【００３７】
逆バディ表は、あるユーザを彼らのバディとして追加した、所与のサーバのこれらのユーザを検索するために使用される。逆バディ表１００Ｃの構造を、図１Ｃに示す。逆バディ表は、ユーザ識別子ＩＤのノードと、任意のユーザに関連するサーバ（ＰＯＳ）を示す情報を含む。各個別ノードに対応する一覧は、ユーザのローカル逆バディの情報を記録する。
【００３８】
サーバの逆バディ表の中でユーザのノードを検索することにより、そのサーバ上の記録されたユーザの逆バディの情報、およびユーザ（ＰＯＳ）と関連するそれぞれのサーバの情報を見つけることができる。
【００３９】
全てのユーザがサーバにログインすると、それぞれのユーザのバディ情報が取得される。ユーザが接続しているサーバの逆バディ表の中において、ユーザの情報は、そのユーザのバディのノードの逆バディ一覧の中に記録される。例えば、ユーザＡは、ユーザＢおよびユーザＣの逆バディである。ユーザＡおよびユーザＢは、サーバＡおよびサーバＢをそれぞれ経由してインスタントメッセージシステムにアクセスし、ユーザＣはオフラインである。ユーザＡがサーバＡを経由してインスタントメッセージシステムにアクセスすると、ユーザＡのバディ、つまりユーザＢおよびユーザＣのＩＤが、データベースから見つけられる。ユーザＡの情報は、次にサーバＡの逆バディ表の中にあるユーザＢおよびユーザＣのノードの逆バディ一覧の中に記録される。記録プロセスは、ユーザＢのノードをサーバＡの逆バディ表の中で検索するステップと、ユーザＢのノードが存在しない場合、ユーザＢのノードを逆バディ表の中に確立するステップと、ユーザＢのＰＯＳをサーバＢと記録するステップと、および、ユーザＡの情報をユーザＢのノードの逆バディ一覧に記録するステップと、ユーザＣのノードを逆バディ表の中で検索するステップと、ユーザＣのノードが存在する場合、ユーザＣのＰＯＳとしてブランクを記録するステップと、ユーザＡの情報をユーザＣのノードの逆バディ一覧に直接記録するステップとを含む。したがって、ユーザＡがインスタントメッセージシステムにログインすると、サーバＡ上のユーザＢおよびユーザＣの逆バディであるユーザＡは、サーバＡの逆バディ表の中にあるユーザＢおよびユーザＣのノードの逆バディ一覧の中に記録される。同時に、ユーザＢの対応するサーバおよびユーザＣの対応するサーバの情報もまた、逆バディ表の中に記録される。
【００４０】
図２は、サーバへのユーザアクセスを取り扱うプロセス２００を示し、以下を含む。
【００４１】
ステップ２０１：ユーザＡは、ユーザＡがサーバＡに接続すると、サーバＡにログイン情報を送信する。
【００４２】
ステップ２０２：サーバＡは、ユーザＡのバディおよび逆バディのＩＤを、データベースから問い合わせる。
【００４３】
ステップ２０３：サーバＡは、データベースから取得したユーザＡのバディおよび逆バディのＩＤを受信する。
【００４４】
ステップ２０４：バディのＩＤに基づいて、バディのノードが、サーバＡの逆バディ表の中に見つけられる。次に、ユーザＡの情報が、バディのノードのそれぞれの逆バディ一覧の中に記録される。逆バディのＩＤに基づいて、逆バディのノードが、サーバＡのバディ表の中に見つけられる。次に、ユーザＡの情報が、逆バディのノードのそれぞれのバディ一覧の中に記録される。
【００４５】
ステップ２０５：ユーザＡがオンラインであるという通知を、現在のサーバに対してローカルであるユーザＡの逆バディに送信する前に、サーバＡは、現在のサーバの逆バディ表の中で、ユーザＡを検索する。ユーザＡのノードが存在しない場合、現在のサーバにユーザＡの逆バディが存在しないことを示し、プロセスは実行されない。ユーザＡのノードが存在する場合、ユーザＡのノードの逆バディ一覧の中のユーザＡのサーバの位置情報は、サーバＡに変更される。逆バディのＩＤは、ユーザＡのノードの逆バディ一覧から見つけられる。
【００４６】
ステップ２０６：サーバＡは、見つけられた逆バディのＩＤに基づいて、ユーザＡがオンラインであるという通知を関連するユーザに送信する。
【００４７】
ステップ２０７：サーバＡが、ユーザＡがオンラインであるという通知を他のアクセスサーバに送信すると、サーバＡは、ＵＤＰマルチキャストの手法により、インスタントメッセージシステム内でユーザＡのオンライン情報を送信する。
【００４８】
ステップ２０８：マルチキャストメッセージを受け取り次第、インスタントメッセージシステム内のアクセスサーバＢは、ユーザＡが現在のサーバの逆バディ表の中に存在するか調べる。ユーザＡが存在しない場合、現在のサーバにユーザＡの逆バディが存在しないことを示し、プロセスは実行されない。ユーザＡが存在する場合、ステップ２０９が実行される。
【００４９】
ステップ２０９：サーバＢの逆バディ表の中の、ユーザＡのサーバの位置情報は、サーバＡに修正される。次に、逆バディのＩＤが、ユーザＡのノードの逆バディ一覧の中に見つけられる。
【００５０】
ステップ２１０：サーバＢは、見つけられた逆バディのＩＤに基づいて、ユーザＡがオンラインであるという通知を関連するユーザに送信する。
【００５１】
上述のプロセスを使用して、ユーザＡがインスタントメッセージシステムにログインした後、ユーザＡが接続しているサーバは、ユーザＡの情報およびユーザＡのコンタクトの情報を保存する。同時に、ユーザＡの逆バディは、ユーザＡの情報を取得する。
【００５２】
図３は、ユーザＡがインスタントメッセージシステムにログインした後に、バディのオンライン情報を検索するプロセス３００を示す。プロセス３００は、以下を含む。
【００５３】
ステップ３０１：ユーザＡが、サーバＡにログインする。
【００５４】
ステップ３０２：サーバＡが、その中にあるバディ表の中でユーザＡのノードを検索し、ノードのバディ一覧の中に記録されたバディのＩＤを見つける。バディのＩＤに基づいて、サーバＡの逆バディ表の中にバディのノードが見つけられ、これらのノードに記録されるサーバの対応する位置情報が、サーバＡに変更される。バディのオンラインステータスに関する情報が調べられる。
【００５５】
ステップ３０３：サーバＡは、現在のサーバに対してローカルである、ユーザＡのバディのオンラインステータスに関する情報を、ユーザＡに戻す。
【００５６】
ステップ３０４：サーバＡは、マルチキャストの手法により、インスタントメッセージシステム内のユーザＡのバディのオンラインステータスに関する情報に対する要求を出す。
【００５７】
ステップ３０５：マルチキャストメッセージを受け取り次第、インスタントメッセージシステム内のサーバＢは、ユーザＡのノードが現在のサーバのバディ表の中に存在するか、およびユーザＡのバディが現在のサーバに存在するか調べる。存在する場合、ステップ３０６が実行される。そうでなければ、プロセスは実行されない。
【００５８】
ステップ３０６：サーバＢは、その中で見つけられた、ユーザＡのバディのオンラインステータスに関する情報を、サーバＡに送信する。
【００５９】
ステップ３０７：サーバＢから戻された、ユーザＡのバディの情報に基づいて、サーバＡは、その中に逆バディ表を記録し、サーバＢ上で見つけられたユーザＡのバディのサーバのそれぞれの位置情報を、サーバＢとする。
【００６０】
ステップ３０８：サーバＡは、サーバＢから受信した、ユーザＡのバディのオンラインステータスに関する情報を、ユーザＡに戻す。
【００６１】
図４は、ユーザのオンラインステータスを、インビジブル（隠れ）ログインに変更するプロセス４００を示す。プロセス４００は、以下を含む。
【００６２】
ステップ４０１：アクセスサーバＡのユーザＡが、オンラインステータスをインビジブルに変更することを示すメッセージをサーバＡに出す。
【００６３】
ステップ４０２：サーバＡが、その中のローカルバディ表および逆バディ表の中のユーザＡのステータスを、インビジブルログインとして記録する。
【００６４】
ステップ４０３：サーバＡが、ユーザＡのノードが現在のサーバの逆バディ表の中に存在するか調べる。かかるノードが存在する場合、逆バディのＩＤがそのノードの逆バディ一覧の中に見つけられ、ステップ４０４が続いて実行される。そうでなければ、プロセスは実行されない。
【００６５】
ステップ４０４：見つけられた逆バディのＩＤに基づいて、サーバＡは、ユーザＡのステータス変更を示すメッセージを関連するユーザに送信する。
【００６６】
ステップ４０５：サーバＡは、ユーザＡのステータス変更を示すメッセージを、インスタントメッセージシステム内でマルチキャストの手法で送信する。
【００６７】
ステップ４０６：マルチキャストメッセージを受け取り次第、インスタントメッセージシステム内のサーバＢは、ユーザＡのノードが現在のサーバの逆バディ表の中に存在するか調べる。ユーザＡのノードが現在のサーバの逆バディ表の中に存在する場合、逆バディのＩＤは、ユーザＡのノードの逆バディ一覧の中に見つけられ、ステップ４０７が実行される。そうでなければ、プロセスは実行されない。
【００６８】
ステップ４０７：サーバＢは、逆バディ表の中に、サーバＡをユーザＡのサーバの位置情報として記録する。
【００６９】
ステップ４０８：見つけられた逆バディのＩＤに基づいて、サーバＢは、ユーザＡのステータス変更を示すメッセージを関連するユーザに送信する。
【００７０】
図５は、アクセスサーバＡのユーザＡからバディユーザＢにメッセージを送信するプロセス５００を示す。プロセス５００は、以下を含む。
【００７１】
ステップ５０１：サーバＡと接続するユーザＡは、自身のバディであるユーザＢにメッセージを送信することを、サーバＡに要求する。
【００７２】
ステップ５０２：ユーザＢのノードがサーバＡの逆バディ表の中で検索され、そのノードに対応する、ユーザＢのサーバの記録された位置情報が調べられる。
【００７３】
ステップ５０３：ユーザＢのサーバの位置情報が、ブランクであるか見るためにチェックされる。ブランクである場合、ユーザＢがインスタントメッセージシステムにログインしていないことを示し、ステップ５０４が実行される。そうでなければ、ステップ５０５が実行される。
【００７４】
ステップ５０４：サーバＡは、ユーザＡがユーザＢに送信するメッセージをデータベース内に保存する。プロセス５００は終了する。
【００７５】
ステップ５０５：ユーザＢが位置しているサーバが現在のサーバであるかどうかの判断が下される。それが現在のサーバである場合、ステップ５０６が実行される。そうでなければ、ステップ５０７が実行される。
【００７６】
ステップ５０６：サーバＡは、（ユーザＡから現在のサーバのユーザＢに送信される）メッセージをユーザＢに直接送信する。プロセス５００は終了する。
【００７７】
ステップ５０７：ユーザＢが位置しているサーバがサーバＢである場合、サーバＡは、（ユーザＡからユーザＢに送信される）メッセージを、サーバＢに伝送する。
【００７８】
ステップ５０８：サーバＡから伝送されたメッセージを受け取り次第、サーバＢは、ユーザＢとの接続が存在するか判断する。接続が存在する場合、ステップ５０９が実行される。そうでなければ、ステップ５１１が実行される。
【００７９】
このステップは、サーバＢが、ユーザＢのログオフのプロセス中にユーザＢにメッセージを送信し、サーバＢがユーザＢの保存された情報を更新していなかったために生じうるメッセージの損失を回避するために実行される。
【００８０】
ステップ５０９：サーバＢは、サーバＡからユーザＢに伝送されたメッセージを送信する。
【００８１】
ステップ５１０：サーバＢは、サーバＡへのメッセージの受け渡しが成功したことを知らせる通知を送信する。プロセス５００は終了する。
【００８２】
ステップ５１１：サーバＢは、サーバＡへのメッセージの受け渡しが失敗したことを知らせる通知を送信する。
【００８３】
ステップ５１２：サーバＢは、データベースの中にメッセージを保存する。プロセス５００は終了する。
【００８４】
ユーザＢがユーザＡのバディではないが、（１）サーバＡに接続しているユーザのうちの１人であるユーザが、ユーザＢを自身のバディとして追加しており、および、（２）ユーザＢの情報が、サーバＡの逆バディ表の中に存在する場合、ユーザＡからユーザＢにメッセージ送信するプロセスは、上述のプロセスと同一である。
【００８５】
図６は、ユーザＢがユーザＡのバディでなく、ユーザＢの情報がサーバＡの逆バディ表の中に存在しない場合の、ユーザＡからユーザＢにメッセージを送信するプロセス６００を示す。プロセス６００は、以下を含む。
【００８６】
ステップ６０１：サーバＡと接続するユーザＡは、自身のバディであるユーザＢにメッセージを送信することを、サーバＡに要求する。
【００８７】
ステップ６０２：ユーザＢのノードがサーバＡの逆バディ表の中で検索される。しかしながら、かかるノードは逆バディ表の中に見つからない。
【００８８】
ステップ６０３：サーバＡは、ユーザＢとの接続をローカルで検索する。
【００８９】
ステップ６０４：ユーザＢとの接続に関する情報がローカルで存在するかどうかの判断が下される。かかる接続が存在する場合、ステップ６０５が実行される。そうでなければ、ステップ６０６が実行される。
【００９０】
ステップ６０５：サーバＡは、メッセージをユーザＢに直接送信する。プロセス６００は終了する。
【００９１】
ステップ６０６：サーバＡは、マルチキャストの手法により、ユーザＢのオンライン情報に対する要求を出す。
【００９２】
ステップ６０７：サーバＡは、ユーザＢのオンライン情報が受信されたかを判断する。受信されていない場合、ステップ６０８が実行される。そうでなければ、ステップ６０９が実行される。
【００９３】
ステップ６０８：サーバＡは、メッセージをデータベース内に保存する。プロセス６００は終了する。
【００９４】
ステップ６０９：サーバＢからユーザＢのオンライン情報を受け取り次第、サーバＡは、現在のサーバの逆バディ表の中にユーザＢのノードを確立し、ノードに対応するユーザＢのサーバの位置情報をサーバＢであると記録し、関連する逆バディ一覧をブランクのままにする。サーバＡは、ユーザＡがユーザＢに送信したメッセージをサーバＢに伝送する。
【００９５】
ステップ６１０：サーバＢは、ユーザＢにメッセージを送信する。
【００９６】
ステップ６１１：サーバＢは、サーバＡへのメッセージの受け渡しが成功したことを知らせる通知を送信する。プロセス６００は終了する。
【００９７】
図７は、ユーザログアウトを取り扱うプロセス７００を示す。プロセス７００は、以下を含む。
【００９８】
ステップ７０１：アクセスサーバＡのユーザＡは、サーバＡにログアウトメッセージを出す。
【００９９】
ステップ７０２：サーバＡは、ユーザＡのノードが現在のサーバの逆バディ表の中に存在するか調べる。かかるノードが存在する場合、逆バディのＩＤが、そのノードの逆バディ一覧から見つけられ、ステップ７０３が実行される。そうでなければ、プロセスは実行されない。
【０１００】
ステップ７０３：見つけられた逆バディのＩＤに基づいて、サーバＡは、関連するユーザにユーザＡのログアウトメッセージを送信する。
【０１０１】
ステップ７０４：見つけられた逆バディのＩＤに基づいて、サーバＡは、現在のサーバのバディ表および逆バディ表の中で、対応するノードを検索する。対応するノードを見つけ次第、対応するノードに記録されていたユーザＡの情報は、削除される。さらに、逆バディ表の中にある、ユーザＡのノード内のユーザＡのサーバの位置情報は、消去される。
【０１０２】
ステップ７０５：サーバＡは、ユーザＡのログアウトメッセージを、マルチキャストの手法により、インスタントメッセージシステム内で送信する。
【０１０３】
ステップ７０６：マルチキャストメッセージを受け取り次第、インスタントメッセージシステム内のサーバＢは、ユーザＡのノードが現在のサーバの逆バディ表の中に存在するか調べる。ユーザＡのノードが現在のサーバの逆バディ表の中に存在する場合、逆バディのＩＤは、ユーザＡのノードの逆バディ一覧の中に見つけられ、ステップ７０７が実行される。そうでなければ、プロセスは実行されない。
【０１０４】
ステップ７０７：サーバＢは、ユーザＡのノードのサーバの位置情報を、逆バディ表から削除する。
【０１０５】
ステップ７０８：見つけられた逆バディのＩＤに基づいて、サーバＢは、関連するユーザにユーザＡのログアウトメッセージを送信する。
【０１０６】
本開示の開示される方法は、サーバ内にユーザのバディ表および逆バディ表を確立することにより、サーバ内のユーザの情報およびそれぞれのコンタクトを管理し、本来ならばユーザ情報管理サーバへの頻繁なアクセスによって取得される必要があるユーザの情報を、ローカルサーバ内に保存する。したがって、ネットワークのオーバーヘッドが低減されることになるだけでなく、ユーザ情報の検索性能および管理性能もまた向上する。
【０１０７】
実際の実施において、メモリの２つのデータ構造がアクセスサーバ内に確立されてもよく、バディ表および逆バディ表に関連づけられるデータを記録するために別々に使用される。本開示の開示される方法は、実際の実施および統計的分析を通して検討され、妥当であると認められている。
【０１０８】
インスタントメッセージシステム内の各アクセスサーバが、５００００のユーザからアクセスされ、各ユーザが、平均して１００のバディおよび１００の逆バディを有すると仮定する。すると、５００００＊（１００＋１００）＝１０Ｍの数のバディの情報が保存される。３２バイトが各バディの情報用に確保されている場合、合計３２０Ｍのメモリが占有される。既存の一般的なサーバが通常２Ｇ〜４ＧのＲＡＭを有することを念頭に置くと、ＲＡＭを使用することはゆえに妥当である。さらに、バディ表および逆バディ表のためのインデックスとしてＩＤが使用されるため、ＩＤはメモリプール内に置かれ、続いてポインタによって表されることができ、これにより、メモリの実際の占有をさらに低減する。
【０１０９】
さらに、本開示を使用すると、ネットワークのオーバーヘッドを低減しうる。既存の技術において、ユーザのオンライン情報が変更されると、ユーザの情報がユーザ情報管理サーバに送信されることが必要であり、ネットワーク送信の１タイムユニットを占有する。本開示の開示される方法が使用されると、ユーザのオンライン情報の変更は、ＵＤＰマルチキャストを経由して各同等のアクセスサーバに送信され、ネットワーク送信の１タイムユニットを占有する。
【０１１０】
さらに、ユーザの情報が検索されると、既存の技術は、ユーザ情報管理サーバの中を探してユーザが接続しているアクセスサーバを見つけることを要する。複数のユーザ情報管理サーバが存在する場合、関連する検索がこれらのサーバ内で実行される必要がある。これは、ネットワークのオーバーヘッドを増大させるだけでなく、検索効率を低下させる。本開示の例示的実施形態は、ユーザ情報がアクセスサーバ内で保存されることを可能にし、ゆえに、検索時間を省き、ネットワークのオーバーヘッドを低減し、検索効率を向上させる。
【０１１１】
本開示において開示される方法はまた、ユーザクライアントにＰ２Ｐを経由してメッセージを送信させる大規模なインスタントメッセージシステム内における使用にも適する。対応する方法が本願に記載のものと同一の原則に従うため、対応する方法はよって記載されない。
【０１１２】
明らかに、当業者であれば、本開示の精神および範囲を逸脱することなく、本開示を多くの異なる手法で変更または修正することができる。したがって、これらの変更および変形が本開示の請求項およびその同等物の範囲内に入るならば、本開示は、それらのすべての変更および変形を網羅することを意図する。
【図１Ａ】
2010541341.tif 000003
【図１Ｂ】
2010541341.tif 000004
【図１Ｃ】
2010541341.tif 000005
【図２】
2010541341.tif 000006
【図３】
2010541341.tif 000007
【図４】
2010541341.tif 000008
【図５】
2010541341.tif 000009
【図６】
2010541341.tif 000010
【図７】
2010541341.tif 000011
【国際調査報告】
2010541341.tif 000012
2010541341.tif 000013
2010541341.tif 000014
2010541341.tif 000015