(57)【特許請求の範囲】
【請求項１】
複数のクライアントからのメッセージを複数のサーバで分散処理する分散処理システムを構成するサーバであって、
受信した前記メッセージに含まれ、前記クライアントに提供されるサービスに係るデータのデータ識別子を参照して、当該メッセージの処理を担当するサーバに当該メッセージを送信するメッセージ送受信部と、
自身のサーバが担当する前記メッセージを処理して発生したデータを管理するデータ管理部と、
前記分散処理システムの各サーバが保持するデータのデータ一覧に対応する所定のデータ一覧識別子に基づき当該データ一覧の作成を担当する場合に、前記メッセージを処理して発生したデータを、当該メッセージを処理した他のサーバから取得することにより前記データ一覧を作成し、
前記データ一覧の作成を担当せず、かつ、前記メッセージの処理を担当する場合に、当該メッセージを処理して発生したデータについて、自身の前記サーバが有する前記データ一覧識別子から特定される、前記データ一覧の作成を担当する他のサーバに、当該データ一覧の更新要求をするデータ一覧管理部と、を備える、
ことを特徴とするサーバ。
【請求項２】
前記データ一覧管理部は、
前記作成したデータ一覧の複製を、前記分散処理システムの１または複数の他のサーバに配置する、
ことを特徴とする請求項１に記載のサーバ。
【請求項３】
前記データ一覧管理部は、
前記データ一覧識別子にしたがって前記データ一覧の参照要求をした前記サーバに対して当該データ一覧を応答する、
ことを特徴とする請求項１または請求項２に記載のサーバ。
【請求項４】
複数のクライアントからのメッセージを複数のサーバで分散処理する分散処理システムを構成するサーバにおけるデータ一覧作成方法であって、
前記サーバが、
受信した前記メッセージに含まれ、前記クライアントに提供されるサービスに係るデータのデータ識別子を参照して、当該メッセージの処理を担当するサーバに当該メッセージを送信するメッセージ送受信ステップと、
自身のサーバが担当する前記メッセージを処理して発生したデータを管理するデータ管理ステップと、
前記分散処理システムの各サーバが保持するデータのデータ一覧に対応する所定のデータ一覧識別子に基づき当該データ一覧の作成を担当する場合に、前記メッセージを処理して発生したデータを、当該メッセージを処理した他のサーバから取得することにより前記データ一覧を作成し、
前記データ一覧の作成を担当せず、かつ、前記メッセージの処理を担当する場合に、当該メッセージを処理して発生したデータについて、自身の前記サーバが有する前記データ一覧識別子から特定される、前記データ一覧の作成を担当する他のサーバに、当該データ一覧の更新要求をするデータ一覧管理ステップと、を実行する、
ことを特徴とするデータ一覧作成方法。
【請求項５】
複数のクライアントからのメッセージを複数のサーバで分散処理する分散処理システムを構成するサーバとしてのコンピュータを、
受信した前記メッセージに含まれ、前記クライアントに提供されるサービスに係るデータのデータ識別子を参照して、当該メッセージの処理を担当するサーバに当該メッセージを送信するメッセージ送受信手段、
自身のサーバが担当する前記メッセージを処理して発生したデータを管理するデータ管理手段、
前記分散処理システムの各サーバが保持するデータのデータ一覧に対応する所定のデータ一覧識別子に基づき当該データ一覧の作成を担当する場合に、前記メッセージを処理して発生したデータを、当該メッセージを処理した他のサーバから取得することにより前記データ一覧を作成し、
前記データ一覧の作成を担当せず、かつ、前記メッセージの処理を担当する場合に、当該メッセージを処理して発生したデータについて、自身の前記サーバが有する前記データ一覧識別子から特定される、前記データ一覧の作成を担当する他のサーバに、当該データ一覧の更新要求をするデータ一覧管理手段、
として機能させるためのデータ一覧作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバを有して分散処理を行う分散処理システムが保持するデータを管理する技術に関する。
【背景技術】
【０００２】
非特許文献１には、分散処理システムにて利用されるコンシステントハッシュ法について開示されている。
【０００３】
分散処理システムのサーバの各々は、クライアントからのメッセージを処理し、処理で発生したデータを保持する。コンシステントハッシュ法によれば、サーバの各々は、分散処理システムが取り扱う対象とするデータと当該データを保持するサーバとの対応関係を把握することはできるが、他のサーバが保持しているデータの内容は把握できない。しかし、分散処理システムを運用する上で、分散処理システムが取り扱うデータのデータ一覧を必要とする場合がある。例えば、分散処理システムを分散データベースとして使用する場合にはデータ一覧の取得処理は欠かせない。また、保守作業による接続中セッションへの影響を防ぐために、接続中セッションの数が０であることを保守作業の前に確認するためにデータ一覧を必要とする。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】D. Karger、他５名、“Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web”、［online］、［平成２５年３月２７日検索］、インターネット<URL:http://thor.cs.ucsb.edu/~ravenben/papers/coreos/KLL+97.pdf>
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特定のサーバがデータ一覧を取得する方法はいくつか存在する。例えば、特定のサーバが、他のサーバが保持するデータを他のサーバのすべてに要求してデータを収集し、データ一覧を作成する方法がある。しかし、この方法は、通信数が多く通信負荷が増大すること、データ一覧取得要求が頻繁になると各サーバの処理負荷が増大すること、ソフトウェア構成によっては、自身のサーバが保持するデータのすべてにreadロックをかける必要があり、他のメッセージ処理に影響を及ぼす場合があること、などのデメリットがあり、推奨されない。
【０００６】
また、データ一覧を管理する専用の記録サーバを分散処理システムの外部に配置する方法がある。この方法によれば、先述のデメリットは回避することができる。しかし、データの生成頻度や削除頻度が高い分散処理システムではデータインデックスを持つ記録サーバがボトルネックとなってしまうこと、記録サーバを追加配置することがシステム規模の増大化、複雑化、メンテナンス性の低下、などといった別のデメリットを引き起こすことがあり、やはり推奨されない。
非特許文献１には、これらのデメリットを解消する事項については、記載も示唆もされていない。
【０００７】
そこで、本発明は、上記事情に鑑みて、コンシステントハッシュ法を利用する分散処理システムにて各サーバが保持するデータのデータ一覧の取得を容易に実現することを課題とする。
【課題を解決するための手段】
【０００８】
前記課題を解決するために、請求項１に記載の発明は、複数のクライアントからのメッセージを複数のサーバで分散処理する分散処理システムを構成するサーバであって、受信した前記メッセージに含まれ、前記クライアントに提供されるサービスに係るデータのデータ識別子を参照して、当該メッセージの処理を担当するサーバに当該メッセージを送信するメッセージ送受信部と、自身のサーバが担当する前記メッセージを処理して発生したデータを管理するデータ管理部と、前記分散処理システムの各サーバが保持するデータのデータ一覧に対応する所定のデータ一覧識別子に基づき当該データ一覧の作成を担当する場合に、前記メッセージを処理して発生したデータを、当該メッセージを処理した他のサーバから取得することにより前記データ一覧を作成し、前記データ一覧の作成を担当せず、かつ、前記メッセージの処理を担当する場合に、当該メッセージを処理して発生したデータについて、自身の前記サーバが有する前記データ一覧識別子から特定される、前記データ一覧の作成を担当する他のサーバに、当該データ一覧の更新要求をするデータ一覧管理部と、を備える、ことを特徴とする。
【０００９】
また、請求項４に記載の発明は、複数のクライアントからのメッセージを複数のサーバで分散処理する分散処理システムを構成するサーバにおけるデータ一覧作成方法であって、前記サーバが、受信した前記メッセージに含まれ、前記クライアントに提供されるサービスに係るデータのデータ識別子を参照して、当該メッセージの処理を担当するサーバに当該メッセージを送信するメッセージ送受信ステップと、自身のサーバが担当する前記メッセージを処理して発生したデータを管理するデータ管理ステップと、前記分散処理システムの各サーバが保持するデータのデータ一覧に対応する所定のデータ一覧識別子に基づき当該データ一覧の作成を担当する場合に、前記メッセージを処理して発生したデータを、当該メッセージを処理した他のサーバから取得することにより前記データ一覧を作成し、前記データ一覧の作成を担当せず、かつ、前記メッセージの処理を担当する場合に、当該メッセージを処理して発生したデータについて、自身の前記サーバが有する前記データ一覧識別子から特定される、前記データ一覧の作成を担当する他のサーバに、当該データ一覧の更新要求をするデータ一覧管理ステップと、を実行する、ことを特徴とする。
【００１０】
また、請求項５に記載の発明は、複数のクライアントからのメッセージを複数のサーバで分散処理する分散処理システムを構成するサーバとしてのコンピュータを、受信した前記メッセージに含まれ、前記クライアントに提供されるサービスに係るデータのデータ識別子を参照して、当該メッセージの処理を担当するサーバに当該メッセージを送信するメッセージ送受信手段、自身のサーバが担当する前記メッセージを処理して発生したデータを管理するデータ管理手段、前記分散処理システムの各サーバが保持するデータのデータ一覧に対応する所定のデータ一覧識別子に基づき当該データ一覧の作成を担当する場合に、前記メッセージを処理して発生したデータを、当該メッセージを処理した他のサーバから取得することにより前記データ一覧を作成し、前記データ一覧の作成を担当せず、かつ、前記メッセージの処理を担当する場合に、当該メッセージを処理して発生したデータについて、自身の前記サーバが有する前記データ一覧識別子から特定される、前記データ一覧の作成を担当する他のサーバに、当該データ一覧の更新要求をするデータ一覧管理手段、として機能させるためのデータ一覧作成プログラムである。
【００１１】
請求項１，４，５に記載の発明によれば、分散処理システムを構成する特定のサーバがデータ一覧を作成するサーバとして機能し、分散処理システムの内部にデータ一覧を保持することができる。よって、システム規模の増大化、複雑化、メンテナンス性の低下といったデメリットを引き起こすことはない。また、データ一覧を作成するサーバは、他のサーバにてメッセージを処理して発生したデータを当該データが発生した後に取得することができる。よって、データ一覧を作成するサーバから他のサーバのすべてに要求してデータを収集するといった、データ一覧を作成するための専用の処理を不要とすることができ、サーバごとの処理負荷の増大、サーバ間の通信負荷の増大などを抑制することができる。
したがって、コンシステントハッシュ法を利用する分散処理システムにて各サーバが保持するデータのデータ一覧の取得を容易に実現することができる。
【００１２】
また、請求項２に記載の発明は、請求項１に記載のサーバであって、前記データ一覧管理部は、前記作成したデータ一覧の複製を、前記分散処理システムの１または複数の他のサーバに配置する、ことを特徴とする。
【００１３】
請求項２に記載の発明によれば、データ一覧を冗長化することで、データ一覧を作成するサーバに障害が生じても、データ一覧の複製を活用することができ、データ一覧を用いた処理に対する信頼性を確保することができる。
【００１４】
また、請求項３に記載の発明は、請求項１または請求項２に記載のサーバであって、前記データ一覧管理部は、前記データ一覧識別子にしたがって前記データ一覧の参照要求をした前記サーバに対して当該データ一覧を応答する、ことを特徴とする。
【００１５】
請求項３に記載の発明によれば、データ一覧を必要とするサーバは、データ一覧を作成するサーバからデータ一覧を容易に取得することができ、データ一覧を用いた処理を迅速かつ確実に実行することができる。
【発明の効果】
【００１６】
本発明によれば、コンシステントハッシュ法を利用する分散処理システムにて各サーバが保持するデータのデータ一覧の取得を容易に実現することができる。
【図面の簡単な説明】
【００１７】
【図１】本実施形態の分散処理システムを含むネットワーク構成の全体概要図である。
【図２】分散処理システムの負荷分散装置およびサーバの機能構成図である。
【図３】新規メッセージを受信したときの、分散処理システムのデータ生成時における動作手順をリング状のハッシュＩＤ空間を用いて示す図である。
【図４】分散システム内に保持されているデータ一覧の参照時における動作手順をリング状のハッシュＩＤ空間を用いて示す図である。
【発明を実施するための形態】
【００１８】
本発明を実施するための形態（実施形態）について、図面を参照しながら詳細に説明する。
【００１９】
（全体構成）
図１に示すように、本実施形態の分散処理システムは、クライアント３に提供するサービスを実現するシステムであり、複数のサーバ１と、負荷分散装置２とを備えている。分散処理システムは、サーバ１を仮想化してサービスを実現することもできる。負荷分散装置２は、１または複数配置することができ、ネットワーク（図示せず）を介して複数のクライアント３と通信可能に接続されている。
【００２０】
クライアント３は、サービスを利用するユーザ端末である。クライアント３は、サービスの利用に必要なメッセージを負荷分散装置２に送信する。メッセージには、利用するサービスに係るデータのデータ識別子が含まれている。
【００２１】
負荷分散装置２は、クライアント３からメッセージを受信すると、所定の方式にしたがってメッセージを複数のサーバ１のいずれかに振り分ける。前記所定の方式としてラウンドロビン方式を採り上げるが、本発明はこの方法に限定されない。
【００２２】
サーバ１は、負荷分散装置２が振り分けたメッセージを処理し、クライアント３に対して所定のサービスを提供する。サーバ１は、通信部、記憶部、および、処理部、といったハードウェアを備えたコンピュータである。
【００２３】
通信部は、通信回線を介して情報を送受信する通信インターフェースによって構成され、内部バスなどを介して処理部に接続されている。
【００２４】
記憶部は、例えば、ハードディスク、フラッシュメモリ、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）などの記憶装置である。サーバ１の記憶部は、例えば、サービスを提供するためのプログラム（後記のデータ一覧作成プログラムを含む）を記憶する。
【００２５】
処理部は、サーバ１が実行する処理の全体を司る。処理部は、例えば、記憶部が記憶するプログラムをＣＰＵ（Central Processing Unit）が記憶部のＲＡＭに展開して実行することによって実現される。
なお、負荷分散装置２およびクライアント３も、サーバ１と同様、通信部、記憶部、および、処理部、といったハードウェアを備えたコンピュータである。
【００２６】
（負荷分散装置２）
図２に示すように、負荷分散装置２は、メッセージ送受信部２１および振り分け先判定部２２といった機能部を有する。
メッセージ送受信部２１は、クライアント３からのメッセージを受信する。また、メッセージ送受信部２１は、振り分け先判定部２２の判定結果にしたがって該当のサーバ１にメッセージを送信する。
【００２７】
振り分け先判定部２２は、ラウンドロビン方式にしたがって、クライアント３からのメッセージをいずれのサーバ１に振り分けるかを判定する。振り分け先判定部２２は、判定結果をメッセージ送受信部２１に出力する。
【００２８】
（サーバ１）
また、図２に示すように、サーバ１は、メッセージ送受信部１１、ハッシュ値計算部１２、サーバ管理部１３、データ管理部１４、データ一覧管理部１５といった機能部を有する。
【００２９】
メッセージ送受信部１１は、負荷分散装置２からメッセージを受信する。また、メッセージ送受信部１１は、所定の方法にしたがって受信したメッセージを他のサーバ１に送信する。本実施形態では、前記所定の方法としてコンシステントハッシュ法を採り上げるが、本発明はこの方法に限定されない。コンシステントハッシュ法は周知であり、本実施形態ではその詳細な説明は省略する。メッセージ送受信部１１は、コンシステントハッシュ法にしたがって、受信したメッセージに含まれるデータ識別子を参照して、当該メッセージの処理を担当するサーバ１に当該メッセージを送信することができる。
【００３０】
ハッシュ値計算部１２は、受信したメッセージに含まれるデータ識別子のハッシュ値を計算する。また、ハッシュ値計算部１２は、サーバ管理部１３が保持するサーバ識別子のハッシュ値を計算することができる。よって、サーバ１は、コンシステントハッシュ法にしたがって、受信したメッセージの処理を担当するサーバ１を特定することができる。具体的には、時計回りにハッシュ値の昇順に配置されるリング状のハッシュＩＤ（Identifier）空間にて、データ識別子およびサーバ識別子を配置したとき、受信したメッセージに含まれるデータ識別子の配置位置から時計回りに進んで最初に出合うサーバ識別子で識別されるサーバ１を、担当のサーバ１と特定する。
【００３１】
サーバ管理部１３は、分散処理システムを構成するサーバ１を管理する。サーバ管理部１３は、サーバ１ごとに、サーバ識別子とサーバ１のアドレス（例：ＩＰ（Internet Protocol）アドレス）とを対応付けた管理テーブルＴ１を有する。例えば、ハッシュ値計算部１２は、サーバ識別子に所定のハッシュ関数を作用させることで、サーバ１の一意のハッシュ値を取得することができる。よって、各サーバ１は、負荷分散装置２から受信したメッセージの転送先となるサーバ１を特定することができる。
【００３２】
データ管理部１４は、自身のサーバ１が担当するメッセージを処理して発生したデータを管理する。データ管理部１４は、自身のサーバ１で保持するデータごとに、データ識別子となるキーと、当該データのバイナリ表現となるデータ値（データ実体）とを対応付けた管理テーブルＴ２を有する。例えば、ハッシュ値計算部１２は、データ識別子に所定のハッシュ関数を作用させることで、データの一意のハッシュ値を取得することができる。
【００３３】
データ管理部１４は、自身のサーバ１が担当するメッセージを処理して発生したデータを原本とし、そのデータの１または複数の複製を、１または複数の他のサーバ１に配置し、保持させることができる。データの複製を生成し、データの冗長化を実現することで、原本を保持するサーバ１に障害が生じても、複製を原本として扱うことができサービスを継続することができる。複製を保持する１または複数のサーバ１は、例えば、リング状のハッシュＩＤ空間にて、原本を保持するサーバ１のサーバ識別子から時計回りに隣のサーバ識別子を持つサーバ１とすることができるが、他のサーバ１であってもよい。
【００３４】
データ一覧管理部１５は、分散処理システムの各サーバ１が保持するデータのデータ一覧を管理する。データ一覧は、各サーバ１が保持するデータと同様に、サーバ１内で管理することができるように所定のデータ一覧識別子と紐づけられている。データ一覧管理部１５は、データ一覧識別子を記憶しており、例えば、分散処理システムの運用開始時までに予め決定することができる。図２では、データ一覧識別子をkey0として示している。
【００３５】
ハッシュ値計算部１２によって、データ一覧識別子のハッシュ値が算出される。よって、コンシステントハッシュ法によれば、リング状のハッシュＩＤ空間でのデータ一覧識別子の配置位置から時計回りに進んで最初に出合うサーバ識別子で識別されるサーバ１がデータ一覧を保持する。
【００３６】
ハッシュＩＤ空間上の自身の担当領域にデータ一覧識別子が配置されているサーバ１は、データ一覧識別子に基づき、当該データ一覧の作成を担当するサーバであり、図２に示すように、データ一覧管理部１５にてデータ一覧Ｔ３を有する。データ一覧Ｔ３は、各サーバ１のデータ管理部１４が有する管理テーブルＴ２を統合したものに等しい。一方、ハッシュＩＤ空間上の自身の担当領域にデータ一覧識別子が配置されていないサーバ１は、当該データ一覧の作成を担当しないサーバであり、データ一覧管理部１５にてデータ一覧Ｔ３を有さず、key0を有している。データ一覧の作成を担当しないサーバ１は、自身で管理するデータを新たに生成したり、更新したりしたときには、key0にしたがって当該データを、データ一覧の作成を担当するサーバ１に送信する。データ一覧の作成を担当するサーバ１は、他のサーバ１からデータを取得すると、データ一覧Ｔ３の内容を更新する。
【００３７】
データ一覧管理部１５は、メッセージを処理して発生したデータと同様に、データ一覧Ｔ３の１または複数の複製を、１または複数の他のサーバ１に配置し、保持させることができる。これにより、データ一覧Ｔ３自体の信頼性を確保することができる。
【００３８】
データ一覧の作成を担当しないサーバ１のデータ一覧管理部１５は、データ一覧の作成を担当するサーバ１に対し、データ一覧を参照できるように要求することができる。また、データ一覧の作成を担当するサーバ１のデータ一覧管理部１５は、例えば、データ一覧の作成を担当しないサーバ１から、データ一覧の参照要求を受けると、当該データ一覧の返信するように応答することができる。
【００３９】
（処理）
次に、本実施形態の分散処理システムにて実行される処理について説明する。
図３は、新規メッセージを受信したときの、分散処理システムのデータ生成時における動作手順をリング状のハッシュＩＤ空間を用いて示す図である。この動作手順は、ステップＳ１から開始する。
【００４０】
まず、ステップＳ１にて、新規のセッションを開始する初期メッセージをクライアント３から受信した負荷分散装置２は、ランダムに選んだ１つのサーバ１（図３では、サーバ識別子１Ａで識別されるサーバ１）に送信する。負荷分散装置２が送信する初期メッセージｍ１には、例えば、セッションを新規に開始することを示す「initial-flg」と、データ識別子keyAと、データ本体を示す「data」が含まれている。ここで、初期メッセージｍ１に含まれるデータ識別子に、データ一覧識別子key0を使用することはないとする。
【００４１】
次に、ステップＳ２にて、サーバ識別子１Ａで識別されるサーバ１は、ハッシュ値計算部１２によって、初期メッセージｍ１に含まれるデータ識別子keyAのハッシュ値を計算する。図３では、データ識別子keyAのハッシュ値は、サーバ識別子１Ｂで識別されるサーバ１の担当領域内に収まるため、初期メッセージｍ１を処理するサーバ１は、サーバ識別子１Ｂで識別されるサーバ１であると特定される。
【００４２】
次に、ステップＳ３にて、サーバ識別子１Ａで識別されるサーバ１は、メッセージ送受信部１１によって、初期メッセージｍ１の処理を担当する、サーバ識別子１Ｂで識別されるサーバ１に初期メッセージｍ１を転送する。
【００４３】
次に、ステップＳ４にて、サーバ識別子１Ｂで識別されるサーバ１は、転送された初期メッセージｍ１に対して所定のサービス処理を行う。このとき、サーバ識別子１Ｂで識別されるサーバ１は、ハッシュ値計算部１２によって、初期メッセージｍ１に含まれるデータ識別子keyAのハッシュ値を計算することで、初期メッセージｍ１を担当するサーバが自身であることを確認する。また、サーバ識別子１Ｂで識別されるサーバ１は、サービス処理によって発生したデータを原本としてデータ管理部１４に保持する。なお、図３には、示していないが、サーバ識別子１Ｂで識別されるサーバ１のデータ管理部１４は、発生したデータの１または複数の複製を他のサーバ１に配置する。
【００４４】
次に、ステップＳ５にて、サーバ識別子１Ｂで識別されるサーバ１は、ハッシュ値計算部１２によって、データ一覧管理部１５が保持する、予め決められたデータ一覧識別子key0のハッシュ値を計算する。図３では、データ一覧識別子key0のハッシュ値は、サーバ識別子１Ｃで識別されるサーバ１の担当領域内に収まるため、データ一覧を作成するサーバ１は、サーバ識別子１Ｃで識別されるサーバ１であると特定される。
【００４５】
次に、ステップＳ６にて、サーバ識別子１Ｂで識別されるサーバ１は、メッセージ送受信部１１によって、一覧更新メッセージｍ２の処理を担当する、サーバ識別子１Ｃで識別されるサーバ１に一覧更新メッセージｍ２を転送する。一覧更新メッセージｍ２には、例えば、データ一覧の更新要求を示す「update-flg」と、データ一覧識別子key0と、初期メッセージｍ１のサービス処理（ステップＳ４）をしたときに発生したデータを示す「keyA.create」が含まれている。
【００４６】
次に、ステップＳ７にて、サーバ識別子１Ｃで識別されるサーバ１は、データ一覧管理部１５によって、一覧更新メッセージｍ２を処理し、初期メッセージｍ１のサービス処理をしたときに発生したデータを用いてデータ一覧Ｔ３を更新するように作成する。具体的には、データ一覧Ｔ３に、初期メッセージｍ１に含まれるデータ識別子keyAと、初期メッセージｍ１のサービス処理をしたときに発生したデータとを関連付けたレコードをデータ一覧Ｔ３に追加する。このとき、データ一覧管理部１５は、データ一覧Ｔ３に追加したレコードに対して、追加時間（データ生成時間）などの属性を付加することもできる。
【００４７】
なお、サーバ識別子１Ｃで識別されるサーバ１は、データ一覧管理部１５によって、更新したデータ一覧Ｔ３の複製を、サーバ識別子１Ｃの右隣りに隣接するサーバ識別子１Ｄ，１Ｅで識別されるサーバ１に配置する。
図３に示す動作手順によれば、分散システム全体に負荷をかけることなく、新規メッセージを処理して発生したデータを追加したデータ一覧Ｔ３を分散システム内に保持することができる。
以上で、図３に示す、新規メッセージを受信したときの、分散処理システムのデータ生成時における動作手順の説明を終了する。
【００４８】
図４は、分散システム内に保持されているデータ一覧の参照時における動作手順をリング状のハッシュＩＤ空間を用いて示す図である。この動作手順は、あるサーバ１（図４にてサーバ識別子１Ａのサーバ１）がメッセージ処理や所定の保守コマンド処理において現時点での分散処理システム全体が保持するデータのデータ一覧を必要とした場合に実行されるものであり、ステップＳ１１から開始する。
【００４９】
まず、ステップＳ１１にて、サーバ識別子１Ａのサーバ１は、ハッシュ値計算部１２によって、データ一覧管理部１５が保持する、予め決められたデータ一覧識別子key0のハッシュ値を計算する。図４では、データ一覧識別子key0のハッシュ値は、サーバ識別子１Ｃで識別されるサーバ１の担当領域内に収まるため、データ一覧を作成するサーバ１は、サーバ識別子１Ｃで識別されるサーバ１であると特定される。
【００５０】
次に、ステップＳ１２にて、サーバ識別子１Ａのサーバ１は、サーバ識別子１Ｃで識別されるサーバ１に対して、データ一覧Ｔ３の参照要求を送信する。
【００５１】
次に、ステップＳ１３にて、サーバ識別子１Ｃのサーバ１は、メッセージ送受信部１１によって、参照要求をしたサーバ識別子１Ｃで識別されるサーバ１に対して、データ一覧管理部１５が保持するデータ一覧Ｔ３を応答して送信する。
【００５２】
図４に示す動作手順によれば、データ一覧Ｔ３を必要とするサーバ１は、データ一覧Ｔ３を保持するサーバからデータ一覧Ｔ３を容易に取得することができる。
図４では、サーバ識別子１Ａのサーバ１がデータ一覧を必要とする場合の動作手順を説明した。しかし、この動作手順は、データ一覧Ｔ３を必要とし、データ一覧Ｔ３を保持する、サーバ識別子１Ｃのサーバ１に参照要求を行うことができる装置（例：負荷分散装置２、分散処理システムを管理する管理装置（図示せず））全般に適用することができる。
以上で、図４に示す、分散システム内に保持されているデータ一覧の参照時における動作手順の説明を終了する。
【００５３】
本実施形態によれば、分散処理システムを構成する特定のサーバがデータ一覧を作成するサーバとして機能し、分散処理システムの内部にデータ一覧を保持することができる。よって、システム規模の増大化、複雑化、メンテナンス性の低下といったデメリットを引き起こすことはない。また、データ一覧を作成するサーバは、他のサーバにてメッセージを処理して発生したデータを当該データが発生した後に取得することができる。よって、データ一覧を作成するサーバから他のサーバのすべてに要求してデータを収集するといった、データ一覧を作成するための専用の処理を不要とすることができ、サーバごとの処理負荷の増大、サーバ間の通信負荷の増大などを抑制することができる。
したがって、コンシステントハッシュ法を利用する分散処理システムにて各サーバが保持するデータのデータ一覧の取得を容易に実現することができる。
【００５４】
また、データ一覧を冗長化することで、データ一覧を作成するサーバに障害が生じても、データ一覧の複製を活用することができ、データ一覧を用いた処理に対する信頼性を確保することができる。
【００５５】
また、データ一覧を必要とするサーバは、データ一覧を作成するサーバからデータ一覧を容易に取得することができ、データ一覧を用いた処理を迅速かつ確実に実行することができる。
【００５６】
（他の実施形態）
分散処理システム全体が扱うデータが大量になると、データ一覧が大規模になる。この場合、データ一覧参照に対する処理に多大な負荷が生じ、データ一覧を保持するサーバ１がボトルネックとなる可能性がある。その結果、サーバ数を増大しても、分散処理システム全体で単に時間あたりに処理できるメッセージ数が向上しないという制限が生じ得る。また、データ一覧がそれほど大規模でなかったとしても、データ一覧の参照頻度が増大すれば、やはり、データ一覧を保持するサーバ１がボトルネックとなる可能性がある。
【００５７】
そこで、分散処理システムにてデータ一覧識別子を複数種類用意し、それぞれのデータ一覧識別子がハッシュＩＤ空間上の担当領域に配置されるサーバ１を複数用意するとよい。なお、データ一覧識別子の各々で識別されるデータ一覧は同一になるとする。これにより、データ一覧の参照要求の対象となるサーバ１が複数存在するため、データ一覧参照に対する処理の負荷の局在化を回避し、前述のボトルネックを回避することができる。なお、コンシステントハッシュ法の性質上、複数種類のデータ一覧識別子がリング状のハッシュＩＤ空間上で互いに遠ざかるように配置されるように、複数種類のデータ一覧識別子のハッシュ値を決定することが好ましい。
【００５８】
（変形例）
本実施形態では、各サーバ１がサーバ管理部１３を有していたが、負荷分散装置２が有するようにしてもよい。これにより、負荷分散装置２は、クライアント３からのメッセージに含まれているデータ識別子を解析して、当該メッセージの処理を担当するサーバ１を特定することができる。よって、負荷分散装置２は、メッセージを担当するサーバ１に当該メッセージを確実に送信することができる。
【００５９】
また、本実施形態では、サーバ１は、ハッシュ値計算部１２がデータ一覧識別子key0のハッシュ値を計算してから、データ一覧Ｔ３の作成を担当するサーバ１を特定した（図３のステップＳ５、図４のステップＳ１１）。しかし、各サーバ１が事前に計算したkey0のハッシュ値を保持しておくことで、ハッシュ値の計算過程を省略することもできる。
【００６０】
本実施形態で説明した種々の技術を適宜組み合わせた技術を実現することもできる。
本実施形態で説明したソフトウェアをハードウェアとして実現することもでき、ハードウェアをソフトウェアとして実現することもできる。
その他、ハードウェア、ソフトウェア、フローチャートなどについて、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【００６１】
１      サーバ
２      負荷分散装置
３      クライアント
１１    メッセージ送受信部
１２    ハッシュ値計算部
１３    サーバ管理部
１４    データ管理部
１５    データ一覧管理部
２１    メッセージ送受信部
２２    振り分け先判定部
Ｔ１    （サーバの）管理テーブル
Ｔ２    （データの）管理テーブル
Ｔ３    データ一覧
【図１】
0006383338.tif 000002
【図２】
0006383338.tif 000003
【図３】
0006383338.tif 000004
【図４】
0006383338.tif 000005