(57)【特許請求の範囲】
【請求項１】
クライアントからのメッセージを受信して信号処理しサービスを提供する分散処理システムであって、
前記分散処理システムは、前記メッセージを受信して信号処理する第１のノードを複数有する通常データ分散処理システムと、前記第１のノードと比較して処理性能の高い第２のノードを複数有する高負荷データ分散処理システムとから構成され、
前記通常データ分散処理システムの前記第１のノードそれぞれ、および、前記高負荷データ分散処理システムの第２のノードそれぞれは、
前記第１のノードそれぞれの識別子と、信号処理を実行するデータに付された振り分けＩＤとを対応付けた情報である第１の振り分けＩＤ情報、および、前記第１のノードそれぞれの識別子と、前記第１のノードのアドレスとを対応付けた情報である第１のノード識別子管理情報、
並びに、前記第２のノードそれぞれの識別子と、信号処理を実行するデータに付された前記振り分けＩＤとを対応付けた情報である第２の振り分けＩＤ情報、および、前記第２のノードそれぞれの識別子と、前記第２のノードのアドレスとを対応付けた情報である第２のノード識別子管理情報、を記憶する記憶部、を備えており、
前記通常データ分散処理システムの前記第１のノードそれぞれは、
前記メッセージを受信し、当該メッセージに付与された、前記振り分けＩＤ、並びに、前記通常データ分散処理システムおよび前記高負荷データ分散処理システムのいずれかの識別子を示す担当分散システム識別子、を取得し、前記第１の振り分けＩＤ情報または前記第２の振り分けＩＤ情報を参照して信号処理するノードを決定し、決定したノードに当該メッセージを振り分ける振り分け部と、
振り分けられた前記メッセージを受信し、前記第１のノード自身が担当するデータに関するメッセージの信号処理を実行するとともに、前記データの信号処理の処理負荷を計測し、第１のデータ処理負荷計測情報として自身の前記記憶部に記憶する第１の信号処理部と、
所定の第１の期間ごとに、前記第１のデータ処理負荷計測情報を参照し、予め設定された高負荷データを抽出するロジックに基づき前記信号処理の処理負荷が高いデータを前記高負荷データとして抽出し、前記抽出した高負荷データの前記振り分けＩＤを取得し、前記第２の振り分けＩＤ情報および前記第２のノード識別子管理情報を参照して信号処理する第２のノードを決定して送信する高負荷データ抽出部と、を備え、
前記高負荷データ分散処理システムの前記第２のノードそれぞれは、
前記振り分け部と、
振り分けられた前記メッセージを受信し、前記第２のノード自身が担当するデータに関するメッセージの信号処理を実行するとともに、前記データの信号処理の処理負荷を計測し、第２のデータ処理負荷計測情報として自身の前記記憶部に記憶する第２の信号処理部と、
所定の第２の期間ごとに、前記第２のデータ処理負荷計測情報を参照し、予め設定された正常負荷データを抽出するロジックに基づき前記信号処理の処理負荷が低減したデータを前記正常負荷データとして抽出し、前記抽出した正常負荷データの前記振り分けＩＤを取得し、前記第１の振り分けＩＤ情報および前記第１のノード識別子管理情報を参照して信号処理する第１のノードを決定して送信する正常負荷データ抽出部と、を備えること
を特徴とする分散処理システム。
【請求項２】
前記第１のノードの前記高負荷データ抽出部は、
前記予め設定された高負荷データを抽出するロジックとして、
前記所定の第１の期間内において、前記第１のデータ処理負荷計測情報として計測された、前記データの信号処理に伴うロック取得期間、または、前記データのデータサイズと、前記所定の第１の期間内における全ての前記データから算出した、平均ロック取得期間、または、平均データサイズとをそれぞれ比較して、その乖離幅が所定の閾値を超えている場合に、前記データを高負荷データとして抽出することが設定されていること、
を特徴とする請求項１に記載の分散処理システム。
【請求項３】
前記第１のノードの前記高負荷データ抽出部は、
前記平均ロック取得期間、または、平均データサイズを含む前記第１のノードのノード負荷計測情報を、前記第２のノードそれぞれに送信し、
前記第２のノードの前記正常負荷データ抽出部は、
前記予め設定された正常負荷データを抽出するロジックとして、
前記所定の第２の期間内において、前記第２のデータ処理負荷計測情報として計測された、前記データの信号処理に伴うロック取得期間、または、前記データのデータサイズと、前記データの前記振り分けＩＤを用いて前記第１の振り分けＩＤ情報を参照し、当該データの返還先としての前記第１のノードを特定し、前記特定された第１のノードから送信された前記ノード負荷計測情報に含まれる、前記平均ロック取得期間、または、前記平均データサイズとをそれぞれ比較し、前記第２のデータ処理負荷計測情報として計測されたデータの値が、各々の平均以下であった場合に、当該データを正常負荷データとして抽出することが設定されていること、
を特徴とする請求項２に記載の分散処理システム。
【請求項４】
前記第１のノードの前記振り分け部は、
前記高負荷データとして抽出され前記第２のノードに送信されたデータの信号処理を要求するメッセージを受信した際に、前記メッセージに付与された前記担当分散システム識別子を、前記高負荷データ分散処理システムを示す値に変更すること、
を特徴とする請求項１ないし請求項３のいずれか１項に記載の分散処理システム。
【請求項５】
前記第２のノードの前記振り分け部は、
前記正常負荷データとして抽出され前記第１のノードに送信されたデータの信号処理を要求するメッセージを受信した際に、前記メッセージに付与された前記担当分散システム識別子を、前記通常データ分散処理システムを示す値に変更すること、
を特徴とする請求項１ないし請求項４のいずれか１項に記載の分散処理システム。
【請求項６】
前記第２のノードの前記正常負荷データ抽出部は、
前記正常負荷データとして抽出されたデータを、前記通常データ分散処理システムの前記第１のノードに送信する際に、当該データに、高負荷データとして抽出されたことを示す高負荷データ判定回数を、１カウントアップして送信しており、
前記正常負荷データを抽出したときに、前記高負荷データ判定回数が所定の閾値を超えていた場合、当該データを削除すること、
を特徴とする請求項１ないし請求項５のいずれか１項に記載の分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク上に分散配置されるノードをクラスタ化してデータを格納する分散処理システムに関する。
【背景技術】
【０００２】
近年、クラウドコンピューティングの隆盛に伴い、多量のデータの処理や保持を効率的に行うことが求められている。そこで、複数のサーバを協調動作させることにより効率的な処理を実現する分散処理技術が発展している。
【０００３】
分散処理を行う際には、クラスタ構成からなる分散処理システムを構成する各サーバ（以下、「ノード」と称する。）が担当するデータを決定する必要がある。このとき、分散処理システム全体での処理能力を高めるためには、各ノードが担当するデータ数は平均化されていることが望ましい。
【０００４】
代表的なデータの管理手法として、各データのｋｅｙをハッシュ関数にかけた値（以下、「ｈａｓｈ（ｋｅｙ）」と称する。）をノード数Ｎで割った余り、即ち「ｈａｓｈ（ｋｅｙ） ｍｏｄ Ｎ」を番号として持つノードがデータを管理する手法がある。この場合、各ノードに事前に「０」から「Ｎ−１」までの番号を割り当てていることが前提となる。このような管理手法を用いた場合、ノードを追加・離脱すると、Ｎの値が変化して、多くのデータについて、そのデータの保存を担当するノードが変更になるため、担当するデータを再配置することが必要になる。
【０００５】
そこで、ノードの追加・離脱に伴い担当するノードが変更になるデータ数を約１／Ｎに抑える方法として、コンシステント・ハッシュ（Consistent Hashing）法を用いたデータ管理手法がある。このコンシステント・ハッシュ法を用いたデータ管理手法では、ノードとデータの双方にＩＤ（IDentifier）を割り当てる。そして、データのＩＤから閉じたＩＤ空間を時計回りに辿った場合に最初に当たったノードをそのデータの担当とする。ノードに対するＩＤの与え方の例としては、ＩＰアドレスをハッシュ関数にかけた値（hash（ＩＰアドレス））が挙げられる。
【０００６】
クラスタ構成の分散処理システムでは、各ノードの処理性能が等しい場合には、各ノードが担当するデータ量を等しくする、即ち、コンシステント・ハッシュ法のＩＤ空間における、ノード間の距離（以下、「ノードの担当領域」と称する。）を等しくすることが望ましい。この点を実現するため、各ノードに仮想的に複数のＩＤを持たせる手法が用いられている（非特許文献１参照）。各ノードが複数の仮想ＩＤを持つことで、仮想ＩＤ毎の担当領域は異なっていても、大数の法則に従いノードの担当領域は平均化される。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】入江  道生、他４名、「コンシステント・ハッシュ法におけるデータの複製を意識した負荷分散手法」、社団法人電子情報通信学会、2010年10月、信学技報、IN2010-77、P.69-74
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記したコンシステント・ハッシュ法や仮想ＩＤ等の従来技術により、ノード間で担当するデータを均一化し負荷を分散させることが可能である。しかしながら、特定ノードにおいて、アクセス頻度や処理時間の長さ等でノードに高い負荷を与えるデータ（以下、「高負荷データ」と称する。）が発生した場合、その高負荷データを担当したノードにおいて負荷が急激に高まり、当該ノードで処理される他のデータの信号処理に影響を与える問題がある（図１参照）。このような問題に対して、高負荷データ自体を削除若しくは通信を規制する等して負荷を低減し、対応することも考えられるが、高負荷データ自体は正常なデータであり、処理を継続したいことも考えられるため、データの削除や通信規制以外の対応手法が求められる。
【０００９】
従来、このようなコンシステント・ハッシュ法の分散処理システムにおける負荷増大に対する対策としては、新たなノードを増設し、システムをスケールアウトさせて、高負荷となったノードの担当するデータ数を縮小させて負荷を低減する手法がとられる。
【００１０】
しかしながら、高負荷データのアクセス頻度やリソース消費量のレベルによっては、当該データの信号処理のみで担当ノードのリソースの大部分を消費してしまい、スケールアウトを実行しても、当該データを担当するノードにおいて期待するレベルにまで負荷を低減することができず、他のデータの信号処理に影響を及ぼす問題が解決されない問題がある。また、高負荷データの移動先サーバでの負荷増大と、それに対応するための増設とが、繰り返し発生することにより、非効率なスケールアウトが頻発する問題もある。
【００１１】
このような背景を鑑みて本発明がなされたのであり、本発明は、高負荷データの発生時に、高負荷データの処理を継続しつつ、他のデータの信号処理への影響の発生や、非効率なスケールアウトの頻発を抑止することができる、分散処理システムを提供することを課題とする。
【課題を解決するための手段】
【００１２】
前記した課題を解決するため、請求項１に記載の発明は、クライアントからのメッセージを受信して信号処理しサービスを提供する分散処理システムであって、前記分散処理システムは、前記メッセージを受信して信号処理する第１のノードを複数有する通常データ分散処理システムと、前記第１のノードと比較して処理性能の高い第２のノードを複数有する高負荷データ分散処理システムとから構成され、前記通常データ分散処理システムの前記第１のノードそれぞれ、および、前記高負荷データ分散処理システムの第２のノードそれぞれが、前記第１のノードそれぞれの識別子と、信号処理を実行するデータに付された振り分けＩＤとを対応付けた情報である第１の振り分けＩＤ情報、および、前記第１のノードそれぞれの識別子と、前記第１のノードのアドレスとを対応付けた情報である第１のノード識別子管理情報、並びに、前記第２のノードそれぞれの識別子と、信号処理を実行するデータに付された前記振り分けＩＤとを対応付けた情報である第２の振り分けＩＤ情報、および、前記第２のノードそれぞれの識別子と、前記第２のノードのアドレスとを対応付けた情報である第２のノード識別子管理情報、を記憶する記憶部、を備えており、前記通常データ分散処理システムの前記第１のノードそれぞれが、前記メッセージを受信し、当該メッセージに付与された、前記振り分けＩＤ、並びに、前記通常データ分散処理システムおよび前記高負荷データ分散処理システムのいずれかの識別子を示す担当分散システム識別子、を取得し、前記第１の振り分けＩＤ情報または前記第２の振り分けＩＤ情報を参照して信号処理するノードを決定し、決定したノードに当該メッセージを振り分ける振り分け部と、振り分けられた前記メッセージを受信し、前記第１のノード自身が担当するデータに関するメッセージの信号処理を実行するとともに、前記データの信号処理の処理負荷を計測し、第１のデータ処理負荷計測情報として自身の前記記憶部に記憶する第１の信号処理部と、所定の第１の期間ごとに、前記第１のデータ処理負荷計測情報を参照し、予め設定された高負荷データを抽出するロジックに基づき前記信号処理の処理負荷が高いデータを前記高負荷データとして抽出し、前記抽出した高負荷データの前記振り分けＩＤを取得し、前記第２の振り分けＩＤ情報および前記第２のノード識別子管理情報を参照して信号処理する第２のノードを決定して送信する高負荷データ抽出部と、を備え、前記高負荷データ分散処理システムの前記第２のノードそれぞれが、前記振り分け部と、振り分けられた前記メッセージを受信し、前記第２のノード自身が担当するデータに関するメッセージの信号処理を実行するとともに、前記データの信号処理の処理負荷を計測し、第２のデータ処理負荷計測情報として自身の前記記憶部に記憶する第２の信号処理部と、所定の第２の期間ごとに、前記第２のデータ処理負荷計測情報を参照し、予め設定された正常負荷データを抽出するロジックに基づき前記信号処理の処理負荷が低減したデータを前記正常負荷データとして抽出し、前記抽出した正常負荷データの前記振り分けＩＤを取得し、前記第１の振り分けＩＤ情報および前記第１のノード識別子管理情報を参照して信号処理する第１のノードを決定して送信する正常負荷データ抽出部と、を備えることを特徴とする分散処理システムとした。
【００１３】
このようにすることで、分散処理システムにおいて、通常データ分散処理システムの第１のノードが、アクセス頻度が多い、処理時間の長い等によりノードに高い負荷を与えるデータ（高負荷データ）を抽出し、処理能力の高い高負荷データを専用に処理する高負荷データ分散処理システムにそのデータ（高負荷データ）を移管することができる。
よって、移管先の高負荷データ分散処理システムにおいて、高負荷データの処理を継続しつつ、通常データ分散処理システムに高負荷データが存在していた際に問題となる、その他のデータへの信号処理への影響の発生や、非効率なスケールアウトの頻発を抑止することができる。
【００１４】
請求項２に記載の発明は、前記第１のノードの前記高負荷データ抽出部が、前記予め設定された高負荷データを抽出するロジックとして、前記所定の第１の期間内において、前記第１のデータ処理負荷計測情報として計測された、前記データの信号処理に伴うロック取得期間、または、前記データのデータサイズと、前記所定の第１の期間内における全ての前記データから算出した、平均ロック取得期間、または、平均データサイズとをそれぞれ比較して、その乖離幅が所定の閾値を超えている場合に、前記データを高負荷データとして抽出することが設定されていること、を特徴とする請求項１に記載の分散処理システムとした。
【００１５】
このようにすることで、通常データ分散処理システムの第１のノードは、高負荷データを抽出する際に、ロック取得期間またはデータサイズの計測情報に基づき、全データの平均値と比較して、高負荷データを抽出することができる。
【００１６】
請求項３に記載の発明は、前記第１のノードの前記高負荷データ抽出部が、前記平均ロック取得期間、または、平均データサイズを含む前記第１のノードのノード負荷計測情報を、前記第２のノードそれぞれに送信し、前記第２のノードの前記正常負荷データ抽出部が、前記予め設定された正常負荷データを抽出するロジックとして、前記所定の第２の期間内において、前記第２のデータ処理負荷計測情報として計測された、前記データの信号処理に伴うロック取得期間、または、前記データのデータサイズと、前記データの前記振り分けＩＤを用いて前記第１の振り分けＩＤ情報を参照し、当該データの返還先としての前記第１のノードを特定し、前記特定された第１のノードから送信された前記ノード負荷計測情報に含まれる、前記平均ロック取得期間、または、前記平均データサイズとをそれぞれ比較し、前記第２のデータ処理負荷計測情報として計測されたデータの値が、各々の平均以下であった場合に、当該データを正常負荷データとして抽出することが設定されていること、を特徴とする請求項２に記載の分散処理システムとした。
【００１７】
このようにすることで、高負荷データ分散処理システムの第２のノードは、正常負荷データの返還先となる第１のノードのノード負荷計測情報（平均ロック取得期間、平均データサイズ）に基づき負荷が低減したことを判定し、正常負荷データを抽出することができる。
【００１８】
請求項４に記載の発明は、前記第１のノードの前記振り分け部が、前記高負荷データとして抽出され前記第２のノードに送信されたデータの信号処理を要求するメッセージを受信した際に、前記メッセージに付与された前記担当分散システム識別子を、前記高負荷データ分散処理システムを示す値に変更すること、を特徴とする請求項１ないし請求項３のいずれか１項に記載の分散処理システムとした。
【００１９】
このようにすることで、高負荷データの移管後に、移管元の通常データ分散処理システムの第１のノードにおいて、当該データに対する最初のアクセスがあった場合に、そのメッセージに付与された担当分散処理システム識別子を移管先に書き換える。よって、その後のメッセージについては、高負荷データ分散処理システムに振り分けられるようにすることができる。
【００２０】
請求項５に記載の発明は、前記第２のノードの前記振り分け部が、前記正常負荷データとして抽出され前記第１のノードに送信されたデータの信号処理を要求するメッセージを受信した際に、前記メッセージに付与された前記担当分散システム識別子を、前記通常データ分散処理システムを示す値に変更すること、を特徴とする請求項１ないし請求項４のいずれか１項に記載の分散処理システムとした。
【００２１】
このようにすることで、正常負荷データの返還後に、返還元の高負荷データ分散処理システムの第２のノードにおいて、当該データに対する最初のアクセスがあった場合に、そのメッセージに付与された担当分散処理システム識別子を返還先に書き換える。よって、その後のメッセージについては、通常データ分散処理システムに振り分けられるようにすることができる。
【００２２】
請求項６に記載の発明は、前記第２のノードの前記正常負荷データ抽出部が、前記正常負荷データとして抽出されたデータを、前記通常データ分散処理システムの前記第１のノードに送信する際に、当該データに、高負荷データとして抽出されたことを示す高負荷データ判定回数を、１カウントアップして送信しており、前記正常負荷データを抽出したときに、前記高負荷データ判定回数が所定の閾値を超えていた場合、当該データを削除すること、を特徴とする請求項１ないし請求項５のいずれか１項に記載の分散処理システムとした。
【００２３】
このようにすることで、高負荷データ分散処理システムの第２のノードは、高負荷データとして移管されている期間が長く、高負荷データ判定回数が所定の閾値を超えたデータについて削除する処理を実行することができる。よって、第２のノードの処理負荷を低減させることができる。
【発明の効果】
【００２４】
本発明によれば、高負荷データの発生時に、高負荷データの処理を継続しつつ、他のデータの信号処理への影響の発生や、非効率なスケールアウトの頻発を抑止する、分散処理システムを提供することができる。
【図面の簡単な説明】
【００２５】
【図１】従来技術の課題を説明するための図である。
【図２】本実施形態に係る分散処理システムの全体構成を示す図である。
【図３】本実施形態に係る分散処理システムを構成する、通常データ分散処理システムと高負荷データ分散処理システムとを示し、分散処理システム全体の処理の流れを説明するための図である。
【図４】本実施形態に係る通常データ分散処理システムを構成するノードの機能ブロック図である。
【図５】本実施形態に係るノード識別子管理テーブル（通常）および振り分けＩＤテーブル（通常）のデータ構成例を示す図である。
【図６】本実施形態の係るデータ（メタデータ）の構成を説明するための図である。
【図７】本実施形態に係るデータ処理負荷計測情報（通常）のデータ構成例を示す図である。
【図８】本実施形態に係るノード負荷計測情報（通常）のデータ構成例を示す図である。
【図９】本実施形態の係るデータ（メタデータ）の構成を説明するための図である。
【図１０】本実施形態に係る高負荷データ分散処理システムを構成するノードの機能ブロック図である。
【図１１】本実施形態に係る通常データ分散処理システムの各ノードが実行する処理の流れを示すフローチャートである。
【図１２】本実施形態に係るノードの高負荷データ抽出部による、高負荷データの抽出処理を説明するための図である。
【図１３】本実施形態に係るノードの高負荷データ抽出部による、移管する高負荷データを担当する高負荷データ分散処理システムのノードを特定する処理を説明するための図である。
【図１４】本実施形態に係る高負荷データの移管後の当該データに対する最初のアクセスのリダイレクト処理の流れを示すフローチャートである。
【図１５】本実施形態に係るデータ処理負荷計測情報（高負荷）のデータ構成例を示す図である。
【図１６】本実施形態に係る高負荷データ分散処理システムの各ノードが実行する処理の流れを示すフローチャートである。
【図１７】本実施形態に係るノードの正常負荷データ抽出部による、正常負荷データの抽出処理を説明するための図である。
【図１８】本実施形態の係るデータ（メタデータ）の構成を説明するための図である。
【図１９】本実施形態に係る正常負荷データの返還後の当該データに対する最初のアクセスのリダイレクト処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２６】
次に、本発明を実施するための形態（以下、「本実施形態」と称する。）における分散処理システム１０００について説明する。
図２は、本実施形態に係る分散処理システム１０００の全体構成を示す図である。
【００２７】
この分散処理システム１０００は、複数のノード１から構成される。各ノード１は、コンピュータなどの物理装置や仮想マシンなどの論理装置である。ロードバランサ３は、クライアント２からのメッセージを受信し、単純なラウンドロビン等により振り分けて各ノード１に送信する。そして、ノード１の振り分け部１２は、クライアント２からのメッセージを、例えば、コンシステント・ハッシュ法等に基づき、メッセージを担当するノード１に振り分ける。メッセージを担当するノード１では、信号処理部１３において、信号処理を行い、クライアント２にサービスを提供する。
【００２８】
なお、ロードバランサ３が存在せず、クライアント２から任意のノード１（振り分け部１２）にメッセージを送信することも可能である。また、振り分け部１２と信号処理部１３とは、同じノード１上に同時に存在してもよいし、別々のノード１上に存在してもよい。
本実施形態の以下の説明では、分散処理システム１０００のデータ管理手法として、ノード１の増減時の影響が少ない、コンシステント・ハッシュ法によるデータ管理手法を例として説明する。ただし、コンシステント・ハッシュ法に限定されるものではない。
【００２９】
＜処理概要＞
また、本実施形態に係る分散処理システム１０００の複数のノード１は、少なくとも２つのクラスタ（通常データ分散処理システム１００Ａと高負荷データ分散処理システム１００Ｂ）で構成される。そして、通常データ分散処理システム１００Ａの各ノード１Ａ（第１のノード）において高負荷データを抽出し、処理能力の高い高負荷データを専門に処理する高負荷データ分散処理システム１００Ｂのノード１Ｂ（第２のノード）に抽出した高負荷データを移管する。また、移管先の高負荷データ分散処理システム１００Ｂの各ノード１Ｂにおいて、高負荷データの負荷が正常値に低減したのを確認して、そのデータを元の通常データ分散処理システム１００Ａのノード１Ａに返還することを特徴とする。
図３は、本実施形態に係る分散処理システム１０００を構成する、通常データ分散処理システム１００Ａと高負荷データ分散処理システム１００Ｂとを示し、分散処理システム１０００の全体の処理の流れを説明するための図である。
【００３０】
まず、ステップＳ１において、通常データ分散処理システム１００Ａの各ノード１Ａは、信号処理時においてアクセスされたデータの処理負荷を計測し記憶する。そして、各ノード１Ａは、所定の時間間隔毎に、自身のノード負荷（以下、「リソース負荷」と称する場合がある。）を計測するともに、自身のノードＡが処理したデータ全体の平均のデータ処理負荷を計算し記憶する。
【００３１】
次に、通常データ分散処理システム１００Ａの各ノード１Ａは、ステップＳ１で収集したリソース負荷やデータ処理負荷に基づき、高負荷データを抽出する（ステップＳ２）。そして、通常データ分散処理システム１００Ａの各ノード１Ａは、抽出した高負荷データを、高負荷データ分散処理システム１００Ｂに移管する（ステップＳ３）。
【００３２】
高負荷データ分散処理システム１００Ｂの各ノード１Ｂは、高負荷データの処理を継続しつつ、信号処理時においてアクセスされたデータ（高負荷データ）の処理負荷（データ処理負荷）を計測し記憶する（ステップＳ４）。
【００３３】
高負荷データ分散処理システム１００Ｂの各ノード１Ｂは、収集したデータ処理負荷に基づき、負荷が正常値に低減されたデータを正常負荷データとして抽出する（ステップＳ５）。そして、高負荷データ分散処理システム１００Ｂの各ノード１Ｂは、抽出した正常負荷データを、通常データ分散処理システム１００Ａに返還する（ステップＳ６）。
【００３４】
このようにすることで、分散処理システム１０００において、通常データ分散処理システム１００Ａの各ノード１Ａが、アクセス頻度が多い、処理時間の長い等によりノードに高い負荷を与えるデータ（高負荷データ）を抽出し、処理能力の高い高負荷データを専用に処理する分散処理システム（高負荷データ分散処理システム１００Ｂ）にそのデータ（高負荷データ）を移管することができる。これにより、移管先の高負荷データ分散処理システム１００Ｂにおいて、高負荷データの処理を継続しつつ、通常データ分散処理システム１００Ａに高負荷データが存在していた際に問題となる、その他のデータへの信号処理への影響の発生や、非効率なスケールアウトの頻発を抑止することができる。
【００３５】
また、移管先の高負荷データ分散処理システム１００Ｂにおいて、高負荷データの負荷が正常値に低減したことを確認して、データを元の通常データ分散処理システム１００Ａに返還することにより、高負荷データを専用に処理するノード１Ｂの処理負荷を必要以上に高めることなくシステムの運用を継続することができる。
【００３６】
なお、通常データ分散処理システム１００Ａと高負荷データ分散処理システム１００Ｂとのシステム間においては、同じＩＤ空間（コンシステント・ハッシュのＩＤ空間）を用いてデータの移管（返還）を行う。これにより、互いの分散処理システムにおいてノード１（１Ａ，１Ｂ）の増減設が発生し、各々の分散処理システムにおいてデータ移管（返還）時の担当ノードが変化しているようなケースでも、新しい担当ノードを特定し、データの移管（返還）を実行することが容易に可能となる。なお、詳細は後記する。
【００３７】
＜各分散処理システムの装置の構成＞
次に、本実施形態に係る分散処理システム１０００を構成する、通常データ分散処理システム１００Ａおよび高負荷データ分散処理システム１００Ｂを構成するノード１（１Ａ，１Ｂ）について、具体的に説明する。ここでは、通常データ分散処理システム１００Ａを構成するノード１Ａと高負荷データ分散処理システム１００Ｂを構成するノード１Ｂとを分けて説明する。
【００３８】
≪通常データ分散処理システム１００Ａのノード１Ａ≫
図４は、本実施形態に係る通常データ分散処理システム１００Ａを構成するノード１Ａ（第１のノード）の機能ブロック図である。
【００３９】
ノード１Ａは、図２に示したように、ロードバランサ３と通信可能に接続されるともに、クラスタを構成する自身以外の他のノード１（他のノード１Ａおよび高負荷データ分散処理システム１００Ｂの各ノード１Ｂを含む）との通信可能に接続される。また、このノード１Ａは、ロードバランサ３を介してクライアント２からメッセージを受け取ると、そのメッセージを、担当するノード１Ａ（自身を含む）に振り分け、そのメッセージの信号処理を実行する。さらに、ノード１Ａは、高負荷データを抽出し、高負荷データ分散処理システム１００Ｂのノード１Ｂに移管する処理を実行する。
このノード１Ａは、図４に示すように、制御部１０Ａと、入出力部２０と、記憶部３０Ａとを含んで構成される。
【００４０】
入出力部２０は、ロードバランサ３や、自身以外の他のノード１（１Ａ，１Ｂ）との間の情報の入出力を行う。また、この入出力部２０は、通信回線を介して情報の送受信を行う通信インタフェースと、不図示のキーボード等の入力手段やモニタ等の出力手段等との間で入出力を行う入出力インタフェースとから構成される。
【００４１】
記憶部３０Ａは、ハードディスクやフラッシュメモリ等の記憶手段からなる。この記憶部３０Ａには、通常データ分散処理システム１００Ａを構成するノード１Ａへのメッセージ（データ）の振り分け処理に用いる、ノード識別子管理テーブル（通常）２００Ａ（第１のノード識別子管理情報）および振り分けＩＤテーブル（通常）２５０Ａ（第１の振り分けＩＤ情報）と、高負荷データ分散処理システム１００Ｂを構成するノード１Ｂへのメッセージ（データ）の振り分け処理に用いる、ノード識別子管理テーブル（高負荷）２００Ｂ（第２のノード識別子管理情報）および振り分けＩＤテーブル（高負荷）２５０Ｂ（第２の振り分けＩＤ情報）とを備える。さらに、記憶部３０Ａには、メッセージの処理対象となるデータ３００、ノード１Ａ自身のデータの処理負荷を計測した情報であるデータ処理負荷計測情報（通常）４００Ａ（第１のデータ処理負荷計測情報）、および、ノード１Ａ自身のノード負荷（リソース負荷）を計測した情報であるノード負荷計測情報（通常）５００Ａが記憶される。なお、この記憶部３０Ａに記憶される各情報についての詳細は後記する。
【００４２】
制御部１０Ａは、ノード１Ａ全体の制御を司り、ノード識別子管理部１１、振り分け部１２、信号処理部１３（第１の信号処理部）、ノード負荷計測部１４および高負荷データ抽出部１５を含んで構成される。なお、この制御部１０Ａは、例えば、記憶部３０Ａに格納されたプログラムをＣＰＵ（Central Processing Unit）（図示省略）がＲＡＭ（Random Access Memory）（図示省略）に展開し実行することで実現される。
【００４３】
ノード識別子管理部１１は、分散処理システム（ここでは、通常データ分散処理システム１００Ａ）上のノード情報の管理および各ノード１（１Ａ，１Ｂ）が担当するＩＤ空間を管理する。
具体的には、ノード識別子管理部１１は、自身が属する分散処理システム（ここでは、通常データ分散処理システム１００Ａ）へのノードの追加や離脱が発生した場合に、その分散処理システムを構成するノード１（１Ａ）の識別情報を更新し、ノード識別子管理テーブル２００（ここでは、ノード識別子管理テーブル（通常）２００Ａ）として管理する。
【００４４】
図５（ａ）は、本実施形態に係るノード識別子管理テーブル（通常）２００Ａ（第１のノード識別子管理情報）のデータ構成例を示す図である。
図５（ａ）に示すように、ノード識別子管理テーブル（通常）２００Ａには、通常データ分散処理システム１００Ａを構成する各ノード１Ａのノード識別子２０１とアドレス２０２（例えば、ＩＰアドレス）とが対応付けられて格納される。
【００４５】
このノード識別子２０１は、例えば、当該分散処理システム内において予め設定される特定のノード（例えば、ノード識別子２０１の昇順に設定）のノード識別子管理部１１で付与され、当該分散処理システム内（ここでは、通常データ分散処理システム１００Ａ内）の各ノード１（１Ａ）に配信される。なお、このノード識別子２０１は、コンシステント・ハッシュのＩＤ空間において仮想ＩＤを用いる場合、仮想ＩＤ毎に付与される。
【００４６】
また、ノード識別子管理部１１は、ノード識別子管理テーブル２００（ここでは、ノード識別子管理テーブル（通常）２００Ａ）の更新（ノード１Ａの増減設）に合わせて、ノード１（１Ａ）の担当するＩＤ空間情報を更新し、振り分けＩＤテーブル２５０（ここでは、振り分けＩＤテーブル（通常）２５０Ａ）として管理する。
【００４７】
図５（ｂ）は、本実施形態に係る振り分けＩＤテーブル（通常）２５０Ａのデータ構成例を示す図である。
図５（ｂ）に示すように、振り分けＩＤテーブル（通常）２５０には、ノード識別子２０１に対応付けて、そのノード１（１Ａ）が担当するＩＤ空間（担当領域）２０３が格納される。図５（ｂ）に示す例では、ＩＤ空間の全ＩＤ数が「０」〜「９９９」の「１０００」であり、例えば、ノード識別子２０１が「Ｎｏｄｅ１」のノード１Ａが、担当するＩＤ空間として「０〜１９９（Ｄ＝２００）」について担当することを示している。なお、「Ｄ＝２００」は、担当するＩＤ空間の数（データ数に対応する。）を意味する。
【００４８】
ノード識別子管理部１１は、自身が属する通常データ分散処理システム１００Ａ内の各ノード１Ａに共通して保持される、ノード識別子管理テーブル（通常）２００Ａと振り分けＩＤテーブル（通常）２５０Ａを管理するとともに、データの移管先となる分散処理システム（高負荷データ分散処理システム１００Ｂ）内の各ノード１Ｂに共通して保持される、ノード識別子管理テーブル（高負荷）２００Ｂおよび振り分けＩＤテーブル（高負荷）２５０Ｂ（図４参照）を、高負荷データ分散処理システム１００Ｂ（の予め設定される特定のノード等）から取得し、常に最新の状態に更新して保持する。また、通常データ分散処理システム１００Ａ内の特権ノードは、高負荷データ分散処理システム１００Ｂ内の各ノード１Ｂに対して、最新のノード識別子管理テーブル（通常）２００Ａおよび振り分けＩＤテーブル（通常）２５０Ａを送信しておく。このようにすることにより、各分散処理システム内の各ノード１（１Ａ，１Ｂ）には、常に、最新の状態の、ノード識別子管理テーブル（通常）２００Ａおよび振り分けＩＤテーブル（通常）２５０Ａ、ノード識別子管理テーブル（高負荷）２００Ｂおよび振り分けＩＤテーブル（高負荷）２５０Ｂが保持されるようにする。
【００４９】
図４に戻り、振り分け部１２は、ロードバランサ３等を介してクライアント２から発呼されるメッセージ内の情報（後記する「振り分けキー」）をもとに、信号処理を担当するノード１を特定し、当該ノード１へのメッセージの振り分けを行う。
メッセージは、新規呼（例えば、ＳＩＰにおいては、Initial-INVITE）と後続呼（例えば、ＳＩＰにおいてはＢＹＥ等）に分類でき、振り分け部１２は、新規呼と後続呼で異なる処理を実行する。
【００５０】
振り分け部１２は、受信したメッセージが新規呼の場合、振り分けキーを生成した上で、生成した振り分けキーに基づき、信号処理を担当するノード１（１Ａ，１Ｂ）を特定し、当該ノードに転送する。
【００５１】
この振り分けキーは、当該メッセージのアクセス先の担当分散処理システム（ここでは、通常データ分散処理システム１００Ａまたは高負荷データ分散処理システム１００Ｂのいずれか）の識別子（以下、「担当分散システム識別子」と称する。）、ハッシュ値（振り分けＩＤ）、データ識別子から構成される。
【００５２】
担当分散システム識別子には、新規呼においてデフォルトで担当する分散処理システム（ここでは、通常データ分散処理システム１００Ａ）を予め決めておき、その分散処理システムを示す担当分散システム識別子が設定される。
ハッシュ値（振り分けＩＤ）には、振り分け部１２が、新規呼のヘッダ情報等から当該呼をユニークに識別可能な情報（例えば、ＳＩＰにおいてはＣａｌｌ−ＩＤ等）を抽出してハッシュ関数にかけ、当該呼のコンシステント・ハッシュのＩＤ空間におけるハッシュ値を算出し、設定される。
データ識別子は、信号処理部１３において新規呼を処理する際に生成され、メッセージに付与される。よって、新規呼を振り分け部１２が処理する際には、ブランクとなる。
【００５３】
振り分け部１２は受信したメッセージが後続呼の場合、予めクライアントにおいて振り分けキーの情報がメッセージに付与されているため（例えば、ＳＩＰにおいては、Viaヘッダ等）、その付与された振り分けキーに基づき信号処理を担当するノード１を特定し、当該ノード１に転送する。
【００５４】
振り分け部１２は、メッセージを受信するとそのメッセージに付与された振り分けキー（担当分散システム識別子＋ハッシュ値（振り分けＩＤ）＋データ識別子）のうち、まず、担当分散システム識別子に基づき、担当する分散処理システム（ここでは、通常データ分散処理システム１００Ａか高負荷データ分散処理システム１００Ｂのいずれか）の振り分けＩＤテーブル２５０とノード識別子管理テーブル２００とを特定する。そして、振り分け部１２は、その特定した振り分けＩＤテーブル２５０上の各ノード１の担当領域の情報と、ハッシュ値（振り分けＩＤ）の情報とに基づき、当該メッセージを担当するノード１を抽出する。続いて、振り分け部１２は、担当するノード１のアドレスをノード識別子管理テーブル２００から取得し、担当するノード１に対してそのメッセージを転送する。
【００５５】
信号処理部１３（第１の信号処理部）は、自身のノード１Ａが担当するデータに関するメッセージの信号処理を実行するとともに、その信号処理においてアクセスするデータの処理負荷を計測する。
また、信号処理部１３は、新規呼が担当するノード１に到着したとき、当該データのデータ識別子を決定した上で、当該データのメタデータ３１０を設定する。このメタデータ３１０は、図６（ａ）に示すように、記憶部３０Ａに記憶されるデータ３００として、実際のアクセスの対象となる実データ３２０に対応付けて記憶される。
【００５６】
メタデータ３１０に設定する情報は、図６（ｂ）に示すように、振り分けキー、データ識別子、担当分散システム識別子、データ生成時分散システム識別子、高負荷データ判定回数である。
ここで、データ生成時分散システム識別子には、メッセージが新規呼の場合に、そのメッセージの対象となるデータを最初に処理したノード１が属する分散処理システム（通常の処理では、通常データ分散処理システム１００Ａ）の識別子（担当分散システム識別子）が格納される。
高負荷データ判定回数には、メッセージの処理対象となるデータが高負荷データと判定された回数が格納される。なお、高負荷データ判定回数の詳細は後記する。
【００５７】
信号処理部１３は、メッセージを受信し信号処理するデータについて、当該データの処理負荷（データ処理負荷）を計測する。そして、信号処理部１３は、その計測結果を、データ処理負荷計測情報４００（ここでは、データ処理負荷計測情報（通常）４００Ａ）として、記憶部３０Ａに格納する。
【００５８】
図７は、本実施形態に係るデータ処理負荷計測情報（通常）４００Ａ（第１のデータ処理負荷計測情報）のデータ構成例を示す図である。
信号処理部１３は、データ処理負荷として、ロック取得時刻、ロック解放時刻、データサイズを計測し、図７（ａ）に示すように、データ処理負荷計測情報（通常）４００Ａとして、データ識別子に対応付け、ロック取得時刻、ロック解放時刻、ロック取得期間、データサイズの各値を格納する。
ここで、ロック取得時刻は、データの不整合を排除するために、他のトランザクションからの更新処理を受け付けないようにする処理（ロック）の開始時刻である。ロック解放時刻は、ロック（更新処理を受け付けない）を解除した時刻である。ロック取得期間は、ロック開始時刻からロック解放時刻までの時間を意味し、信号処理部１３により算出され格納される。データサイズは、信号処理部１３が処理したデータのデータ量が格納される。ここで、負荷が高いデータ程、ロック取得期間が長くなり、データサイズが大きいものとなる。
【００５９】
信号処理部１３が収集するデータ処理負荷のパラメータは、データ処理負荷の計測が可能なパラメータであればよく、図７（ａ）に示すパラメータに限定されるものではない。例えば、図７（ｂ）に示すように、ロック取得時刻、ロック解放時刻に加えて、ＣＰＵの処理時間（図７（ｂ）においては、「ＣＰＵ時間」と記載する。）、ＣＰＵ使用率を計測するようにしてもよい。
なお、本実施形態においては、以降においては、図７（ａ）に示す、ロック取得期間を、データ処理負荷を示すパラメータとして利用する例として説明する。
【００６０】
図４に戻り、ノード負荷計測部１４は、所定の周期（所定の第１の期間）で、自身のノード１Ａのノード負荷（リソース負荷）を計測するとともに、当該所定の周期でのデータ処理負荷のデータ毎の平均値を算出し、ノード負荷計測情報（通常）５００Ａ（図８参照）として記憶部３０Ａに格納する。また、ノード負荷計測部１４は、所定の周期で、生成したノード負荷計測情報（通常）５００Ａを、高負荷データ分散処理システム１００Ｂの各ノード１Ｂに送信する。
【００６１】
図８は、本実施形態に係るノード負荷計測情報（通常）５００Ａのデータ構成例を示す図である。
ノード負荷計測部１４は、自身のノード１ＡのＯＳのリソース情報収集コマンドを利用し、ＣＰＵ使用率、メモリ使用率等のノード１Ａのリソース負荷が推定可能なパラメータを計測する。
ノード負荷計測部１４は、例えば、１０秒間隔でリソース負荷を収集する。図８においては、周期識別番号が「１」の期間、収集開始時刻が「10:14:50」（10時14分50秒、以下の記載形式も同様）を超えた時刻から収集時刻「10:15:00」までの期間での、ＣＰＵ使用率とメモリ使用率とを、リソース負荷として計測する。
また、ノード負荷計測部１４は、同じ所定の周期に含まれる、データ処理負荷計測情報（通常）４００Ａを抽出し、各データの平均値として、平均ロック取得期間、平均アクセス頻度、平均データサイズを計算してノード負荷計測情報（通常）５００Ａに格納する。
【００６２】
高負荷データ抽出部１５は、ノード負荷計測情報（通常）５００Ａに基づき、自身のノード１Ａが担当するデータの中から高負荷データを抽出し、抽出した高負荷データを、高負荷データ分散処理システム１００Ｂに移管する処理を実行する。
なお、高負荷データ抽出部１５は、各周期で発生したデータ処理（データのロック取得時刻、ロック解放時刻のいずれか）が当該周期内に含まれるものの中から、処理負荷の高いデータを高負荷データとして抽出する。
【００６３】
高負荷データ抽出部１５が、高負荷データを抽出するための手法は、特に限定されるものではなく、例えば、以下の手法が考えられる。
（高負荷データ抽出手法の例１）
当該周期における全データのデータ処理負荷計測情報（通常）４００Ａについて、個々のロック取得期間、データサイズ等の値と、当該周期以前の周期のノード負荷計測情報（通常）５００Ａにおいて対応する、平均ロック取得期間、平均データサイズ等の値を比較し、その乖離幅（超過量）が所定の閾値を超えていた場合、そのデータを高負荷データとして抽出する。
（高負荷データ抽出手法の例２）
当該周期における全データのデータ処理負荷計測情報（通常）４００Ａについて、予め指定したパラメータ毎の上限値と、当該周期におけるパラメータの値を比較し、上限値を超えたパラメータが検出された場合に、そのデータを高負荷データとして抽出する。
（高負荷データ抽出手法の例３）
当該周期におけるリソース負荷（ＣＰＵ使用率やメモリ使用率等）が、それ以前の周期のリソース負荷と比較し、その乖離幅（超過量）が所定の閾値を超えていた場合に、当該周期にアクセスされた全てのデータを高負荷データとみなして抽出する。
【００６４】
高負荷データ抽出部１５が比較対象とする周期やパラメータ、設定する閾値等は、システム毎に適切な設定値が異なり、また、複数の組み合わせでもよいため、特に限定するものではない。また、当該周期において、複数のアクセスがあったデータについては、高負荷データと判定されるデータと、判定されないデータとが混在するケースも考えられるが、一度でも高負荷と判定されれば、高負荷データと判定するようにしてもよいし、１つのデータに関して、高負荷データであるとした判定と、非判定との割合を勘案して、最終的に高負荷データとするか否かの判定を行うようにしてもよい。この高負荷の判定、非判定の割合についても、特に限定するものではない。
なお、以下においては、（高負荷データ判定手法の例１）を適用した場合を例に、後記する図１２において詳細に説明する。
【００６５】
また、高負荷データ抽出部１５が、抽出した高負荷データを、高負荷データ分散処理システム１００Ｂに移管する際に実行する、移管先のノード１Ｂの決定処理については、図１３を参照して後記する。
なお、高負荷データ抽出部１５は、高負荷データを高負荷データ分散処理システム１００Ｂに移管する際には、そのデータ（高負荷データ）のメタデータ３１０（図６（ｂ）参照）の担当分散システム識別子を、図９に示すように、高負荷データ分散処理システム１００Ｂを示す「２」に変更して、当該データを送信する。
【００６６】
このように、本実施形態に係る通常データ分散処理システム１００Ａの各ノード１Ａは、高負荷データを抽出して、処理能力の高い高負荷データ分散処理システム１００Ｂのノード１Ｂにその高負荷データを移管する。これにより、各ノード１Ａにおいて、高負荷データが存在する際に問題となる、その他のデータへの信号処理への影響の発生や、非効率なスケールアウトの頻発を抑止することができる。
【００６７】
≪高負荷データ分散処理システム１００Ｂのノード１Ｂ≫
次に、高負荷データ分散処理システム１００Ｂのノード１Ｂ（第２のノード）について説明する。
図１０は、本実施形態に係る高負荷データ分散処理システム１００Ｂを構成するノード１Ｂの機能ブロック図である。なお、図４において示した通常データ分散処理システム１００Ａのノード１Ａと、同一の機能を備える構成は、同一の符号と名称を付し、説明を省略する。
【００６８】
ノード１Ｂは、図２に示したように、ロードバランサ３と通信可能に接続されるともに、クラスタを構成する自身以外の他のノード１（他のノード１Ｂおよび通常データ分散処理システム１００Ａの各ノード１Ａを含む）と通信可能に接続される。また、このノード１Ｂは、ロードバランサ３を介してクライアント２からメッセージを受け取ると、そのメッセージを、担当するノード１Ｂ（自身を含む）に振り分け、そのメッセージの信号処理を実行する。さらに、ノード１Ｂは、通常データ分散処理システム１００Ａから高負荷データの移管を受け処理を継続するとともに、当該高負荷データの負荷が低減し、所定の正常値以下となった場合に、そのデータを正常負荷データとして抽出し、通常データ分散処理システム１００Ａに返還する。
このノード１Ｂは、図１０に示すように、制御部１０Ｂと、入出力部２０と記憶部３０Ｂとを含んで構成される。
【００６９】
ここで、高負荷データ分散処理システム１００Ｂのノード１Ｂの記憶部３０Ｂには、自身が属する高負荷データ分散処理システム１００Ｂのノード識別子管理テーブル（高負荷）２００Ｂおよび振り分けＩＤテーブル（高負荷）２５０Ｂを備えるとともに、負荷が低減したデータ（正常負荷データ）の返還先となる通常データ分散処理システム１００Ａの、最新のノード識別子管理テーブル（通常）２００Ａおよび振り分けＩＤテーブル２５０Ａをノード識別子管理部１１が取得し、自身の記憶部３０Ｂに記憶している。さらに、通常データ分散処理システム１００Ａのノード１Ａそれぞれから、ノード負荷計測情報（通常）５００Ａを受信し、自身の記憶部３０Ｂに記憶している。
また、高負荷データ分散処理システム１００Ｂのノード１Ｂの信号処理部１３（第２の信号処理部）は、自身のノード１Ｂが担当するデータに関するメッセージの信号処理を実行するとともに、その信号処理においてアクセスするデータの処理負荷を計測し、その計測結果をデータ処理負荷計測情報（高負荷）４００Ｂ（第２のデータ処理負荷計測情報）として記憶部３０Ｂに記憶している。
【００７０】
正常負荷データ抽出部１６は、通常データ分散処理システム１００Ａのノード１Ａそれぞれから、ノード負荷計測情報（通常）５００Ａを受信し、自身の記憶部３０Ｂに記憶しておく。
また、正常負荷データ抽出部１６は、高負荷データについてのアクセスが減少する等により、ノード１に対する負荷が低減したデータを正常負荷データとして抽出する。そして、正常負荷データ抽出部１６は、抽出した正常負荷データを、通常データ分散処理システム１００Ａに返還する処理を実行する。
【００７１】
正常負荷データ抽出部１６は、発生したデータ処理（データのロック取得時刻、ロック解放時刻のいずれか）が、所定の期間（所定の第２の期間）内に含まれるものの中から、処理負荷が低減したデータを正常負荷データとして抽出する。
【００７２】
正常負荷データ抽出部１６が、正常負荷データを抽出するための手法は、特に限定されるものではなく、例えば、以下の手法が考えられる。
（正常負荷データ抽出手法の例１）
当該所定の期間における全データのデータ処理負荷計測情報（高負荷）４００Ｂについて、個々のロック取得期間、データサイズ等の値と、返還先となる通常データ分散処理システム１００Ａにおいて担当領域を同じくするノード１Ａの任意の周期のノード負荷計測情報（通常）５００Ａに記憶された、対応する平均ロック取得期間、平均データサイズ等の値を比較する。そして、正常負荷データ抽出部１６は、高負荷データ分散処理システム１００Ｂのデータ処理負荷計測情報（高負荷）４００Ｂが、返還先となる通常データ分散処理システム１００Ａの対応するパラメータの平均値以下だった場合、そのデータを正常負荷データとして抽出する。
（正常負荷データ抽出手法の例２）
当該所定の期間における全データのデータ処理負荷計測情報（高負荷）４００Ｂについて、予め指定したパラメータ毎の正常値と比較し、正常値以下であれば、そのデータを正常負荷データとして抽出する。
【００７３】
正常負荷データ抽出部１６が比較対象とする任意の期間、返還先のノード負荷の選択周期、選択するパラメータ、正常値は、システム毎に適切な設定値が異なり、また、複数の組み合わせでもよいため、特に限定するものではない。また、所定の期間において、複数のアクセスがあったデータについては、正常負荷データと判定されるデータと、判定されないデータとが混在するケースも考えられるが、一度でも正常負荷と判定されなかったら、正常負荷と判定しないようにしてもよいし、１つのデータに関して、正常負荷データであるとした判定と、非判定との割合を勘案して、最終的に正常負荷データとするか否かの判定を行うようにしてもよい。この正常負荷の判定、非判定の割合についても、特に限定するものではない。なお、この正常負荷データの抽出処理の具体例については、図１７において詳細に説明する。
【００７４】
また、正常負荷データ抽出部１６は、高負荷データとして移管されている期間が長く、当該データのメタデータの高負荷データ判定回数が多いデータ（高負荷データ判定回数が所定の閾値を超えたデータ）については、削除する等の判断を実行してもよい。
【００７５】
さらに、正常負荷データ抽出部１６が、抽出した正常負荷データを、通常データ分散処理システム１００Ａに返還する際に実行する、返還先のノード１Ａの決定処理については、後記する。なお、正常負荷データ抽出部１６は、正常負荷データを通常データ分散処理システム１００Ａに返還する際には、そのデータ（正常負荷データ）のメタデータ（図１２（ｂ）参照）の担当分散システム識別子を、図１８（ｂ）に示すように、通常データ分散処理システム１００Ａを示す「１」に変更するとともに、メタデータの高負荷データ判定回数をカウントアップして、当該データを送信する。
【００７６】
このように、本実施形態に係る高負荷データ分散処理システム１００Ｂの各ノード１Ｂは、高負荷データの負荷が正常値に低減したことを確認して、データを元の通常データ分散処理システム１００Ａに返還することができる。よって、高負荷データを専用に処理する高負荷データ分散処理システム１００Ｂを構成するノード１Ｂの処理負荷を必要以上に高めることなくシステムの運用を継続することができる。
【００７７】
＜処理の流れ＞
次に、本実施形態に係る分散処理システム１０００が実行する処理の流れについて説明する。なお、分散処理システム１０００全体の概略の処理の流れは、図３を参照して説明したため、ここでは、通常データ分散処理システム１００Ａのノード１Ａが実行する処理の流れと、高負荷データ分散処理システム１００Ｂのノード１Ｂが実行する処理の流れについて、詳細に説明する。
【００７８】
≪ノード１Ａの処理≫
図１１は、本実施形態に係る通常データ分散処理システム１００Ａの各ノード１Ａが実行する処理の流れを示すフローチャートである。
なお、通常データ分散処理システム１００Ａのノード１Ａ（ノード識別子管理部１１）は、自身が属する通常データ分散処理システム１００Ａのノード識別子管理テーブル（通常）２００Ａおよび振り分けＩＤテーブル２５０Ａに加えて、高負荷データ分散処理システム１００Ｂの最新の、ノード識別子管理テーブル（高負荷）２００Ｂおよび振り分けＩＤテーブル２５０Ｂを取得し記憶部３０Ａに記憶しているものとする。
また、ノード１Ａ（信号処理部１３）は、自身のノード１Ａが担当するデータに関するメッセージの信号処理を実行した際に、当該データの処理負荷を計測し、その計測結果をデータ処理負荷計測情報（通常）４００Ａ（図６（ａ）参照）として記憶部３０Ａに記憶しているものとする。
【００７９】
図１１に示すように、まず、ノード１Ａのノード負荷計測部１４は、所定の時間（所定の周期：所定の第１の期間）が経過したかを判定し（ステップＳ２０）、所定の時間が経過していなければ（ステップＳ２０→Ｎｏ）、所定の時間が経過するまで待つ。一方、ノード負荷計測部１４は、所定の時間（周期）が経過した場合には、次のステップＳ２１に進む。
【００８０】
ステップＳ２１において、ノード負荷計測部１４は、自身のノード１Ａのノード負荷（リソース負荷）を計測するとともに、記憶部３０Ａ内のデータ処理負荷計測情報（通常）４００Ａを参照し、データ処理負荷のデータ毎のパラメータの平均値を算出し、ノード負荷計測情報（通常）５００Ａ（図８参照）を生成して記憶部３０Ａに格納する。また、ノード負荷計測部１４は、生成したノード負荷計測情報（通常）５００Ａを、高負荷データ分散処理システム１００Ｂの各ノード１Ｂに送信する。
なお、ここでは、図８に示すノード負荷計測情報（通常）５００Ａが、ノード負荷計測部１４により生成されたものとして、以下説明する。
【００８１】
次に、ノード１Ａの高負荷データ抽出部１５は、ノード負荷計測情報（通常）５００Ａに基づき、各所定の時間（周期）内において信号処理されたデータの中から、高負荷データを抽出する（ステップＳ２２）。ここでは、前記した（高負荷データ判定手法の例１）を適用した場合を例にして説明する。
【００８２】
図１２は、ノード１Ａの高負荷データ抽出部１５による、高負荷データの抽出処理を説明するための図である。図１２（ａ）は、当該周期（ここでは、周期識別番号「３」に相当）に含まれるデータ処理負荷計測情報（通常）４００Ａを示す。また、図１２（ｂ）は、ノード負荷計測情報（通常）５００Ａを示している。
ここでは、当該周期（高負荷データを抽出しようとする周期）を周期識別番号「３」で示される、「10：15：10〜10：15：20」とし、比較対象の周期を周期識別番号「１」で示される、「10：14：50〜10：15：00」とする。また、比較対象のパラメータをロック取得期間とする。この場合、図１２（ａ）に示す、データ処理負荷計測情報（通常）４００Ａの各データのロック取得期間を参照し、そのロック取得期間が、図１２（ｂ）に示すノード負荷計測情報（通常）５００Ａの周期識別番号「１」の平均ロック取得期間「７msec」と比較する。そして、高負荷データ抽出部１５は、そのデータのロック取得期間と平均ロック取得期間との乖離幅（超過量）の閾値として設定された「２０msec」を超えるか否かを判定する。この場合、符号αで示すロック取得期間が「１０６msec」のデータが、高負荷データとして抽出される。
【００８３】
図１１に戻り、次に、高負荷データ抽出部１５は、ステップＳ２３において、移管対象として抽出されたデータ（高負荷データ）のメタデータ３１０の担当分散システム識別子を、通常データ分散処理システム１００Ａを示す値「１」（図６（ｂ）参照）から、高負荷データ分散処理システム１００Ｂを示す値「２」（図９（ｂ）参照）に変更する。
【００８４】
続いて、高負荷データ抽出部１５は、移管する高負荷データを担当する高負荷データ分散処理システム１００Ｂのノード１Ｂを、記憶部３０Ａ内の、ノード識別子管理テーブル（高負荷）２００Ｂおよび振り分けＩＤテーブル２５０Ｂを参照して特定し、特定したノードＢに、当該データ（高負荷データ）の複製データを送信する（ステップＳ２４）。
【００８５】
図１３は、移管する高負荷データを担当する高負荷データ分散処理システム１００Ｂのノード１Ｂを特定する処理を説明するための図である。ここで、図１３（ａ）は、通常データ分散処理システム１００Ａのノード識別子管理テーブル（通常）２００Ａを示し、図１３（ｂ）は、通常データ分散処理システム１００Ａの振り分けＩＤテーブル（通常）２５０Ａを示す。また、図１３（ｃ）は、高負荷データ分散処理システム１００Ｂのノード識別子管理テーブル（高負荷）２００Ｂを示し、図１３（ｄ）は、高負荷データ分散処理システム１００Ｂの振り分けＩＤテーブル（高負荷）２５０Ｂを示す。
【００８６】
なお、図１３（ｂ）に示す通常データ分散処理システム１００Ａの振り分けＩＤテーブル（通常）２５０Ａと、図１３（ｄ）に示す高負荷データ分散処理システム１００Ｂの振り分けＩＤテーブル（高負荷）２５０Ｂとは、同じＩＤ空間（コンシステント・ハッシュのＩＤ空間）が設定される。ここでは、ＩＤ空間として「０」〜「９９９」が同様に設定されている。これにより、互いの分散処理システムにおいてノード１（１Ａ，１Ｂ）の増減設が発生し、各々の分散処理システムにおいてデータ移管（返還）時の担当ノードが変化しているようなケースでも、新しい担当ノードを特定し、データの移管（返還）を実行することが容易に可能となる。
【００８７】
ここで、高負荷データ抽出部１５が抽出したデータ（高負荷データ）のハッシュ値（振り分けＩＤ）が「２５０」であるものとする。この場合、図１３（ｂ）に示す、振り分けＩＤテーブル２５０Ａに示されるように、当該データは、通常データ分散処理システム１００Ａにおいては、「Ｎｏｄｅ２」が担当している。このデータが高負荷データであり、高負荷データ分散処理システム１００Ｂに移管する場合に、高負荷データ抽出部１５は、まず、図１３（ｄ）に示す、高負荷データ分散処理システム１００Ｂの振り分けＩＤテーブル（高負荷）２５０Ｂを参照し、そのハッシュ値  （振り分けＩＤ）「２５０」に基づき、担当するノードを「Ｎｏｄｅ１」に特定する。そして、高負荷データ抽出部１５は、図１３（ｃ）に示す、高負荷データ分散処理システム１００Ｂのノード識別子管理テーブル２００Ｂを参照し、「Ｎｏｄｅ１」のアドレスとして「10.35.0.1」を取得する。高負荷データ抽出部１５は、高負荷データ分散処理システム１００Ｂのノード１Ｂのうち、アドレス「10.35.0.1」の「Ｎｏｄｅ１」に対して、当該抽出した高負荷データの複製データを送信する。
【００８８】
図１１に戻り、ステップＳ２５において、高負荷データ抽出部１５は、高負荷データの移管の完了後、自身の記憶部３０Ａのデータ３００に記憶された当該データの実データ３２０を削除し（図９（ａ）参照）、処理を終える。これは、実データ３２０のデータサイズ等が大きいと、通常データ分散処理システム１００Ａのリソース消費につながる場合があるためである。
【００８９】
このようにして、通常データ分散処理システム１００Ａの各ノード１Ａは、高負荷データを抽出して、高負荷データ分散処理システム１００Ｂの担当となるノード１Ｂに、当該高負荷データを移管することができる。
【００９０】
≪高負荷データ移管後のノード１Ａのリダイレクト処理≫
ここで、高負荷データの移管後に、移管元のノード１Ａにおいて当該データに対する最初のアクセスがあった場合の移管先へのリダイレクト処理について説明する。
図１４は、高負荷データの移管後の当該データに対する最初のアクセスのリダイレクト処理の流れを示すフローチャートである。
【００９１】
まず、クライアント２等からのメッセージを、通常データ分散処理システム１００Ａのノード１Ａが受信する（ステップＳ３０）。
【００９２】
次に、ノード１Ａの振り分け部１２は、メッセージに付与された振り分けキーの担当分散システム識別子と、記憶部３０Ａ内に格納されたデータ３００内のメタデータ３１０の担当分散システム識別子（図９（ｂ）参照）とを確認し、自身の分散処理システムに対するアクセスか否かを判定する（ステップＳ３１）。ここで、振り分け部１２は、当該メッセージの処理対象のデータついて、そのメタデータ３１０の担当分散システム識別子が、通常データ分散処理システム１００Ａを示す「１」であれば（ステップＳ３１→Ｙｅｓ）、通常の信号処理を実行する（ステップＳ３２）。一方、振り分け部１２は、メタデータ３１０の担当分散システム識別子が、「１」以外の例えば「２」であれば（ステップＳ３１→Ｎｏ）、ステップＳ３３へ進む。
ここで、例えば、高負荷データの移管後の当該データに対する最初のメッセージに付与された振り分けキーは、変更されていないため「1＋199＋data_12345」であるとする。一方、振り分け部１２は、記憶部３０Ａに格納されたデータ３００のメタデータ３１０の当該データ「data_12345」の担当分散システム識別子を参照し、その値が「２」であることを確認する（図９（ｂ）参照）。つまり、受信したメッセージの処理対象のデータが、移管されたデータ（高負荷データ）であることを確認する。
【００９３】
ステップＳ３３において、振り分け部１２は、メタデータ３１０の担当分散システム識別子（ここでは「２」）の情報に基づき、担当する分散システム（ここでは、高負荷データ分散処理システム１００Ｂ）の振り分けＩＤテーブル２５０（ここでは、振り分けＩＤテーブル（高負荷）２５０Ｂ）を決定する。また、振り分け部１２は、振り分けＩＤテーブル２５０（高負荷）Ｂを参照し、ハッシュ値（振り分けＩＤ）「199」に基づき担当ノード１Ｂを決定し、その担当ノードのアドレスをノード識別子管理テーブル（高負荷）２００Ｂにより取得する。
【００９４】
続いて、振り分け部１２は、メッセージに付与された振り分けキーの担当分散システム識別子の値を、移管先の高負荷データ分散処理システム１００Ｂを示す「２」に変更して、担当するノード１Ｂに転送する（ステップＳ３４）。
【００９５】
このようにすることで、移管元の通常データ分散処理システム１００Ａの各ノード１Ａは、高負荷データの移管後に、当該データに対する最初のアクセスがあった場合に、そのメッセージに付与された振り分けキーの担当分散処理システム識別子を移管先に書き換える。よって、その後の当該データについてのメッセージについては、高負荷データ分散処理システム１００Ｂにメッセージが振り分けられるようにすることができる。
【００９６】
≪ノード１Ｂの処理≫
次に、本実施形態に係る高負荷データ分散処理システム１００Ｂの各ノード１Ｂが実行する処理について説明する。
なお、高負荷データ分散処理システム１００Ｂのノード１Ｂ（ノード識別子管理部１１）は、自身が属する高負荷データ分散処理システム１００Ｂのノード識別子管理テーブル（高負荷）２００Ｂ（第２のノード識別子管理情報）および振り分けＩＤテーブル（高負荷）２５０Ｂ（第２の振り分けＩＤ情報）に加えて、通常データ分散処理システム１００Ａの最新の、ノード識別子管理テーブル（通常）２００Ａ（第１のノード識別子管理情報）および振り分けＩＤテーブル（通常）２５０Ａ（第１の振り分けＩＤ情報）を取得し記憶部３０Ｂに記憶しているものとする。
また、ノード１Ｂ（信号処理部１３）は、自身のノード１が担当するデータに関するメッセージの信号処理を実行した際に、当該データの処理負荷を計測し、その計測結果をデータ処理負荷計測情報（高負荷）４００Ｂ（第２のデータ処理負荷計測情報）（図１５参照）として記憶部３０Ｂに記憶しているものとする。
さらに、ノード１Ｂ（正常負荷データ抽出部１６）は、通常データ分散処理システム１００Ａの各ノード１Ａから、それぞれのノード負荷計測情報（通常）５００Ａを受信し、記憶部３０Ｂに記憶しているものとする。
【００９７】
図１６は、本実施形態に係る高負荷データ分散処理システム１００Ｂの各ノード１Ｂが実行する処理の流れを示すフローチャートである。
まず、ノード１Ｂの正常負荷データ抽出部１６は、所定の時間（所定の第２の期間）が経過したかを判定し（ステップＳ４０）、所定の時間が経過していなければ、（ステップＳ４０→Ｎｏ）、所定の時間が経過するまで待つ。一方、正常負荷データ抽出部１６は、所定の時間が経過した場合には（ステップＳ４０→Ｙｅｓ）、次のステップＳ４１に進む。
【００９８】
ステップＳ４１において、ノード１Ｂの正常負荷データ抽出部１６は、発生したデータ処理（データのロック取得時刻、ロック解放時刻のいずれか）が当該所定の時間（所定の第２の期間）内に含まれるものの中から、処理負荷が低減したデータを正常負荷データとして抽出する。ここでは、前記した（正常負荷データ判定手法の例１）を適用した場合を例にして説明する。
【００９９】
図１７は、ノード１Ｂの正常負荷データ抽出部１６による、正常負荷データの抽出処理を説明するための図である。図１７（ａ）は、所定の時間に含まれるデータ処理負荷計測情報（高負荷）４００Ｂを示す。また、図１７（ｂ）は、返還先の分散処理システム（通常データ分散処理システム１００Ａ）の担当領域を同じくするノード１Ａのノード負荷計測情報（通常）５００Ａを示している。
ここでは、当該期間（正常負荷データを抽出しようとする期間）を「10:15:20〜10:15:30」）とし、比較対象の返還先の分散処理システム（通常データ分散処理システム１００Ａ）から選択した周期を周期識別番号「１」で示される「10:14:50〜10:15:00」とする。また、比較対象のパラメータをロック取得期間とし、所定の時間に含まれるデータ処理負荷計測情報（高負荷）４００Ｂの同じデータ識別子のロック取得期間の値が、担当領域を同じくするノード１Ａのノード負荷計測情報（通常）５００Ａで示される平均ロック取得期間（ここでは、「７msec」）を一度も上回ることがなければ、当該データを正常負荷データと判定する。
なお、ここで、判定対象となるデータ（例えば、データ識別子「11111111」）と担当領域を同じくするノード１Ａのノード負荷計測情報（通常）５００Ａは、判定対象となるデータのメタデータに付された振り分けキーのハッシュ値（振り分けＩＤ）を取得し、自身の記憶部４０Ｂに記憶された振り分けＩＤテーブル（通常）２５０Ａを検索することにより、現時点（つまり返還しようする時点）での当該データの返還先となるノード１Ａのノード負荷計測情報（通常）５００Ａを特定することにより決定する。
【０１００】
図１６に戻り、ステップＳ４２において、正常負荷データ抽出部１６は、返還対象として抽出したデータ（正常負荷データ）のメタデータ３１０の担当分散システム識別子を、高負荷データ分散処理システム１００Ｂを示す値「２」（図９（ｂ）参照）から、通常データ分散処理システム１００Ａを示す値「１」に変更する（図１８（ｂ）参照）。また、正常負荷データ抽出部１６は、返還対象として抽出したデータ（正常負荷データ）のメタデータの高負荷データ判定回数を１カウントアップする（図１８（ｂ）参照）。
【０１０１】
続いて、正常負荷データ抽出部１６は、返還する正常負荷データを担当する通常データ分散処理システム１００Ａのノード１Ａを、記憶部３０Ｂ内の、ノード識別子管理テーブル（通常）２００Ａおよび振り分けＩＤテーブル２５０（通常）Ａを参照して特定し、特定したノードＡに、当該データ（正常負荷データ）の複製データを送信する（ステップＳ４３）。
【０１０２】
次に、正常負荷データ抽出部１６は、ステップＳ４４において、正常負荷データの返還の完了後、自身の記憶部３０Ｂのデータ３００に記憶された当該データの実データ３２０を削除し（図１８（ａ）参照）、処理を終える。これは、実データ３２０のデータサイズ等が大きいと、高負荷データ分散処理システム１００Ｂのリソース消費につながる場合があるためである。
【０１０３】
このようにして、高負荷データ分散処理システム１００Ｂの各ノード１Ｂは、負荷が低減した正常負荷データを抽出して、通常データ分散処理システム１００Ａの担当となるノード１Ａに、当該正常負荷データを返還することができる。
【０１０４】
≪正常負荷データ移管後のノード１Ｂのリダイレクト処理≫
ここで、正常負荷データの返還後に、返還元のノード１Ｂにおいて当該データに対する最初のアクセスがあった場合の返還先へのリダイレクト処理について説明する。
図１９は、正常負荷データの返還後の当該データに対する最初のアクセスのリダイレクト処理の流れを示すフローチャートである。
【０１０５】
まず、クライアント２等からのメッセージを、高負荷データ分散処理システム１００Ｂのノード１Ｂが受信する（ステップＳ５０）。
【０１０６】
次に、ノード１Ｂの振り分け部１２は、メッセージに付与された振り分けキーの担当分散システム識別子と、記憶部３０Ｂ内に格納されたデータ３００内のメタデータ３１０の担当分散システム識別子（図１８（ｂ）参照）とを確認し、自身の分散処理システムに対するアクセスか否かを判定する（ステップＳ５１）。ここで、振り分け部１２は、当該メッセージの処理対象のデータついて、そのメタデータ３１０の担当分散システム識別子が、高負荷データ分散処理システム１００Ｂを示す「２」であれば（ステップＳ５１→Ｙｅｓ）、通常の信号処理を実行する（ステップＳ５２）。一方、振り分け部１２は、メタデータ３１０の担当分散システム識別子が、「２」以外の例えば「１」であれば（ステップＳ５１→Ｎｏ）、ステップＳ５３へ進む。
【０１０７】
ステップＳ５３において、振り分け部１２は、メタデータ３１０の担当分散システム識別子（ここでは「１」）の情報に基づき、担当する分散システム（ここでは、通常データ分散処理システム１００Ａ）の振り分けＩＤテーブル２５０（ここでは、振り分けＩＤテーブル（通常）２５０Ａ）を決定する。また、振り分け部１２は、振り分けＩＤテーブル２５０（通常）Ａを参照し、そのハッシュ値（振り分けＩＤ）に基づき担当ノード１Ａを決定し、その担当ノードのアドレスをノード識別子管理テーブル（通常）２００Ａにより取得する。
【０１０８】
続いて、振り分け部１２は、メッセージに付与された振り分けキーの担当分散システム識別子の値を、返還先の通常データ分散処理システム１００Ａを示す「１」に変更して、担当するノード１Ａに転送する（ステップＳ５４）。
【０１０９】
このようにすることで、返還元の高負荷データ分散処理システム１００Ｂの各ノード１Ｂは、正常負荷データの返還後に、当該データに対する最初のアクセスがあった場合に、そのメッセージに付与された振り分けキーの担当分散処理システム識別子を返還先に書き換える。よって、その後の当該データについてのメッセージについては、通常データ分散処理システム１００Ａにメッセージが振り分けられるようにすることができる。
【０１１０】
以上説明したように、本実施形態に係る分散処理システム１０００によれば、通常データ分散処理システム１００Ａの各ノード１Ａが、アクセス頻度が多い、処理時間の長い等によりノードに高い負荷を与えるデータ（高負荷データ）を抽出し、処理能力の高い高負荷データ分散処理システム１００Ｂに処理を移管することができる。これにより、移管先の高負荷データ分散処理システム１００Ｂにおいて、高負荷データの処理を継続しつつ、通常データ分散処理システム１００Ａに高負荷データが存在していた際に問題となる、その他のデータへの信号処理への影響の発生や、非効率なスケールアウトの頻発を抑止することができる。
【０１１１】
また、移管先の高負荷データ分散処理システム１００Ｂにおいて、高負荷データの負荷が正常値に低減したことを確認して、データを元の通常データ分散処理システム１００Ａに返還することができる。これにより、高負荷データを専用に処理するノード１Ｂの処理負荷を必要以上に高めることなくシステムの運用を継続することができる。
【符号の説明】
【０１１２】
１      ノード
１Ａ    ノード（第１のノード）
１Ｂ    ノード（第２のノード）
２      クライアント
３      ロードバランサ
１０Ａ，１０Ｂ  制御部
１１    ノード識別子管理部
１２    振り分け部
１３    信号処理部（第１の信号処理部、第２の信号処理部）
１４    ノード負荷計測部
１５    高負荷データ抽出部
１６    正常負荷データ抽出部
２０    入出力部
３０Ａ，３０Ｂ  記憶部
１００Ａ  通常データ分散処理システム
１００Ｂ  高負荷データ分散処理システム
２００Ａ  ノード識別子管理テーブル（通常）（第１のノード識別子管理情報）
２００Ｂ  ノード識別子管理テーブル（高負荷）（第２のノード識別子管理情報）
２５０Ａ  振り分けＩＤテーブル（通常）（第１の振り分けＩＤ情報）
２５０Ｂ  振り分けＩＤテーブル（高負荷）（第２の振り分けＩＤ情報）
３００  データ
３１０  メタデータ
３２０  実データ
４００Ａ  データ処理負荷計測情報（通常）（第１のデータ処理負荷計測情報）
４００Ｂ  データ処理負荷計測情報（高負荷）（第２のデータ処理負荷計測情報）
５００Ａ  ノード負荷計測情報（通常）
１０００  分散処理システム
【図１】
0006259408.tif 000002
【図２】
0006259408.tif 000003
【図３】
0006259408.tif 000004
【図４】
0006259408.tif 000005
【図５】
0006259408.tif 000006
【図６】
0006259408.tif 000007
【図７】
0006259408.tif 000008
【図８】
0006259408.tif 000009
【図９】
0006259408.tif 000010
【図１０】
0006259408.tif 000011
【図１１】
0006259408.tif 000012
【図１２】
0006259408.tif 000013
【図１３】
0006259408.tif 000014
【図１４】
0006259408.tif 000015
【図１５】
0006259408.tif 000016
【図１６】
0006259408.tif 000017
【図１７】
0006259408.tif 000018
【図１８】
0006259408.tif 000019
【図１９】
0006259408.tif 000020