JP5544521B2 - 状態管理方法、処理装置、および状態管理プログラム - Google Patents

状態管理方法、処理装置、および状態管理プログラム Download PDF

Info

Publication number
JP5544521B2
JP5544521B2 JP2011133160A JP2011133160A JP5544521B2 JP 5544521 B2 JP5544521 B2 JP 5544521B2 JP 2011133160 A JP2011133160 A JP 2011133160A JP 2011133160 A JP2011133160 A JP 2011133160A JP 5544521 B2 JP5544521 B2 JP 5544521B2
Authority
JP
Japan
Prior art keywords
processing device
processing
acquired
call
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011133160A
Other languages
English (en)
Other versions
JP2013003768A (ja
Inventor
道生 入江
雅志 金子
東  勲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2011133160A priority Critical patent/JP5544521B2/ja
Publication of JP2013003768A publication Critical patent/JP2013003768A/ja
Application granted granted Critical
Publication of JP5544521B2 publication Critical patent/JP5544521B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、分散処理を行う分散システムにおける負荷分散の技術に関する。
分散システムは、複数の処理装置(サーバ)を含み、例えば、これらの処理装置を仮想化することで、所定のセッション制御を実現する。なお、非特許文献2には、分散処理を行うクラスタシステムの技術が開示されている。また、分散システムは、一般的には、複数の振り分け装置を含む。振り分け装置は、端末(クライアント)からセッション接続要求などのメッセージを受信すると、所定の方法に従ってメッセージを処理装置に振り分ける。各処理装置は、振り分けられたメッセージを呼処理し、端末に対して所定のサービスを提供する。
前記所定の方法としては、例えば、コンシステント・ハッシュ法がある。なお、非特許文献1は、コンシステント・ハッシュ法について開示している。コンシステント・ハッシュ法は、処理装置を識別する処理装置識別子および処理装置に振り分けるメッセージに含まれ、呼処理の対象となるデータの実体を識別するデータ識別子に基づいて、どの処理装置にどのメッセージを振り分けるかを決定する方法である。
具体的に、どのようにしてメッセージの振り分けが決定されるかを、図7を参照して説明する。図7は、コンシステント・ハッシュ法を説明するための識別子空間の概念図である。処理装置識別子は、例えば、処理装置のIP(Internet Protocol)アドレス、処理装置名などに、ハッシュ関数を作用させて得られた値である。なお、処理装置識別子を得て、識別子空間に配置することを、処理装置識別子を「払い出す」と表現する場合がある。処理装置識別子の払い出しは、振り分け装置が実行する。
識別子空間は、図7に示すようにリング状で描写されるハッシュ空間である。処理装置識別子は、例えば、その値に基づいて識別子空間において時計回りに昇順に配置される。データ識別子は、その値に基づいてハッシュ空間に写像して配置される、つまり振り分けられる。データ識別子も、その値に基づいて識別子空間において時計回りに昇順に配置される。
このとき、処理装置は、自身の処理装置識別子の直近の処理装置識別子の配置場所から自身の処理装置識別子の配置場所まで時計回りに辿る円弧上に配置されるデータ識別子を含むメッセージを呼処理する。ここで、「直近の処理装置識別子」とは、識別子空間において、対象の処理装置識別子の値よりも小さな値を持つ処理装置識別子のうち最も大きな値を持つ処理装置識別子を意味する。しかし、対象の処理装置識別子の値が識別子空間において、最も小さな値を持つ場合には、直近の処理装置識別子は、識別子空間において、最も大きな値を持つこととする。すると、直近の処理装置識別子の配置場所から対象の処理装置識別子の配置場所まで時計回りに辿る円弧が、対象の処理装置識別子で識別される処理装置がメッセージの呼処理を担当する領域である。
図7によれば、処理装置識別子A、B、Cの値にAの値<Bの値<Cの値という関係があるので、時計回りにA→B→Cの順番に処理装置識別子が配置される。また、データ識別子Xの値は、Aの値<Xの値<Bの値という関係を満たすので、処理装置識別子Aおよび処理装置識別子Bの間に配置される。よって、データ識別子Xを含むメッセージは、処理装置識別子Bで識別される処理装置が呼処理する。なお、処理装置識別子Aで識別される処理装置は、処理装置識別子Cの配置場所から処理装置識別子Aの配置場所まで時計回りに辿る円弧上に配置されるデータ識別子を含むメッセージを呼処理する。
David Karger、外5名、"Consistent Hashing and Random Trees:Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web"、[online]、[平成23年5月31日検索]、インターネット〈URL:http://www.akamai.com/dl/technical_publications/ConsistenHashingandRandomTreesDistributedCachingprotocolsforrelievingHotSpotsontheworldwideweb.pdf〉 "JBoss Enterprise Application Platform 5.0"、[online]、[平成23年5月31日検索]、インターネット〈URL:http://docs.redhat.com/docs/ja-JP/JBoss_Enterprise_Application_Platform/5.0/html-single/JBoss_Cache_User_Guide/index.html〉
ところで、処理装置は、メッセージの呼処理を行うために、セッションが開始したことや、セッションが確立中であることなどを示す呼状態を管理する必要がある。元々分散システムに含まれ、呼状態を管理してきた処理装置は、新たなメッセージが振り分けられても、管理してきた呼状態に基づいてそのメッセージの呼処理を行う。しかし、分散システムに新たに増設した処理装置は、コンシステント・ハッシュ法により呼処理の担当が決まったメッセージが振り分けられても、呼状態を持たないために呼処理を行うことができない。
そこで、増設した処理装置は、元々呼処理を担当していた処理装置から呼状態を知る。具体的には、増設した処理装置は、分散システムを構成する処理装置のそれぞれに要求を出力し、元々呼処理を担当していた処理装置を探し出す。元々呼処理を担当していた処理装置は、増設した処理装置に対して応答を出力し、呼状態を通知する。
しかし、上記した方法では、分散システムを構成する処理装置の数が多くなるにつれ、前記要求も多くなる。その結果、処理装置の呼処理の遅延化を招き、スケーラビリティの確保が困難になる。
このような事情に鑑みて、本発明は、分散システムにおける処理装置の呼処理の遅延化を抑制することを目的とする。
前記課題を解決するため、請求項1に記載の発明は、クライアントにサービスを提供する複数の処理装置と、コンシステント・ハッシュ法により前記クライアントから得られるメッセージを前記処理装置に振り分ける複数の振り分け装置と、が通信可能に接続されている分散システムの処理装置における状態管理方法であって、前記分散システムに増設した処理装置が、前記コンシステント・ハッシュ法により、当該増設した処理装置を含む処理装置ごとに払い出された処理装置識別子を含む管理情報を、前記振り分け装置から取得する管理情報取得ステップと、前記振り分け装置から前記メッセージを取得すると、前記取得した管理情報から、当該増設した処理装置に払い出された処理装置識別子を削除する削除ステップと、前記削除後の管理情報に基づいて、前記取得したメッセージの呼処理を担当していた処理装置を特定する担当特定ステップと、前記特定した処理装置から、前記取得したメッセージの呼処理の進捗を示す呼状態データを取得する呼状態データ取得ステップと、を実行することを特徴とする。
請求項2に記載の発明は、請求項1に記載の発明において、前記増設した処理装置が、第1の処理装置と、第2の処理装置と、を少なくとも含み、前記第1の処理装置が、前記管理情報取得ステップにおいて、前記第1の処理装置に払い出された処理装置識別子、および前記第2の処理装置に払い出された処理装置識別子を含む前記管理情報を、前記振り分け装置から取得し、前記削除ステップにおいて、前記第1の処理装置に払い出された処理装置識別子だけでなく、前記呼状態データ取得ステップを実行しても前記振り分け装置から取得したメッセージに対応する呼状態データを取得できなかったことにより、増設した処理装置であると確認された前記第2の処理装置に払い出された処理装置識別子も、前記管理情報から削除することを特徴とする。
請求項3に記載の発明は、クライアントにサービスを提供する複数の処理装置と、コンシステント・ハッシュ法により前記クライアントから得られるメッセージを前記処理装置に振り分ける複数の振り分け装置と、が通信可能に接続されている分散システムの処理装置であって、前記分散システムに増設した処理装置が、前記コンシステント・ハッシュ法により、当該増設した処理装置を含む処理装置ごとに払い出された処理装置識別子を含む管理情報を、前記振り分け装置から取得する管理情報取得制御と、前記振り分け装置から前記メッセージを取得すると、前記取得した管理情報から、当該増設した処理装置に払い出された処理装置識別子を削除する削除制御と、前記削除後の管理情報に基づいて、前記取得したメッセージの呼処理を担当していた処理装置を特定する担当特定制御と、前記特定した処理装置から、前記取得したメッセージの呼処理の進捗を示す呼状態データを取得する呼状態データ取得制御と、を実行することを特徴とする。
請求項4に記載の発明は、請求項3に記載の発明において、前記増設した処理装置が、第1の処理装置と、第2の処理装置と、を少なくとも含み、前記第1の処理装置が、前記管理情報取得制御において、前記第1の処理装置に払い出された処理装置識別子、および前記第2の処理装置に払い出された処理装置識別子を含む前記管理情報を、前記振り分け装置から取得し、前記削除制御において、前記第1の処理装置に払い出された処理装置識別子だけでなく、前記呼状態データ取得制御を実行しても前記振り分け装置から取得したメッセージに対応する呼状態データを取得できなかったことにより、増設した処理装置であると確認された前記第2の処理装置に払い出された処理装置識別子も、前記管理情報から削除することを特徴とする。
請求項5に記載の発明は、クライアントにサービスを提供する複数の処理装置と、コンシステント・ハッシュ法により前記クライアントから得られるメッセージを前記処理装置に振り分ける複数の振り分け装置と、が通信可能に接続されている分散システムの処理装置を、コンピュータとして機能させる状態管理プログラムであって、前記分散システムに増設した処理装置に、前記コンシステント・ハッシュ法により、当該増設した処理装置を含む処理装置ごとに払い出された処理装置識別子を含む管理情報を、前記振り分け装置から取得する管理情報取得処理と、前記振り分け装置から前記メッセージを取得すると、前記取得した管理情報から、当該増設した処理装置に払い出された処理装置識別子を削除する削除処理と、前記削除後の管理情報に基づいて、前記取得したメッセージの呼処理を担当していた処理装置を特定する担当特定処理と、前記特定した処理装置から、前記取得したメッセージの呼処理の進捗を示す呼状態データを取得する呼状態データ取得処理と、を実行させることを特徴とする。
請求項6に記載の発明は、請求項5に記載の発明において、前記増設した処理装置が、第1の処理装置と、第2の処理装置と、を少なくとも含み、前記第1の処理装置に、前記管理情報取得処理において、前記第1の処理装置に払い出された処理装置識別子、および前記第2の処理装置に払い出された処理装置識別子を含む前記管理情報を、前記振り分け装置から取得させ、前記削除処理において、前記第1の処理装置に払い出された処理装置識別子だけでなく、前記呼状態データ取得処理を実行しても前記振り分け装置から取得したメッセージに対応する呼状態データを取得できなかったことにより、増設した処理装置であると確認された前記第2の処理装置に払い出された処理装置識別子も、前記管理情報から削除させることを特徴とする。
請求項1、3、5に記載の発明によれば、分散システムにおける処理装置の呼処理の遅延化を抑制することができる。
請求項2、4、6に記載の発明によれば、複数の処理装置を同時増設した場合であっても、呼状態データを持っていないと見込まれる処理装置には元々要求しない。よって、複数の処理装置を同時増設した場合であっても、処理装置の呼処理の遅延化を抑制することができる。
本発明によれば、分散システムにおける処理装置の呼処理の遅延化を抑制することができる。
分散システムの構成図である。 (a)振り分け装置で使用されるソフトウェアおよび(b)処理装置で使用されるソフトウェアの構成図である。 (a)処理装置管理テーブルのデータ構造および(b)呼状態管理テーブルのデータ構造を示す図である。 処理装置の増設時に、呼状態データを持つ処理装置を特定する様子の説明図である。 2つの処理装置の同時増設時に、呼状態データを持つ処理装置を特定する様子の説明図である。 増設した処理装置における処理を示すフローチャートである。 コンシステント・ハッシュ法を説明するための識別子空間の概念図である。
次に、本発明を実施するための形態(以下、「実施形態」という。)について、適宜図面を参照しながら説明する。
≪構成≫
まず、本実施形態の構成について説明する。
図1は、分散システムの構成図である。この分散システムは、振り分け装置1、処理装置2、クライアント3およびロードバランサ4を含む。この分散システムは、複数の処理装置2などのコンピュータ資源を仮想化し、複数の処理装置2が協調してセッション制御を行い、クライアント3に所定のサービスを提供するクラスタシステムである。前記セッション制御は、例えば、呼制御であり、SIP(Session Initiation Protocol)を使用して、インターネット電話などのサービスが提供される。
振り分け装置1は、ロードバランサ4から受信したメッセージを例えばコンシステント・ハッシュ法によって、処理装置2に振り分ける。前記メッセージは、例えばSIP信号であり、セッション接続要求などを含む。
処理装置2は、振り分け装置1から振り分けられたメッセージを呼処理し、クライアント3にサービスを提供する。
クライアント3は、メッセージをロードバランサ4に送信し、処理装置2が提供するサービスを利用する。
ロードバランサ4は、クライアント3から受信したメッセージを、例えばラウンドロビンによって、振り分け装置1のそれぞれに振り分ける。
振り分け装置1、処理装置2、クライアント3およびロードバランサ4はいずれも、入力部、出力部、制御部および記憶部といったハードウェアを含むコンピュータである。入力部は、例えば、入力インタフェースから構成される。出力部は、例えば、出力インタフェースから構成される。制御部は、例えば、CPU(Central Processing Unit)や専用回路から構成される。記憶部は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリの記憶媒体から構成される。前記制御部がCPUから構成される場合、その制御部を含むコンピュータによる情報処理は、CPUによるプログラム実行処理で実現する。また、そのコンピュータが含む記憶部は、CPUが指令し、そのコンピュータの機能を実現するためのプログラム(状態管理プログラムを含む)を記憶する。これによりソフトウェアとハードウェアの協働が実現される。
本実施形態は、前記情報処理を実行させるプログラムによって実現することができ、そのプログラムをコンピュータによる読み取り可能な記録媒体(例:CD−ROM)に記憶して提供することが可能である。また、そのプログラムを、インターネットのネットワークを通して提供することも可能である。
本実施形態の分散システムで使用されるソフトウェアについて説明する。
図2は、(a)振り分け装置で使用されるソフトウェアおよび(b)処理装置で使用されるソフトウェアの構成図である。振り分け装置1は、処理装置検出部101、テーブル取得応答部102および処理装置管理テーブルT1、といった構成要素を備える。また、処理装置2は、増設通知部201、テーブル取得要求部202、呼状態データ取得要求部203、呼状態データ取得応答部204、処理装置管理テーブルT3、および呼状態管理テーブルT2、といった構成要素を備える。
まず、振り分け装置1について説明する。
処理装置検出部101は、分散システムに処理装置2が増設された旨を検出する。増設された処理装置2については、所定のアルゴリズムに従って、対応する処理装置識別子が払い出される。前記所定のアルゴリズムは、例えば、処理装置のIPアドレスや処理装置名などに、ハッシュ関数を作用させるものである。払い出された処理装置識別子は、処理装置管理テーブルT1に追加される。振り分け装置1は、増設した処理装置2に対し、自身のIPアドレスを通知する。
テーブル取得応答部102は、処理装置2のテーブル取得要求部202からの処理装置管理テーブルT1を取得する要求に応答し、その処理装置2に処理装置管理テーブルT1の内容を通知する。基本的には、増設した処理装置2に通知する処理装置管理テーブルT1の内容には、増設した処理装置2の処理装置識別子が追加されている。
処理装置管理テーブルT1(管理情報)は、分散システムを構成する処理装置2を管理する。スケーラビリティを確保するため、振り分け装置1は、それぞれ処理装置管理テーブルT1を持つ。処理装置管理テーブルT1の詳細は、後記する。
次に、処理装置2について説明する。
増設通知部201は、処理装置2が増設されたとき、マルチキャストにより分散システムを構成するすべての振り分け装置1に対して増設の旨を通知する。増設した処理装置2は、増設の旨を通知する際に、自身のIPアドレスを通知する。また、振り分け装置1は、振り分け装置1自身のIPアドレスを増設した処理装置2に通知する。なお、増設の旨、および場合によっては自身のIPアドレスは、他の処理装置2に通知してもよい。この場合、他の処理装置2は、他の処理装置2自身のIPアドレスを増設した処理装置2に通知してもよい。
テーブル取得要求部202は、振り分け装置1に対し、処理装置管理テーブルT1を要求し、振り分け装置1のテーブル取得応答部102による応答により取得する。処理装置管理テーブルT1の要求は、例えば、振り分け装置1から通知された振り分け装置1自身のIPアドレスを用いて実行される。
呼状態データ取得要求部203は、他の処理装置2に対し、呼状態データを要求し、他の処理装置2の呼状態データ取得応答部204による応答により取得する。呼状態データの要求は、振り分け装置1から振り分けられたメッセージに含まれ、当該呼状態データに対応するデータ識別子を用いて実行される。呼状態データについては、後記する。
呼状態データ取得応答部204は、他の処理装置2からの呼状態データを取得する要求に応答し、当該他の処理装置2に呼状態データを通知する。
処理装置管理テーブルT3は、テーブル取得要求部102により、振り分け装置1から取得した処理装置管理テーブルT1である。
呼状態管理テーブルT2は、呼状態データ取得要求部203により、他の処理装置2から取得した呼状態データを管理する。呼状態管理テーブルT2の詳細は、後記する。
処理装置管理テーブルT1および呼状態管理テーブルT2について説明する。
図3は、(a)処理装置管理テーブルのデータ構造および(b)呼状態管理テーブルのデータ構造を示す図である。
まず、処理装置管理テーブルT1について説明する。なお、この説明は、処理装置管理テーブルT3にも当てはまる。
処理装置管理テーブルT1は、「処理装置識別子」および「処理装置IPアドレス」といったフィールドを含み、処理装置2ごとにレコードが作成される。
「処理装置識別子」フィールドには、処理装置検出部101により払い出された処理装置識別子の値が格納される。
「処理装置IPアドレス」フィールドには、処理装置2のIPアドレスの値が格納される。
次に、呼状態管理テーブルT2について説明する。
呼状態管理テーブルT2は、「データ識別子」および「呼状態」といったフィールドを含み、呼状態データごとにレコードが作成される。
「データ識別子」フィールドには、振り分け装置1から振り分けられたメッセージに含まれるデータ識別子の値が格納される。なお、先述したとおり、データ識別子は、呼処理の対象となるデータの実体を識別する。データ識別子は、例えば、トランザクションID(Identifier)である。あるメッセージの呼処理を担当する処理装置2は、通常、その呼処理の対象となるデータの実体を記憶部に記憶しており、呼処理を実行するときは、そのデータの実体を書き換える。
「呼状態」フィールドには、主に、セッションの状態を示す値が呼状態として格納される。クライアント3から次々と受信するメッセージの呼処理を実行すると、呼状態が変わる。セッションの状態には、例えば、セッションの開始、セッション確立中、セッション解放中などがある。
上記の説明から、「呼状態データ」は、呼状態管理テーブルT2のレコードを構成するデータであるといえる。呼状態データは、呼状態データが持つデータ識別子を含むメッセージの呼処理の進捗を示すデータとなる。呼状態データの具体例としては、セッションの状態、メッセージ(またはセッション)のシーケンス番号、データ識別子としてのトランザクションIDなどが挙げられる。これらの他にも、例えば、クライアント3からメッセージが送信された時刻を示すタイマ値を含めてもよい。処理装置2は、メッセージが振り分けられると、メッセージに含まれるデータ識別子を参照して、対応するデータの実体を書き換える。
また、メッセージには、呼状態を遷移させるための情報が含まれている。処理装置2は、その情報を参照して、データ識別子に対応する「呼状態」フィールドに格納される値を変え、呼状態管理テーブルT2を更新する。これらの処理がなされることにより、メッセージの呼処理が実行される。
次に、増設した処理装置2が、振り分け装置1から振り分けられたメッセージの呼処理を実行するために、呼状態を知る手順について説明する。
図4は、処理装置の増設時に、呼状態データを持つ処理装置を特定する様子の説明図である。図4の(a)は、処理装置の増設前の識別子空間の概念図であり、図4の(b)は、処理装置の増設後の識別子空間の概念図である。
図4の(a)において、A、B、Cは、処理装置識別子であり、それらの値には、Cの値<Aの値<Bの値という関係がある。よって、時計回りにC→A→Bの順番に処理装置識別子が配置される。また、Xは、データ識別子であり、データ識別子Xの値は、Cの値<Xの値<Aの値<Bの値という関係を満たす。よって、データ識別子Xは、処理装置識別子Cおよび処理装置識別子Aの間に配置される。データ識別子Xを含むメッセージは、処理装置識別子Aの処理装置2に振り分けられる。つまり、処理装置識別子Aの処理装置2が、データ識別子Xを含むメッセージの呼処理を担当する。
図4の(b)は、処理装置識別子Iの処理装置2が増設した場合を示す。処理装置識別子Iは、Cの値<Xの値<Iの値<Aの値という関係を満たす。よって、処理装置識別子Aの処理装置2ではなく、処理装置識別子Iの処理装置2が、データ識別子Xを含むメッセージの呼処理を担当する。
増設したばかりの処理装置識別子Iの処理装置2は、振り分け装置1から処理装置管理テーブルT1の取得を要求し、処理装置管理テーブルT3を持つ。処理装置管理テーブルT3には、処理装置識別子Iの処理装置2自身のレコードが追加されている。しかし、処理装置識別子Iの処理装置2は、データ識別子Xに対応する呼状態を知らない。よって、処理装置識別子Iの処理装置2は、振り分け装置1から振り分けられたデータ識別子Xを含むメッセージを呼処理することができない。
そこで、処理装置識別子Iの処理装置2は、データ識別子Xに対応する呼状態を知る処理装置2を探す。そのために、処理装置識別子Iの処理装置2は、自身が増設する前の識別子空間を想定し、その識別子空間において、データ識別子Xを含むメッセージの呼処理を担当していた処理装置2を特定する。
具体的には、まず、処理装置識別子Iの処理装置2は、処理装置管理テーブルT3に追加された自身のレコードを一時的に削除する。そして、削除後の処理装置管理テーブルT3に基づいて、コンシステント・ハッシュ法により、データ識別子Xを含むメッセージの呼処理を担当していた処理装置2を特定する。図4の(b)では、処理装置識別子Aの処理装置2を、データ識別子Xを含むメッセージの呼処理を担当していた処理装置2として特定する。
処理装置識別子Iの処理装置2は、処理装置識別子Aの処理装置2に対し、データ識別子Xを含む呼状態データの取得を要求する。処理装置識別子Aの処理装置2は、基本的には、データ識別子Xを含む呼状態データを持っているので、その呼状態データを処理装置識別子Iの処理装置2に通知する。処理装置識別子Iの処理装置2は、通知された呼状態データを用いて、呼状態管理テーブルT2を更新する。また、処理装置識別子Iの処理装置2は、振り分け装置1からデータ識別子Xを含むメッセージが振り分けられた場合、そのメッセージの呼処理を実行する。
なお、処理装置識別子Aの処理装置2は、基本的には、データ識別子Xで識別されるデータの実体を記憶している。よって、処理装置識別子Iの処理装置2は、処理装置識別子Aの処理装置2から、そのデータの実体を取得する。処理装置識別子Iの処理装置2は、呼処理を実行においては、そのデータの実体を書き換える。
また、複数の処理装置2が同時に増設した場合について説明する。なお、以下の説明は、同時増設する処理装置2が3以上であってもあてはまる。また、増設が「同時」であるとは、複数の処理装置2が所定の短期間内に増設するという意味である。
図5は、2つの処理装置の同時増設時に、呼状態データを持つ処理装置を特定する様子の説明図である。図5の(a)は、処理装置の同時増設前の識別子空間の概念図であり、図5の(b)は、処理装置の同時増設後の識別子空間の概念図である。図5の(a)の識別子空間は、図4の(a)のそれと同一である。特に断らない限り、図4で説明した事項と共通する事項については説明を省略する。
図5の(b)は、処理装置識別子I、Jの処理装置2(第1の処理装置、第2の処理装置)が同時増設した場合を示す。処理装置識別子I、Jは、Cの値<Xの値<Iの値<Jの値<Aの値という関係を満たす。よって、処理装置識別子Aの処理装置2ではなく、処理装置識別子Iの処理装置2が、データ識別子Xを含むメッセージの呼処理を担当する。
なお、処理装置識別子I、Jの処理装置2がそれぞれ持つ処理装置管理テーブルT3には、処理装置識別子I、Jの処理装置2の2つのレコードが追加されている。
処理装置識別子Iの処理装置2は、データ識別子Xに対応する呼状態を知らない。よって、処理装置識別子Iの処理装置2は、データ識別子Xに対応する呼状態を知る処理装置2を探す。処理装置識別子Iの処理装置2は、処理装置管理テーブルT3に追加された自身のレコードを一時的に削除する。そして、削除後の処理装置管理テーブルT3に基づいて、コンシステント・ハッシュ法により、処理装置識別子Jの処理装置2を、データ識別子Xを含むメッセージの呼処理を担当していた処理装置2として特定する。
処理装置識別子Iの処理装置2は、処理装置識別子Jの処理装置2に対し、データ識別子Xを含む呼状態データの取得を要求する。ところが、処理装置識別子Jの処理装置2も増設したばかりであるため、データ識別子Xを含む呼状態データを持っていない。また、基本的には、処理装置識別子Iの処理装置2は、処理装置識別子Jの処理装置2が増設したばかりであることは知りえない。結果的に、処理装置識別子Iの処理装置2は、データ識別子Xを含む呼状態データの取得に失敗する。
ただ、処理装置識別子Iの処理装置2は、呼状態データの取得を失敗することで、処理装置識別子Jの処理装置2が増設したばかりの処理装置2であるとみなす(確認する)ことができる。そこで、処理装置識別子Iの処理装置2は、処理装置管理テーブルT3において、処理装置管理テーブルT3に追加された、処理装置識別子Jの処理装置2のレコードを一時的に削除する。処理装置識別子Iの処理装置2は、その削除後の処理装置管理テーブルT3に基づいて、コンシステント・ハッシュ法により、処理装置識別子Aの処理装置2を、データ識別子Xを含むメッセージの呼処理を担当していた処理装置2として改めて特定する。
処理装置識別子Iの処理装置2は、処理装置識別子Aの処理装置2に対し、データ識別子Xを含む呼状態データの取得を要求する。処理装置識別子Iの処理装置2は、処理装置識別子Aの処理装置2から、その呼状態データを取得することで、データ識別子Xを含むメッセージの呼処理を実行することができる。
処理装置識別子Iの処理装置2は、基本的には、所望の呼状態データを取得できるまで、他の処理装置2への取得要求を繰り返す。
≪処理≫
次に、本実施形態の処理について説明する。具体的には、処理装置2の増設に関わる処理について説明する。この処理の主体は、処理装置2の制御部である。
図6は、増設した処理装置における処理を示すフローチャートである。この処理は、処理装置2が分散システムに増設した後に行われる。また、この処理は、増設した後から所定期間経過した後であっても、この処理装置2が分散システムを構成しているうち、つまり生存しているうちは定期的に行ってもよい。この処理は、ステップS01から開始する。
ステップS01において、増設した処理装置2の制御部は、増設通知部201により、自身の増設の旨を振り分け装置1に通知する。もし、増設した後から所定期間経過した後にステップS01の処理を行う場合は、自身の生存の旨が通知される。ステップS01の後、ステップS02に進む。
ステップS02において、増設した処理装置2の制御部は、テーブル取得要求部202により、振り分け装置1に対し、処理装置管理テーブルT1を要求し、取得する。増設した処理装置2は、取得した処理装置管理テーブルT1を、処理装置管理テーブルT3として管理する。なお、増設した処理装置2の制御部は、増設した処理装置2が生存している間は、振り分け装置1から最新の処理装置管理テーブルT1を定期的に取得してもよい。ステップS02の後、ステップS03に進む。
ステップS03において、増設した処理装置2の制御部は、振り分け装置1から振分けられたメッセージを取得する。ステップS03の後、ステップS04に進む。
ステップS04において、増設した処理装置2の制御部は、取得したメッセージがセッション開始メッセージであるか否かを判定する。「セッション開始メッセージ」とは、セッションの状態がセッションの開始であることを示すメッセージであり、具体例としては、ini-INVITEメッセージがある。取得したメッセージがセッション開始メッセージであれば(ステップS04でYes)、ステップS09に進む。取得したメッセージがセッション開始メッセージでなければ(ステップS04でNo)、ステップS05に進む。
なお、セッション開始メッセージを取得した場合(ステップS04でYes)とは、例えば、クライアント3がはじめてサービスを利用する場合である。この場合は、分散システムを構成するいずれの処理装置2も、該当する呼状態データを持たない。つまり、いずれの処理装置2もそのメッセージの呼処理を担当していない。よって、増設した処理装置2は、後記するステップS09の処理により該当する呼状態データを新たに生成し、呼状態管理テーブルT2に追加登録する。
ステップS05において、増設した処理装置2の制御部は、取得したメッセージ、つまりセッション開始メッセージ以外のメッセージ(非ini-INVITEメッセージ)の呼処理をするために、該当する呼状態データがあるか否か判定する。具体的には、増設した処理装置2が持つ呼状態管理テーブルT2に、取得したメッセージに含まれているデータ識別子の呼状態データが登録されているか否か判定する。該当する呼状態データがあれば(ステップS05でYes)、ステップS09に進む。該当する呼状態データがなければ(ステップS05でNo)、ステップS06に進む。
なお、該当する呼状態データがある場合(ステップS05でYes)とは、例えば、
(1)増設した処理装置2自身が図6の処理により、事前にセッション開始メッセージの呼処理をし、該当する呼状態データを生成し、その後ステップS04でセッション開始メッセージ以外のメッセージを取得した場合、
(2)増設した処理装置2自身が図6の処理により、他の処理装置2から該当する呼状態データをすでに取得し、その後ステップS04でセッション開始メッセージ以外のメッセージを取得した場合、がある。
ステップS06において、増設した処理装置2の制御部は、処理装置管理テーブルT3を用いて、取得したメッセージの呼処理を元々担当していた処理装置2を特定する。前述したとおり、処理装置2を特定するときには、処理装置管理テーブルT3において、自身のレコードを一時的に削除する。ステップS06の後、ステップS07に進む。
なお、ステップS06の処理では、後記するステップS08で呼状態データを取得しなかった処理装置2に関し、処理装置管理テーブルT3からその処理装置2のレコードも一時的に削除する。
ステップS07において、増設した処理装置2の制御部は、呼状態データ取得要求部203により、ステップS06で特定した処理装置2に対し、呼状態データを要求する。ステップS07の後、ステップS08に進む。
ステップS08において、増設した処理装置2の制御部は、ステップS06で特定した処理装置2から該当する呼状態データを取得したか否か判定する。つまり、ステップS06で特定した処理装置2は、ステップS03取得したメッセージの呼処理を元々担当していた処理装置2であったかどうかを判定する。該当する呼状態データを取得したときは(ステップS08でYes)、基本的には、ステップS06での特定が正しかったことを意味し、ステップS09に進む。該当する呼状態データを取得しなかったときは(ステップS08でNo)、基本的には、ステップS06での特定が誤りであったことを意味し、ステップS06に戻る。
なお、ステップS06での特定が誤りであった場合としては、例えば、同時増設によって、図6の処理を実行する増設した処理装置2自身の他にも同時に増設した処理装置2を特定してしまった場合がある。よって、この場合には、前述したとおり、処理装置管理テーブルT3において、同時に増設した処理装置2のレコードを削除して、ステップS06において、新たな処理装置2を特定する。基本的には、ステップS08の処理は、ステップS05での特定が正しかったと判定されるまで繰り返す。
ステップS09において、増設した処理装置2の制御部は、ステップS08で取得した呼状態データを用いて、ステップS08で取得したメッセージを呼処理する。ステップS09の処理が終了することにより、図6の処理全体が終了する。
≪まとめ≫
本実施形態によれば、分散システムにおける処理装置2の呼処理の遅延化を抑制することができる。
従来技術によれば、増設した処理装置2は、呼状態データを取得するために、分散システムを構成する処理装置2それぞれに要求を出力していた。このため、呼状態データの取得に要する処理の処理量がO(N)の規模に及んでしまう(Nは、分散システムを構成する処理装置2の数)。結果的に、とりわけ分散システムを構成する処理装置2の数が多くなると、処理装置2の呼処理の遅延化を招いていた。
本実施形態によれば、取得すべき呼状態データを持つ処理装置2を事前に特定するので、呼状態データを取得するための要求は、基本的には1度で済み、呼状態データの取得に要する処理の処理量はO(1)の規模に抑えられる。結果として、分散システムを構成する処理装置2の数が多くなっても、処理装置2の呼処理の遅延化を抑制することができる。
また、複数の処理装置2を同時増設した場合であっても、増設した処理装置2からの誤った要求は、基本的には、同時増設した他の処理装置2になされるだけであり、呼状態データを持っていないと見込まれる既存の処理装置2には元々要求しない。よって、呼状態データの取得に要する処理の処理量はO(1)の規模とあまり変わらない。結果として、複数の処理装置2を同時増設した場合であっても、処理装置2の呼処理の遅延化を抑制することができる。
≪その他≫
前記実施形態は、本発明を実施するために好適のものであるが、その実施形式はこれらに限定されるものでなく、本発明の要旨を変更しない範囲内において種々変形することが可能である。
例えば、本実施形態は、処理装置管理テーブルT1、T3において、処理装置2のIPアドレスを用いた。また、増設した処理装置2が振り分け装置1に増設の旨を通知するときに自身のIPアドレスを用いたり、処理装置2が処理装置管理テーブルT1を要求するときに振り分け装置1のIPアドレスを用いたりした。しかし、前記したIPアドレスの代わりに、例えばMAC(Media Access Control address)アドレスを用いてもよい。また、IPアドレスやMACアドレスのように、分散システムのネットワーク上で処理装置2や振り分け装置1などの装置を特定できる機能を持つのであればどのような種類のアドレスを用いてもよい。
また、本発明に関しては、分散システムにおいてロードバランサ4を省略してもよい。必要であれば、振り分け装置1は、ロードバランサ4が備える機能(例:ラウンドロビン)を備えてもよい。
また、分散システムを構成する既存の処理装置2は、例えば、振り分け装置1から定期的に処理装置管理テーブルT1を要求し、取得してもよい。振り分け装置1は、例えば、定期的に処理装置管理テーブルT1を更新しており、処理装置2が増設した場合には、その処理装置2のレコードを追加する。既存の処理装置2は、振り分け装置1から定期的に最新の処理装置管理テーブルT1を取得する。既存の処理装置2が、処理装置管理テーブルT1から、増設した処理装置2の存在を知れば、コンシステント・ハッシュ法により、既存の処理装置2自身が呼処理を担当していたメッセージが、増設した処理装置2に振り分けられるかどうかを知ることができる。もし、そのメッセージが振り分けられるのであれば、増設した処理装置2からの要求が無くとも、前記既存の処理装置2は、増設した処理装置2に対し、そのメッセージの呼処理に必要となる呼状態データを通知することができる。増設した処理装置2は、前記既存の処理装置2に呼状態データを要求せずとも、振り分けられたメッセージの呼処理を行うことができる。
また、複数の処理装置2を同時増設した場合において、増設した処理装置2はそれぞれ、自身が増設した旨を、振り分け装置1からメッセージを振り分けられる前に、増設した他の処理装置2に通知してもよい。これにより、増設した処理装置2は、振り分け装置1からメッセージを振り分けられたときに、同時に増設した他の処理装置2の存在を知ることができる。よって、振り分けられたメッセージの呼処理を担当していた処理装置2を特定するときに(図6のステップS06)、処理装置管理テーブルT3において、自身のレコードを削除するだけでなく、同時に増設した他の処理装置2のレコードも削除することができる。その結果、増設した処理装置2は、同時に増設した他の処理装置2に対し、誤って呼状態データを要求することは無い。
また、本実施形態で説明した種々の技術を適宜組み合わせた技術を実現することもできる。
また、本実施形態で説明したソフトウェアをハードウェアとして実現することもでき、ハードウェアをソフトウェアとして実現することもできる。
その他、ハードウェア、ソフトウェア、テーブル、フローチャートなどの具体的な構成について、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
1 振り分け装置
2 処理装置
3 クライアント
4 ロードバランサ
101 処理装置検出部
102 テーブル取得応答部
201 増設通知部
202 テーブル取得要求部
203 呼状態データ取得要求部
204 呼状態データ取得応答部
T1、T3 処理装置管理テーブル(管理情報)
T2 呼状態管理テーブル

Claims (6)

  1. クライアントにサービスを提供する複数の処理装置と、コンシステント・ハッシュ法により前記クライアントから得られるメッセージを前記処理装置に振り分ける複数の振り分け装置と、が通信可能に接続されている分散システムの処理装置における状態管理方法であって、
    前記分散システムに増設した処理装置が、
    前記コンシステント・ハッシュ法により、当該増設した処理装置を含む処理装置ごとに払い出された処理装置識別子を含む管理情報を、前記振り分け装置から取得する管理情報取得ステップと、
    前記振り分け装置から前記メッセージを取得すると、前記取得した管理情報から、当該増設した処理装置に払い出された処理装置識別子を削除する削除ステップと、
    前記削除後の管理情報に基づいて、前記取得したメッセージの呼処理を担当していた処理装置を特定する担当特定ステップと、
    前記特定した処理装置から、前記取得したメッセージの呼処理の進捗を示す呼状態データを取得する呼状態データ取得ステップと、を実行する
    ことを特徴とする状態管理方法。
  2. 前記増設した処理装置は、第1の処理装置と、第2の処理装置と、を少なくとも含み、
    前記第1の処理装置が、
    前記管理情報取得ステップにおいて、前記第1の処理装置に払い出された処理装置識別子、および前記第2の処理装置に払い出された処理装置識別子を含む前記管理情報を、前記振り分け装置から取得し、
    前記削除ステップにおいて、前記第1の処理装置に払い出された処理装置識別子だけでなく、前記呼状態データ取得ステップを実行しても前記振り分け装置から取得したメッセージに対応する呼状態データを取得できなかったことにより、増設した処理装置であると確認された前記第2の処理装置に払い出された処理装置識別子も、前記管理情報から削除する
    ことを特徴とする請求項1に記載の状態管理方法。
  3. クライアントにサービスを提供する複数の処理装置と、コンシステント・ハッシュ法により前記クライアントから得られるメッセージを前記処理装置に振り分ける複数の振り分け装置と、が通信可能に接続されている分散システムの処理装置であって、
    前記分散システムに増設した処理装置が、
    前記コンシステント・ハッシュ法により、当該増設した処理装置を含む処理装置ごとに払い出された処理装置識別子を含む管理情報を、前記振り分け装置から取得する管理情報取得制御と、
    前記振り分け装置から前記メッセージを取得すると、前記取得した管理情報から、当該増設した処理装置に払い出された処理装置識別子を削除する削除制御と、
    前記削除後の管理情報に基づいて、前記取得したメッセージの呼処理を担当していた処理装置を特定する担当特定制御と、
    前記特定した処理装置から、前記取得したメッセージの呼処理の進捗を示す呼状態データを取得する呼状態データ取得制御と、を実行する
    ことを特徴とする処理装置。
  4. 前記増設した処理装置は、第1の処理装置と、第2の処理装置と、を少なくとも含み、
    前記第1の処理装置が、
    前記管理情報取得制御において、前記第1の処理装置に払い出された処理装置識別子、および前記第2の処理装置に払い出された処理装置識別子を含む前記管理情報を、前記振り分け装置から取得し、
    前記削除制御において、前記第1の処理装置に払い出された処理装置識別子だけでなく、前記呼状態データ取得制御を実行しても前記振り分け装置から取得したメッセージに対応する呼状態データを取得できなかったことにより、増設した処理装置であると確認された前記第2の処理装置に払い出された処理装置識別子も、前記管理情報から削除する
    ことを特徴とする請求項3に記載の処理装置。
  5. クライアントにサービスを提供する複数の処理装置と、コンシステント・ハッシュ法により前記クライアントから得られるメッセージを前記処理装置に振り分ける複数の振り分け装置と、が通信可能に接続されている分散システムの処理装置を、コンピュータとして機能させる状態管理プログラムであって、
    前記分散システムに増設した処理装置に、
    前記コンシステント・ハッシュ法により、当該増設した処理装置を含む処理装置ごとに払い出された処理装置識別子を含む管理情報を、前記振り分け装置から取得する管理情報取得処理と、
    前記振り分け装置から前記メッセージを取得すると、前記取得した管理情報から、当該増設した処理装置に払い出された処理装置識別子を削除する削除処理と、
    前記削除後の管理情報に基づいて、前記取得したメッセージの呼処理を担当していた処理装置を特定する担当特定処理と、
    前記特定した処理装置から、前記取得したメッセージの呼処理の進捗を示す呼状態データを取得する呼状態データ取得処理と、を実行させる
    ことを特徴とする状態管理プログラム。
  6. 前記増設した処理装置は、第1の処理装置と、第2の処理装置と、を少なくとも含み、
    前記第1の処理装置に、
    前記管理情報取得処理において、前記第1の処理装置に払い出された処理装置識別子、および前記第2の処理装置に払い出された処理装置識別子を含む前記管理情報を、前記振り分け装置から取得させ、
    前記削除処理において、前記第1の処理装置に払い出された処理装置識別子だけでなく、前記呼状態データ取得処理を実行しても前記振り分け装置から取得したメッセージに対応する呼状態データを取得できなかったことにより、増設した処理装置であると確認された前記第2の処理装置に払い出された処理装置識別子も、前記管理情報から削除させる
    ことを特徴とする請求項5に記載の状態管理プログラム。
JP2011133160A 2011-06-15 2011-06-15 状態管理方法、処理装置、および状態管理プログラム Expired - Fee Related JP5544521B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011133160A JP5544521B2 (ja) 2011-06-15 2011-06-15 状態管理方法、処理装置、および状態管理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011133160A JP5544521B2 (ja) 2011-06-15 2011-06-15 状態管理方法、処理装置、および状態管理プログラム

Publications (2)

Publication Number Publication Date
JP2013003768A JP2013003768A (ja) 2013-01-07
JP5544521B2 true JP5544521B2 (ja) 2014-07-09

Family

ID=47672284

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011133160A Expired - Fee Related JP5544521B2 (ja) 2011-06-15 2011-06-15 状態管理方法、処理装置、および状態管理プログラム

Country Status (1)

Country Link
JP (1) JP5544521B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5803957B2 (ja) 2013-03-05 2015-11-04 信越化学工業株式会社 パターン形成方法及びレジスト組成物
WO2014199553A1 (ja) * 2013-06-14 2014-12-18 日本電気株式会社 受付ノードによるデータ格納先の決定方法
JP5887371B2 (ja) * 2014-03-03 2016-03-16 日本電信電話株式会社 分散システムおよび分散処理方法
JP2019028672A (ja) * 2017-07-28 2019-02-21 日本電信電話株式会社 分散処理システムに用いられるサーバ装置、分散処理方法およびプログラム

Also Published As

Publication number Publication date
JP2013003768A (ja) 2013-01-07

Similar Documents

Publication Publication Date Title
JP6723329B2 (ja) エッジ位置でのカスタマイズ可能なイベントトリガ型計算のためのシステム、方法、及びコンピュータ可読記憶媒体
JP6984097B2 (ja) エッジプロキシを持つコンテンツデリバリネットワークアーキテクチャ
US10146848B2 (en) Systems and methods for autonomous, scalable, and distributed database management
US10645152B2 (en) Information processing apparatus and memory control method for managing connections with other information processing apparatuses
CN108173774B (zh) 一种客户端的升级方法及系统
US20140059217A1 (en) Method for content change notification in a cloud storage system, a corresponding cloud broker and cloud agent
US10129152B2 (en) Setting method, server device and service chain system
JP7056893B2 (ja) アプリケーションプログラミングインタフェースapi要求を伝送するための方法、装置、apiゲートウェイ、及びプログラム
CN111212134A (zh) 一种请求报文处理方法、装置、边缘计算系统和电子设备
US20180013610A1 (en) File delivery method, apparatus and system
TW201711432A (zh) 對伺服器進行健康檢查的方法及設備
JP6700308B2 (ja) データ・コピー方法及びデバイス
CN109547508B (zh) 一种实现资源访问的方法、装置及系统
US20230069240A1 (en) Dynamic cloning of application infrastructures
WO2019006775A1 (zh) 一种数据传输方法及其系统
JP2013097548A (ja) 情報処理システム、情報処理装置、クライアント端末、情報処理方法、及びプログラム
JP6272190B2 (ja) 計算機システム、計算機、負荷分散方法及びそのプログラム
JP5544521B2 (ja) 状態管理方法、処理装置、および状態管理プログラム
US20160226963A1 (en) Load balancing using predictable state partitioning
WO2013186837A1 (ja) 情報処理システム、方法およびプログラム
TWI571077B (zh) 整合網路裝置及其服務整合方法
JP5658621B2 (ja) 信号振分複製先決定システム、信号振分複製先決定方法およびプログラム
JP5690296B2 (ja) 負荷分散プログラムおよび負荷分散装置
US10621148B1 (en) Maintaining multiple object stores in a distributed file system
JP6643706B2 (ja) 配布履歴管理プログラム、配布履歴管理装置および配布履歴管理方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130201

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130809

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140311

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140408

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20140410

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140411

R150 Certificate of patent or registration of utility model

Ref document number: 5544521

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees