JP5809652B2 - サーバ制御方法およびサーバ制御装置 - Google Patents

サーバ制御方法およびサーバ制御装置 Download PDF

Info

Publication number
JP5809652B2
JP5809652B2 JP2013032648A JP2013032648A JP5809652B2 JP 5809652 B2 JP5809652 B2 JP 5809652B2 JP 2013032648 A JP2013032648 A JP 2013032648A JP 2013032648 A JP2013032648 A JP 2013032648A JP 5809652 B2 JP5809652 B2 JP 5809652B2
Authority
JP
Japan
Prior art keywords
identifier
server
processing
rank
request processing
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
JP2013032648A
Other languages
English (en)
Other versions
JP2014164357A (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 JP2013032648A priority Critical patent/JP5809652B2/ja
Publication of JP2014164357A publication Critical patent/JP2014164357A/ja
Application granted granted Critical
Publication of JP5809652B2 publication Critical patent/JP5809652B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、サーバ制御方法およびサーバ制御装置に関する。
従来、インターネットやそれを利用するための端末技術の発展にともない、ネットワークを利用するユーザに対して、アプリケーション層やネットワーク層など様々な層(レイヤー)でサービスが提供されている。このようなサービスを提供する為に、ネットワークには、様々なサーバが設置されている。例えば、WEBサービスにおけるWWWサーバや、ユーザ端末をネットワークに接続するサービスにおける認証サーバなどがある。このようなサーバは、ユーザから直接的、あるいは、間接的に送られてきた識別子に応じてサービスを提供する為の応答を返すことで、サービスを構成している。識別子の例としては、WWWサーバにおけるURI(Uniform Resource Identifier)や、認証サーバにおけるユーザ識別子がある。なお、URIは、例えば、非特許文献1にRFC3986として制定されている。
このような識別子に対して応答を返すサーバは、ユーザのネットワーク利用が爆発的に増加する中で、非常に高い性能を求められるようになってきており、これを解決する為に、多くのサーバを設置することで、複数のサーバ全体として高い性能を実現してきている。この複数のサーバを設置するという方法では、サーバの有効利用の観点から、識別子に対するサーバの処理に起因するサーバ負荷が、複数の異なるサーバ間で均一になるようにすることが求められる。このサーバ間の負荷の均一化は、負荷分散と呼ばれ、例えば、非特許文献2や非特許文献3に述べられているラウンドロビンや、非特許文献4に述べられているコンシステントハッシングなどの方法によって実現されている。
図41は、ラウンドロビン法による、負荷分散を表している。まず、クライアント1050、1060、1070は、サーバ装置に対する処理要求をランドロビン用負荷分散転送装置1040に送信する。ランドロビン用負荷分散転送装置1040は、クライアントからの処理要求を、ランドロビン用負荷分散転送装置1040に登録されたサーバ装置の順番に従い、最初は、一番目に登録されているサーバ装置1000に送信し、次の処理要求を二番目に登録されているサーバ装置1010に送信し、順次、登録された順序で、クライアントからの処理要求の送信先を変更する。全ての登録されたサーバ装置にクライアントからの処理要求を送信したら、また、一番目に登録されているサーバ装置1000に送信する。このように、ラウンドロビン法では、任意の識別子を含む処理要求を、任意のサーバ装置が処理する必要があるため、全てのサーバ装置が全ての識別子を処理するための情報を保持しておく必要がある。以上の動作を繰り返すことで、クライアントからの処理要求を複数のサーバに送信することで、複数のサーバ装置全体で、負荷分散を実現しながら、クライアントからの大量の処理要求に対して応答することが可能となる。
図42は、コンシステントハッシング法による、負荷分散を表している。まず、クライアント1150、1160、1170は、サーバ装置に対する処理要求をコンシステントハッシング用負荷分散転送装置1140に送信する。コンシステントハッシング用負荷分散転送装置1140は、クライアントからの処理要求を、受信したとき、最初に、その中に含まれる、前記サーバが応答を特定するための識別子を取り出す。次に、取り出した識別子に対し、MD5やSHA1などのハッシュ法を用いて識別子のハッシュ値を計算する。コンシステントハッシング用負荷分散転送装置1140には、ハッシュ値の範囲と対応するサーバ装置の対応表を管理しており、計算したハッシュ値に対応するサーバ装置を検索し、そのサーバ装置に対して、クライアントからの処理要求を送信する。図43は、このサーバ装置の選択方法を示している。例えば、識別子として、www.aaa.co.jpが指定されたとき、www.aaa.co.jpのハッシュ値を計算し、ハッシュ値の範囲と対応するサーバ装置の対応表からサーバ装置1110を選択している。以上のように、識別子から計算されるハッシュ値をもとに、クライアントからの処理要求を送信するサーバ装置を振り分けることにより、複数のサーバ装置全体で、負荷分散を実現しながら、クライアントからの大量の処理要求に対して応答することが可能となる。
更に、近年、様々なサービスを開始するにあたり、最初は、小規模のユーザを対象としてサービス提供を開始し、ユーザ数が大規模化するに従い、柔軟にサービスを提供するためのサーバを構成することが求められてきている。これまで、小規模のユーザを対象としたサービスを、大規模化していくには、一つ一つのサーバ装置の性能を上げていく、スケールアップという手法が主流であった。しかし、スケールアップ手法は、装置を取り替えていく必要があり、柔軟な規模の変更が困難であった。これに対して、ユーザの規模に応じて、サーバ装置を追加していくことで、複数のサーバ装置全体としての性能を上げていく、スケールアウトという手法の必要性が大幅に増してきている。
上記のコンシステントハッシングは、スケールアウトを実現する手法であり、近年、盛んに利用が検討されてきている。図44は、コンシステントハッシング法によるスケールアウトを示している。最初、図44の左側で示している、ハッシュ値の範囲と対応するサーバ装置の対応表(変更前の表)を用いていたとする。このとき、ハッシュ値6個に対して、一つのサーバ装置が割り当てられ、サーバ装置としてM台で処理している。次に、クライアント数が増加したとき、図44の右側で示している、ハッシュ値の範囲と対応するサーバ装置の対応表(変更後の表)を用いて、ハッシュ値3個に対して、一つのサーバ装置が割り当てられ、サーバ装置として2M台で処理することで、サーバ装置の台数増加により、既存サーバ装置を活かしながら、容易に負荷の増加に対応できる。
T. Berners-Lee、R. Fielding、L. Masinter 著、「Uniform Resource Identifier (URI):Generic Syntax」、RFC3986、http://www.ietf.org/rfc/rfc3986.txt、2005. トニー ブルーク著、鍋島 公章訳、横山 晴庸訳、上谷 一訳、「サーバ負荷分散技術」,オライリー・ジャパン発行,2001. A. Kuurne、A. P. Miettinen 著、「Weighted Round Robin Scheduling Strategies in (E)GPRS Radio Interface」, 2004 IEEE 60th Vehicular Technology Conference, Vol5, pp. 3155-3159, 2004. David Karger、Eric Lehman、Tom Leighton、Rina Panigrahy、Matthew Levine、Daniel Lewin 著、「Consistent hashing and random trees: distributed caching protocols for relieving hot spots on the World Wide Web」、Proceedings of the twenty-ninth annual ACM symposium on Theory of computing, pp. 654-663, 1997. L. Breslau、P. Cao、L. Fan、G. Phillips、S. Shenker、「Web caching and Zipf-like distributions: evidence and implications」、Proceeding IEEE INFOCOM, pp. 126-134, 1999. I.ガットマン、S.S.ウィルクス著、石井恵一、堀素夫訳、「工科系のための統計概論」、培風館、1999年.
ところで、クライアントからサーバ装置に対して送信される処理要求に含まれる識別子が、どのような割合でサーバ装置に送信される全処理要求に含まれるか、即ち、各識別子の発生頻度は、一般的には、サーバ装置が用いられるアプリケーションによって異なってくる。一方で、例えば、非特許文献5に例示されているように、WEBサービスなど、識別子の発生頻度がジップ(Zipf)の法則に従い、且つ、広く用いられているアプリケーションであるような場合があり、このような識別子の発生頻度の分布に対しても、負荷分散、及び、スケールアウトを実現することは、実利用の観点から極めて重要である。
また、サーバ装置への処理要求が、ネットワーク利用の拡大により、増大していく中、サーバ装置による効率的な識別子に対する処理を実現することを目的として、サーバ装置が処理要求を行うために必要な識別子に関連したデータを、メモリ上に保持したり、SSD(Solid State Drive)と呼ばれるフラッシュメモリを用いた記憶装置に保持したりするなど高速な記憶装置を有効利用することが求められてきている。このような記憶装置のコストや性能の面から限られた記憶容量を有効に利用しながら、負荷分散、及び、スケールアウトを実現することが不可欠である。
ここで、まず、上記の説明で触れたジップの法則について説明する。各識別子の発生頻度を、発生頻度の大きいものから、小さいものの順序で並べ、発生頻度が何番目に大きいかを表す数字をランクと呼ぶものとする。例えば、最も発生頻度の大きい識別子のランクは、1となる。このとき、ジップの法則では、ランクの発生頻度f(r)が、下記(1)式になる。
Figure 0005809652
ここで、pとaは、正の実数である。本明細書において、pをジップ定数と呼ぶこととする。図45は、ジップの法則に従う発生頻度の分布の例である。識別子の発生頻度が、このジップの法則に従う場合の、特に顕著な特性として、以下の二つの特性がある。一つ目の特性としては、比較的少数の識別子の発生頻度が、全体の大きな部分を占めること(以下、特徴(1)という)である。また、二つ目の特性としては、発生頻度が非常に小さい識別子が大量に存在すること(以下、特徴(2)という)である。
以下に、上記の特徴を持った発生頻度を持つ識別子の処理要求の、負荷分散、及び、スケールアウトの実現に、ラウンドロビン法、及び、コンシステントハッシング法を用いた場合を考える。
ラウンドロビン法を用いた場合、任意の識別子を含む処理要求を、任意のサーバ装置が処理する必要があるため、全てのサーバ装置が全ての識別子を処理するための情報を保持しておく必要がある。よって、上記の、「発生頻度が非常に小さい識別子が大量に存在する。」という上記の特徴(2)により、発生頻度の非常に小さい識別子が大量に有り、この大量の識別子を処理するための情報を、全てのサーバ装置が保持しなければならないことになる。このことは、処理要求への応答に必要となる識別子に関連したデータの保持するために必用な記憶装置の容量が非常に大きいものとなり、効率的なサーバ装置の処理のために、メモリやSSDを用いることを困難にしたり、サーバ装置のコストを大幅に増加させたりといった問題を発生させる。また、識別子の増加に対して、サーバ装置単体の記憶容量が上限となり、スケールアウトを実現することができないという問題も発生させる。
上述のラウンドロビン法を用いた場合の問題点として、(1)サーバ装置単体に必要とされる記憶装置の容量が大規模化することでサーバ装置のコストが高くなることと、(2)サーバ装置単体の記憶装置の容量がボトルネックとなりスケールアウトを実現できないことが挙げられる。
次に、コンシステントハッシング法を用いた場合、上記で説明したように、処理要求への応答に必用な識別子に関連したデータを複数のサーバ装置で分割して持つことで、負荷分散とスケールアウトの実現が可能である。一方で、ある識別子の処理要求は、単一のサーバ装置に送信されるため、その識別子を含む処理要求が、単一のサーバ装置の性能で、十分に処理できる程度でなければならない。しかし、上記の特徴(1)により、発生頻度の大きい識別子について、その発生頻度は、非常に大きな値となることから、単一のサーバ装置での処理が困難となる場合がある(例えば、図45におけるランク1の処理に必用な性能が、単一のサーバ装置の性能を上回っている場合がある)。
また、仮に少数の識別子に対する処理で、単一のサーバ装置の大部分の性能が必要な場合についても、そのサーバ装置で処理できる識別子の数が大幅に小さくなり、処理要求への応答に必用な識別子に関連したデータを複数のサーバ装置で分割して持つことでスケールアウトを実現する際に、記憶容量の利用効率の低いサーバ装置が発生し、サーバ装置の効率が低下する。その結果として、サーバ装置全体のコストが増加するという問題が発生する。更に、コンシステントハッシング法を用いた場合、非常に発生頻度の高い識別子を割り当てられたサーバ装置の負荷が非常に高くなり、発生頻度の低い識別子のみを割り当てられたサーバ装置の負荷が小さくなることが発生し、全体として、サーバ装置の負荷分散が十分に行われず、結果として、必要なサーバ装置の台数が増加するという問題が発生する。
上述のコンシステントハッシング法を用いた場合の問題点として、(1)単一の識別子の発生頻度が、単一のサーバ装置で処理できる性能を超えている場合、コンシステントハッシング法が利用できないこと、(2)少数の識別子の発生頻度の割当によって、単一のサーバ装置で処理できる性能を超えている場合、十分な数の識別子に対する処理ができなくなり、サーバ装置の記憶容量の利用効率が低下すること、(3)発生頻度の高い識別子を割り当てられたサーバ装置と、発生頻度の小さい識別子のみを割り当てられたサーバ装置との間でサーバ装置の負荷の偏りが発生し必要なサーバ装置台数が増加することが挙げられる。
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、要求処理の負荷を分散し、且つ、記憶装置の容量を小さくすることを目的とする。
上述した課題を解決し、目的を達成するため、サーバ制御方法は、サーバ制御装置が実行するサーバ制御方法であって、同一のデータをそれぞれ記憶する複数のサーバ装置に対してクライアント装置がデータを要求した際に、サーバ装置がクライアント装置から受信する識別子の受信頻度をそれぞれ取得する取得ステップと、前記取得ステップによって取得された各識別子の受信頻度に応じて、各識別子の順位を決定する決定ステップと、前記決定ステップによって決定された各識別子の順位に応じて、順位が第一閾値よりも高く受信頻度が高い識別子が属する第一のグループ、順位が前記第一閾値以下であって第二閾値よりも高く受信頻度が中程度の識別子が属する第二のグループ、または、順位が前記第二閾値以下であって受信頻度が低い識別子が属する第三のグループのいずれかに各識別子を振り分ける振分ステップと、前記第一のグループに振り分けられた識別子により識別されるデータの要求に対する応答処理を、全てのサーバ装置のうちのいずれかのサーバ装置に割り当て、前記第二のグループに振り分けられた識別子により識別されるデータの要求に対する応答処理を、複数のサーバのうちのいずれかのサーバ装置に割り当て、前記第三のグループに振り分けられた識別子により識別されるデータの要求に対する応答処理を、一つのサーバ装置に割り当てる割当ステップと、前記第二のグループに属する識別子により識別されるデータの要求に対する応答処理が割り当てられるサーバ装置の延べ台数を、全サーバ装置の台数よりも大きな値とするように、前記第一閾値および前記第二閾値を設定する設定ステップと、を含んだことを特徴とする。
また、サーバ制御装置は、同一のデータをそれぞれ記憶する複数のサーバ装置に対してクライアント装置がデータを要求した際に、サーバ装置がクライアント装置から受信する識別子の受信頻度をそれぞれ取得する取得部と、前記取得部によって取得された各識別子の受信頻度に応じて、各識別子の順位を決定する決定部と、前記決定部によって決定された各識別子の順位に応じて、順位が第一閾値よりも高く受信頻度が高い識別子が属する第一のグループ、順位が前記第一閾値以下であって第二閾値よりも高く受信頻度が中程度の識別子が属する第二のグループ、または、順位が前記第二閾値以下であって受信頻度が低い識別子が属する第三のグループのいずれかに各識別子を振り分ける振分部と、前記第一のグループに振り分けられた識別子により識別されるデータの要求に対する応答処理については、全てのサーバ装置のうちのいずれかのサーバ装置に割り当て、前記第二のグループに振り分けられた識別子により識別されるデータの要求に対する応答処理については、前記全てのサーバ装置より少ない複数のサーバのうちのいずれかのサーバ装置に割り当て、前記第三のグループに振り分けられた識別子により識別されるデータの要求に対する応答処理については、一つのサーバ装置に割り当てる割当部と、前記第二のグループに属する識別子により識別されるデータの要求に対する応答処理が割り当てられるサーバ装置の延べ台数を、全サーバ装置の台数よりも大きな値とするように、前記第一閾値および前記第二閾値を設定する設定部と、を備えたことを特徴とする。
本願に開示するサーバ制御方法およびサーバ制御装置は、要求処理の負荷を分散し、且つ、記憶装置の容量を小さくすることが可能である。
図1は、第一の実施形態に係るシステムの構成の一例を示す図である。 図2は、第一の実施形態に係る要求処理サーバ装置の構成を説明するための図である。 図3は、要求処理サーバ装置側要求処理用データベースのデータ構造の一例を示す図である。 図4は、第一の実施形態に係るデータ管理装置の構成を説明するための図である。 図5は、データ管理装置側要求処理用データベースのデータ構造の一例を示す図である。 図6は、要求処理サーバ装置データベースのデータ構造の一例を示す図である。 図7は、ハッシュ値要求処理サーバ装置変換用データベースのデータ構造の一例を示す図である。 図8は、データ管理装置側分散度決定用データベースのデータ構造の一例を示す図である。 図9は、識別子のランクの領域の分割方法を説明する図である。 図10は、ホットゾーン・ノーマルゾーン・コールドゾーン決定の為の入力と出力を示す図である。 図11は、識別子の頻度の分布が完全にジップの法則に従う場合のジップ定数の決定方法を説明する図である。 図12は、識別子の頻度の分布が完全にジップの法則に従わない場合のジップ定数の決定方法を説明する図である。 図13は、識別子の頻度の分布が完全にジップの法則に従わない場合のジップ定数の決定方法を説明する図である。 図14は、V≧1且つp≧1のときのRとRの関係を示す図である。 図15は、V≧1且つ0<p<1のときのRとRの関係を示す図である。 図16は、V<1且つp≧1のときのRとRの関係を示す図である。 図17は、V<1且つ0<p<1のときのRとRの関係を示す図である。 図18は、第一の実施形態に係る負荷分散転送装置の構成を説明するための図である。 図19は、負荷分散転送装置側分散度決定用データベースのデータ構造の一例を示す図である。 図20は、処理用データ取得処理の処理手順を示すフローチャートである。 図21は、サービス応答処理の処理手順を示すフローチャートである。 図22は、頻度情報更新部の処理手順を示すフローチャートである。 図23は、頻度情報取得要求部の処理手順を示すフローチャートである。 図24は、処理用データ応答部の処理手順を示すフローチャートである。 図25は、識別子割当決定部の処理手順を示すフローチャートである。 図26は、頻度情報取得部の処理手順を示すフローチャートである。 図27は、分散度決定部の処理手順を示すフローチャートである。 図28は、ランク決定部の処理手順を示すフローチャートである。 図29は、サーバ装置データ送信部の処理手順を示すフローチャートである。 図30は、識別子割当通知部の処理手順を示すフローチャートである。 図31は、識別子割当受信部の処理手順を示すフローチャートである。 図32は、サーバ装置データ受信部の処理手順を示すフローチャートである。 図33は、要求振分部の処理手順を示すフローチャートである。 図34は、サーバ装置数の決定処理の処理手順を示すフローチャートである。 図35は、ホット・ノーマルゾーン境界とノーマル・コールドゾーン境界の決定処理の処理手順を示すフローチャートである。 図36は、V≧1且つp=1のときのRとRの決定処理の処理手順を示すフローチャートである。 図37は、V≧1且つp≠1のときのRとRの決定処理の処理手順を示すフローチャートである。 図38は、V<1且つp=1のときのRとRの決定処理の処理手順を示すフローチャートである。 図39は、V<1且つp≠1のときのRとRの決定処理の処理手順を示すフローチャートである。 図40は、サーバ制御プログラムを実行するコンピュータを示す図である。 図41は、ラウンドロビン法を用いた既存技術を説明する図である。 図42は、コンシステントハッシング法を用いた既存技術を説明する図である。 図43は、コンシステントハッシング法におけるサーバ選択方法を説明する図である。 図44は、コンシステントハッシング法によるスケールアウトの仕組みを説明する図である。 図45は、ジップの法則の発生頻度分布の例を示す図である。
以下に添付図面を参照して、この発明に係るサーバ制御方法およびサーバ制御装置の実施形態を詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。
[第一の実施形態]
以下の実施の形態では、第一の実施形態に係るシステムの構成、要求処理サーバ装置の構成、データ管理装置の構成、負荷分散転送装置の構成および各装置による処理の流れを順に説明し、最後に第一の実施形態による効果を説明する。
[システムの構成]
まず、第一の実施形態に係る負荷分散転送装置が適用されるシステムの構成の一例を説明する。図1は、第一の実施形態に係るシステムの構成の一例を示す図である。図1に示すように、第1の実施形態に係るシステムは、複数の要求処理サーバ装置100A〜100D、データ管理装置200、負荷分散転送装置300、複数のクライアント400A〜400Cを有する。なお、以下では、要求処理サーバ装置100A〜100Dについて、特に区別することなく説明する場合には、要求処理サーバ装置100と記載し、クライアント400A〜400Cについて、特に区別することなく説明する場合には、クライアント400と記載する。
要求処理サーバ装置100A〜100Dは、各種データをそれぞれ記憶しており、クライアント400A〜400Cから識別子を受け付けると、識別子で特定される応答を送信する。
データ管理装置200は、各識別子の発生頻度に関する情報を取得し、識別子を要求処理サーバ装置100に割り当てる。具体的には、データ管理装置200は、要求処理サーバ装置100が提供するサービスを決定する識別子を、識別子の発生頻度の高いものから小さいものの順序で並べ、識別子の領域を三つの領域に分割する。ここで、発生頻度の高い領域をホットゾーン、発生頻度の小さい領域をコールドゾーン、ホットゾーンとコールドゾーンに挟まれた領域をノーマルゾーンと呼ぶことにする。次に、ホットゾーン、ノーマルゾーン、コールドゾーンの領域毎に異なる負荷分散方法を採用する。ホットゾーンの領域に含まれる識別子の処理は、要求処理サーバ装置100全体で負荷を分散する。コールドゾーンの領域に含まれる識別子に対しては、コンシステントハッシング法と同様に、識別子のハッシュ値によって決まる要求処理サーバ装置100で処理を行うことで、要求処理サーバ装置100間で担当する識別子を分割し、負荷を分散する。
また、データ管理装置200は、ノーマルゾーンの領域に含まれる識別子に対しては、各識別子の発生頻度に応じた複数、且つ、全サーバ装置数未満の要求処理サーバ装置100で負荷分散を行うとともに、要求処理サーバ装置100間で担当する識別子を分割することで、負荷を分散する。ホットゾーンとノーマルゾーンにおける、各識別子の処理を行う複数の要求処理サーバ装置100に対してはラウンドロビン法により負荷分散を行う。
負荷分散転送装置300は、クライアント400A〜400Cから受信した識別子を含む処理要求を要求処理サーバ装置100A〜100Dに転送する。
まず、クライアント400A〜400Cは、識別子を含む処理要求を負荷分散転送装置300に送信する。次に、負荷分散転送装置300は、要求処理サーバ装置100A〜100Dから一つの要求処理サーバ装置100を決定し、クライアント400A〜400Cから受信した処理要求を、決定した要求処理サーバ装置100に送信する。負荷分散転送装置300、要求処理サーバ装置100A〜100Dが、上記の動作に必要なデータは、データ管理装置200において保持される。なお、負荷分散転送装置300、要求処理サーバ装置100A〜100Dおよびデータ管理装置200は、物理的な筐体を表すものではなく、あるサーバの筐体に、負荷分散転送装置、要求処理サーバ装置、データ管理装置の機能の一つ、または、複数の組合せを搭載してもよい。また、図1では、負荷分散転送装置を一台として説明しているが、複数台としてもよい。
[要求処理サーバ装置の構成]
次に、図2を用いて、図1に示した要求処理サーバ装置100の構成を説明する。図2は、第一の実施形態に係る要求処理サーバ装置100の構成を説明するための図である。図2に示すように、要求処理サーバ装置100は、通信制御I/F部101、制御部102、記憶部103を有する。通信制御I/F部101は、データ管理装置200、および、負荷分散転送装置300との通信を行う。
記憶部103は、図2に示すように、要求処理サーバ装置側要求処理用データベース108を有する。記憶部103は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。
要求処理サーバ装置側要求処理用データベース108は、例えば、図3に例示するように、クライアントから送信される「識別子」と、該当する識別子を含む要求処理の発生回数を表す値である「頻度」と、識別子を含む要求処理に対する応答を行うための「処理用データ」とが対応付けて記憶される。
図2に戻って、制御部102は、サービス応答部104と、頻度情報更新部105と、頻度情報取得要求処理部106と、処理用データ取得部107とを有する。ここで、制御部102は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路やASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路である。
サービス応答部104は、サービスの処理要求を受信した場合に、処理要求に含まれている識別子に対応する応答を作成して、応答を送信する。具体的には、サービス応答部104は、最初に、サービスの処理要求を受信すると、処理要求に含まれる識別子を取り出し、これを含むレコードを要求処理サーバ装置側要求処理用データベース108から検索する。ここで、サービス応答部104は、処理要求に含まれている識別子が要求処理サーバ装置側要求処理用データベース108に含まれているか、否かを検査する。本検査において、サービス応答部104は、識別子が要求処理サーバ装置側要求処理用データベースに含まれていた場合、検索したレコードから該当する識別子に対する処理用データを用いて処理要求に対する応答を作成する。
その後、サービス応答部104は、受信した処理要求に含まれる識別子に対する頻度情報を更新するために頻度情報更新部に依頼して頻度情報更新処理を実施し、最後に、応答を送信する。また、上記の検査において、サービス応答部104は、識別子が要求処理サーバ装置側要求処理用データベースに含まれていなかった場合、登録されていない識別子に対する応答を作成し、応答を送信する。
頻度情報更新部105は、要求処理サーバ装置側要求処理用データベース108における頻度情報の変更を行う。具体的には、頻度情報更新部105は、最初に、処理要求に含まれる識別子をもとにして、要求処理サーバ装置側要求処理用データベース108から該当するレコードを検索する。次に、頻度情報更新部105は、該当するレコードの頻度情報を読み込み後、頻度情報をインクリメントし、その後、該当するレコードの頻度情報の変更を行う。なお、前述したように、頻度の情報は、該当する識別子を含む要求処理の発生回数を表す値を格納している。
頻度情報取得要求処理部106は、データ管理装置200から、頻度情報取得要求処理を受信すると、識別子と頻度情報の組を取得し、取得した識別子と頻度情報の組を返信する。具体的には、頻度情報取得要求処理部106は、最初に、データ管理装置から、頻度情報取得要求処理を受信すると、要求処理サーバ装置側要求処理用データベース108の、i番目のレコードについて、iを1からNまで変化させながら、全てのレコードに対して以下の処理を行う。
つまり、頻度情報取得要求処理部106は、i番目のレコードについて、識別子と頻度情報の組を取得する。取得した頻度情報について、頻度情報を、頻度情報を取得している期間で割り、実際の単位時間当たりの発生回数に変換し、識別子とともにデータ管理装置に送信するために記憶する。そして、頻度情報取得要求処理部106は、全てのレコードに対して上記の処理を実施したのち、送信用に記憶した識別子と、識別子に対する単位時間当たりの発生回数の組を全て送信する。
処理用データ取得部107は、処理用データを送信する旨を、データ管理装置200に要求し、要求処理サーバ装置用の処理用データを受信して識別子と処理用データの組を要求処理サーバ装置側要求処理用データベース108に格納する。
具体的には、処理用データ取得部107は、まず、処理用データを送信する旨を、データ管理装置200に要求する。このとき、本要求に、要求を行う要求処理サーバ装置情報を含める。そして、この要求処理サーバ用の処理用データを送信する旨を受信したデータ管理装置200は、処理用データを要求処理サーバ装置100に対して応答する。続いて、処理用データ取得部107は、データ管理装置200から送られてきた、該当要求処理サーバ装置用の処理用データを受信する。その後受信した識別子と処理用データの組を図3で示す要求処理サーバ装置側要求処理用データベース108に格納する。
[データ管理装置の構成]
次に、図4を用いて、図1に示したデータ管理装置200の構成を説明する。図4は、第一の実施形態に係るデータ管理装置200の構成を説明するための図である。図4に示すように、データ管理装置200は、通信制御I/F部201、制御部202、記憶部203を有する。通信制御I/F部201は、要求処理サーバ装置100との通信を行う。
データ管理装置200は、まず、サーバ装置が提供するサービスを決定する識別子を、識別子の発生頻度の高いものから小さいものの順序で並べ、識別子の領域をノーマルゾーン、ホットゾーンとコールドゾーンの三つの領域に分割する。
次に、ホットゾーン、ノーマルゾーン、コールドゾーンの領域毎に異なる負荷分散方法を採用する。ホットゾーンの領域に含まれる識別子の処理は、サーバ装置全体で負荷を分散する。コールドゾーンの領域に含まれる識別子に対しては、コンシステントハッシング法と同様に、識別子のハッシュ値によって決まるサーバ装置で処理を行うことで、サーバ装置間で担当する識別子を分割し、負荷を分散する。ノーマルゾーンの領域に含まれる識別子に対しては、各識別子の発生頻度に応じた複数、且つ、全サーバ装置数未満のサーバ装置で負荷分散を行うとともに、サーバ装置間で担当する識別子を分割することで、負荷を分散する。ホットゾーンとノーマルゾーンにおける、各識別子の処理を行う複数のサーバ装置に対してはラウンドロビン法により負荷分散を行う。
ここで、ノーマルゾーンに含まれる識別子の中で最もランクの値が小さい、即ち、発生頻度が最も高いランクをRで表し、コールドゾーンに含まれる識別子の中で最もランクの値が小さい、即ち、発生頻度が最も高いランクをRで表すこととする。今、ランクRの識別子の処理を担当するサーバ装置の台数を、Ndiv(r)で表すと、ノーマルゾーンの識別子を処理するために必要なサーバ装置の延台数は、下記(2)式となり、全サーバ装置の数を、Nservで表すと、Nservに対する下記(2)式でもとめられる倍率が、十分に大きな倍率Kに近い値となるように、R、および、Rを決定する。即ち、下記(3)式となり、Kを十分に大きな値とする。また、上記条件を満たすRとRの組合せの中で、R、および、Rが出来るだけ小さな値となるRとRを選択する。
Figure 0005809652
Figure 0005809652
記憶部203は、図4に示すように、データ管理装置側要求処理用データベース211、要求処理サーバ装置データベース212、ハッシュ値要求処理サーバ装置変換用データベース213およびデータ管理装置側分散度決定用データベース214を有する。記憶部203は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。
データ管理装置側要求処理用データベース211は、例えば、図5に例示するように、「識別子」が登録されており、各識別子に対して、クライアント400からの要求処理に必要な「処理用データ」、識別子に対する要求処理が発生する「頻度」、および、識別子を頻度の高いものから低いものの順序で並べたときの順番である「ランク」が管理されている。
要求処理サーバ装置データベース212は、例えば、図6に例示するように、登録されている要求処理サーバ装置100の「番号」と、要求処理サーバ装置100を識別する情報である「要求処理サーバ装置情報」とを記憶する。
ハッシュ値要求処理サーバ装置変換用データベース213は、例えば、図7に例示するように、識別子のハッシュ値の範囲である「担当領域」と、その範囲に含まれる識別子の処理を担当する要求処理サーバ装置100を示す「要求処理サーバ装置情報」とを記憶する。
データ管理装置側分散度決定用データベース214は、例えば、図8に例示するように、「識別子のハッシュ値」と、その識別子のハッシュ値に対応する「識別子のリスト」と、その識別子を処理するときの「分散度」とを記憶する。ここで分散度とは、該当する識別子の処理を何台の要求処理サーバに分散するかを表す値であり、この値が0の場合は、全ての要求処理サーバに処理を分散することを意味する。
図4に戻って、制御部202は、処理用データ応答部204と、識別子割当決定部205と、頻度情報取得部206と、識別子割当通知部207と、分散度決定部208と、ランク決定部209と、サーバ装置データ送信部210とを有する。ここで、制御部202は、CPUやMPUなどの電子回路やASICやFPGAなどの集積回路である。
具体的には、処理用データ応答部204は、受信した処理用データ要求の送信元に対して応答として送信する。具体的には、処理用データ応答部204は、まず、処理用データ要求を受信すると、ハッシュ値の下限Hminと上限Hmaxの差をサーバ数Nで割った値Hwidthを求め、これを各サーバが要求処理を担当するハッシュ値の幅とする。要求処理サーバ装置データベース212から、処理データ要求の送信元の要求処理サーバ装置100を検索し、その要求処理サーバ装置100の要求処理サーバ装置データベース212内に登録されている番号をnとする。データ管理装置側要求処理用データベース211に登録されている全ての識別子に対して、以下の処理を行う。データ管理装置側要求処理用データベース211のi番目に登録されているレコードを検索し、ハッシュ値をh、ランクをr、分散度をdとする。ハッシュ値hに対して、Hmin+(n−1)Hwidth≦h、且つ、h<Hmin+nwidthを満たすかを検査する。
ここで検査の条件を満足しなかった場合は、1≦r<Rを満足するかを検査する。Hmin+(n−1)Hwidth≦h、且つ、h<Hmin+nwidthを満たすか、および、1≦r<Rを満足するかの検査の条件を満足した場合は、データ管理装置側要求処理用データベースのi番目に登録されているレコードの識別子と処理用データの組を応答用として記憶する。そして、1≦r<Rを満足するかの検査の条件を満足しなかった場合は、R≦r<Rの条件を満足するかを検査する。この条件を満足した場合は、Hmin+(n−1)Hwidth≦h、且つ、h<Hmin+nwidthとなるnをもとめる。その後、n≦n<n+dの条件を満足するかを検査し、満足する場合は、データ管理装置側要求処理用データベース211のi番目に登録されているレコードの識別子と処理用データの組を応答用として記憶する。
また、n≦n<n+dの条件を満足するかの検査の条件を満足しない場合、および、R≦r<Rの条件を満足するかの検査において、条件を満足しなかった場合は、データ管理装置側要求処理用データベースのi番目に登録されているレコードに関して、応答用のデータとしては、何も記憶しない。以上を、1≦i≦Nを満たす全てのiについて実行する。最後に、全ての応答用に記憶した識別子と処理用データの組を、受信した処理用データ要求の送信元に対して応答として送信する。
識別子割当決定部205は、図9に示すように、決定された各識別子のランクに応じて、ランクがRよりも高く発生頻度が高い識別子が属するホットゾーン、ランクがR以下であってRよりも高く発生頻度が中程度の識別子が属するノーマルゾーン、または、ランクがR以下であって発生頻度が低い識別子が属するコールドゾーンのいずれかに各識別子を振り分ける。
また、識別子割当決定部205は、ホットゾーンに振り分けられた識別子により識別されるデータの要求に対する応答処理を、全ての要求処理サーバ装置100のうちのいずれかの要求処理サーバ装置100に割り当て、ノーマルゾーンに振り分けられた識別子により識別されるデータの要求に対する応答処理を、複数の要求処理サーバ装置100のうちのいずれかの要求処理サーバ装置100に割り当て、コールドゾーンに振り分けられた識別子により識別されるデータの要求に対する応答処理を、一つのサーバ装置に割り当てる。
また、識別子割当決定部205は、ノーマルゾーンに属する識別子により識別されるデータの要求に対する応答処理が割り当てられる要求処理サーバ装置100の延べ台数を、全要求処理サーバ装置100の台数よりも十分に大きな値とするように、RおよびRを設定する。
具体的には、識別子割当決定部205は、まず、コールドゾーンの最も頻度の高いランクであるR、および、ノーマルゾーンの最も頻度の高いランクであるRを決定する。この処理については、後述する。次に、ハッシュ値の下限Hminと上限Hmaxの差をサーバ数Nで割った値Hwidthを求め、これを各サーバが要求処理を担当するハッシュ値の幅とする。その後、要求処理サーバ装置データベースに登録されている、番号iが、1からNである各サーバiについてループを繰り返す。ループ内の各繰り返しでは、以下の処理を行う。サーバiの担当するハッシュ値の下限をHmin+(i―1)Hwidthとする。
その後、サーバiの担当するハッシュ値の上限をHmin+iHwidthとする。これらの結果サーバiの担当するハッシュ値は、ここで計算した下限以上、且つ、上限未満を担当することになる。最後に、図6に例示した要求処理サーバ装置データベース212から、番号がiである要求処理サーバ装置情報を検索し、検索した要求処理サーバ装置情報・ハッシュ値上限・下限の範囲を、図7に示すハッシュ値要求処理サーバ装置変換用データベースに登録する。ここで、ハッシュ値要求処理サーバ装置変換用データベース213は、識別子のハッシュ値の範囲である担当領域と、その範囲に含まれる識別子の処理を担当する、要求処理サーバ装置情報によって構成される。
上記の識別子割当決定部の処理の中で、説明したコールドゾーンの最も頻度の高いランクであるR、および、ノーマルゾーンの最も頻度の高いランクであるRの決定は、以下のように行う。
図10は、これらのR、Rの決定の流れを表す。まず、要求処理サーバ装置単体で処理可能な識別子の発生頻度fは、データ管理装置の外部から指定され入力される。次に、ジップ定数p、及び、総識別子数Nを決定する。最後に、要求処理サーバ装置総数N、コールドゾーンの最も頻度の高いランクであるR、および、ノーマルゾーンの最も頻度の高いランクであるRを決定する。
図10で示した流れに従い、最終的な、コールドゾーンの最も頻度の高いランクであるR、および、ノーマルゾーンの最も頻度の高いランクであるRの決定する処理を以下に説明するが、まず、ジップ定数pの決定について説明する。
まず、発生頻度f(r)は、上述した(1)式で表すことができる。(1)式の両辺の対数をとると、下記の(4)式になる。
Figure 0005809652
よって、頻度、及び、ランクを対数としたグラフを描くことで、その傾きがジップ定数pを表すことになる。図11は、ジップの法則に従う場合の頻度とランクを縦軸・横軸とも対数にしたグラフに描いた状態を表しており、この傾きによりジップ定数pを計算することができる。頻度とランクの関係が、完全には、ジップの法則に従わない場合でも、最小二乗法を用いて、分布に近い直線の傾きを求めることが可能であり、これによりジップ定数pを定めることができる。
また、このとき、グラフの切片log aについては、図12のように、実際の頻度とランクの関係を全てのランクにおいて、上回るように分布を定めても良い。また、図13のように、一定の値(図中では、10)よりも頻度の大きい領域、即ち、10〜10の領域のランクにおいて、実際の頻度とランクの関係を上回るように分布を定めても良い。更に、一定の値よりも頻度の大きい領域において、最小二乗法などを用いて分布に近い直線を求めても良い。
ジップ定数pを決定した後、総識別子数Nを決定する。総識別子数Nの決定については、図5で示したデータ管理装置側要求処理用データベース211に含まれる識別子を数え上げることで決定することができる。その後、要求処理サーバ装置総数Nの決定を行う。本処理については、図34を用いて後述する。
次に、p=1かどうかの判定を行う。p=1の場合、まず、それぞれ、値VとVを計算する。ここで、V、および、Vは、それぞれ、R、および、Rを決定するための基準となる値である。その後、V≧1の判定を行い、V≧1の場合、「V≧1且つp=1のときのRとRの決定」(詳細は、図36)を実行する。この判定で、V≧1が否定された場合、「V<1且つp=1のときのRとRの決定」(詳細は、図38)を実行する。
上記の判定において、p=1が否定された場合、それぞれ、値VとVを計算する。その後、V≧1の判定を行い、V≧1の場合、「V≧1且つp≠1のときのVとVの決定」(詳細は、図37)を実行する。上記の判定で、V≧1が否定された場合、「V<1且つp≠1のときのRとRの決定」(詳細は、図39)を実行する。
上記で説明した、「要求処理サーバ装置総数Nの決定」、「V≧1且つp=1のときのRとRの決定」、「V<1且つp=1のときのRとRの決定」、「V≧1且つp≠1のときのRとRの決定」、及び、「V<1且つp≠1のときのRとRの決定」について、それぞれ説明する。
「要求処理サーバ装置総数Nの決定」について、ランク1からランクNまでの発生頻度の総和をSとして求める。そして、Sを要求処理サーバ装置単体で処理可能な識別子の発生頻度fで割ることで、必要な要求処理サーバ装置総数を求める。要求処理サーバ装置総数は、1以上の整数でなければならないため、ここで計算した値を下回らない最小の整数を求めNとする。
次に、「V≧1且つp=1のときのRとRの決定」について説明する。まず、Vについて、その値を超えない最大の整数を求めRに代入する。次に、このRを基にしたVを求め、そのVを下回らない最小の整数をRに代入する。RとRの値が、下記(5)式を満足しているかを判定し、満足している場合は、それらの値をRとRとして採用する。上記の判定で条件を満足していない場合は、Rを1だけ増加させ、上記したRを基にしたVを求め、そのVを下回らない最小の整数をRに代入する処理を、条件を満足するまで繰り返し実施する。
Figure 0005809652
次に、「V<1且つp=1のときのRとRの決定」について説明する。まず、下記(6)式を満足するVを求め、Vの値を超えない最大の整数を求めてRに代入する。次に、このRを基にしたVを求め、そのVを下回らない最小の整数をRに代入する。Rの値が、R≧1を満足しているかを判定し、満足している場合は、それらの値をRとRとして採用する。上記の判定で条件を満足していない場合は、Rを1だけ増加させ、上記したRを基にしたVを求め、そのVを下回らない最小の整数をRに代入する処理を、条件を満足するまで繰り返し実施する。
Figure 0005809652
次に、「V≧1且つp≠1のときのRとRの決定」について説明する。まず、決定したVについて、その値を超えない最大の整数を求めRに代入する。次に、このRを基にしたVを求め、そのVを下回らない最小の整数をRに代入する。RとRの値が、上記(5)式を満足しているかを判定し、満足している場合は、それらの値をRとRとして採用する。上記の判定で条件を満足していない場合は、Rを1だけ増加させ、上記したRを基にしたVを求め、そのVを下回らない最小の整数をRに代入する処理を、条件を満足するまで繰り返し実施する。
次に、「V<1且つp≠1のときのRとRの決定」について説明する。まず、V −p[V−(1−p)KN]=1、且つ、V≧0を満足するVを求め、Vの値を超えない最大の整数を求めてRに代入する。次に、このRを基にしたVを求め、そのVを下回らない最小の整数をRに代入する。Rの値が、R≧1を満足しているかを判定し、満足している場合は、それらの値をRとRとして採用する。上記の判定で条件を満足していない場合は、Rを1だけ増加させ、上記したRを基にしたVを求め、そのVを下回らない最小の整数をRに代入する処理を、条件を満足するまで繰り返し実施する。
本発明では、RとRがなるべく小さくなる組合せを選択するために、識別子の発生頻度の分布がジップの法則に近く、ランクrの識別子の発生頻度が1/rに比例する場合に、Rとして、p≠1のとき、(1−p)KN/(1−N (p−1/p))、p=1のとき、pKN/logNの近傍の値を用いる。また、Rとして、p≠1のとき、R≧0且つR −p[R−(1−p)KN]=1を満たすRの値、p=1のとき、R=exp(KN/R)を満足するRの値の近傍の値を用いる。また、Rとして、p≠1のとき、{R[R−(1−p)KN]}1/(1p)、p=1のとき、Rexp(−KN/R)の近傍の値を用いる。
ここで、上記したRとRの決定方法を採用する理由について説明する。ノーマルゾーンにおける各ランクの負荷を分散させるサーバ数を以下の(7)式で表される台数とする。
Figure 0005809652
ノーマルゾーンにおける、負荷を分散させるサーバの延べ台数は、各ランクでの分散させるサーバ数の総和であり、下記(8)式のようになる。
Figure 0005809652
今、あるランクrの負荷を、上記(7)式で表される台数のサーバに分散した場合、ランクrの負荷を分割した結果として、サーバ1台当りに割り当てられる負荷は、下記(9)式で表される。
Figure 0005809652
上式の分母は、サーバ台数が整数であるため、値がランク毎に異なってくる。そこで、各サーバに多くのランクの負荷を割り当てることにより、統計的な多重化の効果により、サーバ毎の負荷のばらつきが減ることになる。
そこで、上記の(8)式の値をサーバ台数のK倍(Kは1以上の実数)として、Kを、ある程度の大きな値とすることで負荷の平均化を計るものとする。即ち下記(10)式のようになる。
Figure 0005809652
このことにより、Rが下記(11)式の条件を満たすとき、負荷を分散させるサーバの延べ台数はKN以上を確保できる。
Figure 0005809652
各ランクのサーバ台数は、式(7)で表され、これはサーバ台数Nを超えることができないことから下記(12)式の条件を満足する必要がある。よって下記(13)式のようになる。
Figure 0005809652
Figure 0005809652
今、あるRの値に対して、上式の条件を満たすには、R がとることのできる値の最大値は、N であることから、N ≦R になり、結果として、下記(14)式を満たす必要がある。
Figure 0005809652
式(11)と式(14)の不等式の等号が成立する式について、RとRを変数としたグラフを描くと、図14(V≧1且つp≧1の場合)、図15(V≧1且つ0<p<1の場合)、図16(V<1且つp≧1の場合)、及び、図17(V<1且つ0<p<1の場合)のようになる。ここで、式(11)と式(14)の不等式の等号が成立する式の交点となる、R、及び、Rを、それぞれ、V、及び、Vとする。Vは、下記(15)式のようになる。
Figure 0005809652
図14のV≧1且つp≧1の場合、及び、図15のV≧1且つ0<p<1の場合、領域Aでは、式(11)と式(14)の条件が満足される領域である。領域B、及び、領域Cでは、サーバ数としてNを超えた台数が必要であり、領域C、及び、領域Dでは、式(11)が満たされず、ノーマルゾーンにおける、負荷を分散させるサーバの延べ台数が十分ではない領域である。よって、領域Aの中でRとRを求める必要がある。
領域Aの中で、RとRによって、N台のサーバに必要なメモリの延べ使用量がどのように変化するかを考える。コールドゾーンでは、各ランクに割り当てられるサーバ台数は1台であり、各ランクを処理するために必要な情報は、1台のサーバにのみ保持されるため、必要な延べメモリ量は、ノーマルゾーンやホットゾーンと比較して最小である。また、ホットゾーンは、N台のサーバで処理されるため、各ランクを処理するために必要な情報は、N台のサーバに保持されるため、必要な延べメモリ量は最大である。以上から、RとRを最小化することが、メモリの延べ使用量を最小化することにつながる。図14と図15において、RとRを最小化できるのは、式(11)と式(14)の不等式の等号が成立する式の交点となり、この交点に近い領域Aに含まれる格子点を、RとRとする必要がある。
次に、図16のV<1且つp≧1の場合、及び、図17のV<1且つ0<p<1の場合、領域Eでは、式(11)と式(14)の条件とRが1以上である条件が満足される領域である。領域G、及び、領域Hでは、サーバ数としてNを超えた台数が必要であり、領域H、領域I、及び、領域Jでは、式(11)が満たされず、ノーマルゾーンにおける、負荷を分散させるサーバの延べ台数が十分ではない領域である。更に、領域Fは、Rが1未満となり、定義に反する領域である。よって、領域Eの中でRとRを求める必要がある。領域Eの中で、図14と図15の場合と同じように、メモリの延べ使用量を最小化するため、RとRを最小化できるのは、式(11)の不等式の等号が成立する式とR=1の交点となり、この交点に近い領域Aに含まれる格子点を、RとRとする必要がある。以上のような理由から、第一の実施形態のようなRとRの決定方法を採用することで、効率的なサーバ利用に繋げることができる。
頻度情報取得部206は、同一のデータをそれぞれ記憶する複数の要求処理サーバ装置100に対してクライアント400がデータを要求した際に、要求処理サーバ装置がクライアント400から受信する識別子の受信頻度をそれぞれ取得する。
まず、頻度情報取得部206は、データ管理装置側要求処理用データベース211の全識別子の頻度情報を0に初期化し、要求処理サーバ装置データベース212に登録されている全サーバに対して、以下の処理を行う。各要求処理サーバ装置100に対しては、まず、頻度情報取得要求を送信する。これに対して、送信先の要求処理サーバ装置100から、その要求処理サーバ装置100が要求処理を行った全識別子の頻度情報を、識別子と頻度の組のリストとして受信する。受信した全識別子と頻度の組に対して、識別子毎に、その頻度情報を、データ管理装置側要求処理用データベース211の該当する識別子の頻度カラムに加算する。以上により、データ管理装置側要求処理用データベース211で管理する全識別子について、要求処理サーバ装置100全体に対して行われた要求処理の頻度を計算する。
識別子割当通知部207は、ハッシュ値の担当領域と要求処理サーバ装置情報の組、および、識別子ハッシュ値と識別子リストと分散度の組を負荷分散転送装置300に送信する。具体的には、識別子割当通知部207は、ハッシュ値要求処理サーバ装置変換用データベース213に含まれるハッシュ値の担当領域と要求処理サーバ装置情報の組を全て、負荷分散転送装置300に対して送信する。次に、識別子割当通知部207は、データ管理装置側分散度決定用データベース214の識別子ハッシュ値と識別子リストと分散度の組を全て、負荷分散転送装置300に送信する。
分散度決定部208は、全てのサーバiに対して、ループにより、データ管理装置側要求処理用データベースに登録されているN個の識別子に対して分散度を決定し、データ管理装置側分散度決定用データベースに登録する。ループでは、iを1からNまで変化させながら、データ管理装置側要求処理用データベースのi番目のレコードに記録されている識別子Iのハッシュ値hを計算し、ランクをrとする。このランクrが、r<Rを満足するかを検査し、満足するときは、識別子Iの分散度を0とする。ここで、分散度が、0であるということは、該当する識別子の処理を全ての要求処理サーバ装置で負荷分散することを意味し、該当する識別子がホットゾーンに存在することを意味する。上記の検査で条件を満足しない場合は、R≦r<Rを満足するかを検査し、満足するときは、分散度を式(7)でもとめる。
この式(7)で求められる値は、R /rの値を下回らない最小の整数を表す。上記の検査を満足しないとき、分散度を1とするため、d=1とする。その後、データ管理装置側分散度決定用データベースからハッシュ値hを検索する。そして、ハッシュ値hのレコードの存在有無を判定し、存在した場合は、検索した分散度dを読み取り、データ管理装置側分散度決定用データベースから検索したハッシュ値hのレコードに対して、識別子Iが含まれていない場合は、識別子Iを追記し、分散度をmax(d,d)として登録する。ここで、max(d,d)は、dとdのうち、大きいほうの値を意味する。上記の判定においてレコードが存在しない場合は、データ管理装置側分散度決定用データベースに対して、新規のレコードとして、ハッシュ値h、識別子I、分散度dを登録する。以上の処理を1≦r≦Nに対して行う。
ランク決定部209は、取得された各識別子の受信頻度に応じて、各識別子のランクを決定する。具体的には、ランク決定部209は、データ管理装置側要求処理用データベースの識別子と頻度の組を頻度の高いものから低いものの順序でソートする。ソートしたときの各識別子の順序をその識別子のランクとして、データ管理装置側要求処理用データベースに登録する。上記の処理をループの処理で全ての識別子に対して行う。
サーバ装置データ送信部210は、要求処理サーバ装置データベース212に登録されている要求処理サーバ装置100の番号と要求処理サーバ装置情報の全ての組のリストを送信する。
[負荷分散転送装置の構成]
次に、図18を用いて、図1に示した負荷分散転送装置300の構成を説明する。図18は、第一の実施形態に係る負荷分散転送装置300の構成を説明するための図である。図18に示すように、負荷分散転送装置300は、通信制御I/F部301、制御部302、記憶部303を有する。通信制御I/F部301は、要求処理サーバ装置100、データ管理装置200、および、クライアント400との通信を行う。
記憶部303は、図18に示すように、ハッシュ値要求処理サーバ装置変換用データベース307、負荷分散転送装置用分散度決定用データベース308、要求処理サーバ装置データベース309を有する。記憶部303は、例えば、RAM、フラッシュメモリ等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。
ハッシュ値要求処理サーバ装置変換用データベース307および要求処理サーバ装置データベース309は、上述したデータ管理装置200のハッシュ値要求処理サーバ装置変換用データベース213および要求処理サーバ装置データベース212と同様の情報を記憶しているため、説明を省略する。
負荷分散転送装置用分散度決定用データベース308は、図19に例示するように、各識別子のハッシュ値を示す「識別子ハッシュ値」と、その識別子ハッシュ値を持つ「識別子リスト」と、識別子の「払出位置」と、識別子の「分散度」とを記憶する。
図18に戻って、制御部302は、要求振分処理部304と、識別子割当受信部305と、サーバ装置データ受信部306とを有する。ここで、制御部302は、CPUやMPUなどの電子回路やASICやFPGAなどの集積回路である。
識別子割当受信部305は、まず、データ管理装置200から、識別子に対するハッシュ値の担当領域と要求処理サーバ装置情報の組のリストを受信する。受信した、識別子に対するハッシュ値の担当領域と要求処理サーバ装置情報の組のリストを、負荷分散転送装置300が管理するハッシュ値要求処理サーバ装置変換用データベース307に登録する。次に、データ管理装置200から、識別子に対するハッシュ値、そのハッシュ値の識別子のリスト、分散度の組のリストを受信し、受信した識別子に対するハッシュ値、識別子のリスト、分散度を、負荷分散転送装置用分散度決定要データベース308の識別子ハッシュ値、識別子リスト、分散度として登録し、払出位置は、1として登録する。
サーバ装置データ受信部306は、データ管理装置200から、要求処理サーバ装置の番号と要求処理サーバ装置情報の組のリストを受信する。その後、受信した、要求処理サーバ装置の番号と要求処理サーバ装置情報の組のリストを負荷分散転送装置が管理する要求処理サーバ装置データベース309に受信した番号の昇順で登録する。要求処理サーバ装置データベース309は、データ管理装置200のもつ要求処理サーバ装置データベース212と同じ構造を持つ。
要求振分処理部304は、処理要求を受信すると、処理要求に含まれる識別子Iを取り出し、そのハッシュ値hを計算する。その計算したハッシュ値hを用いて、ハッシュ値要求処理サーバ装置変換用データベースの中から、hを担当領域に含む、レコードを検索し、hを担当領域とする要求処理サーバ装置情報をSとする。検索したSを元に、要求処理サーバ装置データベースを検索し、該当する要求処理サーバ装置の番号をvとし、負荷分散装置側分散度決定用データベースからハッシュ値hを検索する。その結果をもとに、ハッシュ値hのレコードが存在するかの検査を行い、レコードが存在した場合には、検索したレコードから分散度dと払出位置pを読み出す。このとき、d=0であれば、分散度をNとし、d=Nとする。読み出したpを用いて、要求処理サーバ装置データベースから番号がv+p−1のレコードを検索し、そのレコードの要求処理サーバ装置をSとする。その後、分散度決定用データベースから検索したハッシュ値hのレコードの払出位置をp+1(mod d)に変更し、要求処理サーバ装置Sに処理要求を転送する。ここで、p+1(mod d)は、p+1をdで割ったときの余りを表す。上記の検査において、レコードが存在しない場合には、Sの値は変更せず、そのまま要求処理サーバ装置Sに処理要求を転送する。
[要求処理サーバによる処理]
次に、図20を用いて、第一の実施形態に係る要求処理サーバ装置100による処理を説明する。図20は、処理用データ取得処理の処理手順を示すフローチャートである。
同図に示すように、処理用データ取得部107は、まず、処理用データを送信する旨を、データ管理装置200に要求する(S200)。このとき、本要求に、要求を行う要求処理サーバ装置情報を含める。そして、この処理用データ管理装置を受信したデータ管理装置200は、処理用データを要求処理サーバ装置100に対して応答する。続いて、処理用データ取得部107は、データ管理装置200から送られてきた、該当要求処理サーバ装置用の処理用データを受信する(S201)。その後受信した識別子と処理用データの組を図3で示す要求処理サーバ装置側要求処理用データベース108に格納する(S202)。最後に、要求処理サーバ装置側要求処理用データベース108の全てのレコードの頻度を、0として初期化する(S203)。
次に、図21を用いて、第一の実施形態に係る要求処理サーバ装置100による処理を説明する。図21は、サービス応答処理の処理手順を示すフローチャートである。同図に示すように、サービス応答部104は、最初に、サービスの処理要求を受信すると(S210)、処理要求に含まれる識別子を取り出し、これを含むレコードを要求処理サーバ装置側要求処理用データベース108から検索する(S211)。ここで、サービス応答部104は、処理要求に含まれている識別子が要求処理サーバ装置側要求処理用データベース108に含まれているか、否かを検査する(S212)。
本検査において、サービス応答部104は、識別子が要求処理サーバ装置側要求処理用データベースに含まれていた場合、検索したレコードから該当する識別子に対する処理用データを用いて処理要求に対する応答を作成する(S213)。その後、サービス応答部104は、受信した処理要求に含まれる識別子に対する頻度情報を更新するために頻度情報更新部に依頼して頻度情報更新処理を実施し(S214)、最後に、応答を送信する(S215)。また、S212の検査において、サービス応答部104は、識別子が要求処理サーバ装置側処理用データベースに含まれていなかった場合、登録されていない識別子に対する応答を作成し(S216)、応答を送信する(S215)。
次に、図22を用いて、第一の実施形態に係る要求処理サーバ装置100による処理を説明する。図22は、頻度情報更新部の処理手順を示すフローチャートである。同図に示すように、頻度情報更新部105は、最初に、処理要求に含まれる識別子をもとにして、要求処理サーバ装置側要求処理用データベース108から該当するレコードを検索する(S220)。次に、頻度情報更新部105は、該当するレコードの頻度情報を読み込み後、頻度情報をインクリメントし(S221)、その後、該当するレコードの頻度情報の変更を行う(S222)。なお、前述したように、頻度の情報は、該当する識別子を含む要求処理の発生回数を表す値を格納している。
次に、図23を用いて、第一の実施形態に係る要求処理サーバ装置100による処理を説明する。図23は、頻度情報取得要求部の処理手順を示すフローチャートである。同図に示すように、頻度情報取得要求処理部106は、最初に、データ管理装置から、頻度情報取得要求処理を受信する(S230)。要求処理サーバ装置側要求処理用データベースの、i番目のレコードについて、iを1からNまで変化させながら(S231、S235)、全てのレコードに対して以下の処理を行う。
つまり、頻度情報取得要求処理部106は、i番目のレコードについて、識別子と頻度情報の組を取得する(S232)。取得した頻度情報を、識別子とともにデータ管理装置200に送信するために記憶する(S233)。全てのレコードに対してS232とS233の処理を実施したのち(S234の判定において、Noの場合)、送信用に記憶した識別子と、頻度情報の組を全て送信する(S236)。
[データ管理装置による処理]
次に、図24を用いて、第一の実施形態に係るデータ管理装置200による処理を説明する。図24は、処理用データ応答部の処理手順を示すフローチャートである。同図に示すように、処理用データ応答部204は、まず、処理用データ要求を受信すると(S240)、ハッシュ値の下限Hminと上限Hmaxの差をサーバ数Nで割った値Hwidthを求め、これを各サーバが要求処理を担当するハッシュ値の幅とする(S241)。要求処理サーバ装置データベース212から、処理データ要求の送信元の要求処理サーバ装置100を検索し、その要求処理サーバ装置100の要求処理サーバ装置データベース212内に登録されている番号をnとする(S242)。データ管理装置側要求処理用データベース211に登録されている全ての識別子に対して、以下の処理を行う(S243、S253)。データ管理装置側要求処理用データベース211のi番目に登録されているレコードを検索し、ハッシュ値をh、ランクをr、分散度をdとする(S244)。ハッシュ値hに対して、Hmin+(n−1)Hwidth≦h、且つ、h<Hmin+nwidthを満たすかを検査する(S245)。
ここで検査の条件を満足しなかった場合は、1≦r<Rを満足するかを検査する(S246)。S245、および、S246での検査の条件を満足した場合は、データ管理装置側要求処理用データベースのi番目に登録されているレコードの識別子と処理用データの組を応答用として記憶する(S250)。S246の検査の条件を満足しなかった場合は、R≦r<Rの条件を満足するかを検査する(S247)。この条件を満足した場合は、Hmin+(n−1)Hwidth≦h、且つ、h<Hmin+nwidthとなるnをもとめる(S251)。その後、S252で、n≦n<n+dの条件を満足するかを検査し、満足する場合は、データ管理装置側要求処理用データベースのi番目に登録されているレコードの識別子と処理用データの組を応答用として記憶する(S250)。S252で検査の条件を満足しない場合、および、S247の検査において、条件を満足しなかった場合は、データ管理装置側要求処理用データベースのi番目に登録されているレコードに関して、応答用のデータとしては、何も記憶しない。以上を、1≦i≦Nを満たす全てのiについて実行する(S248)。最後に、全ての応答用に記憶した識別子と処理用データの組を、S240で受信した処理用データ要求の送信元に対して応答として送信する(S249)。
次に、図25を用いて、第一の実施形態に係るデータ管理装置200による処理を説明する。図25は、識別子割当決定部の処理手順を示すフローチャートである。同図に示すように、識別子割当決定部205は、まず、コールドゾーンの最も頻度の高いランクであるR、および、ノーマルゾーンの最も頻度の高いランクであるRを決定する(S260)。このS260の処理については、後述する。次に、ハッシュ値の下限Hminと上限Hmaxの差をサーバ数Nで割った値Hwidthを求め、これを各サーバが要求処理を担当するハッシュ値の幅とする(S261)。ここで、サーバ数Nは、S260の処理の中で決定される。そして、番号iを1にする(S262)。その後、要求処理サーバ装置データベースに登録されている、番号iが、1からNである各サーバiについてS263からS268のループを繰り返す。ループ内の各繰り返しでは、以下の処理を行う。サーバiの担当するハッシュ値の下限をHmin+(i−1)Hwidthとする(S263)。
その後、サーバiの担当するハッシュ値の上限をHmin+iHwidthとする(S264)。これらの結果サーバiの担当するハッシュ値は、ここで計算した下限以上、且つ、上限未満を担当することになる。最後に図6に例示した要求処理サーバ装置データベース212から、番号がiである要求処理サーバ装置情報を検索し(S265)、検索した要求処理サーバ装置情報・ハッシュ値上限・下限の範囲を、図7に示すハッシュ値要求処理サーバ装置変換用データベースに登録する(S266)。ここで、ハッシュ値要求処理サーバ装置変換用データベース213は、識別子のハッシュ値の範囲である担当領域と、その範囲に含まれる識別子の処理を担当する、要求処理サーバ装置情報によって構成される。
その後、i<Nであるか否かを判定する(S267)。そして、i<Nである場合には、iに1を加算して(S268)、S263に戻り、i<Nで無い場合には、処理を終了する。
次に、図26を用いて、第一の実施形態に係るデータ管理装置200による処理を説明する。図26は、頻度情報取得部の処理手順を示すフローチャートである。同図に示すように、頻度情報取得部206は、まず、データ管理装置側要求処理用データベース211の全識別子の頻度情報を0に初期化し(S270)、番号iを1にし(S271)、S272からS276のループで表される処理により、要求処理サーバ装置データベース212に登録されている全サーバに対して、以下の処理を行う。各要求処理サーバ装置100に対しては、まず、頻度情報取得要求を送信する(S272)。これに対して、送信先の要求処理サーバ装置100から、その要求処理サーバ装置100が要求処理を行った全識別子の頻度情報を、識別子と頻度の組のリストとして受信する(S273)。受信した全識別子と頻度の組に対して、識別子毎に、その頻度情報を、データ管理装置側要求処理用データベース211の該当する識別子の頻度カラムに加算する(S274)。以上により、データ管理装置側要求処理用データベース211で管理する全識別子について、要求処理サーバ装置100全体に対して行われた要求処理の頻度を計算する。その後、i<Nであるか否かを判定する(S275)。そして、i<Nである場合には、iに1を加算して(S276)、S272に戻り、i<Nで無い場合には、処理を終了する。
次に、図27を用いて、第一の実施形態に係るデータ管理装置200による処理を説明する。図27は、分散度決定部の処理手順を示すフローチャートである。同図に示すように、分散度決定部208は、まず、番号iを1にし(S280)、全てのサーバiに対して、S281からS294のループにより、データ管理装置側要求処理用データベースに登録されているN個の識別子に対して分散度を決定し、データ管理装置側分散度決定用データベースに登録する。ループでは、iを1からNまで変化させながら、データ管理装置側要求処理用データベースのi番目のレコードに記録されている識別子Iのハッシュ値hを計算し(S281)、ランクをrとする(S282)。このランクrが、r<Rを満足するかを検査し(S283)、満足するときは、識別子Iの分散度dを0とする(S291)。ここで、分散度が、0であるということは、該当する識別子の処理を全ての要求処理サーバ装置で負荷分散することを意味し、該当する識別子がホットゾーンに存在することを意味する。S283の検査で条件を満足しない場合は、R≦r<Rを満足するかを検査し(S284)、満足するときは、分散度を式(7)でもとめる(S292)。この式(7)で求められる値は、R /rの値を下回らない最小の整数を表す。S284の検査を満足しないとき、分散度を1とするため、d=1とする(S285)。その後、及び、S291とS292の処理を行った後は、データ管理装置側分散度決定用データベースからハッシュ値hを検索する(S286)。そして、ハッシュ値hのレコードの存在有無を判定し(S287)、存在した場合は、検索した分散度dを読み取り(S293)、データ管理装置側分散度決定用データベースから検索したハッシュ値hのレコードに対して、識別子Iが含まれていない場合は、識別子Iを追記し、分散度をmax(d,d)として登録する(S294)。ここで、max(d,d)は、dとdのうち、大きいほうの値を意味する。S287の判定においてレコードが存在しない場合は、データ管理装置側分散度決定用データベースに対して、新規のレコードとして、ハッシュ値h、識別子I、分散度dを登録する(S288)。以上の処理を1≦r≦Nに対して行う。つまり、i<Nであるか否かを判定する(S289)。そして、i<Nである場合には、iに1を加算して(S290)、S281に戻り、i<Nで無い場合には、処理を終了する。
次に、図28を用いて、第一の実施形態に係るデータ管理装置200による処理を説明する。図28は、ランク決定部の処理手順を示すフローチャートである。同図に示すように、ランク決定部209は、データ管理装置側要求処理用データベースの識別子と頻度の組を頻度の高いものから低いものの順序でソートする(S300)。ソートしたときの各識別子の順序をその識別子のランクとして、データ管理装置側要求処理用データベースに登録する(S302)。これをS302からS304のループの処理で全ての識別子に対して行う。つまり、i<Nであるか否かを判定する(S303)。そして、i<Nである場合には、iに1を加算して(S304)、S302に戻り、i<Nで無い場合には、処理を終了する。
次に、図29を用いて、第一の実施形態に係るデータ管理装置200による処理を説明する。図29は、サーバ装置データ送信部の処理手順を示すフローチャートである。同図に示すように、サーバ装置データ送信部210は、要求処理サーバ装置データベース212に登録されている要求処理サーバ装置100の番号と要求処理サーバ装置情報の全ての組のリストを送信する(S307)。
次に、図30を用いて、第一の実施形態に係るデータ管理装置200による処理を説明する。図30は、識別子割当通知部の処理手順を示すフローチャートである。同図に示すように、識別子割当通知部207は、ハッシュ値要求処理サーバ装置変換用データベースに含まれるハッシュ値の担当領域と要求処理サーバ装置情報の組を全て、負荷分散転送装置に対して送信する(S310)。識別子割当通知部207は、識別子割当通知処理を行うために、負荷分散転送装置への通信に必要な情報を保持している。次に、データ管理装置側分散度決定用データベースの識別子ハッシュ値と識別子リストと分散度の組を全て、負荷分散転送装置に送信する(S311)。
[負荷分散転送装置による処理]
次に、図31を用いて、第一の実施形態に係る負荷分散転送装置300による処理を説明する。図31は、識別子割当受信部の処理手順を示すフローチャートである。
同図に示すように、識別子割当受信部305は、まず、データ管理装置200から、識別子に対するハッシュ値の担当領域と要求処理サーバ装置情報の組のリストを受信する(S320)。受信した、識別子に対するハッシュ値の担当領域と要求処理サーバ装置情報の組のリストを、負荷分散転送装置300が管理するハッシュ値要求処理サーバ装置変換用データベース307に登録する(S321)。次に、データ管理装置200から、識別子に対するハッシュ値、そのハッシュ値の識別子のリスト、分散度の組のリストを受信し(S322)、受信した識別子に対するハッシュ値、識別子のリスト、分散度を、負荷分散転送装置用分散度決定要データベース308の識別子ハッシュ値、識別子リスト、分散度として登録し、払出位置は、1として登録する(S323)。
次に、図32を用いて、第一の実施形態に係る負荷分散転送装置300による処理を説明する。図32は、サーバ装置データ受信部の処理手順を示すフローチャートである。負荷分散転送装置300のサーバ装置データ受信部306は、データ管理装置200から、要求処理サーバ装置の番号と要求処理サーバ装置情報の組のリストを受信する(S330)。その後、受信した、要求処理サーバ装置の番号と要求処理サーバ装置情報の組のリストを負荷分散転送装置が管理する要求処理サーバ装置データベースに受信した番号の昇順で登録する(S331)。
次に、図33を用いて、第一の実施形態に係る負荷分散転送装置300による処理を説明する。図33は、要求振り分け部の処理手順を示すフローチャートである。要求振り分け部304は、処理要求を受信する(S340)と、要求処理に含まれる識別子Iを取り出し、そのハッシュ値hを計算する(S341)。その計算したハッシュ値hを用いて、ハッシュ値要求処理サーバ装置変換用データベースの中から、hを担当領域に含む、レコードを検索し、hを担当領域とする要求処理サーバ装置情報をSとする(S342)。検索したSを元に、要求処理サーバ装置データベースを検索し、該当する要求処理サーバ装置の番号をvとし(S343)、負荷分散装置用分散度決定用データベースからハッシュ値hを検索する(S344)。
その結果をもとに、ハッシュ値hのレコードが存在するかの検査を行い(S345)、レコードが存在した場合には、検索したレコードから分散度dと払出位置pを読み出す(S347)。このとき、d=0であれば、分散度をNとし、d=Nとする。読み出したpを用いて、要求処理サーバ装置データベースから番号がv+p−1のレコードを検索し、そのレコードの要求処理サーバ装置をSとする(S348)。その後、負荷分散装置用分散度決定用データベースから検索したハッシュ値hのレコードの払出位置をp+1(mod d)に変更し(S349)、要求処理サーバ装置Sに処理要求を転送する(S346)。ここで、p+1(mod d)は、p+1をdで割ったときの余りを表す。S345の検査において、レコードが存在しない場合には、Sの値は変更せず、そのまま要求処理サーバ装置Sに処理要求を転送する。
次に、図34を用いて、第一の実施形態に係る負荷分散転送装置300による処理を説明する。図34は、サーバ装置数の決定処理の処理手順を示すフローチャートである。なお、ここでの処理は、後述する図35のS542において実行される処理である。同図に示すように、S530、S531、S532、及び、S533により、ランク1からランクNまでの発生頻度の総和をSとして求める。そして、Sを要求処理サーバ装置単体で処理可能な識別子の発生頻度fで割ることで、必要な要求処理サーバ装置総数を求める。要求処理サーバ装置総数は、1以上の整数でなければならないため、ここで計算した値を下回らない最小の整数を求めNとする(S534)。
次に、図35を用いて、RとRの決定処理を説明する。図35は、ホット・ノーマルゾーン境界とノーマル・コールドゾーン境界の決定処理の処理手順を示すフローチャートである。同図に示すように、まず、ジップ定数pの決定を行う(S540)。そして、ジップ定数pを決定した後、総識別子数Nを決定する(S541)。総識別子数Nの決定については、図5で示したデータ管理装置側要求処理用データベース211に含まれる識別子を数え上げることで決定することができる。S541の後、要求処理サーバ装置総数Nの決定(S542)を行う(図34参照)。
次にS543で、p=1かどうかの判定を行う。p=1の場合、まず、S544、S545で、それぞれ、値VとVを計算する。ここで、V、および、Vは、それぞれ、R、および、Rを決定するための基準となる値である。その後、V≧1の判定(S546)を行い、V≧1の場合、S547で、「V≧1且つp=1のときのRとRの決定」(詳細は、図36)を実行する。S546の判定で、V≧1が否定された場合、S548で、「V<1且つp=1のときのRとRの決定」(詳細は、図38)を実行する。
S543の判定において、p=1が否定された場合、S549、S550で、それぞれ、値VとVを計算する。その後、V≧1の判定(S551)を行い、V≧1の場合、S552で、「V≧1且つp≠1のときのVとVの決定」(詳細は、図37)を実行する。S551の判定で、V≧1が否定された場合、S553で、「V<1且つp≠1のときのRとRの決定」(詳細は、図39)を実行する。
次に、図36を用いて、V≧1且つp=1のときのRとRの決定処理を説明する。図36は、V≧1且つp=1のときのRとRの決定処理の処理手順を示すフローチャートである。同図に示すように、「V≧1且つp=1のときのRとRの決定」について説明する。まず、S544で決定したVについて、その値を超えない最大の整数を求めRに代入する(S560)。次に、このRを基にしたVを求め(S561)、そのVを下回らない最小の整数をRに代入する(S562)。RとRの値が、上記(5)式を満足しているかを判定し(S563)、満足している場合は、それらの値をRとRとして採用する。S563の判定で条件を満足していない場合は、Rを1だけ増加させ(S564)、上記のS561からS563の処理を実施する。
次に、図37を用いて、V≧1且つp≠1のときのRとRの決定処理を説明する。図37は、V≧1且つp≠1のときのRとRの決定処理の処理手順を示すフローチャートである。同図に示すように、「V≧1且つp≠1のときのRとRの決定」について説明する。まず、S549で決定したVについて、その値を超えない最大の整数を求めRに代入する(S570)。次に、このRを基にしたVを求め(S571)、そのVを下回らない最小の整数をRに代入する(S572)。RとRの値が、上記(5)式を満足しているかを判定し(S573)、満足している場合は、それらの値をRとRとして採用する。S573の判定で条件を満足していない場合は、Rを1だけ増加させ(S574)、上記のS571からS573の処理を実施する。
次に、図38を用いて、V<1且つp=1のときのRとRの決定処理について説明する。図38は、V<1且つp=1のときのRとRの決定処理の処理手順を示すフローチャートである。同図に示すように、「V<1且つp=1のときのRとRの決定」について説明する。まず、上記(6)式を満足するVを求め(S580)、Vの値を超えない最大の整数を求めてRに代入する(S581)。次に、このRを基にしたVを求め(S582)、そのVを下回らない最小の整数をRに代入する(S583)。Rの値が、R≧1を満足しているかを判定し(S584)、満足している場合は、それらの値をRとRとして採用する。S584の判定で条件を満足していない場合は、Rを1だけ増加させ(S585)、上記のS582からS584の処理を実施する。
次に、図39を用いて、V<1且つp≠1のときのRとRの決定処理について説明する。図39は、V<1且つp≠1のときのRとRの決定処理の処理手順を示すフローチャートである。まず、V −p[V−(1−p)KN]=1、且つ、V≧0を満足するVを求め(S590)、Vの値を超えない最大の整数を求めてRに代入する(S591)。次に、このRを基にしたVを求め(S592)、そのVを下回らない最小の整数をRに代入する(S593)。Rの値が、R≧1を満足しているかを判定し(S594)、満足している場合は、それらの値をRとRとして採用する。S594の判定で条件を満足していない場合は、Rを1だけ増加させ(S595)、上記のS592からS594の処理を実施する。
[第一の実施形態の効果]
上述してきたように、データ管理装置200は、決定された各識別子のランクに応じて、ランクがRよりも高く発生頻度が高い識別子が属するホットゾーン、ランクがR以下であってRよりも高く発生頻度が中程度の識別子が属するノーマルゾーン、または、ランクがR以下であって発生頻度が低い識別子が属するコールドゾーンのいずれかに各識別子を振り分ける。そして、データ管理装置200は、ホットゾーンに振り分けられた識別子により識別されるデータの要求に対する応答処理を、全ての要求処理サーバ装置100のうちのいずれかの要求処理サーバ装置100に割り当て、ノーマルゾーンに振り分けられた識別子により識別されるデータの要求に対する応答処理を、複数の要求処理サーバ装置100のうちのいずれかの要求処理サーバ装置100に割り当て、コールドゾーンに振り分けられた識別子により識別されるデータの要求に対する応答処理を、一つのサーバ装置に割り当てる。そして、データ管理装置200は、ノーマルゾーンに属する識別子により識別されるデータの要求に対する応答処理が割り当てられる要求処理サーバ装置100の延べ台数を、全要求処理サーバ装置100の台数よりも十分に大きな値とするように、RおよびRを設定する。このため、サーバ負荷を平準化することができる。また、要求処理の負荷を分散し、且つ、記憶装置の容量を小さくすることが可能である。
上述してきたように、データ管理装置200は、ノーマルゾーンに属する識別子により識別されるデータの要求に対する応答処理が割り当てられる要求処理サーバ装置100の延べ台数を、全要求処理サーバ装置100の台数よりも十分に大きな値とするようにRおよびRを設定しつつ、RおよびRをできるだけ小さい値に設定する。このため、必要な記憶容量の最小化を図ることが可能である。
また、ホットゾーンの識別子を処理するために必要な情報は、全サーバ装置で保持され、ノーマルゾーンの識別子を処理するために必要な情報は、その識別子の発生頻度に応じた台数のサーバ装置に保持される。一方で、コールドゾーンの識別子については、コンシステントハッシング法を用いた場合と同様に、1台のサーバ装置に保持される。よって、各サーバ装置が全ての識別子を処理するために必要な情報を保持しなくてもよいため、個々のサーバ装置の記憶装置の容量を大規模化しなくてもよい。
また、第一の実施形態によれば、各サーバ装置の記憶装置の容量を大規模化する必要はなく、ノーマルゾーンおよびコールドゾーンの識別子を処理するための情報は、サーバ装置間で分担して保持させることが可能となり、サーバ装置を増加させることによって、識別子の増加に対応することが可能となり、結果としてスケールアウトが可能となる。
単一の識別子の発生頻度が、非常に高いものについては、ホットゾーンとして、全サーバ装置で負荷分散されるか、ノーマルゾーンとして、発生頻度に応じて決まる台数のサーバ装置で負荷分散される。よって、単一のサーバ装置で処理できる性能を超えている場合においても、サーバ装置間の負荷分散が実現可能であり、装置台数を増やすことによって、性能および識別子増加に対応するスケールアウトが可能となる。
ホットゾーンやノーマルゾーンの発生頻度の高い識別子を単一のサーバ装置で処理する必要がなくなり、複数のサーバ装置で負荷分散することにより、全てのサーバ装置が、多くの識別子を担当できるようになる。このことにより、サーバ装置の記憶容量の利用効率を平準化し、高く保つことが可能となる。また、ホットゾーンおよびノーマルゾーンに含まれるランクの識別子については、複数のサーバ装置で担当する。このとき、ホットゾーンおよびノーマルゾーンに含まれるランクの各識別子の処理を担当するサーバ装置の台数Ndiv(r)の総和(上記の(2)式参照)の、Nservに対する倍率が、十分に大きな倍率Kに近い値となるようにすることで(即ち上記(3)式の値に近くする)、各サーバ装置に、K個程度の識別子の負荷を分担させることができる。各識別子の処理によって発生する負荷を分割した値に一定程度のばらつきがあっても、負荷を分割した値が、各装置に、十分に大きな数K個程度割り当てられることにより、各サーバ装置で担当する識別子の数のばらつきも小さくなり、サーバ装置の記憶容量の利用効率を平準化し、高く保つことが可能となる。また、RとRがなるべく小さい値となる組合せを選択することにより、ホットゾーン、および、ノーマルゾーンの領域が小さくなることにより記憶装置の容量を小さくすることが可能となる。
ホットゾーンおよびノーマルゾーンに含まれるランクの識別子については、複数のサーバ装置で担当する。このとき、ホットゾーンおよびノーマルゾーンに含まれるランクの各識別子の処理を担当するサーバ装置の台数Ndiv(r)の総和(上記の(2)式参照)の、Nservに対する倍率が、十分に大きな倍率Kに近い値となるようにすることで(即ち上記(3)式の値に近くする)、各サーバ装置に、K個程度の識別子の負荷を分担させることができる。各識別子の処理によって発生する負荷を分割した値に一定程度のばらつきがあっても、負荷を分割した値が、各装置に、十分に大きな数K個程度割り当てられることにより、各サーバ装置で担当する負荷のばらつきも小さくなり、サーバ装置の負荷の偏りを小さくすることが可能であり、結果としてサーバ装置台数を削減できる。また、RとRがなるべく小さい値となる組合せを選択することにより、ホットゾーン、および、ノーマルゾーンの領域が小さくなることにより記憶装置の容量を小さくすることが可能となる。
[全サーバ装置の数]
上記の説明では、全サーバ装置の数Nを、図34に示した処理によって決定したが、全サーバ装置の数Nは、本システムを管理する者がシステムに対して決定を行い、システムに与えても良い。この場合、第一の実施形態の図35の処理において、S541の処理をスキップすることで実現できる。
[ランクの決定]
また、決定した、R、および、Rに対して、ランクRの識別子の発生頻度が、要求処理サーバ装置単体で処理可能な識別子の発生頻度fと比較して十分小さくなるように、ランクRを定め、決定したRが、Rよりも小さい場合、Rの値をRの値で置き換え、Rの値を、(1/N 1/p)Rで置き換えてもよい。このR、および、Rの置き換えにより、Rの値が小さくなりすぎ、サーバ負荷に偏りを発生させることを防止することができる。
また、決定した、R、および、Rに対して、ランクRの識別子の発生頻度が、要求処理サーバ装置単体で処理可能な識別子の発生頻度と比較して十分小さくなるように、ランクRを定め、決定したRが、Rよりも小さい場合、Rの値をRの値での値で置き換え、Rの値を、1で置き換えてもよい。このR、および、Rの置き換えにより、Rの値が小さくなりすぎ、サーバ負荷に偏りを発生させることを防止することができる。
[システム構成等]
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
[プログラム]
また、上記実施形態において説明したデータ管理装置200が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、第一の実施形態に係るデータ管理装置200が実行する処理をコンピュータが実行可能な言語で記述したサーバ制御プログラムを作成することもできる。この場合、コンピュータがサーバ制御プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるサーバ制御プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されサーバ制御プログラムをコンピュータに読み込ませて実行することにより上記第一の実施形態と同様の処理を実現してもよい。以下に、図2に示したデータ管理装置200と同様の機能を実現するサーバ制御プログラムを実行するコンピュータの一例を説明する。
図40は、サーバ制御プログラムを実行するコンピュータ1000を示す図である。図40に例示するように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有し、これらの各部はバス1080によって接続される。
メモリ1010は、図40に例示するように、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、図40に例示するように、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、図40に例示するように、ディスクドライブ1041に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1041に挿入される。シリアルポートインタフェース1050は、図40に例示するように、例えばマウス1051、キーボード1052に接続される。ビデオアダプタ1060は、図40に例示するように、例えばディスプレイ1061に接続される。
ここで、図40に例示するように、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、上記のサーバ制御プログラムは、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1031に記憶される。
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ1010やハードディスクドライブ1031に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出し、各種処理手順を実行する。
なお、サーバ制御プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してCPU1020によって読み出されてもよい。あるいは、サーバ制御プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
100、100A〜100D 要求処理サーバ装置
101 通信制御I/F部
102 制御部
103 記憶部
200 データ管理装置
201 通信制御I/F部
202 制御部
203 記憶部
300 負荷分散転送装置
301 通信制御I/F部
302 制御部
303 記憶部
400A〜400C クライアント

Claims (5)

  1. サーバ制御装置が実行するサーバ制御方法であって、
    同一のデータをそれぞれ記憶する複数のサーバ装置に対してクライアント装置がデータを要求した際に、サーバ装置がクライアント装置から受信する識別子の受信頻度をそれぞれ取得する取得ステップと、
    前記取得ステップによって取得された各識別子の受信頻度に応じて、各識別子の順位を決定する決定ステップと、
    前記決定ステップによって決定された各識別子の順位に応じて、順位が第一閾値よりも高く受信頻度が高い識別子が属する第一のグループ、順位が前記第一閾値以下であって第二閾値よりも高く受信頻度が中程度の識別子が属する第二のグループ、または、順位が前記第二閾値以下であって受信頻度が低い識別子が属する第三のグループのいずれかに各識別子を振り分ける振分ステップと、
    前記第一のグループに振り分けられた識別子により識別されるデータの要求に対する応答処理を、全てのサーバ装置のうちのいずれかのサーバ装置に割り当て、前記第二のグループに振り分けられた識別子により識別されるデータの要求に対する応答処理を、複数のサーバ装置のうちのいずれかのサーバ装置に割り当て、前記第三のグループに振り分けられた識別子により識別されるデータの要求に対する応答処理を、一つのサーバ装置に割り当てる割当ステップと、
    前記第二のグループに属する識別子により識別されるデータの要求に対する応答処理が割り当てられるサーバ装置の延べ台数を、全サーバ装置の台数よりも大きな値とするように、前記第一閾値および前記第二閾値を設定しつつ、前記第一閾値および前記第二閾値をできるだけ小さい値に設定する設定ステップと、
    を含んだことを特徴とするサーバ制御方法。
  2. 前記設定ステップは、前記順位をrとし、ジップ定数をpとし、Kを倍率とし、Nをサーバ数とした場合に、p≠1のとき、(1−p)KNs/(1−Ns(p−1/p))で求められた値、または、p=1のとき、pKNs/logNsで求められた値を用いて、前記第二閾値を設定することを特徴とする請求項1に記載のサーバ制御方法。
  3. 前記設定ステップは、前記順位をrとし、ジップ定数をpとし、Kを倍率とし、Nをサーバ数とし、Rを前記第二閾値とした場合に、前記第二閾値が、p≠1のとき、R≧0且つR −p[R−(1−p)KN]=1を満たし、p=1のとき、R=exp(KN/R)を満たすことを特徴とする請求項1に記載のサーバ制御方法。
  4. 前記設定ステップは、前記順位をrとし、ジップ定数をpとし、Kを倍率とし、Nをサーバ数とし、Rを前記第二閾値とした場合に、p≠1のとき、{R[R−(1−p)KN]}1/(1p)で求められた値、または、p=1のとき、R=exp(KN/R)で求められた値を用いて、前記第二閾値を設定することを特徴とする請求項またはに記載のサーバ制御方法。
  5. 同一のデータをそれぞれ記憶する複数のサーバ装置に対してクライアント装置がデータを要求した際に、サーバ装置がクライアント装置から受信する識別子の受信頻度をそれぞれ取得する取得部と、
    前記取得部によって取得された各識別子の受信頻度に応じて、各識別子の順位を決定する決定部と、
    前記決定部によって決定された各識別子の順位に応じて、順位が第一閾値よりも高く受信頻度が高い識別子が属する第一のグループ、順位が前記第一閾値以下であって第二閾値よりも高く受信頻度が中程度の識別子が属する第二のグループ、または、順位が前記第二閾値以下であって受信頻度が低い識別子が属する第三のグループのいずれかに各識別子を振り分ける振分部と、
    前記第一のグループに振り分けられた識別子により識別されるデータの要求に対する応答処理については、全てのサーバ装置のうちのいずれかのサーバ装置に割り当て、前記第二のグループに振り分けられた識別子により識別されるデータの要求に対する応答処理については、前記全てのサーバ装置より少ない複数のサーバのうちのいずれかのサーバ装置に割り当て、前記第三のグループに振り分けられた識別子により識別されるデータの要求に対する応答処理については、一つのサーバ装置に割り当てる割当部と、
    前記第二のグループに属する識別子により識別されるデータの要求に対する応答処理が割り当てられるサーバ装置の延べ台数を、全サーバ装置の台数よりも大きな値とするように、前記第一閾値および前記第二閾値を設定しつつ、前記第一閾値および前記第二閾値をできるだけ小さい値に設定する設定部と、
    を備えたことを特徴とするサーバ制御装置。
JP2013032648A 2013-02-21 2013-02-21 サーバ制御方法およびサーバ制御装置 Expired - Fee Related JP5809652B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013032648A JP5809652B2 (ja) 2013-02-21 2013-02-21 サーバ制御方法およびサーバ制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013032648A JP5809652B2 (ja) 2013-02-21 2013-02-21 サーバ制御方法およびサーバ制御装置

Publications (2)

Publication Number Publication Date
JP2014164357A JP2014164357A (ja) 2014-09-08
JP5809652B2 true JP5809652B2 (ja) 2015-11-11

Family

ID=51614941

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013032648A Expired - Fee Related JP5809652B2 (ja) 2013-02-21 2013-02-21 サーバ制御方法およびサーバ制御装置

Country Status (1)

Country Link
JP (1) JP5809652B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11038800B2 (en) * 2019-08-28 2021-06-15 Nvidia Corporation Techniques for reducing the overhead of providing responses in a computing network

Also Published As

Publication number Publication date
JP2014164357A (ja) 2014-09-08

Similar Documents

Publication Publication Date Title
US20200358523A1 (en) Predictive connectivity service layers
JP6214922B2 (ja) 情報処理装置、情報処理システム、情報処理方法、および学習プログラム
CN104065568A (zh) 一种Web服务器集群的路由方法
JP2009295127A (ja) アクセス方法、アクセス装置及び分散データ管理システム
Bsoul et al. A round-based data replication strategy
Sun et al. SORD: A new strategy of online replica deduplication in Cloud-P2P
JP5809652B2 (ja) サーバ制御方法およびサーバ制御装置
Charilas et al. A unified network selection framework using principal component analysis and multi attribute decision making
US10742506B2 (en) Policy-based storage service federation method and apparatus
Akila et al. QoS-aware rule-based traffic-efficient multiobjective service selection in big data space
Kothari et al. Implementation of a distributed p2p storage network
Zheng et al. Node clustering based on link delay in p2p networks
Fan et al. Data placement in distributed data centers for improved SLA and network cost
KR101924099B1 (ko) 정책 기반의 스토리지 서비스 페더레이션 수행 방법 및 장치
Gomes Filho et al. Opportunistic attribute caching: Improving the efficiency of ABAC in fog-based IoT networks
Lakhani et al. Coordinator controller election algorithm to provide failsafe through load balancing in Distributed SDN control plane
Xu et al. An adaptive per-application storage management scheme based on manifold learning in information centric networks
Bukhari et al. Optimum Benefit Protocol: A fast converging, bandwidth-efficient decentralized similarity overlay
JP2011227733A (ja) サーバ選択制御装置、サービス要求装置、サーバ選択制御方法、サービス要求方法、サーバ選択制御プログラム、サービス要求プログラム、サービス提供システムおよびサービス提供方法
CN115297122B (zh) 基于负载自动监测的政务运维方法和系统
Gitzenis et al. Efficient file replication in large wireless networks with dynamic popularity
CN109698847A (zh) 一种基于请求处理时间的云存储系统均衡负载的读取方法及系统
Yan et al. SADA: SDN Architecture Based Secure Dynamic Access Scheme for Satellite Network
Al-Ghanimi et al. Performance Analysis of Adaptable Topology in GIS Using Federated Topologies
Fu et al. Role-based intelligent application state computing for OpenFlow distributed controllers in software-defined networking

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150714

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150825

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150911

R150 Certificate of patent or registration of utility model

Ref document number: 5809652

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees