JP6259408B2 - 分散処理システム - Google Patents

分散処理システム Download PDF

Info

Publication number
JP6259408B2
JP6259408B2 JP2015036156A JP2015036156A JP6259408B2 JP 6259408 B2 JP6259408 B2 JP 6259408B2 JP 2015036156 A JP2015036156 A JP 2015036156A JP 2015036156 A JP2015036156 A JP 2015036156A JP 6259408 B2 JP6259408 B2 JP 6259408B2
Authority
JP
Japan
Prior art keywords
data
node
load
normal
processing system
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.)
Active
Application number
JP2015036156A
Other languages
English (en)
Other versions
JP2016157367A (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 JP2015036156A priority Critical patent/JP6259408B2/ja
Publication of JP2016157367A publication Critical patent/JP2016157367A/ja
Application granted granted Critical
Publication of JP6259408B2 publication Critical patent/JP6259408B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、ネットワーク上に分散配置されるノードをクラスタ化してデータを格納する分散処理システムに関する。
近年、クラウドコンピューティングの隆盛に伴い、多量のデータの処理や保持を効率的に行うことが求められている。そこで、複数のサーバを協調動作させることにより効率的な処理を実現する分散処理技術が発展している。
分散処理を行う際には、クラスタ構成からなる分散処理システムを構成する各サーバ(以下、「ノード」と称する。)が担当するデータを決定する必要がある。このとき、分散処理システム全体での処理能力を高めるためには、各ノードが担当するデータ数は平均化されていることが望ましい。
代表的なデータの管理手法として、各データのkeyをハッシュ関数にかけた値(以下、「hash(key)」と称する。)をノード数Nで割った余り、即ち「hash(key) mod N」を番号として持つノードがデータを管理する手法がある。この場合、各ノードに事前に「0」から「N−1」までの番号を割り当てていることが前提となる。このような管理手法を用いた場合、ノードを追加・離脱すると、Nの値が変化して、多くのデータについて、そのデータの保存を担当するノードが変更になるため、担当するデータを再配置することが必要になる。
そこで、ノードの追加・離脱に伴い担当するノードが変更になるデータ数を約1/Nに抑える方法として、コンシステント・ハッシュ(Consistent Hashing)法を用いたデータ管理手法がある。このコンシステント・ハッシュ法を用いたデータ管理手法では、ノードとデータの双方にID(IDentifier)を割り当てる。そして、データのIDから閉じたID空間を時計回りに辿った場合に最初に当たったノードをそのデータの担当とする。ノードに対するIDの与え方の例としては、IPアドレスをハッシュ関数にかけた値(hash(IPアドレス))が挙げられる。
クラスタ構成の分散処理システムでは、各ノードの処理性能が等しい場合には、各ノードが担当するデータ量を等しくする、即ち、コンシステント・ハッシュ法のID空間における、ノード間の距離(以下、「ノードの担当領域」と称する。)を等しくすることが望ましい。この点を実現するため、各ノードに仮想的に複数のIDを持たせる手法が用いられている(非特許文献1参照)。各ノードが複数の仮想IDを持つことで、仮想ID毎の担当領域は異なっていても、大数の法則に従いノードの担当領域は平均化される。
入江 道生、他4名、「コンシステント・ハッシュ法におけるデータの複製を意識した負荷分散手法」、社団法人電子情報通信学会、2010年10月、信学技報、IN2010-77、P.69-74
上記したコンシステント・ハッシュ法や仮想ID等の従来技術により、ノード間で担当するデータを均一化し負荷を分散させることが可能である。しかしながら、特定ノードにおいて、アクセス頻度や処理時間の長さ等でノードに高い負荷を与えるデータ(以下、「高負荷データ」と称する。)が発生した場合、その高負荷データを担当したノードにおいて負荷が急激に高まり、当該ノードで処理される他のデータの信号処理に影響を与える問題がある(図1参照)。このような問題に対して、高負荷データ自体を削除若しくは通信を規制する等して負荷を低減し、対応することも考えられるが、高負荷データ自体は正常なデータであり、処理を継続したいことも考えられるため、データの削除や通信規制以外の対応手法が求められる。
従来、このようなコンシステント・ハッシュ法の分散処理システムにおける負荷増大に対する対策としては、新たなノードを増設し、システムをスケールアウトさせて、高負荷となったノードの担当するデータ数を縮小させて負荷を低減する手法がとられる。
しかしながら、高負荷データのアクセス頻度やリソース消費量のレベルによっては、当該データの信号処理のみで担当ノードのリソースの大部分を消費してしまい、スケールアウトを実行しても、当該データを担当するノードにおいて期待するレベルにまで負荷を低減することができず、他のデータの信号処理に影響を及ぼす問題が解決されない問題がある。また、高負荷データの移動先サーバでの負荷増大と、それに対応するための増設とが、繰り返し発生することにより、非効率なスケールアウトが頻発する問題もある。
このような背景を鑑みて本発明がなされたのであり、本発明は、高負荷データの発生時に、高負荷データの処理を継続しつつ、他のデータの信号処理への影響の発生や、非効率なスケールアウトの頻発を抑止することができる、分散処理システムを提供することを課題とする。
前記した課題を解決するため、請求項1に記載の発明は、クライアントからのメッセージを受信して信号処理しサービスを提供する分散処理システムであって、前記分散処理システムは、前記メッセージを受信して信号処理する第1のノードを複数有する通常データ分散処理システムと、前記第1のノードと比較して処理性能の高い第2のノードを複数有する高負荷データ分散処理システムとから構成され、前記通常データ分散処理システムの前記第1のノードそれぞれ、および、前記高負荷データ分散処理システムの第2のノードそれぞれが、前記第1のノードそれぞれの識別子と、信号処理を実行するデータに付された振り分けIDとを対応付けた情報である第1の振り分けID情報、および、前記第1のノードそれぞれの識別子と、前記第1のノードのアドレスとを対応付けた情報である第1のノード識別子管理情報、並びに、前記第2のノードそれぞれの識別子と、信号処理を実行するデータに付された前記振り分けIDとを対応付けた情報である第2の振り分けID情報、および、前記第2のノードそれぞれの識別子と、前記第2のノードのアドレスとを対応付けた情報である第2のノード識別子管理情報、を記憶する記憶部、を備えており、前記通常データ分散処理システムの前記第1のノードそれぞれが、前記メッセージを受信し、当該メッセージに付与された、前記振り分けID、並びに、前記通常データ分散処理システムおよび前記高負荷データ分散処理システムのいずれかの識別子を示す担当分散システム識別子、を取得し、前記第1の振り分けID情報または前記第2の振り分けID情報を参照して信号処理するノードを決定し、決定したノードに当該メッセージを振り分ける振り分け部と、振り分けられた前記メッセージを受信し、前記第1のノード自身が担当するデータに関するメッセージの信号処理を実行するとともに、前記データの信号処理の処理負荷を計測し、第1のデータ処理負荷計測情報として自身の前記記憶部に記憶する第1の信号処理部と、所定の第1の期間ごとに、前記第1のデータ処理負荷計測情報を参照し、予め設定された高負荷データを抽出するロジックに基づき前記信号処理の処理負荷が高いデータを前記高負荷データとして抽出し、前記抽出した高負荷データの前記振り分けIDを取得し、前記第2の振り分けID情報および前記第2のノード識別子管理情報を参照して信号処理する第2のノードを決定して送信する高負荷データ抽出部と、を備え、前記高負荷データ分散処理システムの前記第2のノードそれぞれが、前記振り分け部と、振り分けられた前記メッセージを受信し、前記第2のノード自身が担当するデータに関するメッセージの信号処理を実行するとともに、前記データの信号処理の処理負荷を計測し、第2のデータ処理負荷計測情報として自身の前記記憶部に記憶する第2の信号処理部と、所定の第2の期間ごとに、前記第2のデータ処理負荷計測情報を参照し、予め設定された正常負荷データを抽出するロジックに基づき前記信号処理の処理負荷が低減したデータを前記正常負荷データとして抽出し、前記抽出した正常負荷データの前記振り分けIDを取得し、前記第1の振り分けID情報および前記第1のノード識別子管理情報を参照して信号処理する第1のノードを決定して送信する正常負荷データ抽出部と、を備えることを特徴とする分散処理システムとした。
このようにすることで、分散処理システムにおいて、通常データ分散処理システムの第1のノードが、アクセス頻度が多い、処理時間の長い等によりノードに高い負荷を与えるデータ(高負荷データ)を抽出し、処理能力の高い高負荷データを専用に処理する高負荷データ分散処理システムにそのデータ(高負荷データ)を移管することができる。
よって、移管先の高負荷データ分散処理システムにおいて、高負荷データの処理を継続しつつ、通常データ分散処理システムに高負荷データが存在していた際に問題となる、その他のデータへの信号処理への影響の発生や、非効率なスケールアウトの頻発を抑止することができる。
請求項2に記載の発明は、前記第1のノードの前記高負荷データ抽出部が、前記予め設定された高負荷データを抽出するロジックとして、前記所定の第1の期間内において、前記第1のデータ処理負荷計測情報として計測された、前記データの信号処理に伴うロック取得期間、または、前記データのデータサイズと、前記所定の第1の期間内における全ての前記データから算出した、平均ロック取得期間、または、平均データサイズとをそれぞれ比較して、その乖離幅が所定の閾値を超えている場合に、前記データを高負荷データとして抽出することが設定されていること、を特徴とする請求項1に記載の分散処理システムとした。
このようにすることで、通常データ分散処理システムの第1のノードは、高負荷データを抽出する際に、ロック取得期間またはデータサイズの計測情報に基づき、全データの平均値と比較して、高負荷データを抽出することができる。
請求項3に記載の発明は、前記第1のノードの前記高負荷データ抽出部が、前記平均ロック取得期間、または、平均データサイズを含む前記第1のノードのノード負荷計測情報を、前記第2のノードそれぞれに送信し、前記第2のノードの前記正常負荷データ抽出部が、前記予め設定された正常負荷データを抽出するロジックとして、前記所定の第2の期間内において、前記第2のデータ処理負荷計測情報として計測された、前記データの信号処理に伴うロック取得期間、または、前記データのデータサイズと、前記データの前記振り分けIDを用いて前記第1の振り分けID情報を参照し、当該データの返還先としての前記第1のノードを特定し、前記特定された第1のノードから送信された前記ノード負荷計測情報に含まれる、前記平均ロック取得期間、または、前記平均データサイズとをそれぞれ比較し、前記第2のデータ処理負荷計測情報として計測されたデータの値が、各々の平均以下であった場合に、当該データを正常負荷データとして抽出することが設定されていること、を特徴とする請求項2に記載の分散処理システムとした。
このようにすることで、高負荷データ分散処理システムの第2のノードは、正常負荷データの返還先となる第1のノードのノード負荷計測情報(平均ロック取得期間、平均データサイズ)に基づき負荷が低減したことを判定し、正常負荷データを抽出することができる。
請求項4に記載の発明は、前記第1のノードの前記振り分け部が、前記高負荷データとして抽出され前記第2のノードに送信されたデータの信号処理を要求するメッセージを受信した際に、前記メッセージに付与された前記担当分散システム識別子を、前記高負荷データ分散処理システムを示す値に変更すること、を特徴とする請求項1ないし請求項3のいずれか1項に記載の分散処理システムとした。
このようにすることで、高負荷データの移管後に、移管元の通常データ分散処理システムの第1のノードにおいて、当該データに対する最初のアクセスがあった場合に、そのメッセージに付与された担当分散処理システム識別子を移管先に書き換える。よって、その後のメッセージについては、高負荷データ分散処理システムに振り分けられるようにすることができる。
請求項5に記載の発明は、前記第2のノードの前記振り分け部が、前記正常負荷データとして抽出され前記第1のノードに送信されたデータの信号処理を要求するメッセージを受信した際に、前記メッセージに付与された前記担当分散システム識別子を、前記通常データ分散処理システムを示す値に変更すること、を特徴とする請求項1ないし請求項4のいずれか1項に記載の分散処理システムとした。
このようにすることで、正常負荷データの返還後に、返還元の高負荷データ分散処理システムの第2のノードにおいて、当該データに対する最初のアクセスがあった場合に、そのメッセージに付与された担当分散処理システム識別子を返還先に書き換える。よって、その後のメッセージについては、通常データ分散処理システムに振り分けられるようにすることができる。
請求項6に記載の発明は、前記第2のノードの前記正常負荷データ抽出部が、前記正常負荷データとして抽出されたデータを、前記通常データ分散処理システムの前記第1のノードに送信する際に、当該データに、高負荷データとして抽出されたことを示す高負荷データ判定回数を、1カウントアップして送信しており、前記正常負荷データを抽出したときに、前記高負荷データ判定回数が所定の閾値を超えていた場合、当該データを削除すること、を特徴とする請求項1ないし請求項5のいずれか1項に記載の分散処理システムとした。
このようにすることで、高負荷データ分散処理システムの第2のノードは、高負荷データとして移管されている期間が長く、高負荷データ判定回数が所定の閾値を超えたデータについて削除する処理を実行することができる。よって、第2のノードの処理負荷を低減させることができる。
本発明によれば、高負荷データの発生時に、高負荷データの処理を継続しつつ、他のデータの信号処理への影響の発生や、非効率なスケールアウトの頻発を抑止する、分散処理システムを提供することができる。
従来技術の課題を説明するための図である。 本実施形態に係る分散処理システムの全体構成を示す図である。 本実施形態に係る分散処理システムを構成する、通常データ分散処理システムと高負荷データ分散処理システムとを示し、分散処理システム全体の処理の流れを説明するための図である。 本実施形態に係る通常データ分散処理システムを構成するノードの機能ブロック図である。 本実施形態に係るノード識別子管理テーブル(通常)および振り分けIDテーブル(通常)のデータ構成例を示す図である。 本実施形態の係るデータ(メタデータ)の構成を説明するための図である。 本実施形態に係るデータ処理負荷計測情報(通常)のデータ構成例を示す図である。 本実施形態に係るノード負荷計測情報(通常)のデータ構成例を示す図である。 本実施形態の係るデータ(メタデータ)の構成を説明するための図である。 本実施形態に係る高負荷データ分散処理システムを構成するノードの機能ブロック図である。 本実施形態に係る通常データ分散処理システムの各ノードが実行する処理の流れを示すフローチャートである。 本実施形態に係るノードの高負荷データ抽出部による、高負荷データの抽出処理を説明するための図である。 本実施形態に係るノードの高負荷データ抽出部による、移管する高負荷データを担当する高負荷データ分散処理システムのノードを特定する処理を説明するための図である。 本実施形態に係る高負荷データの移管後の当該データに対する最初のアクセスのリダイレクト処理の流れを示すフローチャートである。 本実施形態に係るデータ処理負荷計測情報(高負荷)のデータ構成例を示す図である。 本実施形態に係る高負荷データ分散処理システムの各ノードが実行する処理の流れを示すフローチャートである。 本実施形態に係るノードの正常負荷データ抽出部による、正常負荷データの抽出処理を説明するための図である。 本実施形態の係るデータ(メタデータ)の構成を説明するための図である。 本実施形態に係る正常負荷データの返還後の当該データに対する最初のアクセスのリダイレクト処理の流れを示すフローチャートである。
次に、本発明を実施するための形態(以下、「本実施形態」と称する。)における分散処理システム1000について説明する。
図2は、本実施形態に係る分散処理システム1000の全体構成を示す図である。
この分散処理システム1000は、複数のノード1から構成される。各ノード1は、コンピュータなどの物理装置や仮想マシンなどの論理装置である。ロードバランサ3は、クライアント2からのメッセージを受信し、単純なラウンドロビン等により振り分けて各ノード1に送信する。そして、ノード1の振り分け部12は、クライアント2からのメッセージを、例えば、コンシステント・ハッシュ法等に基づき、メッセージを担当するノード1に振り分ける。メッセージを担当するノード1では、信号処理部13において、信号処理を行い、クライアント2にサービスを提供する。
なお、ロードバランサ3が存在せず、クライアント2から任意のノード1(振り分け部12)にメッセージを送信することも可能である。また、振り分け部12と信号処理部13とは、同じノード1上に同時に存在してもよいし、別々のノード1上に存在してもよい。
本実施形態の以下の説明では、分散処理システム1000のデータ管理手法として、ノード1の増減時の影響が少ない、コンシステント・ハッシュ法によるデータ管理手法を例として説明する。ただし、コンシステント・ハッシュ法に限定されるものではない。
<処理概要>
また、本実施形態に係る分散処理システム1000の複数のノード1は、少なくとも2つのクラスタ(通常データ分散処理システム100Aと高負荷データ分散処理システム100B)で構成される。そして、通常データ分散処理システム100Aの各ノード1A(第1のノード)において高負荷データを抽出し、処理能力の高い高負荷データを専門に処理する高負荷データ分散処理システム100Bのノード1B(第2のノード)に抽出した高負荷データを移管する。また、移管先の高負荷データ分散処理システム100Bの各ノード1Bにおいて、高負荷データの負荷が正常値に低減したのを確認して、そのデータを元の通常データ分散処理システム100Aのノード1Aに返還することを特徴とする。
図3は、本実施形態に係る分散処理システム1000を構成する、通常データ分散処理システム100Aと高負荷データ分散処理システム100Bとを示し、分散処理システム1000の全体の処理の流れを説明するための図である。
まず、ステップS1において、通常データ分散処理システム100Aの各ノード1Aは、信号処理時においてアクセスされたデータの処理負荷を計測し記憶する。そして、各ノード1Aは、所定の時間間隔毎に、自身のノード負荷(以下、「リソース負荷」と称する場合がある。)を計測するともに、自身のノードAが処理したデータ全体の平均のデータ処理負荷を計算し記憶する。
次に、通常データ分散処理システム100Aの各ノード1Aは、ステップS1で収集したリソース負荷やデータ処理負荷に基づき、高負荷データを抽出する(ステップS2)。そして、通常データ分散処理システム100Aの各ノード1Aは、抽出した高負荷データを、高負荷データ分散処理システム100Bに移管する(ステップS3)。
高負荷データ分散処理システム100Bの各ノード1Bは、高負荷データの処理を継続しつつ、信号処理時においてアクセスされたデータ(高負荷データ)の処理負荷(データ処理負荷)を計測し記憶する(ステップS4)。
高負荷データ分散処理システム100Bの各ノード1Bは、収集したデータ処理負荷に基づき、負荷が正常値に低減されたデータを正常負荷データとして抽出する(ステップS5)。そして、高負荷データ分散処理システム100Bの各ノード1Bは、抽出した正常負荷データを、通常データ分散処理システム100Aに返還する(ステップS6)。
このようにすることで、分散処理システム1000において、通常データ分散処理システム100Aの各ノード1Aが、アクセス頻度が多い、処理時間の長い等によりノードに高い負荷を与えるデータ(高負荷データ)を抽出し、処理能力の高い高負荷データを専用に処理する分散処理システム(高負荷データ分散処理システム100B)にそのデータ(高負荷データ)を移管することができる。これにより、移管先の高負荷データ分散処理システム100Bにおいて、高負荷データの処理を継続しつつ、通常データ分散処理システム100Aに高負荷データが存在していた際に問題となる、その他のデータへの信号処理への影響の発生や、非効率なスケールアウトの頻発を抑止することができる。
また、移管先の高負荷データ分散処理システム100Bにおいて、高負荷データの負荷が正常値に低減したことを確認して、データを元の通常データ分散処理システム100Aに返還することにより、高負荷データを専用に処理するノード1Bの処理負荷を必要以上に高めることなくシステムの運用を継続することができる。
なお、通常データ分散処理システム100Aと高負荷データ分散処理システム100Bとのシステム間においては、同じID空間(コンシステント・ハッシュのID空間)を用いてデータの移管(返還)を行う。これにより、互いの分散処理システムにおいてノード1(1A,1B)の増減設が発生し、各々の分散処理システムにおいてデータ移管(返還)時の担当ノードが変化しているようなケースでも、新しい担当ノードを特定し、データの移管(返還)を実行することが容易に可能となる。なお、詳細は後記する。
<各分散処理システムの装置の構成>
次に、本実施形態に係る分散処理システム1000を構成する、通常データ分散処理システム100Aおよび高負荷データ分散処理システム100Bを構成するノード1(1A,1B)について、具体的に説明する。ここでは、通常データ分散処理システム100Aを構成するノード1Aと高負荷データ分散処理システム100Bを構成するノード1Bとを分けて説明する。
≪通常データ分散処理システム100Aのノード1A≫
図4は、本実施形態に係る通常データ分散処理システム100Aを構成するノード1A(第1のノード)の機能ブロック図である。
ノード1Aは、図2に示したように、ロードバランサ3と通信可能に接続されるともに、クラスタを構成する自身以外の他のノード1(他のノード1Aおよび高負荷データ分散処理システム100Bの各ノード1Bを含む)との通信可能に接続される。また、このノード1Aは、ロードバランサ3を介してクライアント2からメッセージを受け取ると、そのメッセージを、担当するノード1A(自身を含む)に振り分け、そのメッセージの信号処理を実行する。さらに、ノード1Aは、高負荷データを抽出し、高負荷データ分散処理システム100Bのノード1Bに移管する処理を実行する。
このノード1Aは、図4に示すように、制御部10Aと、入出力部20と、記憶部30Aとを含んで構成される。
入出力部20は、ロードバランサ3や、自身以外の他のノード1(1A,1B)との間の情報の入出力を行う。また、この入出力部20は、通信回線を介して情報の送受信を行う通信インタフェースと、不図示のキーボード等の入力手段やモニタ等の出力手段等との間で入出力を行う入出力インタフェースとから構成される。
記憶部30Aは、ハードディスクやフラッシュメモリ等の記憶手段からなる。この記憶部30Aには、通常データ分散処理システム100Aを構成するノード1Aへのメッセージ(データ)の振り分け処理に用いる、ノード識別子管理テーブル(通常)200A(第1のノード識別子管理情報)および振り分けIDテーブル(通常)250A(第1の振り分けID情報)と、高負荷データ分散処理システム100Bを構成するノード1Bへのメッセージ(データ)の振り分け処理に用いる、ノード識別子管理テーブル(高負荷)200B(第2のノード識別子管理情報)および振り分けIDテーブル(高負荷)250B(第2の振り分けID情報)とを備える。さらに、記憶部30Aには、メッセージの処理対象となるデータ300、ノード1A自身のデータの処理負荷を計測した情報であるデータ処理負荷計測情報(通常)400A(第1のデータ処理負荷計測情報)、および、ノード1A自身のノード負荷(リソース負荷)を計測した情報であるノード負荷計測情報(通常)500Aが記憶される。なお、この記憶部30Aに記憶される各情報についての詳細は後記する。
制御部10Aは、ノード1A全体の制御を司り、ノード識別子管理部11、振り分け部12、信号処理部13(第1の信号処理部)、ノード負荷計測部14および高負荷データ抽出部15を含んで構成される。なお、この制御部10Aは、例えば、記憶部30Aに格納されたプログラムをCPU(Central Processing Unit)(図示省略)がRAM(Random Access Memory)(図示省略)に展開し実行することで実現される。
ノード識別子管理部11は、分散処理システム(ここでは、通常データ分散処理システム100A)上のノード情報の管理および各ノード1(1A,1B)が担当するID空間を管理する。
具体的には、ノード識別子管理部11は、自身が属する分散処理システム(ここでは、通常データ分散処理システム100A)へのノードの追加や離脱が発生した場合に、その分散処理システムを構成するノード1(1A)の識別情報を更新し、ノード識別子管理テーブル200(ここでは、ノード識別子管理テーブル(通常)200A)として管理する。
図5(a)は、本実施形態に係るノード識別子管理テーブル(通常)200A(第1のノード識別子管理情報)のデータ構成例を示す図である。
図5(a)に示すように、ノード識別子管理テーブル(通常)200Aには、通常データ分散処理システム100Aを構成する各ノード1Aのノード識別子201とアドレス202(例えば、IPアドレス)とが対応付けられて格納される。
このノード識別子201は、例えば、当該分散処理システム内において予め設定される特定のノード(例えば、ノード識別子201の昇順に設定)のノード識別子管理部11で付与され、当該分散処理システム内(ここでは、通常データ分散処理システム100A内)の各ノード1(1A)に配信される。なお、このノード識別子201は、コンシステント・ハッシュのID空間において仮想IDを用いる場合、仮想ID毎に付与される。
また、ノード識別子管理部11は、ノード識別子管理テーブル200(ここでは、ノード識別子管理テーブル(通常)200A)の更新(ノード1Aの増減設)に合わせて、ノード1(1A)の担当するID空間情報を更新し、振り分けIDテーブル250(ここでは、振り分けIDテーブル(通常)250A)として管理する。
図5(b)は、本実施形態に係る振り分けIDテーブル(通常)250Aのデータ構成例を示す図である。
図5(b)に示すように、振り分けIDテーブル(通常)250には、ノード識別子201に対応付けて、そのノード1(1A)が担当するID空間(担当領域)203が格納される。図5(b)に示す例では、ID空間の全ID数が「0」〜「999」の「1000」であり、例えば、ノード識別子201が「Node1」のノード1Aが、担当するID空間として「0〜199(D=200)」について担当することを示している。なお、「D=200」は、担当するID空間の数(データ数に対応する。)を意味する。
ノード識別子管理部11は、自身が属する通常データ分散処理システム100A内の各ノード1Aに共通して保持される、ノード識別子管理テーブル(通常)200Aと振り分けIDテーブル(通常)250Aを管理するとともに、データの移管先となる分散処理システム(高負荷データ分散処理システム100B)内の各ノード1Bに共通して保持される、ノード識別子管理テーブル(高負荷)200Bおよび振り分けIDテーブル(高負荷)250B(図4参照)を、高負荷データ分散処理システム100B(の予め設定される特定のノード等)から取得し、常に最新の状態に更新して保持する。また、通常データ分散処理システム100A内の特権ノードは、高負荷データ分散処理システム100B内の各ノード1Bに対して、最新のノード識別子管理テーブル(通常)200Aおよび振り分けIDテーブル(通常)250Aを送信しておく。このようにすることにより、各分散処理システム内の各ノード1(1A,1B)には、常に、最新の状態の、ノード識別子管理テーブル(通常)200Aおよび振り分けIDテーブル(通常)250A、ノード識別子管理テーブル(高負荷)200Bおよび振り分けIDテーブル(高負荷)250Bが保持されるようにする。
図4に戻り、振り分け部12は、ロードバランサ3等を介してクライアント2から発呼されるメッセージ内の情報(後記する「振り分けキー」)をもとに、信号処理を担当するノード1を特定し、当該ノード1へのメッセージの振り分けを行う。
メッセージは、新規呼(例えば、SIPにおいては、Initial-INVITE)と後続呼(例えば、SIPにおいてはBYE等)に分類でき、振り分け部12は、新規呼と後続呼で異なる処理を実行する。
振り分け部12は、受信したメッセージが新規呼の場合、振り分けキーを生成した上で、生成した振り分けキーに基づき、信号処理を担当するノード1(1A,1B)を特定し、当該ノードに転送する。
この振り分けキーは、当該メッセージのアクセス先の担当分散処理システム(ここでは、通常データ分散処理システム100Aまたは高負荷データ分散処理システム100Bのいずれか)の識別子(以下、「担当分散システム識別子」と称する。)、ハッシュ値(振り分けID)、データ識別子から構成される。
担当分散システム識別子には、新規呼においてデフォルトで担当する分散処理システム(ここでは、通常データ分散処理システム100A)を予め決めておき、その分散処理システムを示す担当分散システム識別子が設定される。
ハッシュ値(振り分けID)には、振り分け部12が、新規呼のヘッダ情報等から当該呼をユニークに識別可能な情報(例えば、SIPにおいてはCall−ID等)を抽出してハッシュ関数にかけ、当該呼のコンシステント・ハッシュのID空間におけるハッシュ値を算出し、設定される。
データ識別子は、信号処理部13において新規呼を処理する際に生成され、メッセージに付与される。よって、新規呼を振り分け部12が処理する際には、ブランクとなる。
振り分け部12は受信したメッセージが後続呼の場合、予めクライアントにおいて振り分けキーの情報がメッセージに付与されているため(例えば、SIPにおいては、Viaヘッダ等)、その付与された振り分けキーに基づき信号処理を担当するノード1を特定し、当該ノード1に転送する。
振り分け部12は、メッセージを受信するとそのメッセージに付与された振り分けキー(担当分散システム識別子+ハッシュ値(振り分けID)+データ識別子)のうち、まず、担当分散システム識別子に基づき、担当する分散処理システム(ここでは、通常データ分散処理システム100Aか高負荷データ分散処理システム100Bのいずれか)の振り分けIDテーブル250とノード識別子管理テーブル200とを特定する。そして、振り分け部12は、その特定した振り分けIDテーブル250上の各ノード1の担当領域の情報と、ハッシュ値(振り分けID)の情報とに基づき、当該メッセージを担当するノード1を抽出する。続いて、振り分け部12は、担当するノード1のアドレスをノード識別子管理テーブル200から取得し、担当するノード1に対してそのメッセージを転送する。
信号処理部13(第1の信号処理部)は、自身のノード1Aが担当するデータに関するメッセージの信号処理を実行するとともに、その信号処理においてアクセスするデータの処理負荷を計測する。
また、信号処理部13は、新規呼が担当するノード1に到着したとき、当該データのデータ識別子を決定した上で、当該データのメタデータ310を設定する。このメタデータ310は、図6(a)に示すように、記憶部30Aに記憶されるデータ300として、実際のアクセスの対象となる実データ320に対応付けて記憶される。
メタデータ310に設定する情報は、図6(b)に示すように、振り分けキー、データ識別子、担当分散システム識別子、データ生成時分散システム識別子、高負荷データ判定回数である。
ここで、データ生成時分散システム識別子には、メッセージが新規呼の場合に、そのメッセージの対象となるデータを最初に処理したノード1が属する分散処理システム(通常の処理では、通常データ分散処理システム100A)の識別子(担当分散システム識別子)が格納される。
高負荷データ判定回数には、メッセージの処理対象となるデータが高負荷データと判定された回数が格納される。なお、高負荷データ判定回数の詳細は後記する。
信号処理部13は、メッセージを受信し信号処理するデータについて、当該データの処理負荷(データ処理負荷)を計測する。そして、信号処理部13は、その計測結果を、データ処理負荷計測情報400(ここでは、データ処理負荷計測情報(通常)400A)として、記憶部30Aに格納する。
図7は、本実施形態に係るデータ処理負荷計測情報(通常)400A(第1のデータ処理負荷計測情報)のデータ構成例を示す図である。
信号処理部13は、データ処理負荷として、ロック取得時刻、ロック解放時刻、データサイズを計測し、図7(a)に示すように、データ処理負荷計測情報(通常)400Aとして、データ識別子に対応付け、ロック取得時刻、ロック解放時刻、ロック取得期間、データサイズの各値を格納する。
ここで、ロック取得時刻は、データの不整合を排除するために、他のトランザクションからの更新処理を受け付けないようにする処理(ロック)の開始時刻である。ロック解放時刻は、ロック(更新処理を受け付けない)を解除した時刻である。ロック取得期間は、ロック開始時刻からロック解放時刻までの時間を意味し、信号処理部13により算出され格納される。データサイズは、信号処理部13が処理したデータのデータ量が格納される。ここで、負荷が高いデータ程、ロック取得期間が長くなり、データサイズが大きいものとなる。
信号処理部13が収集するデータ処理負荷のパラメータは、データ処理負荷の計測が可能なパラメータであればよく、図7(a)に示すパラメータに限定されるものではない。例えば、図7(b)に示すように、ロック取得時刻、ロック解放時刻に加えて、CPUの処理時間(図7(b)においては、「CPU時間」と記載する。)、CPU使用率を計測するようにしてもよい。
なお、本実施形態においては、以降においては、図7(a)に示す、ロック取得期間を、データ処理負荷を示すパラメータとして利用する例として説明する。
図4に戻り、ノード負荷計測部14は、所定の周期(所定の第1の期間)で、自身のノード1Aのノード負荷(リソース負荷)を計測するとともに、当該所定の周期でのデータ処理負荷のデータ毎の平均値を算出し、ノード負荷計測情報(通常)500A(図8参照)として記憶部30Aに格納する。また、ノード負荷計測部14は、所定の周期で、生成したノード負荷計測情報(通常)500Aを、高負荷データ分散処理システム100Bの各ノード1Bに送信する。
図8は、本実施形態に係るノード負荷計測情報(通常)500Aのデータ構成例を示す図である。
ノード負荷計測部14は、自身のノード1AのOSのリソース情報収集コマンドを利用し、CPU使用率、メモリ使用率等のノード1Aのリソース負荷が推定可能なパラメータを計測する。
ノード負荷計測部14は、例えば、10秒間隔でリソース負荷を収集する。図8においては、周期識別番号が「1」の期間、収集開始時刻が「10:14:50」(10時14分50秒、以下の記載形式も同様)を超えた時刻から収集時刻「10:15:00」までの期間での、CPU使用率とメモリ使用率とを、リソース負荷として計測する。
また、ノード負荷計測部14は、同じ所定の周期に含まれる、データ処理負荷計測情報(通常)400Aを抽出し、各データの平均値として、平均ロック取得期間、平均アクセス頻度、平均データサイズを計算してノード負荷計測情報(通常)500Aに格納する。
高負荷データ抽出部15は、ノード負荷計測情報(通常)500Aに基づき、自身のノード1Aが担当するデータの中から高負荷データを抽出し、抽出した高負荷データを、高負荷データ分散処理システム100Bに移管する処理を実行する。
なお、高負荷データ抽出部15は、各周期で発生したデータ処理(データのロック取得時刻、ロック解放時刻のいずれか)が当該周期内に含まれるものの中から、処理負荷の高いデータを高負荷データとして抽出する。
高負荷データ抽出部15が、高負荷データを抽出するための手法は、特に限定されるものではなく、例えば、以下の手法が考えられる。
(高負荷データ抽出手法の例1)
当該周期における全データのデータ処理負荷計測情報(通常)400Aについて、個々のロック取得期間、データサイズ等の値と、当該周期以前の周期のノード負荷計測情報(通常)500Aにおいて対応する、平均ロック取得期間、平均データサイズ等の値を比較し、その乖離幅(超過量)が所定の閾値を超えていた場合、そのデータを高負荷データとして抽出する。
(高負荷データ抽出手法の例2)
当該周期における全データのデータ処理負荷計測情報(通常)400Aについて、予め指定したパラメータ毎の上限値と、当該周期におけるパラメータの値を比較し、上限値を超えたパラメータが検出された場合に、そのデータを高負荷データとして抽出する。
(高負荷データ抽出手法の例3)
当該周期におけるリソース負荷(CPU使用率やメモリ使用率等)が、それ以前の周期のリソース負荷と比較し、その乖離幅(超過量)が所定の閾値を超えていた場合に、当該周期にアクセスされた全てのデータを高負荷データとみなして抽出する。
高負荷データ抽出部15が比較対象とする周期やパラメータ、設定する閾値等は、システム毎に適切な設定値が異なり、また、複数の組み合わせでもよいため、特に限定するものではない。また、当該周期において、複数のアクセスがあったデータについては、高負荷データと判定されるデータと、判定されないデータとが混在するケースも考えられるが、一度でも高負荷と判定されれば、高負荷データと判定するようにしてもよいし、1つのデータに関して、高負荷データであるとした判定と、非判定との割合を勘案して、最終的に高負荷データとするか否かの判定を行うようにしてもよい。この高負荷の判定、非判定の割合についても、特に限定するものではない。
なお、以下においては、(高負荷データ判定手法の例1)を適用した場合を例に、後記する図12において詳細に説明する。
また、高負荷データ抽出部15が、抽出した高負荷データを、高負荷データ分散処理システム100Bに移管する際に実行する、移管先のノード1Bの決定処理については、図13を参照して後記する。
なお、高負荷データ抽出部15は、高負荷データを高負荷データ分散処理システム100Bに移管する際には、そのデータ(高負荷データ)のメタデータ310(図6(b)参照)の担当分散システム識別子を、図9に示すように、高負荷データ分散処理システム100Bを示す「2」に変更して、当該データを送信する。
このように、本実施形態に係る通常データ分散処理システム100Aの各ノード1Aは、高負荷データを抽出して、処理能力の高い高負荷データ分散処理システム100Bのノード1Bにその高負荷データを移管する。これにより、各ノード1Aにおいて、高負荷データが存在する際に問題となる、その他のデータへの信号処理への影響の発生や、非効率なスケールアウトの頻発を抑止することができる。
≪高負荷データ分散処理システム100Bのノード1B≫
次に、高負荷データ分散処理システム100Bのノード1B(第2のノード)について説明する。
図10は、本実施形態に係る高負荷データ分散処理システム100Bを構成するノード1Bの機能ブロック図である。なお、図4において示した通常データ分散処理システム100Aのノード1Aと、同一の機能を備える構成は、同一の符号と名称を付し、説明を省略する。
ノード1Bは、図2に示したように、ロードバランサ3と通信可能に接続されるともに、クラスタを構成する自身以外の他のノード1(他のノード1Bおよび通常データ分散処理システム100Aの各ノード1Aを含む)と通信可能に接続される。また、このノード1Bは、ロードバランサ3を介してクライアント2からメッセージを受け取ると、そのメッセージを、担当するノード1B(自身を含む)に振り分け、そのメッセージの信号処理を実行する。さらに、ノード1Bは、通常データ分散処理システム100Aから高負荷データの移管を受け処理を継続するとともに、当該高負荷データの負荷が低減し、所定の正常値以下となった場合に、そのデータを正常負荷データとして抽出し、通常データ分散処理システム100Aに返還する。
このノード1Bは、図10に示すように、制御部10Bと、入出力部20と記憶部30Bとを含んで構成される。
ここで、高負荷データ分散処理システム100Bのノード1Bの記憶部30Bには、自身が属する高負荷データ分散処理システム100Bのノード識別子管理テーブル(高負荷)200Bおよび振り分けIDテーブル(高負荷)250Bを備えるとともに、負荷が低減したデータ(正常負荷データ)の返還先となる通常データ分散処理システム100Aの、最新のノード識別子管理テーブル(通常)200Aおよび振り分けIDテーブル250Aをノード識別子管理部11が取得し、自身の記憶部30Bに記憶している。さらに、通常データ分散処理システム100Aのノード1Aそれぞれから、ノード負荷計測情報(通常)500Aを受信し、自身の記憶部30Bに記憶している。
また、高負荷データ分散処理システム100Bのノード1Bの信号処理部13(第2の信号処理部)は、自身のノード1Bが担当するデータに関するメッセージの信号処理を実行するとともに、その信号処理においてアクセスするデータの処理負荷を計測し、その計測結果をデータ処理負荷計測情報(高負荷)400B(第2のデータ処理負荷計測情報)として記憶部30Bに記憶している。
正常負荷データ抽出部16は、通常データ分散処理システム100Aのノード1Aそれぞれから、ノード負荷計測情報(通常)500Aを受信し、自身の記憶部30Bに記憶しておく。
また、正常負荷データ抽出部16は、高負荷データについてのアクセスが減少する等により、ノード1に対する負荷が低減したデータを正常負荷データとして抽出する。そして、正常負荷データ抽出部16は、抽出した正常負荷データを、通常データ分散処理システム100Aに返還する処理を実行する。
正常負荷データ抽出部16は、発生したデータ処理(データのロック取得時刻、ロック解放時刻のいずれか)が、所定の期間(所定の第2の期間)内に含まれるものの中から、処理負荷が低減したデータを正常負荷データとして抽出する。
正常負荷データ抽出部16が、正常負荷データを抽出するための手法は、特に限定されるものではなく、例えば、以下の手法が考えられる。
(正常負荷データ抽出手法の例1)
当該所定の期間における全データのデータ処理負荷計測情報(高負荷)400Bについて、個々のロック取得期間、データサイズ等の値と、返還先となる通常データ分散処理システム100Aにおいて担当領域を同じくするノード1Aの任意の周期のノード負荷計測情報(通常)500Aに記憶された、対応する平均ロック取得期間、平均データサイズ等の値を比較する。そして、正常負荷データ抽出部16は、高負荷データ分散処理システム100Bのデータ処理負荷計測情報(高負荷)400Bが、返還先となる通常データ分散処理システム100Aの対応するパラメータの平均値以下だった場合、そのデータを正常負荷データとして抽出する。
(正常負荷データ抽出手法の例2)
当該所定の期間における全データのデータ処理負荷計測情報(高負荷)400Bについて、予め指定したパラメータ毎の正常値と比較し、正常値以下であれば、そのデータを正常負荷データとして抽出する。
正常負荷データ抽出部16が比較対象とする任意の期間、返還先のノード負荷の選択周期、選択するパラメータ、正常値は、システム毎に適切な設定値が異なり、また、複数の組み合わせでもよいため、特に限定するものではない。また、所定の期間において、複数のアクセスがあったデータについては、正常負荷データと判定されるデータと、判定されないデータとが混在するケースも考えられるが、一度でも正常負荷と判定されなかったら、正常負荷と判定しないようにしてもよいし、1つのデータに関して、正常負荷データであるとした判定と、非判定との割合を勘案して、最終的に正常負荷データとするか否かの判定を行うようにしてもよい。この正常負荷の判定、非判定の割合についても、特に限定するものではない。なお、この正常負荷データの抽出処理の具体例については、図17において詳細に説明する。
また、正常負荷データ抽出部16は、高負荷データとして移管されている期間が長く、当該データのメタデータの高負荷データ判定回数が多いデータ(高負荷データ判定回数が所定の閾値を超えたデータ)については、削除する等の判断を実行してもよい。
さらに、正常負荷データ抽出部16が、抽出した正常負荷データを、通常データ分散処理システム100Aに返還する際に実行する、返還先のノード1Aの決定処理については、後記する。なお、正常負荷データ抽出部16は、正常負荷データを通常データ分散処理システム100Aに返還する際には、そのデータ(正常負荷データ)のメタデータ(図12(b)参照)の担当分散システム識別子を、図18(b)に示すように、通常データ分散処理システム100Aを示す「1」に変更するとともに、メタデータの高負荷データ判定回数をカウントアップして、当該データを送信する。
このように、本実施形態に係る高負荷データ分散処理システム100Bの各ノード1Bは、高負荷データの負荷が正常値に低減したことを確認して、データを元の通常データ分散処理システム100Aに返還することができる。よって、高負荷データを専用に処理する高負荷データ分散処理システム100Bを構成するノード1Bの処理負荷を必要以上に高めることなくシステムの運用を継続することができる。
<処理の流れ>
次に、本実施形態に係る分散処理システム1000が実行する処理の流れについて説明する。なお、分散処理システム1000全体の概略の処理の流れは、図3を参照して説明したため、ここでは、通常データ分散処理システム100Aのノード1Aが実行する処理の流れと、高負荷データ分散処理システム100Bのノード1Bが実行する処理の流れについて、詳細に説明する。
≪ノード1Aの処理≫
図11は、本実施形態に係る通常データ分散処理システム100Aの各ノード1Aが実行する処理の流れを示すフローチャートである。
なお、通常データ分散処理システム100Aのノード1A(ノード識別子管理部11)は、自身が属する通常データ分散処理システム100Aのノード識別子管理テーブル(通常)200Aおよび振り分けIDテーブル250Aに加えて、高負荷データ分散処理システム100Bの最新の、ノード識別子管理テーブル(高負荷)200Bおよび振り分けIDテーブル250Bを取得し記憶部30Aに記憶しているものとする。
また、ノード1A(信号処理部13)は、自身のノード1Aが担当するデータに関するメッセージの信号処理を実行した際に、当該データの処理負荷を計測し、その計測結果をデータ処理負荷計測情報(通常)400A(図6(a)参照)として記憶部30Aに記憶しているものとする。
図11に示すように、まず、ノード1Aのノード負荷計測部14は、所定の時間(所定の周期:所定の第1の期間)が経過したかを判定し(ステップS20)、所定の時間が経過していなければ(ステップS20→No)、所定の時間が経過するまで待つ。一方、ノード負荷計測部14は、所定の時間(周期)が経過した場合には、次のステップS21に進む。
ステップS21において、ノード負荷計測部14は、自身のノード1Aのノード負荷(リソース負荷)を計測するとともに、記憶部30A内のデータ処理負荷計測情報(通常)400Aを参照し、データ処理負荷のデータ毎のパラメータの平均値を算出し、ノード負荷計測情報(通常)500A(図8参照)を生成して記憶部30Aに格納する。また、ノード負荷計測部14は、生成したノード負荷計測情報(通常)500Aを、高負荷データ分散処理システム100Bの各ノード1Bに送信する。
なお、ここでは、図8に示すノード負荷計測情報(通常)500Aが、ノード負荷計測部14により生成されたものとして、以下説明する。
次に、ノード1Aの高負荷データ抽出部15は、ノード負荷計測情報(通常)500Aに基づき、各所定の時間(周期)内において信号処理されたデータの中から、高負荷データを抽出する(ステップS22)。ここでは、前記した(高負荷データ判定手法の例1)を適用した場合を例にして説明する。
図12は、ノード1Aの高負荷データ抽出部15による、高負荷データの抽出処理を説明するための図である。図12(a)は、当該周期(ここでは、周期識別番号「3」に相当)に含まれるデータ処理負荷計測情報(通常)400Aを示す。また、図12(b)は、ノード負荷計測情報(通常)500Aを示している。
ここでは、当該周期(高負荷データを抽出しようとする周期)を周期識別番号「3」で示される、「10:15:10〜10:15:20」とし、比較対象の周期を周期識別番号「1」で示される、「10:14:50〜10:15:00」とする。また、比較対象のパラメータをロック取得期間とする。この場合、図12(a)に示す、データ処理負荷計測情報(通常)400Aの各データのロック取得期間を参照し、そのロック取得期間が、図12(b)に示すノード負荷計測情報(通常)500Aの周期識別番号「1」の平均ロック取得期間「7msec」と比較する。そして、高負荷データ抽出部15は、そのデータのロック取得期間と平均ロック取得期間との乖離幅(超過量)の閾値として設定された「20msec」を超えるか否かを判定する。この場合、符号αで示すロック取得期間が「106msec」のデータが、高負荷データとして抽出される。
図11に戻り、次に、高負荷データ抽出部15は、ステップS23において、移管対象として抽出されたデータ(高負荷データ)のメタデータ310の担当分散システム識別子を、通常データ分散処理システム100Aを示す値「1」(図6(b)参照)から、高負荷データ分散処理システム100Bを示す値「2」(図9(b)参照)に変更する。
続いて、高負荷データ抽出部15は、移管する高負荷データを担当する高負荷データ分散処理システム100Bのノード1Bを、記憶部30A内の、ノード識別子管理テーブル(高負荷)200Bおよび振り分けIDテーブル250Bを参照して特定し、特定したノードBに、当該データ(高負荷データ)の複製データを送信する(ステップS24)。
図13は、移管する高負荷データを担当する高負荷データ分散処理システム100Bのノード1Bを特定する処理を説明するための図である。ここで、図13(a)は、通常データ分散処理システム100Aのノード識別子管理テーブル(通常)200Aを示し、図13(b)は、通常データ分散処理システム100Aの振り分けIDテーブル(通常)250Aを示す。また、図13(c)は、高負荷データ分散処理システム100Bのノード識別子管理テーブル(高負荷)200Bを示し、図13(d)は、高負荷データ分散処理システム100Bの振り分けIDテーブル(高負荷)250Bを示す。
なお、図13(b)に示す通常データ分散処理システム100Aの振り分けIDテーブル(通常)250Aと、図13(d)に示す高負荷データ分散処理システム100Bの振り分けIDテーブル(高負荷)250Bとは、同じID空間(コンシステント・ハッシュのID空間)が設定される。ここでは、ID空間として「0」〜「999」が同様に設定されている。これにより、互いの分散処理システムにおいてノード1(1A,1B)の増減設が発生し、各々の分散処理システムにおいてデータ移管(返還)時の担当ノードが変化しているようなケースでも、新しい担当ノードを特定し、データの移管(返還)を実行することが容易に可能となる。
ここで、高負荷データ抽出部15が抽出したデータ(高負荷データ)のハッシュ値(振り分けID)が「250」であるものとする。この場合、図13(b)に示す、振り分けIDテーブル250Aに示されるように、当該データは、通常データ分散処理システム100Aにおいては、「Node2」が担当している。このデータが高負荷データであり、高負荷データ分散処理システム100Bに移管する場合に、高負荷データ抽出部15は、まず、図13(d)に示す、高負荷データ分散処理システム100Bの振り分けIDテーブル(高負荷)250Bを参照し、そのハッシュ値 (振り分けID)「250」に基づき、担当するノードを「Node1」に特定する。そして、高負荷データ抽出部15は、図13(c)に示す、高負荷データ分散処理システム100Bのノード識別子管理テーブル200Bを参照し、「Node1」のアドレスとして「10.35.0.1」を取得する。高負荷データ抽出部15は、高負荷データ分散処理システム100Bのノード1Bのうち、アドレス「10.35.0.1」の「Node1」に対して、当該抽出した高負荷データの複製データを送信する。
図11に戻り、ステップS25において、高負荷データ抽出部15は、高負荷データの移管の完了後、自身の記憶部30Aのデータ300に記憶された当該データの実データ320を削除し(図9(a)参照)、処理を終える。これは、実データ320のデータサイズ等が大きいと、通常データ分散処理システム100Aのリソース消費につながる場合があるためである。
このようにして、通常データ分散処理システム100Aの各ノード1Aは、高負荷データを抽出して、高負荷データ分散処理システム100Bの担当となるノード1Bに、当該高負荷データを移管することができる。
≪高負荷データ移管後のノード1Aのリダイレクト処理≫
ここで、高負荷データの移管後に、移管元のノード1Aにおいて当該データに対する最初のアクセスがあった場合の移管先へのリダイレクト処理について説明する。
図14は、高負荷データの移管後の当該データに対する最初のアクセスのリダイレクト処理の流れを示すフローチャートである。
まず、クライアント2等からのメッセージを、通常データ分散処理システム100Aのノード1Aが受信する(ステップS30)。
次に、ノード1Aの振り分け部12は、メッセージに付与された振り分けキーの担当分散システム識別子と、記憶部30A内に格納されたデータ300内のメタデータ310の担当分散システム識別子(図9(b)参照)とを確認し、自身の分散処理システムに対するアクセスか否かを判定する(ステップS31)。ここで、振り分け部12は、当該メッセージの処理対象のデータついて、そのメタデータ310の担当分散システム識別子が、通常データ分散処理システム100Aを示す「1」であれば(ステップS31→Yes)、通常の信号処理を実行する(ステップS32)。一方、振り分け部12は、メタデータ310の担当分散システム識別子が、「1」以外の例えば「2」であれば(ステップS31→No)、ステップS33へ進む。
ここで、例えば、高負荷データの移管後の当該データに対する最初のメッセージに付与された振り分けキーは、変更されていないため「1+199+data_12345」であるとする。一方、振り分け部12は、記憶部30Aに格納されたデータ300のメタデータ310の当該データ「data_12345」の担当分散システム識別子を参照し、その値が「2」であることを確認する(図9(b)参照)。つまり、受信したメッセージの処理対象のデータが、移管されたデータ(高負荷データ)であることを確認する。
ステップS33において、振り分け部12は、メタデータ310の担当分散システム識別子(ここでは「2」)の情報に基づき、担当する分散システム(ここでは、高負荷データ分散処理システム100B)の振り分けIDテーブル250(ここでは、振り分けIDテーブル(高負荷)250B)を決定する。また、振り分け部12は、振り分けIDテーブル250(高負荷)Bを参照し、ハッシュ値(振り分けID)「199」に基づき担当ノード1Bを決定し、その担当ノードのアドレスをノード識別子管理テーブル(高負荷)200Bにより取得する。
続いて、振り分け部12は、メッセージに付与された振り分けキーの担当分散システム識別子の値を、移管先の高負荷データ分散処理システム100Bを示す「2」に変更して、担当するノード1Bに転送する(ステップS34)。
このようにすることで、移管元の通常データ分散処理システム100Aの各ノード1Aは、高負荷データの移管後に、当該データに対する最初のアクセスがあった場合に、そのメッセージに付与された振り分けキーの担当分散処理システム識別子を移管先に書き換える。よって、その後の当該データについてのメッセージについては、高負荷データ分散処理システム100Bにメッセージが振り分けられるようにすることができる。
≪ノード1Bの処理≫
次に、本実施形態に係る高負荷データ分散処理システム100Bの各ノード1Bが実行する処理について説明する。
なお、高負荷データ分散処理システム100Bのノード1B(ノード識別子管理部11)は、自身が属する高負荷データ分散処理システム100Bのノード識別子管理テーブル(高負荷)200B(第2のノード識別子管理情報)および振り分けIDテーブル(高負荷)250B(第2の振り分けID情報)に加えて、通常データ分散処理システム100Aの最新の、ノード識別子管理テーブル(通常)200A(第1のノード識別子管理情報)および振り分けIDテーブル(通常)250A(第1の振り分けID情報)を取得し記憶部30Bに記憶しているものとする。
また、ノード1B(信号処理部13)は、自身のノード1が担当するデータに関するメッセージの信号処理を実行した際に、当該データの処理負荷を計測し、その計測結果をデータ処理負荷計測情報(高負荷)400B(第2のデータ処理負荷計測情報)(図15参照)として記憶部30Bに記憶しているものとする。
さらに、ノード1B(正常負荷データ抽出部16)は、通常データ分散処理システム100Aの各ノード1Aから、それぞれのノード負荷計測情報(通常)500Aを受信し、記憶部30Bに記憶しているものとする。
図16は、本実施形態に係る高負荷データ分散処理システム100Bの各ノード1Bが実行する処理の流れを示すフローチャートである。
まず、ノード1Bの正常負荷データ抽出部16は、所定の時間(所定の第2の期間)が経過したかを判定し(ステップS40)、所定の時間が経過していなければ、(ステップS40→No)、所定の時間が経過するまで待つ。一方、正常負荷データ抽出部16は、所定の時間が経過した場合には(ステップS40→Yes)、次のステップS41に進む。
ステップS41において、ノード1Bの正常負荷データ抽出部16は、発生したデータ処理(データのロック取得時刻、ロック解放時刻のいずれか)が当該所定の時間(所定の第2の期間)内に含まれるものの中から、処理負荷が低減したデータを正常負荷データとして抽出する。ここでは、前記した(正常負荷データ判定手法の例1)を適用した場合を例にして説明する。
図17は、ノード1Bの正常負荷データ抽出部16による、正常負荷データの抽出処理を説明するための図である。図17(a)は、所定の時間に含まれるデータ処理負荷計測情報(高負荷)400Bを示す。また、図17(b)は、返還先の分散処理システム(通常データ分散処理システム100A)の担当領域を同じくするノード1Aのノード負荷計測情報(通常)500Aを示している。
ここでは、当該期間(正常負荷データを抽出しようとする期間)を「10:15:20〜10:15:30」)とし、比較対象の返還先の分散処理システム(通常データ分散処理システム100A)から選択した周期を周期識別番号「1」で示される「10:14:50〜10:15:00」とする。また、比較対象のパラメータをロック取得期間とし、所定の時間に含まれるデータ処理負荷計測情報(高負荷)400Bの同じデータ識別子のロック取得期間の値が、担当領域を同じくするノード1Aのノード負荷計測情報(通常)500Aで示される平均ロック取得期間(ここでは、「7msec」)を一度も上回ることがなければ、当該データを正常負荷データと判定する。
なお、ここで、判定対象となるデータ(例えば、データ識別子「11111111」)と担当領域を同じくするノード1Aのノード負荷計測情報(通常)500Aは、判定対象となるデータのメタデータに付された振り分けキーのハッシュ値(振り分けID)を取得し、自身の記憶部40Bに記憶された振り分けIDテーブル(通常)250Aを検索することにより、現時点(つまり返還しようする時点)での当該データの返還先となるノード1Aのノード負荷計測情報(通常)500Aを特定することにより決定する。
図16に戻り、ステップS42において、正常負荷データ抽出部16は、返還対象として抽出したデータ(正常負荷データ)のメタデータ310の担当分散システム識別子を、高負荷データ分散処理システム100Bを示す値「2」(図9(b)参照)から、通常データ分散処理システム100Aを示す値「1」に変更する(図18(b)参照)。また、正常負荷データ抽出部16は、返還対象として抽出したデータ(正常負荷データ)のメタデータの高負荷データ判定回数を1カウントアップする(図18(b)参照)。
続いて、正常負荷データ抽出部16は、返還する正常負荷データを担当する通常データ分散処理システム100Aのノード1Aを、記憶部30B内の、ノード識別子管理テーブル(通常)200Aおよび振り分けIDテーブル250(通常)Aを参照して特定し、特定したノードAに、当該データ(正常負荷データ)の複製データを送信する(ステップS43)。
次に、正常負荷データ抽出部16は、ステップS44において、正常負荷データの返還の完了後、自身の記憶部30Bのデータ300に記憶された当該データの実データ320を削除し(図18(a)参照)、処理を終える。これは、実データ320のデータサイズ等が大きいと、高負荷データ分散処理システム100Bのリソース消費につながる場合があるためである。
このようにして、高負荷データ分散処理システム100Bの各ノード1Bは、負荷が低減した正常負荷データを抽出して、通常データ分散処理システム100Aの担当となるノード1Aに、当該正常負荷データを返還することができる。
≪正常負荷データ移管後のノード1Bのリダイレクト処理≫
ここで、正常負荷データの返還後に、返還元のノード1Bにおいて当該データに対する最初のアクセスがあった場合の返還先へのリダイレクト処理について説明する。
図19は、正常負荷データの返還後の当該データに対する最初のアクセスのリダイレクト処理の流れを示すフローチャートである。
まず、クライアント2等からのメッセージを、高負荷データ分散処理システム100Bのノード1Bが受信する(ステップS50)。
次に、ノード1Bの振り分け部12は、メッセージに付与された振り分けキーの担当分散システム識別子と、記憶部30B内に格納されたデータ300内のメタデータ310の担当分散システム識別子(図18(b)参照)とを確認し、自身の分散処理システムに対するアクセスか否かを判定する(ステップS51)。ここで、振り分け部12は、当該メッセージの処理対象のデータついて、そのメタデータ310の担当分散システム識別子が、高負荷データ分散処理システム100Bを示す「2」であれば(ステップS51→Yes)、通常の信号処理を実行する(ステップS52)。一方、振り分け部12は、メタデータ310の担当分散システム識別子が、「2」以外の例えば「1」であれば(ステップS51→No)、ステップS53へ進む。
ステップS53において、振り分け部12は、メタデータ310の担当分散システム識別子(ここでは「1」)の情報に基づき、担当する分散システム(ここでは、通常データ分散処理システム100A)の振り分けIDテーブル250(ここでは、振り分けIDテーブル(通常)250A)を決定する。また、振り分け部12は、振り分けIDテーブル250(通常)Aを参照し、そのハッシュ値(振り分けID)に基づき担当ノード1Aを決定し、その担当ノードのアドレスをノード識別子管理テーブル(通常)200Aにより取得する。
続いて、振り分け部12は、メッセージに付与された振り分けキーの担当分散システム識別子の値を、返還先の通常データ分散処理システム100Aを示す「1」に変更して、担当するノード1Aに転送する(ステップS54)。
このようにすることで、返還元の高負荷データ分散処理システム100Bの各ノード1Bは、正常負荷データの返還後に、当該データに対する最初のアクセスがあった場合に、そのメッセージに付与された振り分けキーの担当分散処理システム識別子を返還先に書き換える。よって、その後の当該データについてのメッセージについては、通常データ分散処理システム100Aにメッセージが振り分けられるようにすることができる。
以上説明したように、本実施形態に係る分散処理システム1000によれば、通常データ分散処理システム100Aの各ノード1Aが、アクセス頻度が多い、処理時間の長い等によりノードに高い負荷を与えるデータ(高負荷データ)を抽出し、処理能力の高い高負荷データ分散処理システム100Bに処理を移管することができる。これにより、移管先の高負荷データ分散処理システム100Bにおいて、高負荷データの処理を継続しつつ、通常データ分散処理システム100Aに高負荷データが存在していた際に問題となる、その他のデータへの信号処理への影響の発生や、非効率なスケールアウトの頻発を抑止することができる。
また、移管先の高負荷データ分散処理システム100Bにおいて、高負荷データの負荷が正常値に低減したことを確認して、データを元の通常データ分散処理システム100Aに返還することができる。これにより、高負荷データを専用に処理するノード1Bの処理負荷を必要以上に高めることなくシステムの運用を継続することができる。
1 ノード
1A ノード(第1のノード)
1B ノード(第2のノード)
2 クライアント
3 ロードバランサ
10A,10B 制御部
11 ノード識別子管理部
12 振り分け部
13 信号処理部(第1の信号処理部、第2の信号処理部)
14 ノード負荷計測部
15 高負荷データ抽出部
16 正常負荷データ抽出部
20 入出力部
30A,30B 記憶部
100A 通常データ分散処理システム
100B 高負荷データ分散処理システム
200A ノード識別子管理テーブル(通常)(第1のノード識別子管理情報)
200B ノード識別子管理テーブル(高負荷)(第2のノード識別子管理情報)
250A 振り分けIDテーブル(通常)(第1の振り分けID情報)
250B 振り分けIDテーブル(高負荷)(第2の振り分けID情報)
300 データ
310 メタデータ
320 実データ
400A データ処理負荷計測情報(通常)(第1のデータ処理負荷計測情報)
400B データ処理負荷計測情報(高負荷)(第2のデータ処理負荷計測情報)
500A ノード負荷計測情報(通常)
1000 分散処理システム

Claims (6)

  1. クライアントからのメッセージを受信して信号処理しサービスを提供する分散処理システムであって、
    前記分散処理システムは、前記メッセージを受信して信号処理する第1のノードを複数有する通常データ分散処理システムと、前記第1のノードと比較して処理性能の高い第2のノードを複数有する高負荷データ分散処理システムとから構成され、
    前記通常データ分散処理システムの前記第1のノードそれぞれ、および、前記高負荷データ分散処理システムの第2のノードそれぞれは、
    前記第1のノードそれぞれの識別子と、信号処理を実行するデータに付された振り分けIDとを対応付けた情報である第1の振り分けID情報、および、前記第1のノードそれぞれの識別子と、前記第1のノードのアドレスとを対応付けた情報である第1のノード識別子管理情報、
    並びに、前記第2のノードそれぞれの識別子と、信号処理を実行するデータに付された前記振り分けIDとを対応付けた情報である第2の振り分けID情報、および、前記第2のノードそれぞれの識別子と、前記第2のノードのアドレスとを対応付けた情報である第2のノード識別子管理情報、を記憶する記憶部、を備えており、
    前記通常データ分散処理システムの前記第1のノードそれぞれは、
    前記メッセージを受信し、当該メッセージに付与された、前記振り分けID、並びに、前記通常データ分散処理システムおよび前記高負荷データ分散処理システムのいずれかの識別子を示す担当分散システム識別子、を取得し、前記第1の振り分けID情報または前記第2の振り分けID情報を参照して信号処理するノードを決定し、決定したノードに当該メッセージを振り分ける振り分け部と、
    振り分けられた前記メッセージを受信し、前記第1のノード自身が担当するデータに関するメッセージの信号処理を実行するとともに、前記データの信号処理の処理負荷を計測し、第1のデータ処理負荷計測情報として自身の前記記憶部に記憶する第1の信号処理部と、
    所定の第1の期間ごとに、前記第1のデータ処理負荷計測情報を参照し、予め設定された高負荷データを抽出するロジックに基づき前記信号処理の処理負荷が高いデータを前記高負荷データとして抽出し、前記抽出した高負荷データの前記振り分けIDを取得し、前記第2の振り分けID情報および前記第2のノード識別子管理情報を参照して信号処理する第2のノードを決定して送信する高負荷データ抽出部と、を備え、
    前記高負荷データ分散処理システムの前記第2のノードそれぞれは、
    前記振り分け部と、
    振り分けられた前記メッセージを受信し、前記第2のノード自身が担当するデータに関するメッセージの信号処理を実行するとともに、前記データの信号処理の処理負荷を計測し、第2のデータ処理負荷計測情報として自身の前記記憶部に記憶する第2の信号処理部と、
    所定の第2の期間ごとに、前記第2のデータ処理負荷計測情報を参照し、予め設定された正常負荷データを抽出するロジックに基づき前記信号処理の処理負荷が低減したデータを前記正常負荷データとして抽出し、前記抽出した正常負荷データの前記振り分けIDを取得し、前記第1の振り分けID情報および前記第1のノード識別子管理情報を参照して信号処理する第1のノードを決定して送信する正常負荷データ抽出部と、を備えること
    を特徴とする分散処理システム。
  2. 前記第1のノードの前記高負荷データ抽出部は、
    前記予め設定された高負荷データを抽出するロジックとして、
    前記所定の第1の期間内において、前記第1のデータ処理負荷計測情報として計測された、前記データの信号処理に伴うロック取得期間、または、前記データのデータサイズと、前記所定の第1の期間内における全ての前記データから算出した、平均ロック取得期間、または、平均データサイズとをそれぞれ比較して、その乖離幅が所定の閾値を超えている場合に、前記データを高負荷データとして抽出することが設定されていること、
    を特徴とする請求項1に記載の分散処理システム。
  3. 前記第1のノードの前記高負荷データ抽出部は、
    前記平均ロック取得期間、または、平均データサイズを含む前記第1のノードのノード負荷計測情報を、前記第2のノードそれぞれに送信し、
    前記第2のノードの前記正常負荷データ抽出部は、
    前記予め設定された正常負荷データを抽出するロジックとして、
    前記所定の第2の期間内において、前記第2のデータ処理負荷計測情報として計測された、前記データの信号処理に伴うロック取得期間、または、前記データのデータサイズと、前記データの前記振り分けIDを用いて前記第1の振り分けID情報を参照し、当該データの返還先としての前記第1のノードを特定し、前記特定された第1のノードから送信された前記ノード負荷計測情報に含まれる、前記平均ロック取得期間、または、前記平均データサイズとをそれぞれ比較し、前記第2のデータ処理負荷計測情報として計測されたデータの値が、各々の平均以下であった場合に、当該データを正常負荷データとして抽出することが設定されていること、
    を特徴とする請求項2に記載の分散処理システム。
  4. 前記第1のノードの前記振り分け部は、
    前記高負荷データとして抽出され前記第2のノードに送信されたデータの信号処理を要求するメッセージを受信した際に、前記メッセージに付与された前記担当分散システム識別子を、前記高負荷データ分散処理システムを示す値に変更すること、
    を特徴とする請求項1ないし請求項3のいずれか1項に記載の分散処理システム。
  5. 前記第2のノードの前記振り分け部は、
    前記正常負荷データとして抽出され前記第1のノードに送信されたデータの信号処理を要求するメッセージを受信した際に、前記メッセージに付与された前記担当分散システム識別子を、前記通常データ分散処理システムを示す値に変更すること、
    を特徴とする請求項1ないし請求項4のいずれか1項に記載の分散処理システム。
  6. 前記第2のノードの前記正常負荷データ抽出部は、
    前記正常負荷データとして抽出されたデータを、前記通常データ分散処理システムの前記第1のノードに送信する際に、当該データに、高負荷データとして抽出されたことを示す高負荷データ判定回数を、1カウントアップして送信しており、
    前記正常負荷データを抽出したときに、前記高負荷データ判定回数が所定の閾値を超えていた場合、当該データを削除すること、
    を特徴とする請求項1ないし請求項5のいずれか1項に記載の分散処理システム。
JP2015036156A 2015-02-26 2015-02-26 分散処理システム Active JP6259408B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015036156A JP6259408B2 (ja) 2015-02-26 2015-02-26 分散処理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015036156A JP6259408B2 (ja) 2015-02-26 2015-02-26 分散処理システム

Publications (2)

Publication Number Publication Date
JP2016157367A JP2016157367A (ja) 2016-09-01
JP6259408B2 true JP6259408B2 (ja) 2018-01-10

Family

ID=56826273

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015036156A Active JP6259408B2 (ja) 2015-02-26 2015-02-26 分散処理システム

Country Status (1)

Country Link
JP (1) JP6259408B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7102950B2 (ja) 2018-05-30 2022-07-20 富士通株式会社 情報処理システム、情報処理システムの制御方法及び管理装置の制御プログラム
JP2020003945A (ja) * 2018-06-26 2020-01-09 株式会社日立情報通信エンジニアリング 計算機システム及びデータ管理方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4529974B2 (ja) * 2006-12-26 2010-08-25 日本電気株式会社 サーバ負荷分散システム、サーバ負荷分散装置、コンテンツ管理装置、及びサーバ負荷分散プログラム
JP5104588B2 (ja) * 2007-10-18 2012-12-19 富士通株式会社 マイグレーションプログラム、および仮想マシン管理装置
JP5544522B2 (ja) * 2011-06-21 2014-07-09 日本電信電話株式会社 負荷調整方法、負荷調整サーバ、負荷調整用サーバ装置、および、負荷調整プログラム
JP5949370B2 (ja) * 2012-09-19 2016-07-06 富士通株式会社 制御装置、処理システム、制御プログラム、及び制御方法

Also Published As

Publication number Publication date
JP2016157367A (ja) 2016-09-01

Similar Documents

Publication Publication Date Title
US11886731B2 (en) Hot data migration method, apparatus, and system
JP5664098B2 (ja) 複合イベント分散装置、複合イベント分散方法および複合イベント分散プログラム
WO2018076791A1 (zh) 一种资源负载均衡控制方法及集群调度器
CN105025053A (zh) 基于云存储技术的分布式文件的上传方法及其***
TW201627882A (zh) 先決式資料庫系統及其資料搬移方法
WO2015081750A1 (zh) 一种存储数据副本的方法和终端装置以及服务器装置
CN104023088A (zh) 一种应用于分布式文件***的存储服务器选择方法
JP6582445B2 (ja) シンクライアントシステム、接続管理装置、仮想マシン稼働装置、方法、および、プログラム
CN104063501B (zh) 基于hdfs的副本平衡方法
JP6259408B2 (ja) 分散処理システム
JP6059558B2 (ja) 負荷分散判定システム
CN102970349B (zh) 一种dht网络的存储负载均衡方法
TWI652621B (zh) 產生虛擬機器訊息佇列應用程式之相依關係的方法與系統
Gankevich et al. Subordination: Cluster management without distributed consensus
EP3349416B1 (en) Relationship chain processing method and system, and storage medium
CN104219163A (zh) 一种基于动态副本法和虚拟节点法的节点动态前移的负载均衡方法
JP6063882B2 (ja) 仮想マシン配置システム及び方法
He et al. A simulation cloud monitoring framework and its evaluation model
JP6325995B2 (ja) 分散システム、負荷分散方法及びプログラム
Lin et al. An overall approach to achieve load balancing for Hadoop Distributed File System
JP2024514467A (ja) 地理的に分散されたハイブリッドクラウドクラスタ
JP6020803B2 (ja) 分散ストレージシステム、分散ストレージデータ移動制御方法及び分散ストレージデータ移動制御用プログラム
CN110636091A (zh) 云存储集群的数据均衡方法、装置、设备和存储介质
Shen et al. Cost-effective virtual machine image replication management for cloud data centers
CN113590319B (zh) 一种消息队列的计算资源负载均衡方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171127

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: 20171205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171208

R150 Certificate of patent or registration of utility model

Ref document number: 6259408

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150