(57)【特許請求の範囲】
【請求項１】
クライアントからの要求を受けて、その要求を処理する複数の処理サーバと、複数の前記処理サーバの中から前記要求の分配先として１台の前記処理サーバを選択する振り分けサーバとを備える分散システムであって、
前記処理サーバのＩＤごとに、当該処理サーバが担当する配置ＩＤの始点ＩＤから終点ＩＤまでの範囲を示す値域を対応づけるデータ配置情報を記憶するとともに、当該データ配置情報を前記処理サーバおよび前記振り分けサーバに配信して前記処理サーバおよび前記振り分けサーバを管理する管理サーバを備え、
前記管理サーバは、前記処理サーバの追加または削除が発生した場合、自身が記憶する前記データ配置情報を更新し、
当該更新されたデータ配置情報を用いて、全ての前記処理サーバが自身の前記データ配置情報を更新した後に、前記振り分けサーバが自身の前記データ配置情報を更新するとともに、
前記処理サーバおよび前記振り分けサーバが、前記データ配置情報を共有している場合には、
前記管理サーバは、全ての前記処理サーバおよび前記振り分けサーバに対して、前記処理サーバのみが参照することを指定するフラグを付した前記データ配置情報を配信し、
全ての前記処理サーバから当該配信した前記データ配置情報の更新完了通知を受け取った後に、
全ての前記処理サーバおよび前記振り分けサーバに対して、前記振り分けサーバおよび前記処理サーバが参照することを指定するフラグを付した更新した前記データ配置情報を配信し、全ての前記振り分けサーバから当該配信した前記データ配置情報の更新完了通知を受け取る
ことを特徴とする分散システム。
【請求項２】
前記管理サーバは、前記処理サーバおよび前記振り分けサーバの外部に設けられた外部サーバ、または、複数の前記処理サーバのうち予め設定された前記処理サーバ、もしくは、複数の前記振り分けサーバのうち予め設定された前記振り分けサーバである
ことを特徴とする請求項１に記載の分散システム。
【請求項３】
クライアントからの要求を受けて、その要求を処理する複数の処理サーバと、複数の前記処理サーバの中から前記要求の分配先として１台の前記処理サーバを選択する振り分けサーバとを備える分散システムの分散処理方法であって、
前記処理サーバのＩＤごとに、当該処理サーバが担当する配置ＩＤの始点ＩＤから終点ＩＤまでの範囲を示す値域を対応づけるデータ配置情報を記憶するとともに、当該データ配置情報を前記処理サーバおよび前記振り分けサーバに配信して前記処理サーバおよび前記振り分けサーバを管理する管理サーバを有し、
前記管理サーバにおいて、前記処理サーバの追加または削除が発生した場合、自身が記憶する前記データ配置情報を更新し、
当該更新されたデータ配置情報を用いて、全ての前記処理サーバが自身の前記データ配置情報を更新した後に、前記振り分けサーバが自身の前記データ配置情報を更新するとともに、
前記処理サーバおよび前記振り分けサーバが、前記データ配置情報を共有している場合には、
前記管理サーバにおいて、全ての前記処理サーバおよび前記振り分けサーバに対して、前記処理サーバのみが参照することを指定するフラグを付した前記データ配置情報を配信し、
全ての前記処理サーバから当該配信した前記データ配置情報の更新完了通知を受け取った後に、
全ての前記処理サーバおよび前記振り分けサーバに対して、前記振り分けサーバおよび前記処理サーバが参照することを指定するフラグを付した更新した前記データ配置情報を配信し、全ての前記振り分けサーバから当該配信した前記データ配置情報の更新完了通知を受け取る
ことを特徴とする分散処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散システムおよび分散処理方法の技術に関する。
【背景技術】
【０００２】
トランザクション処理システムでは、クライアントから処理サーバへとトランザクションの要求が送信されると、処理サーバがその処理を行い、その結果を応答信号としてクライアントへと返信する。そして、複数の処理サーバが協調して動作する分散処理システムとすることで、クライアントの台数増加に対応する。分散処理システムのロードバランサは、クライアントからそれぞれ発行される要求を、単一の出入り口として受け付けると、それらの要求を複数の処理サーバにそれぞれ分配する。
【０００３】
ロードバランサが要求された処理を振り分ける手法としては、コンシステント・ハッシングを挙げることができる（非特許文献１）。コンシステント・ハッシングは、データの保管要求と取得要求のみを受け付ける単純なインタフェースを持ち、受信した信号の要求するデータの識別子を見て、複数のサーバのうち何れのサーバが対象のデータを管理しているかを特定し、そのサーバに対して保管要求及び取得要求を振り分けることを行う。
トランザクション処理システムが扱うトランザクションとして、複数のトランザクション状態間が関連する場合も考えられる。ここで、トランザクション間が「関連する」とは、例えばＳＩＰ（Session Initiation Protocol）におけるＢ２ＢＵＡ（Back-to-Back User Agent）のように、２つの呼をアプリケーションサーバが終端し、これを常に対として処理を行うような形態を指す。
【０００４】
なお、Ｂ２ＢＵＡとは、２台のクライアント間でＳＩＰのセッションを接続するときに、対応しているＳＩＰの方式の違いなどにより、その２台が直接接続できないときに、その２台のセッションを仲介する別の装置（Ｂ２ＢＵＡ）を設けることにより、Ｂ２ＢＵＡをアダプタとして２台のクライアントがセッションを接続できるようにする仕組みである。
【０００５】
そこで、関連する複数のトランザクションを同じ１つの処理サーバへと分配することにより、複数のトランザクション間での処理の待ち合わせ時間を短縮することができる。一方、複数のトランザクション間の関連性は、時間の経過によって変化することもある。例えば、Ｂ２ＢＵＡ接続によるユーザＡとユーザＢとによる二者通話と、ユーザＣとユーザＤとによる二者通話が成立していた場合に、呼を切断することなく、それぞれＡ−Ｃ、Ｂ−Ｄ間の二者通話に入れ替える場合が、挙げられる。しかし、従来のトランザクション分配処理では、このような複数のトランザクション間の関連性を考慮した効率的な分配が行われておらず、トランザクションの処理効率を落としてしまっている。
【０００６】
特許文献１には、クライアントからのトランザクションの要求信号を処理する処理サーバが複数台存在し、それらの前記処理サーバに対して前記要求信号を分散させる分散処理装置が記載されている。特許文献１に記載の分散処理装置は、複数の関連するトランザクションを単位として１つの配置ＩＤを割り当てるとともに、その複数の関連するトランザクションの構成変更を行うことで、複数のトランザクション間の関連性を考慮した効率的なトランザクション分配処理を実現しようとする。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】David Karger, et.al., “Consistent Hashing and Random TreesDistributed Caching Protocols for Relieving Hot Spots on the World Wide Web”,[online],[平成２６年２月２５検索],インターネット<URL:http://www.akamai.com/dl/technical_publications/ConsistenHashingandRandomTreesDistributedCachingprotocolsforrelievingHotSpotsontheworldwideweb.pdf>
【特許文献】
【０００８】
【特許文献１】特開２０１２−１６００７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載の分散処理装置にあっては、処理サーバの追加または削除に伴うデータ配置情報を更新するタイミングが全ての振り分けサーバおよび処理サーバで一致することは分散システムである以上困難である。すなわち、各処理サーバが要求信号受信時にアクセスすべきデータ管理装置を特定できない可能性があり、確実に処理を実行するためには、全ての処理サーバに対する問い合わせを行わざるを得ない。
【００１０】
以下、上記課題について詳細に説明する。
従来の分散処理システムでは、データ配置テーブルの更新タイミングを全ての振り分けサーバ、処理サーバ間で一致させることは非常に困難である。例えば、振り分けサーバが処理サーバより先にデータ配置テーブルを更新した場合、処理サーバでは他の処理サーバが収容するデータ管理装置へのアクセスが正しく実行されず、データの一貫性が担保されないケースが起こり得る。具体的には、一部の振り分けサーバでのみデータ配置テーブルが更新されており、振り分けサーバが初期信号と再送信号で異なる処理サーバに対して要求信号を転送したが、処理サーバではデータ配置テーブルの更新（すなわち処理サーバの追加・削除の発生）を認識しておらず、初期信号と再送信号を受け取った双方の処理サーバで処理が実行されるデータの一貫性が崩れるケースが挙げられる。
【００１１】
このようなケースを防ぐためには、処理サーバは、常に処理サーバの追加または削除が発生している可能性を考慮して、他の処理サーバが収容するデータ管理装置へアクセスしデータの有無を確認する必要がある。例えば、処理サーバが１台追加されると、データ配置情報上のある１台のサーバの領域を分割して担当することになる。このため、データを保持している可能性のあるデータ管理装置は、データ配置情報に従って処理サーバが収容するデータ管理装置へアクセスしデータの有無を確認する必要がある。この問い合わせを常に行うことは、システムのオーバーヘッドとなり望ましくない。
【００１２】
このような背景を鑑みて本発明がなされたのであり、本発明は、分散システムを構成する処理サーバの追加または削除が発生した際に、システムのオーバーヘッドを避けつつデータ一貫性の担保を可能とする分散システムおよび分散処理方法を提供することを課題とする。
【課題を解決するための手段】
【００１３】
前記した課題を解決するため、請求項１に記載の発明は、クライアントからの要求を受けて、その要求を処理する複数の処理サーバと、複数の前記処理サーバの中から前記要求の分配先として１台の前記処理サーバを選択する振り分けサーバとを備える分散システムであって、前記処理サーバのＩＤごとに、当該処理サーバが担当する配置ＩＤの始点ＩＤから終点ＩＤまでの範囲を示す値域を対応づけるデータ配置情報を記憶するとともに、当該データ配置情報を前記処理サーバおよび前記振り分けサーバに配信して前記処理サーバおよび前記振り分けサーバを管理する管理サーバを備え、前記管理サーバは、前記処理サーバの追加または削除が発生した場合、自身が記憶する前記データ配置情報を更新し、当該更新されたデータ配置情報を用いて、全ての前記処理サーバが自身の前記データ配置情報を更新した後に、前記振り分けサーバが自身の前記データ配置情報を更新するとともに、前記処理サーバおよび前記振り分けサーバが、前記データ配置情報を共有している場合には、前記管理サーバは、全ての前記処理サーバおよび前記振り分けサーバに対して、前記処理サーバのみが参照することを指定するフラグを付した前記データ配置情報を配信し、全ての前記処理サーバから当該配信した前記データ配置情報の更新完了通知を受け取った後に、全ての前記処理サーバおよび前記振り分けサーバに対して、前記振り分けサーバおよび前記処理サーバが参照することを指定するフラグを付した更新した前記データ配置情報を配信し、全ての前記振り分けサーバから当該配信した前記データ配置情報の更新完了通知を受け取ることを特徴とする。
【００１４】
このようにすることで、分散システムを構成する処理サーバの追加または削除が発生した場合、全ての処理サーバが更新されたデータ配置情報に従い要求信号の処理を行っていることを保証して、データ一貫性を担保することができる。
また、振り分けサーバおよび処理サーバが１台のサーバに縮退され、かつこれらがデータ配置情報を共有する構成でも適用することができる。
【００１７】
また、請求項２に記載の発明は、前記管理サーバは、前記処理サーバおよび前記振り分けサーバの外部に設けられた外部サーバ、または、複数の前記処理サーバのうち予め設定された前記処理サーバ、もしくは、複数の前記振り分けサーバのうち予め設定された前記振り分けサーバであることを特徴とする。
【００１８】
このようにすることで、管理サーバが、外部に設けられた外部サーバ、または、処理サーバもしくは振り分けサーバのいずれの場合であっても処理サーバの追加または削除に伴うデータ配置情報の更新および配信を実現することができる。
【００２１】
また、請求項３に記載の発明は、クライアントからの要求を受けて、その要求を処理する複数の処理サーバと、複数の前記処理サーバの中から前記要求の分配先として１台の前記処理サーバを選択する振り分けサーバとを備える分散システムの分散処理方法であって、前記処理サーバのＩＤごとに、当該処理サーバが担当する配置ＩＤの始点ＩＤから終点ＩＤまでの範囲を示す値域を対応づけるデータ配置情報を記憶するとともに、当該データ配置情報を前記処理サーバおよび前記振り分けサーバに配信して前記処理サーバおよび前記振り分けサーバを管理する管理サーバを有し、前記管理サーバにおいて、前記処理サーバの追加または削除が発生した場合、自身が記憶する前記データ配置情報を更新し、当該更新されたデータ配置情報を用いて、全ての前記処理サーバが自身の前記データ配置情報を更新した後に、前記振り分けサーバが自身の前記データ配置情報を更新するとともに、前記処理サーバおよび前記振り分けサーバが、前記データ配置情報を共有している場合には、前記管理サーバにおいて、全ての前記処理サーバおよび前記振り分けサーバに対して、前記処理サーバのみが参照することを指定するフラグを付した前記データ配置情報を配信し、全ての前記処理サーバから当該配信した前記データ配置情報の更新完了通知を受け取った後に、全ての前記処理サーバおよび前記振り分けサーバに対して、前記振り分けサーバおよび前記処理サーバが参照することを指定するフラグを付した更新した前記データ配置情報を配信し、全ての前記振り分けサーバから当該配信した前記データ配置情報の更新完了通知を受け取ることを特徴とする。
【００２２】
このようにすることで、分散システムを構成する処理サーバの追加または削除が発生した場合、全ての処理サーバが更新されたデータ配置情報に従い要求信号の処理を行っていることを保証して、データ一貫性を担保することができる。
また、振り分けサーバおよび処理サーバが１台のサーバに縮退され、かつこれらがデータ配置情報を共有する構成でも適用することができる。
【発明の効果】
【００２５】
本発明によれば、分散システムを構成する処理サーバの追加または削除が発生した際に、システムのオーバーヘッドを避けつつデータ一貫性の担保を可能とする分散システムおよび分散処理方法を提供することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の実施形態に係るトランザクション処理システムを示す構成図である。
【図２】本発明の実施形態に係るトランザクション処理システムの各サーバの詳細を示す構成図である。
【図３】本発明の実施形態に係るトランザクション管理テーブルを示す図である。
【図４】本発明の実施形態に係るトランザクション処理システムのデータ配置テーブルを示す図である。
【図５】本発明の実施形態に係るトランザクション処理システムの管理サーバが分散システム内に配置された構成図である。
【図６】本発明の実施形態に係るトランザクション処理システムのデータ配置テーブルを配信する処理を示すフローチャートである。
【図７】本発明の実施形態に係るトランザクション処理システムのデータ配置テーブルを示す図である。
【発明を実施するための形態】
【００２７】
以下、本発明の一実施形態について、図面を参照して詳細に説明する。
【００２８】
図１は、トランザクション処理システムを示す構成図である。
図１に示すように、トランザクション処理システム１０００は、クライアント１と、ロードバランサ２と、分散システム１０とがネットワークで接続されて構成される。分散システム１０は、複数台の振り分けサーバ３と、複数台の処理サーバ４と、データ管理装置５と、管理サーバ６と、から構成される。
【００２９】
分散システム１０は、クライアント１からのトランザクションの要求信号を処理する処理サーバ４が複数台存在し、それらの処理サーバ４に対して要求信号を分散させる分散処理装置である。
分散システム１０は、クライアント１からの要求を受けて、その要求を処理する複数の処理サーバ４と、複数の処理サーバ４の中から要求の分配先として１台の処理サーバ４を選択する振り分けサーバ３とを備える。
図１のトランザクション処理システムを構成する各装置の台数は、図１に例示した台数に限定されず、任意の台数としてもよい。また、振り分けサーバ３、処理サーバ４、データ管理装置５を別の筐体で記載したが、同一サーバ上で別々の機能として動作させることも可能である。
【００３０】
なお、図１のトランザクション処理システムを構成する各装置は、ＣＰＵ（Central Processing Unit）とメモリとハードディスク（記憶手段）とネットワークインタフェースとを有するコンピュータとして構成され、このコンピュータは、ＣＰＵが、メモリ上に読み込んだプログラムを実行することにより、各処理部を動作させる。
【００３１】
トランザクション処理システムで動作するプログラムの一例として、電話などの呼（セッション）処理を行うアプリケーションサーバを実現するための、分散処理ミドルウェアがある。分散処理ミドルウェアは、アプリケーションを分散処理ミドルウェアとは別に用意するもので、アプリケーションからは装置が分散していることを意識することなくサービスの処理を実現することができるようにするものである。このような分散処理ミドルウェアを使うことによって、外部からは単一のアプリケーションサーバのように見せながら、実態は複数台のサーバによる台数効果によって大規模な処理を行うことが可能になる。
【００３２】
クライアント１は、処理サーバ４に対して、トランザクションの処理を要求する。ロードバランサ２は、クライアント１からの要求を受け、分散システム内の複数台の振り分けサーバ３のうちの１台を選択し、その選択した振り分けサーバ３に処理を依頼する。ここで、クライアント１からは、ロードバランサ２という出入り口を介して、分散システムがあたかも単一の装置で動作するシステムとして見えるため、分散システム内の装置構成を柔軟に変更する（装置の追加や削除など）ことができる。
【００３３】
振り分けサーバ３は、ロードバランサ２からの要求を受け、複数台の処理サーバ４のうち要求信号の分配先である１台を選択し、その選択した処理サーバ４に処理を依頼する。ここで、処理サーバ４の選択処理においては、データ管理装置５内に管理されているトランザクションのデータの所在が参照される。まず、処理サーバ４とデータ管理装置５とは１対１で接続されており、あるトランザクションのデータは、ある１台のデータ管理装置５が格納している。よって、要求されたトランザクションのデータを管理するデータ管理装置５を収容する処理サーバ４を、振り分けサーバ３が選択する必要がある。トランザクションのデータとは、トランザクションを処理するときに必要なデータであり、例えば、呼処理における呼の識別子、発信者、受信者、状態遷移を含む。
【００３４】
処理サーバ４は、振り分けサーバ３からの要求を受け、データ管理装置５内のトランザクションのデータにアクセスすることで、トランザクションの要求を処理する。
【００３５】
データ管理装置５は、処理サーバ４に収容され、各処理サーバ４に対してそれぞれトランザクションデータを格納する。処理サーバ４は、振り分けサーバ３からの要求を受け、データ管理装置５内のトランザクションのデータにアクセスすることで、トランザクションの要求を処理する。
【００３６】
管理サーバ６は、処理サーバ４のＩＤごとに、当該処理サーバ４が担当する配置ＩＤの始点ＩＤから終点ＩＤまでの範囲を示す値域を対応づけるデータ配置テーブル１０２（データ配置情報）（後記図４参照）を記憶するとともに、当該データ配置テーブル１０２を処理サーバ４および振り分けサーバ３に配信して処理サーバ４および振り分けサーバ３を管理する。
管理サーバ６は、処理サーバ４の追加または削除が発生した場合、自身が記憶するデータ配置テーブル１０２を更新し、当該更新されたデータ配置テーブル１０２を用いて全ての処理サーバ４が記憶するデータ配置テーブル１０２を更新させた後に、振り分けサーバ３が記憶するデータ配置テーブル１０２を更新させる。
【００３７】
管理サーバ６は、振り分けサーバ３と処理サーバ４の双方が保持するデータ配置テーブル１０２（図４参照）の更新タイミングを管理する。管理サーバ６は、処理サーバ４の追加または削除が発生した場合、全ての処理サーバ４のデータ配置テーブル１０２を更新した後に、振り分けサーバ３のデータ配置テーブル１０２を更新するデータ配置テーブル更新制御を行う。なお、データ配置テーブル更新制御の詳細については、図６を参照し後記する。また、管理サーバ６は、分散システム１０内の振り分けサーバ３が管理サーバ６の備える機能を持つ構成、または処理サーバ４が管理サーバ６の備える機能を持つ構成でもよく図５により後記する。
【００３８】
図２は、トランザクション処理システムの各サーバの詳細を示す構成図である。
図２に示すように、振り分けサーバ３は、トランザクション分散部３１と、データ配置テーブル１０２（データ配置情報）と、を有する。処理サーバ４は、トランザクション処理部４１と、配置ＩＤ割当部４２と、集合変更部４３と、他管理データ取得部４４と、トランザクション管理テーブル１０１、データ配置テーブル１０２と、を有する。
なお、振り分けサーバ３のデータ配置テーブル１０２と処理サーバ４のデータ配置テーブル１０２とを共有する形態を採ることも可能である。
【００３９】
<トランザクション分散部>
トランザクション分散部３１は、その配置ＩＤを検索キーとして、データ配置テーブル１０２（図４参照）から、トランザクションの処理要求を担当する処理サーバ４を決定し、その処理サーバ４のトランザクション処理部４１へと要求を送信する。トランザクションの処理要求に配置ＩＤが含まれていないときには、そのトランザクションＩＤを検索キーとして、トランザクション管理テーブル１０１（図３参照）から配置ＩＤを取得してもよい。
【００４０】
<トランザクション処理部>
トランザクション処理部４１は、トランザクションの要求を受け、データ管理装置５内のトランザクションのデータにアクセスして、トランザクションの要求を処理する。トランザクション処理部４１は、トランザクションの要求を処理する過程において、データ管理装置５内のトランザクションのデータの配置に変更（新規データ作成、既存データ移動、既存データ削除など）が発生したときには、配置ＩＤ割当部４２に対して、トランザクションのデータに対して割り当てる配置ＩＤの割当処理を依頼する。
また、トランザクション処理部４１は、トランザクションの要求を処理する過程において、トランザクションのデータと、配置ＩＤとの対応関係に変更が発生したときには、集合変更部４３に対して、その対応関係の変更処理を依頼する。トランザクション処理部４１は、トランザクションの要求を処理する過程において、他装置の処理サーバ４配下のデータ管理装置５内にデータアクセスを行うときには、他管理データ取得部４４に対して、そのデータアクセスを依頼する。
【００４１】
<配置ＩＤ割当部>
配置ＩＤ割当部４２は、１つ以上のトランザクションに対して、１つの配置ＩＤを割り当て、その結果をトランザクション管理テーブル１０１（図３参照）へと格納する。なお、複数のトランザクションをグループ化して１つの配置ＩＤを割り当てるときには、同じ配置ＩＤが割り当てられた複数のトランザクションは、互いに関連するトランザクションである。「関連するトランザクション」とは、例えば、Ｂ２ＢＵＡにより接続される２つの呼処理が挙げられる。ただし、トランザクションの種類は呼処理に限定されず、また、トランザクションの本数は２つに限定されない。
【００４２】
<集合変更部>
集合変更部４３は、複数のトランザクション間の関連性がトランザクションの処理中に変更されるときに、その変更をトランザクション管理テーブル１０１へと反映させるとともに、トランザクション管理テーブル１０１の更新内容を基に、データ管理装置５内のトランザクションのデータの移動処理を制御する。
【００４３】
<他管理データ取得部>
他管理データ取得部４４は、データ配置テーブル１０２を参照してアクセス先のデータ管理装置５を決定する。
他管理データ取得部４４は、トランザクション処理部４１からの指示を受け、他の処理サーバ４が収容するデータ管理装置５へのデータアクセスを行う。なお、トランザクション処理部４１からの他装置で管理するデータの取得指示は、例えば、処理サーバ４の追加・削除が発生したことに伴い、データ配置テーブル１０２（図４参照）が更新され、要求信号を受信した処理サーバ４が接続されているデータ管理装置５とは別のデータ管理装置５にデータが配置されており、そのデータ管理装置５からデータ取得が必要となるタイミングにも通知される。
また、他の例としては、Ｂ２ＢＵＡにおける話者の入れ替えを行うにあたって、入れ替え先のＢ２ＢＵＡの各トランザクション状態が通話確立状態になっているか確認するなどの、別のＢ２ＢＵＡ状態へのアクセスが発生したときに、通知される。まず、他管理データ取得部４４は、トランザクション処理部４１から通知された配置ＩＤを基にデータ配置テーブル１０２を検索し配置ＩＤを担当する処理サーバ４を特定する。他管理データ取得部４４は、特定された他装置である処理サーバ４に収容されるデータ管理装置５から、トランザクション処理部４１により指示されたデータを取得する。これにより、複数台の処理サーバ４が１台のデータ管理装置５を直接共有（接続）していなくても、自身の担当しないデータを取得することができる。
【００４４】
<トランザクション管理テーブル>
図３は、トランザクション管理テーブル１０１を示す図である。
図３に示すように、トランザクション管理テーブル１０１は、配置ＩＤごとに、その配置ＩＤが割り当てられている１つ以上のトランザクションのＩＤを対応づける表である。例えば、配置ＩＤ「０」と配置ＩＤ「１」のレコードでは、それぞれＢ２ＢＵＡにより接続される２つのトランザクションがグループ化されて１つの配置ＩＤに対応する。また、配置ＩＤ「２」のレコードでは、ＳＩＰにおけるＳＩＰプロキシに相当するような非常にシンプルな１つのトランザクション「Ｔ４」に対応する。
【００４５】
<データ配置テーブル>
図４は、データ配置テーブル１０２（データ配置情報）を示す図である。
図４に示すように、データ配置テーブル１０２は、処理サーバ４のＩＤごとに、その処理サーバ４（図２参照）が担当する配置ＩＤの値域（始点ＩＤから終点ＩＤまでの範囲を示す）を対応づける表である。処理サーバ４のＩＤは、担当する配置ＩＤの始点となる配置ＩＤと同じ値としてもよいし、ランダムな値としてもよい。配置ＩＤとは、１つ以上のトランザクションのデータに対して割り当てられるＩＤであり、同じ配置ＩＤが割り当てられるトランザクションのデータは、同じ１つのデータ管理装置５内に格納される。例えば、配置ＩＤ「１００」が割り当てられるトランザクションのデータは、処理サーバ４「Ｐ１」配下のデータ管理装置５（図２参照）に格納される。トランザクションの状態遷移とは、話し中、呼び出し中などの呼の状態を示すパラメータである。サーバの追加があった場合には、１つの配置ＩＤの値域を選択して、その選択した値域を分割して追加にも割り当てる。逆に、サーバの削除があった場合には、そのサーバが担当していた値域を残りのサーバの値域に統合する。これにより、サーバの追加・削除に伴う配置ＩＤの値域の変更量、すなわち担当サーバの変更となるデータの移動を限定することが可能である。
【００４６】
次に、管理サーバ６が分散システム１０内に配置された構成例について説明する。
図５は、管理サーバ６が分散システム内に配置された構成図である。図１と同一構成部分には同一符号を付して説明を省略する。
図５（ａ）に示すように、分散システム１０Ａは、複数の振り分けサーバ３のうち予め設定された１台が管理サーバ６としての機能を有する構成例である。なお、複数の振り分けサーバ３のうちいずれの振り分けサーバ３に管理サーバ６の機能を持たせるかは、管理者等が任意に設定することができる。
図５（ｂ）に示すように、分散システム１０Ｂは、複数の処理サーバ４のうち予め設定された１台が管理サーバ６としての機能を有する構成例である。同様に、複数の処理サーバ４のうちいずれの処理サーバ４に管理サーバ６の機能を持たせるかは、管理者等が任意に設定することができる。
なお、分散システム１０は、トランザクション処理以外の用途にも使用することが可能であり、トランザクション管理テーブル１０１や集合変更部４３を具備しない形態も採り得る。
【００４７】
以下、上述のように構成されたトランザクション処理システム１０００の処理サーバ４の追加または削除に伴うデータ配置テーブル１０２の更新およびその配信方法について説明する。
まず、処理サーバ４（図２参照）の追加または削除が発生した場合について考える。処理サーバ４が追加された場合、データ配置テーブル１０２（図４参照）に新たに追加された処理サーバ４を追加する。また、処理サーバ４が削除された場合、データ配置テーブル１０２から削除された処理サーバ４を削除する必要がある。
図１に示すように、分散システム１０の外部にあるデータ配置テーブル１０２を管理する管理サーバ６が、分散システム１０を構成する全ての振り分けサーバ３および処理サーバ４にデータ配置テーブル１０２を配信する構成例についての動作を説明する。
【００４８】
図２のトランザクション処理システム１０００において、データ配置テーブル１０２が更新されると、データ管理装置５内のトランザクションのデータ移動処理が必要となる。この移動処理が完了するまでは、移動対象となっているデータに関連するトランザクション処理時に他の処理サーバ４が収容するデータ管理装置５へのアクセスが必要となる。なお、このトランザクションデータ移動処理は、トランザクションの処理要求時に該当するデータを移動することも可能であるし、トランザクションの処理要求とは別にバックグラウンドで移動することも可能である。
ここで、解決課題で述べたように、特許文献１に記載の分散処理装置にあっては、処理サーバの追加又は削除に伴うデータ配置テーブル１０２を更新するタイミングが全ての振り分けサーバ・処理サーバで一致することは分散システムである以上困難であった。
【００４９】
本発明者らは、上記の問題は、処理サーバ４の追加または削除に伴い、振り分けサーバ３の振り分け先が変更になった時点で、処理サーバ４が最新のデータ配置テーブル１０２を持ち、データの移行が完了するまでの限定的な期間のみデータの一貫性を考慮すればよいことに着目した。
そこで、本実施形態のトランザクション処理システムでは、管理サーバ６が、データ配置テーブル１０２の更新段階を２段階に分け、まず全ての処理サーバ４のデータ配置テーブル１０２を更新し、次いで全ての振り分けサーバ３のデータ配置テーブル１０２を更新する。このように、データ配置テーブル１０２を処理サーバ４と振り分けサーバ３との順番で更新するデータ配置テーブル更新制御を行う。
【００５０】
[データ配置テーブル配信フロー]
図６は、データ配置テーブル１０２を配信する処理を示すフローチャートである。本フローは、データ配置テーブル１０２を管理する管理サーバ６（図１および図５）において実行される。
まず、ステップＳ１１で管理サーバ６は、例えば図示しないネットワーク管理装置から処理サーバ４の追加・削除情報を受信する。
ステップＳ１２では、管理サーバ６は、自身が記憶するデータ配置テーブル１０２を更新する。
ステップＳ１３では、管理サーバ６は、全処理サーバ４に対して更新されたデータ配置テーブル１０２を配信する。
【００５１】
ステップＳ１４では、管理サーバ６は、全処理サーバ４から配信したデータ配置テーブル１０２の更新完了通知を受け取ったか否かを判定する。全処理サーバ４から配信したデータ配置テーブル１０２の更新完了通知を受け取っていない場合は、更新完了通知を受け取るまで待機する（ステップＳ１４：Ｎｏ）。
全処理サーバ４から配信したデータ配置テーブル１０２の更新完了通知を受け取った場合（ステップＳ１４：Ｙｅｓ）、ステップＳ１５で管理サーバ６は、全振り分けサーバ３に対して自身が記憶するデータ配置テーブル１０２を配信する。
【００５２】
ステップＳ１６では、管理サーバ６は、全振り分けサーバ３から配信したデータ配置テーブル１０２の更新完了通知を受け取ったか否かを判定する。全振り分けサーバ３から配信したデータ配置テーブル１０２の更新完了通知を受け取っていない場合は、更新完了通知を受け取るまで待機する（ステップＳ１６：Ｎｏ）。
全振り分けサーバ３からデータ配置テーブル１０２の更新完了通知を受け取った時点（ステップＳ１６：Ｙｅｓ）でデータ配置テーブル１０２の更新は完了し、処理サーバ４の追加または削除に伴うデータ配置テーブル１０２の更新および配信処理を終了する。
【００５３】
なお、データ配置テーブル１０２の配信は、更新されたデータのみの差分データを配信する形式としてもよい。
このフローによるデータ配置テーブル１０２の配信により、処理サーバ４の追加または削除に伴い振り分けサーバ３の振り分け先が変更された時点で、全処理サーバ４は、最新のデータ配置テーブル１０２を保持していることとなる。
各処理サーバ４では、データ配置テーブル１０２を更新次第、データ配置テーブル１０２に従い動作を行う。この時、データの一貫性を考慮し、データを保持している可能性のある処理サーバ４が収容するデータ管理装置５に対してデータの有無を問い合わせし、その問い合わせを受け取った各処理サーバ４が処理を行う。また、振り分けサーバ３もデータ配置テーブル１０２を更新次第、データ配置テーブル１０２に従い要求信号の転送を開始する。
【００５４】
[変形例]
変形例のトランザクション処理システムは、振り分けサーバ３、処理サーバ４、およびデータ管理装置５が１台のサーバにまとめられ（以下、各装置がまとめられ１台となった構成を「縮退」という）、かつデータ配置テーブル１０２を共有する構成を採る例である。なお、振り分けサーバ３および処理サーバ４が１台のサーバに縮退され、かつこれらがデータ配置テーブル１０２を共有する構成でも同様に適用可能である。
【００５５】
図７は、縮退構成時のデータ配置テーブル１０２Ａを示す図である。図７は、振り分けサーバ３、処理サーバ４、およびデータ管理装置５が１台のサーバに縮退された場合のデータ配置テーブル１０２Ａの構成例である。図４のデータ配置テーブル１０２と同一構成要素には同一名称を付している。
図７に示すように、データ配置テーブル１０２Ａは、図４のデータ配置テーブル１０２上に、さらにフラグを設けている。具体的には、図７（ａ）は、処理サーバ４のみが参照することを指定するフラグ「１」を付したデータ配置テーブル１０２Ａを示す。図７（ｂ）は、振り分けサーバ３および処理サーバ４が参照することを指定するフラグ「２」を付したデータ配置テーブル１０２Ａを示す。
【００５６】
縮退されたサーバを構成する処理サーバ４および振り分けサーバ３は、データ配置テーブル１０２Ａを共有している。
管理サーバ６（図１および図５）は、処理サーバ４の追加または削除が発生した場合、自身が記憶するデータ配置テーブル１０２Ａを更新する。ここでは、図７（ａ）のデータ配置テーブル１０２Ａにおいて、フラグが「１」となっているサーバＰ６が新たに追加されたサーバである。
【００５７】
管理サーバ６は、１回目の配信で、自身が更新したサーバＰ４のフラグが「１」のデータ配置テーブル１０２Ａを、縮退されたサーバを構成する処理サーバ４および振り分けサーバ３に配信する。図７（ａ）に示すように、データ配置テーブル１０２Ａのフラグ「１」は、処理サーバ４のみが参照することを指定するフラグである。このため、縮退されたサーバを構成する処理サーバ４および振り分けサーバ３は、データ配置テーブル１０２Ａを受信するものの、縮退されたサーバを構成する処理サーバ４のみがサーバＰ６を認識した処理を行う（縮退されたサーバが処理サーバ４として動作するときは、その処理サーバ４がサーバＰ６が存在するものとして動作する）。
このとき、縮退されたサーバを構成する振り分けサーバ３は、サーバＰ６を無視する。ここで「無視する」とは、当該振り分けサーバ３が、元々のＩＤ空間で振り分ける意味である。縮退されたサーバを構成する振り分けサーバ３は、サーバＰ６を無視するが、サーバＰ６の領域を無視することはできない。縮退されたサーバを構成する振り分けサーバ３は、サーバＰ６の領域をサーバＰ５が持っているように認識する。ここでは、当該振り分けサーバ３が、サーバＰ６の領域（８００〜８９９）をサーバＰ５の領域（８００〜９９９）であると判断して動作する。
【００５８】
管理サーバ６は、２回目の配信で、データ配置テーブル１０２ＡのサーバＰ６のフラグを「２」に変更したデータ配置テーブル１０２Ａを配信する。図７（ｂ）に示すように、データ配置テーブル１０２Ａのフラグ「２」は、振り分けサーバ３および処理サーバ４が参照することを指定するフラグである。このため、縮退されたサーバを構成する処理サーバ４および振り分けサーバ３は、フラグ「２」が付されたデータ配置テーブル１０２Ａを受信すると、縮退されたサーバを構成する振り分けサーバ３、処理サーバ４共にサーバＰ６を認識した処理（新しくサーバＰ６が存在するデータ配置テーブル１０２Ａに従った処理）を行う。
その後、管理サーバ６は、全てのトランザクションデータの移行が完了し、分散システム１０上のデータ配置が安定した段階でフラグを「０」に戻す。
【００５９】
上記フラグの機能について、補足して説明する。図６のフローでは、データ配置テーブル１０２をまず処理サーバ４に、次いで振り分けサーバ３に２段階で配信していた。図７の変形例では、管理サーバ６は、データ配置テーブル１０２Ａを縮退されたサーバ（処理サーバ４と振り分けサーバ３とを両方含む）に一度で配信する（すなわちフラグ「１」でサーバＰ６が記述された状態のデータ配置テーブル１０２Ａを最初に配信する）。フラグを見て、フラグが「１」の場合は、縮退されたサーバが振り分けサーバ３である場合、当該振り分けサーバ３は、サーバＰ６を無視して（データ配置テーブル１０２ＡのサーバＰ６がいないものとして）処理をする。
【００６０】
以上説明したように、本実施の形態に係る分散システム１０は、複数台の処理サーバ４から要求信号の分配先である１台の処理サーバ４を選択する振り分けサーバ３と、処理サーバ４のＩＤごとに、当該処理サーバ４が担当する配置ＩＤの始点ＩＤから終点ＩＤまでの範囲を示す値域を対応づけるデータ配置テーブル１０２と、データ配置テーブル１０２の更新タイミングを管理する管理サーバ６と、を備える。
管理サーバ６は、処理サーバ４の追加または削除情報を受信した場合、データ配置テーブル１０２を更新し、全ての処理サーバ４に対して更新したデータ配置テーブル１０２を配信し、全ての処理サーバ４からデータ配置テーブル１０２の更新完了通知を受け取った後に、全ての振り分けサーバ３に対して更新したデータ配置テーブル１０２を配信し、全ての振り分けサーバ３からデータ配置テーブル１０２の更新完了通知を受け取った時点でデータ配置テーブル１０２の更新を完了する。
【００６１】
このように、本実施形態では、分散システム１０は、処理サーバ４の追加または削除が発生した場合、データ配置テーブル１０２の更新を２段階とし、全ての処理サーバ４のデータ配置テーブル１０２を更新した後に、振り分けサーバ３のデータ配置テーブル１０２を更新する。
【００６２】
従来例では、振り分けサーバ３が処理サーバ４より先にデータ配置テーブル１０２を更新した場合、処理サーバ４では他の処理サーバ４が収容するデータ管理装置５へのアクセスが正しく実行されず、データの一貫性が担保されないケースが起こり得た。これに対して、本実施形態によれば、処理サーバ４の追加または削除が発生した際に、先にデータ配置テーブル１０２を処理サーバ４に配信してから、次に振り分けサーバ３に配信することで、データ一貫性を担保することができる。すなわち、振り分けサーバ３が、１台でも更新後のデータ配置テーブル１０２に従い要求信号の転送を開始した時点で、全ての処理サーバ４が更新されたデータ配置テーブル１０２に従い要求信号の処理を行っていることを保証することができる。
その結果、振り分けサーバ３、処理サーバ４、およびデータ管理装置５により構成された分散システム１０において、分散システムの構成変更（分散システム１０を構成する処理サーバ４の追加または削除）が発生した際に、システムのオーバーヘッドを避けつつデータ一貫性の担保を実現することができる。
【００６３】
以上、本発明の実施形態について説明したが、本発明は、ここで説明した実施形態に限定されるものではない。
【符号の説明】
【００６４】
１  クライアント
２  ロードバランサ
３  振り分けサーバ
４  処理サーバ
５  データ管理装置
６  管理サーバ
１０  分散システム
３１  トランザクション分散部
４１  トランザクション処理部
４２  配置ＩＤ割当部
４３  集合変更部
４４  他管理データ取得部
１０１  トランザクション管理テーブル
１０２，１０２Ａ  データ配置テーブル（データ配置情報）
１０００  トランザクション処理システム
【図１】
0005887371.tif 000002
【図２】
0005887371.tif 000003
【図３】
0005887371.tif 000004
【図４】
0005887371.tif 000005
【図５】
0005887371.tif 000006
【図６】
0005887371.tif 000007
【図７】
0005887371.tif 000008