(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-12
(45)【発行日】2022-12-20
(54)【発明の名称】情報処理装置、分散処理システム及び分散処理プログラム
(51)【国際特許分類】
H04L 67/00 20220101AFI20221213BHJP
G06F 16/172 20190101ALI20221213BHJP
【FI】
H04L67/00
G06F16/172
(21)【出願番号】P 2019085417
(22)【出願日】2019-04-26
【審査請求日】2022-01-11
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100087480
【氏名又は名称】片山 修平
(72)【発明者】
【氏名】雨宮 宏一郎
【審査官】木村 雅也
(56)【参考文献】
【文献】特開2005-031987(JP,A)
【文献】国際公開第2012/144584(WO,A1)
【文献】特開2015-176350(JP,A)
【文献】特開2015-162686(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/00
G06F 16/172
(57)【特許請求の範囲】
【請求項1】
過去におけるデータへのアクセス履歴に基づいて、記憶部に一時的に記憶するデータの候補を特定する記憶候補特定部と、
第1の時間間隔で他の情報処理装置から負荷情報を取得する第1取得部と、
前記第1取得部が取得した前記他の情報処理装置の負荷情報と自装置の負荷情報とに基づいて、前記記憶部に一時的に記憶されているデータの中から、特定した前記記憶するデータの候補の代わりに前記記憶部から削除するデータの候補を特定する削除候補特定部と、
前記第1の時間間隔よりも短い第2の時間間隔で、前記記憶するデータの候補を保持する情報処理装置と、前記削除するデータの候補を保持する情報処理装置とから負荷情報を取得する第2取得部と、
前記記憶するデータの候補へのアクセスがあった場合に、前記第2取得部が取得した負荷情報と自装置の負荷情報とに基づいて、前記アクセスがあったデータを前記記憶部に一時的に記憶するか否か、及び前記アクセスがあったデータを前記記憶部に一時的に記憶する場合に前記削除するデータの候補のいずれを削除するかを決定する決定部と、
を備える情報処理装置。
【請求項2】
前記削除候補特定部は、前記第1の時間間隔で前記他の情報処理装置から取得した負荷情報と、自装置の負荷情報とに基づいて、自装置の負荷情報と前記他の情報処理装置の負荷情報の相関関係を算出し、算出した前記相関関係と自装置の負荷情報とから推定される前記他の情報処理装置の負荷情報を用いて、前記削除するデータの候補を特定する、ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記削除候補特定部は、
前記記憶するデータの候補を前記記憶部に記憶しないときよりも、前記記憶するデータの候補を前記記憶部に記憶し、前記記憶部に記憶されていたデータを削除したときの方が、前記記憶するデータの候補を処理する際のスループットが高い場合に、前記記憶部に記憶されていたデータを前記削除するデータの候補として特定する、請求項1又は2に記載の情報処理装置。
【請求項4】
前記決定部が前記アクセスがあったデータを前記記憶部に一時的に記憶しないと決定した場合に、各情報処理装置の負荷情報と、前記アクセスがあったデータをいずれの情報処理装置が保持しているか、に基づいて、前記アクセスがあったデータの処理を実行する情報処理装置を選定する選定部、を更に備える請求項1~3のいずれか一項に記載の情報処理装置。
【請求項5】
ネットワークに接続された複数の情報処理装置を有する分散処理システムであって、
前記情報処理装置は、
過去におけるデータへのアクセス履歴に基づいて、記憶部に一時的に記憶するデータの候補を特定する記憶候補特定部と、
第1の時間間隔で他の情報処理装置から負荷情報を取得する第1取得部と、
前記第1取得部が取得した前記他の情報処理装置の負荷情報と自装置の負荷情報とに基づいて、前記記憶部に一時的に記憶されているデータの中から、特定した前記記憶するデータの候補の代わりに前記記憶部から削除するデータの候補を特定する削除候補特定部と、
前記第1の時間間隔よりも短い第2の時間間隔で、前記記憶するデータの候補を保持する情報処理装置と、前記削除するデータの候補を保持する情報処理装置とから負荷情報を取得する第2取得部と、
前記記憶するデータの候補へのアクセスがあった場合に、前記第2取得部が取得した負荷情報と自装置の負荷情報とに基づいて、前記アクセスがあったデータを前記記憶部に一時的に記憶するか否か、及び前記アクセスがあったデータを前記記憶部に一時的に記憶する場合に前記削除するデータの候補のいずれを削除するかを決定する決定部と、
を備えることを特徴とする分散処理システム。
【請求項6】
ネットワークに接続された複数の情報処理装置のコンピュータに、
過去におけるデータへのアクセス履歴に基づいて、記憶部に一時的に記憶するデータの候補を特定し、
第1の時間間隔で他の情報処理装置から負荷情報を取得し、取得した前記他の情報処理装置の負荷情報と自装置の負荷情報とに基づいて、前記記憶部に一時的に記憶されているデータの中から、特定した前記記憶するデータの候補の代わりに前記記憶部から削除するデータの候補を特定し、
前記第1の時間間隔よりも短い第2の時間間隔で、前記記憶するデータの候補を保持する情報処理装置と、前記削除するデータの候補を保持する情報処理装置とから負荷情報を取得し、
前記記憶するデータの候補へのアクセスがあった場合に、前記第2の時間間隔で取得した負荷情報と自装置の負荷情報とに基づいて、前記アクセスがあったデータを前記記憶部に一時的に記憶するか否か、及び前記アクセスがあったデータを前記記憶部に一時的に記憶する場合に前記削除するデータの候補のいずれを削除するかを決定する、
処理を実行させる分散処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、分散処理システム及び分散処理プログラムに関する。
【背景技術】
【0002】
従来、複数のエッジサーバに分散して蓄積された人やモノの動的情報をユーザからの要求に応じて処理し、ユーザに提供する分散処理システムが知られている。このようなシステムは、タクシー需給予測サービスや、リアルタイムでタクシーを検索したり、配車するサービスなどに利用されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のような分散処理システムにおいては、処理に必要なデータの位置や、各エッジサーバの負荷情報に応じて、処理をどのエッジサーバで実行すればシステム全体の処理スループットが高くなるかが変化する。したがって、システム全体の処理スループットを高くするためには、データの処理要求があったときの状況に基づいて、キャッシュするデータを決定したり、処理を実行するエッジサーバを決定したりする必要がある。上記決定を迅速に行うためには、各エッジサーバの負荷情報を常時収集しておくことが好ましいが、収集頻度が高いほどネットワークのトラフィック量が多くなる。
【0005】
1つの側面では、本発明は、アクセスがあったデータの一時記憶に関する決定を行うための情報収集におけるトラフィック量の削減を図ることが可能な情報処理装置、分散処理システム及び分散処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
一つの態様では、情報処理装置は、過去におけるデータへのアクセス履歴に基づいて、記憶部に一時的に記憶するデータの候補を特定する記憶候補特定部と、第1の時間間隔で他の情報処理装置から負荷情報を取得する第1取得部と、前記第1取得部が取得した前記他の情報処理装置の負荷情報と自装置の負荷情報とに基づいて、前記記憶部に一時的に記憶されているデータの中から、特定した前記記憶するデータの候補の代わりに前記記憶部から削除するデータの候補を特定する削除候補特定部と、前記第1の時間間隔よりも短い第2の時間間隔で、前記記憶するデータの候補を保持する情報処理装置と、前記削除するデータの候補を保持する情報処理装置とから負荷情報を取得する第2取得部と、前記記憶するデータの候補へのアクセスがあった場合に、前記第2取得部が取得した負荷情報と自装置の負荷情報とに基づいて、前記アクセスがあったデータを前記記憶部に一時的に記憶するか否か、及び前記アクセスがあったデータを前記記憶部に一時的に記憶する場合に前記削除するデータの候補のいずれを削除するかを決定する決定部と、を備えている。
【発明の効果】
【0007】
アクセスがあったデータの一時記憶に関する決定を行うための情報収集におけるトラフィック量の削減を図ることができる。
【図面の簡単な説明】
【0008】
【
図1】第1の実施形態に係る分散処理システムの概要図である。
【
図2】エッジサーバにおけるタスク実行が完了するまでの時間の計算方法を説明するための図である。
【
図3】
図3(a)~
図3(c)は、エッジサーバの負荷や、データソース量、処理結果データ、処理要求データに応じて、タスクを実行するアプリが異なることを説明するための図(その1)である。
【
図4】
図4(a)~
図4(c)は、エッジサーバの負荷や、データソース量、処理結果データ、処理要求データに応じて、タスクを実行するアプリが異なることを説明するための図(その2)である。
【
図5】
図5(a)~
図5(c)は、エッジサーバの負荷や、データソース量、処理結果データ、処理要求データに応じて、タスクを実行するアプリが異なることを説明するための図(その3)である。
【
図6】
図6(a)は、処理受付エッジサーバにおいてキャッシュを生成しない場合を模式的に示す図であり、
図6(b)は、処理受付エッジサーバにおいてキャッシュを生成する場合を模式的に示す図である。
【
図7】キャッシュ変更による影響を説明するための図(その1)である。
【
図8】キャッシュ変更による影響を説明するための図(その2)である。
【
図9】エッジサーバのリソース情報について説明するための図である。
【
図10】
図10(a)、
図10(b)は、キャッシュ変更(パターン1)を説明するための図である。
【
図11】
図11(a)は、
図10(a)に対応する各エッジサーバの負荷を示す図であり、
図11(b)は、
図10(b)に対応する各エッジサーバの負荷を示す図である。
【
図12】
図12(a)は、
図10(a)に対応する処理スループットの算出方法を示す図であり、
図12(b)は、
図10(b)に対応する処理スループットの算出方法を示す図である。
【
図13】
図13(a)は、キャッシュ変更(パターン2)を説明するための図であり、
図13(b)は、
図13(a)に対応する各エッジサーバの負荷を示す図である。
【
図14】
図13(a)に対応する処理スループットの算出方法を示す図である。
【
図15】
図15(a)、
図15(b)は、キャッシュ変更(パターン3)を説明するための図である。
【
図16】
図16(a)は、
図15(a)に対応する各エッジサーバの負荷を示す図であり、
図16(b)は、
図15(b)に対応する各エッジサーバの負荷を示す図である。
【
図17】
図17(a)は、
図15(a)に対応する処理スループットの算出方法を示す図であり、
図17(b)は、
図15(b)に対応する処理スループットの算出方法を示す図である。
【
図18】
図18(a)は、キャッシュ変更(パターン4)を説明するための図であり、
図18(b)は、
図18(a)に対応する各エッジサーバの負荷を示す図である。
【
図19】
図18(a)に対応する処理スループットの算出方法を示す図である。
【
図20】エッジサーバi以外でのエッジサーバiにおけるキャッシュ変更に関連するデータA、Bの処理スループットの算出方法を示す図である。
【
図21】第1の実施形態に係る分散処理システムの構成を示す図である。
【
図22】
図22(a)は、クラウドサーバのハードウェア構成を示す図であり、
図22(b)は、エッジサーバのハードウェア構成を示す図である。
【
図23】データ位置情報テーブルのデータ構造を示す図である。
【
図25】
図25(a)は、リソース情報一時記憶テーブルを示す図であり、
図25(b)は、データアクセス統計テーブルを示す図であり、
図25(c)は、キャッシュテーブルを示す図である。
【
図26】
図26(a)は、高頻度対象テーブルを示す図であり、
図26(b)は、リソース情報テーブルを示す図である。
【
図27】
図27(a)は、アプリ処理要求のメッセージ(m1)の構造を示す図であり、
図27(b)は、アプリ処理応答のメッセージ(m2)の構造を示す図である。
【
図28】
図28(a)は、アプリ処理要求のメッセージ(m1’)の構造を示す図であり、
図28(b)は、アプリ処理応答のメッセージ(m2’)の構造を示す図である。
【
図29】
図29(a)は、データ取得要求のメッセージ(m3)の構造を示す図であり、
図29(b)は、データ取得応答のメッセージ(m4)の構造を示す図である。
【
図30】
図30(a)は、データ/キャッシュ位置要求のメッセージ(m5)の構造を示す図であり、
図30(b)は、データ/キャッシュ位置応答のメッセージ(m6)の構造を示す図であり、
図30(c)は、リソース情報交換のメッセージ(m7)の構造を示す図である。
【
図33】要求実行処理を示すフローチャートである。
【
図34】
図33のステップS56の処理を示すフローチャートである。
【
図35】第1の実施形態の処理の概要を示す図である。
【
図36】第2の実施形態に係るエッジサーバの機能ブロック図である。
【
図37】第2の実施形態に係るデータ位置情報管理テーブルのデータ構造を示す図である。
【発明を実施するための形態】
【0009】
《第1の実施形態》
以下、第1の実施形態に係る分散処理システムについて、
図1~
図35に基づいて詳細に説明する。
【0010】
図1には、本第1の実施形態に係る分散処理システムの概要が示されている。本第1の実施形態の分散処理システムは、複数のエッジサーバを有しており、各エッジサーバのデータベース(DB)に分散して蓄積された人やモノ(例えば車)に関する動的情報を、ユーザ(例えば車に乗ったユーザ)の要求に応じて処理し、処理結果を提供する。例えば、分散処理システムは、タクシー需給予測サービス、リアルタイムタクシー検索・配車サービスなどに用いることができる。
【0011】
各エッジサーバにおいては、
図1に示すように、(1)フィールドに存在している人やモノの動的情報を収集したり、適宜加工してエッジサーバ上のデータベースに格納する。一方、(2)例えば車に乗ったユーザが、周辺の人やモノの動的情報やその情報から得られる処理結果をエッジサーバに対して要求すると、(3)エッジサーバのアプリは、自装置内のデータベースや周辺のエッジサーバのデータベースから必要なデータを取得する。そして、(4)アプリは、人やモノに関する動的情報を処理し、(5)処理結果をユーザに提供する。
【0012】
ここで、本第1の実施形態の分散処理システムにおいては、いずれかのエッジサーバに対してユーザからタスク実行要求があった場合に、応答性能が最も高いエッジサーバにおいて処理を実行することとしている。
【0013】
図2は、エッジサーバにおいてタスク実行要求があってからタスク実行が完了するまでの時間の計算方法を説明するための図である。
【0014】
図2に示すように、あるエッジサーバ(
図2ではエッジサーバ2)に対して、ユーザからエッジサーバ3のデータベース(DBc)に格納されているデータCの処理要求(タスク実行要求)があったとする。ここで、
図2のa1~a3は、タスク実行場所制御部がアプリに対してタスク実行要求を行うのに要する時間と、アプリからの応答を転送するのに要する時間(タスク実行要求・応答転送時間)を意味する。また、b1~b3は、アプリがタスクを実行する時間と実行待ちの時間(タスク実行・実行待ち時間)を意味し、c1~c3は、アプリにデータCが転送されるまでの時間(データ転送時間)を意味する。
【0015】
この場合、タスク完了までの時間は、
タスク完了までの時間
=タスク実行要求・応答転送時間+タスク実行・実行待ち時間+データ転送時間
…(1)
と表される。したがって、エッジサーバ2のタスク実行場所制御部は、タスク実行要求を受け付けた際に、エッジ間で共有しているデータ位置や負荷情報に基づいて、タスク完了までの時間(a1+b1+c1、a2+b2+c2、a3+b3+c3)を算出する。そして、タスク実行場所制御部は、算出した時間が最小となるアプリをタスク実行場所として選択する。
【0016】
図3(a)~
図5(c)は、エッジサーバの負荷や、データソース量、処理結果データ、処理要求データに応じて、タスクを実行するアプリが異なることを説明するための図である。
【0017】
図3(a)~
図3(c)には、データソース量が多い場合、すなわちアプリがタスクを実行する際にデータベースから取得するデータ量が多い場合が示されている。データソース量が多い場合において、
図3(a)に示すように、エッジ負荷が均等である場合には、データ保持エッジサーバのアプリがタスクを実行したほうが、タスク完了までの時間は短くなる。また、
図3(c)に示すように、処理受付エッジサーバの方が負荷が高い場合にも、データ保持エッジサーバのアプリがタスクを実行したほうが、タスク完了までの時間は短くなる。これに対し、
図3(b)に示すように、エッジ保持サーバの方が負荷が高い場合には、各エッジサーバのアプリでタスクを実行するときのタスク完了までの時間を上式(1)に基づいて算出し、当該時間が短くなる方のアプリでタスクを実行する。
【0018】
図4(a)~
図4(c)には、アプリにおける処理結果データが多い場合が示されている。処理結果データが多い場合において、
図4(a)に示すように、エッジ負荷が均等である場合には、処理受付エッジサーバのアプリがタスクを実行したほうが、タスク完了までの時間は短くなる。また、
図4(b)に示すように、データ保持エッジサーバの方が負荷が高い場合にも、処理受付エッジサーバのアプリがタスクを実行したほうが、タスク完了までの時間は短くなる。これに対し、
図4(c)に示すように、処理受付サーバの方が負荷が高い場合には、各エッジサーバのアプリでタスクを実行するときのタスク完了までの時間を上式(1)に基づいて算出し、当該時間が短くなる方のアプリでタスクを実行する。
【0019】
図5(a)~
図5(c)には、処理要求データが多い場合が示されている。処理要求データが多い場合において、
図5(a)に示すように、エッジ負荷が均等である場合には、処理受付エッジサーバのアプリがタスクを実行したほうが、タスク完了までの時間は短くなる。また、
図5(b)に示すように、データ保持エッジサーバの方が負荷が高い場合にも、処理受付エッジサーバのアプリがタスクを実行したほうが、タスク完了までの時間は短くなる。これに対し、
図5(c)に示すように、処理受付サーバの方が負荷が高い場合には、各エッジサーバのアプリでタスクを実行するときのタスク完了までの時間を上式(1)に基づいて算出し、当該時間が短くなる方のアプリでタスクを実行する。
【0020】
ここで、本第1の実施形態では、処理受付エッジサーバにおけるキャッシュについてもさらに考慮して、タスクを実行するアプリを選択するものとする。
図6(a)には、処理受付エッジサーバにおいてキャッシュを生成しない場合が模式的に示され、
図6(b)には、処理受付エッジサーバにおいてキャッシュを生成する場合が模式的に示されている。
【0021】
図6(a)の上段に示すように、先行利用者からのタスク実行要求があった場合において、データ保持エッジサーバのアプリがタスク処理を実行するとする。そして、その後に、
図6(b)の下段に示すように、後続利用者からの同一のタスク実行要求があった場合も同様にデータ保持エッジサーバのアプリがタスク処理を実行するとする。この場合のスループットは、データ保持エッジサーバのアプリにおける処理時間をTb1、処理受付エッジサーバとデータ保持エッジサーバとの間のタスク実行要求・応答時間をTa21とすると、
スループット=1/(Tb1+Ta21)[rps] …(2)
と表すことができる。
【0022】
一方、
図6(b)の上段に示すように、先行利用者からのタスク実行要求があった場合において、処理受付エッジサーバのアプリがタスク処理を実行して、利用したデータをキャッシュしておくとする。そして、その後に、
図6(b)の下段に示すように、後続利用者からの同一のタスク実行要求があった場合に、処理受付エッジサーバのアプリがキャッシュを用いてタスク処理を実行するとする。この場合のスループットは、処理受付エッジサーバのアプリにおける処理時間をTb2、先行利用者のタスク処理の際のデータ転送時間をTc21とすると、
スループット=n/(全タスク処理におけるTb2の合計+Tc21)[rps]
…(3)
と表すことができる。
【0023】
したがって、キャッシュを生成すべきか否かは、上式(2)、(3)を用いて算出されるスループットを比較して、スループットが大きくなる方を選択することとすればよい。なお、本例では、アクティブキャッシュはせずに、実際にタスク実行に用いたデータをキャッシュすることとしている。
【0024】
図7には、3つの処理受付エッジサーバのうち、1つの処理受付エッジサーバに処理B(データBを用いた処理)の実行要求が出され、2つの処理受付エッジサーバに処理A(データAを用いた処理)と処理Bの実行要求が出された例が示されている。
図7においては、タスク実行要求を受け付けたエッジサーバにおいて、各処理が実行されるようになっており、
図7の上から1つ目の処理受付エッジサーバは、データBを保持するデータ保持エッジサーバからデータを取得する。また、
図7の上から2つ目と3つ目の処理受付エッジサーバは、3つ目の処理受付エッジサーバのキャッシュからデータBを取得し、データAを保持するデータ保持エッジサーバからデータAを取得する。
【0025】
この場合において、
図8に示すように、上から3つ目の処理受付エッジサーバが、当該エッジサーバの負荷を基準として、データBに代えてデータAをキャッシュしたとする(キャッシュ変更)。この場合、
図8に示すように、データBを保持するデータ保持エッジサーバにおけるアクセス負荷が増大し、データBへのアクセスがボトルネックとなって、系全体のスループットが低下するおそれがある。
【0026】
したがって、本第1の実施形態では、キャッシュを変更する処理受付エッジサーバのみならず、キャッシュを変更したことによる系全体のデータアクセスを考慮して、キャッシュを変更する場合としない場合のうち、総スループットが高くなる方を選択する。すなわち、
図7の状態で上から3つ目の処理受付エッジサーバに処理Aの実行要求があったときに、データBをキャッシュアウトしてデータAをキャッシュインするか、キャッシュを
図7のまま維持するかを、総スループットに基づいて決定する。
【0027】
なお、処理受付エッジサーバは、上記決定を行う際に、各処理受付エッジサーバやデータ保持エッジサーバの負荷などの情報を含むリソース情報を利用する。
【0028】
(リソース情報)
ここで、上記決定の際に利用するリソース情報について、
図9に基づいて説明する。
図9に示すようなエッジサーバiのリソース情報には、π
i、δ
i、Π
i、Δ
iが含まれる。π
iは、エッジサーバiのデータ処理負荷総量である。δ
iは、エッジサーバiのデータアクセス負荷総量である。Π
iは、エッジサーバiのデータ処理容量である。Δ
iは、エッジサーバiのデータアクセス容量である。いずれも単位時間当たりのリクエスト数や、単位時間当たりの使用CPU Clocks等で表される。π
i、δ
iは、定期的に収集するものであるが、Π
i、Δ
iは、起動時や設定変更時にのみ収集するものである。なお、
図9に示すλ
A
i、λ
B
iは、エッジサーバiに対する処理A、処理Bに関するアクセス量を意味する。また、λ
iは、エッジサーバiに対するアクセス総量であり、次式(4)にて表すことができる。
【0029】
【0030】
なお、λM
iは、エッジサーバiでのデータMに対するアクセス負荷πM
iと、エッジサーバiでのデータMの処理負荷δM
iとを用いて、λM
i→πM
i,δM
iと表すことができる。
【0031】
また、エッジサーバiのデータ処理負荷総量πi、及びエッジサーバiのデータアクセス負荷総量δiは次式(5)、(6)にて表される。
【0032】
【0033】
ここで、オリジナルのデータ及びキャッシュデータが複数のエッジサーバに分散配置されており、その総数をcで表すとする。また、それぞれのオリジナルのデータ又はキャッシュデータには他エッジサーバからのアクセスがあるため、その負荷は平均でδ/cとなる。また、
図9に示すようにエッジサーバiにキャッシュデータBが存在する場合、エッジサーバi以外からのキャッシュデータBへのアクセス負荷は、δ
B
≠i/c
Bと表される。なお、c
BはデータBの総数であり、δ
B
≠iはエッジサーバi以外からのデータBアクセス負荷の合計である。同様に、
図9のエッジサーバiにオリジナルのデータAが存在する場合、エッジサーバi以外からのデータAへのアクセス負荷は、δ
A
≠i/c
Aと表される。なお、c
AはデータAの総数であり、δ
A
≠iはエッジサーバi以外からのデータAアクセス負荷の合計である。なお、エッジサーバiのデータアクセス負荷総量δ
iには上記他エッジサーバからのアクセス負荷が含まれている。
【0034】
(データのキャッシュイン・アウト時の想定負荷)
以下、データのキャッシュイン・アウト時の想定負荷について説明する。
【0035】
(1)パターン1
前提として、
図10(a)に示すように、エッジサーバiがキャッシュデータBを保持しており、エッジサーバjがオリジナルのデータA、エッジサーバkがオリジナルのデータBを保持しているとする。なお、キャッシュを維持した場合の、各エッジサーバi,j,kのリソース情報は、
図10(a)のとおりである。
【0036】
パターン1では、キャッシュ維持時及びキャッシュ変更時のいずれにおいても、エッジサーバiがデータA、Bの処理を実行するものとする。なお、キャッシュ変更時には、
図10(b)に示すように、データBをキャッシュアウトし、データAをキャッシュインする。
【0037】
このキャッシュ変更が行われた後の各エッジサーバi,j,kのリソース情報は、
図10(b)のとおりである。
図10(b)に示すようにキャッシュデータが変更されると、それに応じて、他のエッジサーバからのアクセスについても増減する。
【0038】
図11(a)には、
図10(a)に示すようにキャッシュ維持した場合の各エッジサーバi,j,kのデータ処理負荷総量と、データアクセス負荷総量とが示されている。一方、
図11(b)には、
図10(b)のようにキャッシュ変更した場合の各エッジサーバi,j,kのデータ処理負荷総量と、データアクセス負荷総量が示されている。
図11(b)に示すように、データ処理負荷総量については、
図11(a)から変化はないが、データアクセス負荷総量については、各エッジサーバにおいて
図11(a)から変化する。
図11(b)のようにキャッシュデータが変更されることにより、例えばキャッシュデータが増えた場合には、系全体として負荷が分散されるため、それぞれのデータへのアクセス負荷が減少する。
【0039】
図12(a)には、
図10(a)の場合におけるエッジサーバiでのデータ処理の処理スループットの計算方法が示されている。エッジサーバiでのデータAの処理スループットTP
A
iは、データアクセススループットTP
A,δ,iとデータ処理スループットTP
A,π,iのうち低い方に律速されるため、TP
A,δ,i及びTP
A,π,iの小さいほうの値とする。
【0040】
また、データアクセススループットについては、
図12(a)に示すように、処理要求から発生するデータアクセス負荷と、処理を実行するエッジサーバのデータアクセス容量を比較し、負荷が容量以下の場合には負荷分のスループットとする。同様に、データ処理スループットについては、処理要求から発生するデータ処理負荷と、処理を実行するエッジサーバのデータ処理容量を比較し、負荷が容量以下の場合には負荷分のスループットとする。一方、処理要求から発生するデータアクセス負荷及びデータ処理負荷が各容量を超える場合には、全体として容量に収まるように負荷に係数をかけた値をスループットとする。
【0041】
図12(b)には、
図10(b)の場合におけるエッジサーバiでのデータ処理の処理スループットTP’
A
i、TP’
B
iの計算方法が示されている。
図12(b)についても、
図12(a)と同様の計算方法が採用されている。
【0042】
(2)パターン2
パターン2では、キャッシュ維持時はパターン1と同様であるが、キャッシュ変更時には、
図13(a)に示すように、エッジサーバiがデータAの処理を実行し、エッジサーバkがデータBの処理を実行する。このパターン2における各エッジサーバi,j,kのリソース情報は、
図13(a)のとおりである。
【0043】
図13(b)には、
図13(a)のパターン2における各エッジサーバi,j,kのデータ処理負荷総量と、データアクセス負荷総量が示されている。
図13(b)に示すように、データ処理負荷総量については、
図11(a)から変化はないが、データアクセス負荷総量については、各エッジサーバにおいて
図11(a)から変化する。
図13(a)のようにキャッシュデータが変更されることにより、例えばキャッシュデータが増えた場合には、系全体として負荷が分散されるため、それぞれのデータへのアクセス負荷が減少する。
【0044】
図14には、
図13(a)のパターン2におけるエッジサーバiでのデータ処理の処理スループットの計算方法が示されている。このパターン2においても、パターン1の場合と同様に、エッジサーバiでのデータ処理の処理スループットTP’
A
i、TP’
B
iが計算される。
【0045】
(3)パターン3
パターン3では、
図15(a)に示すように、キャッシュ維持時にエッジサーバiがデータBの処理を実行し、エッジサーバjがデータAの処理を実行する。一方、キャッシュ変更時には、
図15(b)に示すように、エッジサーバiがデータA、Bの処理を実行する。
【0046】
図16(a)には、
図15(a)に示すようにキャッシュ維持した場合の各エッジサーバi,j,kのデータ処理負荷総量と、データアクセス負荷総量とが示されている。一方、
図16(b)には、
図15(b)のパターン3における各エッジサーバi,j,kのデータ処理負荷総量と、データアクセス負荷総量が示されている。
図16(b)に示すように、データ処理負荷総量については、エッジサーバi、jのデータ処理負荷総量が
図16(a)から変化し、データアクセス負荷総量については、各エッジサーバのデータアクセス負荷総量が
図16(a)から変化する。
【0047】
図17(a)には、
図15(a)の場合におけるエッジサーバiでのデータ処理の処理スループットの計算方法が示されている。エッジサーバiでのデータAの処理スループットTP
A
iは、データアクセススループットTP
A,δ,iとデータ処理スループットTP
A,π,iのうち低い方に律速されるため、TP
A,δ,i及びTP
A,π,iの小さいほうの値とする。
【0048】
また、データアクセススループットについては、
図17(a)に示すように、処理要求から発生するデータアクセス負荷と、処理を実行するエッジサーバのデータアクセス容量を比較し、負荷が容量以下の場合には負荷分のスループットとする。同様に、データ処理スループットについては、処理要求から発生するデータ処理負荷と、処理を実行するエッジサーバのデータ処理容量を比較し、負荷が容量以下の場合には負荷分のスループットとする。一方、処理要求から発生するデータアクセス負荷及びデータ処理負荷が容量を超える場合には、全体として容量に収まるように負荷に係数をかけた値をスループットとする。
【0049】
図17(b)には、
図15(b)の場合におけるエッジサーバiでのデータ処理の処理スループットTP’
A
i、TP’
B
iの計算方法が示されている。
図17(b)についても、
図17(a)と同様の計算方法が採用されている。
【0050】
(4)パターン4
パターン4では、キャッシュ維持時はパターン3(
図15(a))と同様であるが、キャッシュ変更時には、
図18(a)に示すように、エッジサーバiがデータAの処理を実行し、エッジサーバkがデータBの処理を実行する。このパターン4における各エッジサーバi,j,kのリソース情報は、
図18(a)のとおりである。
【0051】
図18(b)には、
図18(a)のパターン4における各エッジサーバi,j,kのデータ処理負荷総量と、データアクセス負荷総量が示されている。
図18(b)に示すように、各エッジサーバのデータ処理負荷総量及びデータアクセス負荷総量は、
図16(a)から変化する。
【0052】
図19には、
図18(a)のパターン4におけるエッジサーバiでのデータ処理の処理スループットの計算方法が示されている。このパターン4においても、パターン1~3の場合と同様に、エッジサーバiでのデータ処理の処理スループットTP’
A
i、TP’
B
iが計算される。
【0053】
(他エッジサーバのスループットの算出)
次に、エッジサーバi以外でのエッジサーバiにおけるキャッシュ変更に関連するデータA、Bの処理スループットの算出方法について説明する。なお、このエッジサーバi以外での処理スループットの算出方法は、上記パターン1~4において共通である。
【0054】
図20には、キャッシュ維持時における、エッジサーバi以外でのデータA、データBの処理スループットTP
A
≒i、TP
B
≒iが示されている。
図20に示すように、データAの処理スループットは、データAを保持するエッジのデータアクセス容量とデータAに対する処理要求量との大小関係から決定する。同様に、データBの処理スループットについても、データBを保持するエッジのデータアクセス容量とデータBに対する処理要求量との大小関係から決定する。
【0055】
なお、キャッシュ変更時におけるエッジサーバi以外でのデータA、データBの処理スループットTP’A
≒i、TP’B
≒iについても、同様に算出することができる。
【0056】
(キャッシュ変更判定)
キャッシュ変更を行うか否かを判定する場合、キャッシュ維持時のデータA,Bの処理スループットの総計TPと、キャッシュ変更時のデータA,Bの処理スループットの総計TP’とを比較する。そして、キャッシュ変更時の処理スループットの総計の方が大きければ(TP<TP’であれば)、キャッシュ変更を行うこととする。
【0057】
ここで、キャッシュ維持時の処理スループットの総計TPと、キャッシュ変更時の処理スループットの総計TP’は、次式(7)、(8)より求めることができる。
TP=TPA
i+TPB
i+TPA
≒i+TPB
≒i …(7)
TP’=TP’A
i+TP’B
i+TP’A
≒i+TP’B
≒i …(8)
【0058】
このキャッシュ変更判定は、各エッジサーバが、データ処理要求を受け付けた際に実行する。したがって、エッジサーバはキャッシュ変更判定の際に他のエッジサーバの最新の負荷情報を取得する必要がある。ただし、各エッジサーバが他のエッジサーバすべてから負荷情報を高頻度で収集することとすると、トラフィック量が多くなる。一方、トラフィック量の削減を目的として、データ処理要求を受け付けるごとに、他のエッジサーバに問合せすることとすると、サービス応答性が劣化するおそれがある。本実施形態では、サービス応答性を高く維持しながら、トラフィック量の削減を図るため、以下の構成を採用する。
【0059】
図21には、本第1の実施形態に係る分散処理システム100の装置構成が概略的に示されている。
図21に示すように、分散処理システム100は、クラウドサーバ10と、情報処理装置としての複数のエッジサーバ70と、を備える。クラウドサーバ10と複数のエッジサーバ70は、インターネットなどのネットワーク110に接続されている。
【0060】
クラウドサーバ10は、
図22(a)に示すようなハードウェア構成を有する。
図22(a)に示すように、クラウドサーバ10は、CPU(Central Processing Unit)90、ROM(Read Only Memory)92、RAM(Random Access Memory)94、記憶部(ここではHDD(Hard Disk Drive))96、ネットワークインタフェース97、及び可搬型記憶媒体91に記憶されたデータやプログラムを読み取り可能な可搬型記憶媒体用ドライブ99等を備えている。これらクラウドサーバ10の構成各部は、バス98に接続されている。クラウドサーバ10は、HDD96等において、データがどのエッジサーバ70において保持されているかを示すデータ位置情報テーブル12を有している。
【0061】
図23には、データ位置情報テーブル12のデータ構造が示されている。
図23に示すように、データ位置情報テーブル12においては、「データID」、「データ属性」、「データ位置」、「アクセス統計」が管理されている。「データID」は、データを識別する識別情報であり、「データ属性」は、データの各種属性値である。「データ位置」は、データアクセスエンドポイントの配列である。データアクセスエンドポイントには、エッジサーバアドレスが含まれるとともに、データがオリジナルのデータであれば「true」、キャッシュであれば「false」が含まれる。「アクセス統計」は、システム全体でのデータに対する単位時間当たりのアクセス数である。
【0062】
エッジサーバ70は、人やモノに関する動的なデータをユーザの端末からの処理要求に応じて処理し、処理結果をユーザに提供する。
【0063】
図22(b)には、エッジサーバ70のハードウェア構成が示されている。
図22(b)に示すように、エッジサーバ70は、クラウドサーバ10と同様、CPU190、ROM192、RAM194、記憶部(HDD)196、ネットワークインタフェース197、及び可搬型記憶媒体用ドライブ199等を備えている。これらエッジサーバ70の構成各部は、バス198に接続されている。エッジサーバ70では、ROM192あるいはHDD196に格納されているプログラム(分散処理プログラムを含む)、或いは可搬型記憶媒体用ドライブ199が可搬型記憶媒体91から読み取ったプログラム(分散処理プログラムを含む)をCPU190が実行することにより、
図24に示す、各部の機能が実現される。なお、
図24の各部の機能は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されてもよい。
【0064】
図24には、エッジサーバ70の機能ブロック図が示されている。
図24に示すように、エッジサーバ70は、CPU190がプログラムを実行することにより、データ管理部40、リソース情報管理部50、タスク実行場所制御部78として機能する。また、エッジサーバ70ではアプリ80がデータ処理を実行する。
【0065】
データ管理部40は、データ記憶部42と、分散データ位置管理部44と、を有する。データ記憶部42は、オリジナルのデータを記憶したり、キャッシュを記憶したりする。分散データ位置管理部44は、クラウドサーバ10のデータ位置情報テーブル12に、データ記憶部42に記憶されているデータを登録する。また、分散データ位置管理部44は、要求受付部72やアプリ80からの要求に応じて、データ位置情報テーブル12を参照し、要求受付部72やアプリ80が必要とするデータ位置情報を提供する。
【0066】
リソース情報管理部50は、自装置情報収集部52と、第1取得部としての低頻度収集部54と、キャッシュイン/アウト候補選出部56と、第2取得部としての高頻度収集部58と、を有する。
【0067】
自装置情報収集部52は、自装置の負荷情報を収集して、リソース情報一時記憶テーブル64に格納する。また、低頻度収集部54は、低頻度で(時間Tごとに)他のエッジサーバ70から負荷情報を収集して、リソース情報一時記憶テーブル64に格納する。
【0068】
ここで、リソース情報一時記憶テーブル64は、
図25(a)に示すようなデータ構造を有する。具体的には、リソース情報一時記憶テーブル64には、エッジサーバの識別情報である「エッジサーバID」と、各エッジサーバの負荷情報(Π:データ処理容量、Δ:データアクセス容量、π:データ処理負荷総量、δ:データアクセス負荷総量)が格納される。
【0069】
キャッシュイン/アウト候補選出部56は、リソース情報一時記憶テーブル64と、データアクセス統計テーブル62と、キャッシュテーブル65と、に基づいて、キャッシュイン候補のデータ、キャッシュアウト候補のデータを選出する処理を実行する。
【0070】
ここで、データアクセス統計テーブル62は、データアクセスに関する情報(アクセス履歴)を管理するテーブルである。具体的には、データアクセス統計テーブル62は、
図25(b)に示すように、「データID」に対応付けて、「自装置のアクセス統計」と、「システム全体のアクセス統計」と、を管理している。「自装置のアクセス統計」は、自装置の要求受付部72が受け付けた、単位時間あたりの各データの処理要求数である。「システム全体のアクセス統計」は、システム全体における単位時間当たりの各データの処理要求数である。このシステム全体のアクセス統計は、要求受付部72が分散データ位置管理部44に対してデータ位置を問い合わせたときに取得したアクセス統計(
図23のアクセス統計)である。
【0071】
キャッシュテーブル65は、自装置においてキャッシュされているデータを管理するテーブルであり、具体的には、
図25(c)に示すように、キャッシュされているデータの「データID」に対応付けて、「パス」と、「アクセス統計」と、が格納されている。「パス」は、ファイルシステム上のキャッシュデータへのパスを意味し、「アクセス統計」は、キャッシュデータへの単位時間当たりのアクセス数を意味する。
【0072】
キャッシュイン/アウト候補選出部56は、選出したキャッシュイン候補のデータのオリジナルデータを保持するエッジサーバ70の情報を、高頻度対象テーブル66に格納する。また、キャッシュイン/アウト候補選出部56は、キャッシュアウト候補のデータのオリジナルデータを保持するエッジサーバ70の情報を、高頻度対象テーブル66に格納する。ここで、高頻度対象テーブル66は、
図26(a)に示すようなテーブルであり、対象のエッジサーバの識別情報である「エッジサーバID」を管理している。
【0073】
図24に戻り、高頻度収集部58は、キャッシュイン候補のデータのオリジナルデータを保持するエッジサーバと、キャッシュアウト候補のデータのオリジナルデータを保持するエッジサーバから、高頻度で(時間τ(τ<T)ごとに)負荷情報を収集する。高頻度収集部58は、高頻度で収集した負荷情報を、リソース情報テーブル68に格納する。
【0074】
ここで、リソース情報テーブル68は、
図26(b)に示すようなテーブルであり、前述したリソース情報一時記憶テーブル64と同様のデータ構造を有している。
【0075】
図24に戻り、タスク実行場所制御部78は、要求受付部72と、キャッシュイン/アウト判定部74と、選定部としての処理実行場所決定部76と、を有する。
【0076】
要求受付部72は、ユーザの端末からデータの処理要求を受け付け、キャッシュイン/アウト判定部74に通知する。
【0077】
キャッシュイン/アウト判定部74は、処理要求があったデータをキャッシュインし、他のデータをキャッシュアウトする(キャッシュ変更する)か、あるいはキャッシュを維持するかを判定する。
【0078】
処理実行場所決定部76は、キャッシュイン/アウト判定部74がキャッシュ変更を行うと判定した場合には、自装置を処理実行場所として決定する。また、処理実行場所決定部76は、キャッシュイン/アウト判定部74がキャッシュ変更を行わないと判定した場合に、いずれのエッジサーバ70においてデータ処理を実行するかを決定する。そして、処理実行場所決定部76は、決定結果を要求受付部72に通知し、要求受付部72は、通知された処理実行場所(自装置のアプリ80又は他のエッジサーバ70)に対して、処理実行要求のメッセージを通知する。
【0079】
アプリ80は、自装置の要求受付部72又は他のエッジサーバ70から処理実行要求のメッセージを受信すると、受信したメッセージに従って処理を実行する。
【0080】
本実施形態においては、エッジサーバ70が有する各機能は、
図24に示すように、エッジサーバ70内の機能間、他のエッジサーバとの間、クラウドサーバ10との間、ユーザの端末との間で、メッセージ(m1~m9、m1’、m2’)をやり取りする。
図27~
図30には、やり取りされるメッセージの構造の例が示されている。
【0081】
図27(a)には、ユーザの端末から要求受付部72に送信されてくるアプリ処理要求のメッセージ(m1)の構造が示されている。
図27(a)に示すように、メッセージm1には、宛先アドレス(エッジサーバ70のアドレス)、送信元アドレス(端末のアドレス)、アプリパス、処理対象データと処理内容を記述したボディが含まれる。
【0082】
図27(b)には、要求受付部72が端末に返すアプリ処理応答のメッセージ(m2)の構造を示されている。
図27(b)に示すように、メッセージm2には、宛先アドレス(端末のアドレス)、送信元アドレス(エッジサーバ70のアドレス)、処理結果を示す処理応答、が含まれる。
【0083】
図28(a)には、要求受付部72が自装置内のアプリや他のエッジサーバ70に送信する、アプリ処理要求のメッセージ(m1’)の構造が示されている。このメッセージm1’は、上述したメッセージm1と同様の構成を有するが、メッセージm1とは宛先アドレスや送信元アドレスの内容が異なっている。
【0084】
図28(b)には、要求受付部72がメッセージm1’の送信先から受け取る、アプリ処理応答のメッセージ(m2’)の構造が示されている。このメッセージm2’は、上述したメッセージm2と同様の構成を有するが、メッセージm2とは宛先アドレスや送信元アドレスの内容が異なっている。
【0085】
図29(a)には、アプリ80が自装置内のデータ記憶部42や、他のエッジサーバ70に送信する、データ取得要求のメッセージ(m3)の構造が示されている。このメッセージm3には、宛先アドレス、送信元アドレス、データを格納するデータベースの名称(DB名)、及びデータ要求クエリが記述されるボディ、が含まれる。
【0086】
図29(b)には、アプリ80がメッセージm3の送信先から受け取る、データ取得応答のメッセージ(m4)の構造が示されている。このメッセージm4には、宛先アドレス、送信元アドレス、及びアプリ80が要求したデータ、が含まれる。
【0087】
図30(a)には、要求受付部72から分散データ位置管理部44に送信するとともに、分散データ位置管理部44からクラウドサーバ10に送信する、データ/キャッシュ位置要求のメッセージ(m5)の構造が示されている。このメッセージm5には、宛先アドレス、送信元アドレス、及びデータやキャッシュの位置要求クエリが記述されるボディ、が含まれる。
【0088】
図30(b)には、クラウドサーバ10から分散データ位置管理部44に送信するとともに、分散データ位置管理部44から要求受付部72に送信する、データ/キャッシュ位置応答のメッセージ(m6)の構造が示されている。このメッセージm6には、宛先アドレス、送信元アドレス、及びクラウドサーバ10が特定したデータやキャッシュの位置情報(データ位置)、が含まれる。
【0089】
図30(c)には、低頻度収集部54や高頻度収集部58が他のエッジサーバ70の負荷情報を取得する際に、他のエッジサーバ70から送信されてくる、リソース情報交換のメッセージ(m7)の構造が示されている。このメッセージm7には、宛先アドレス、送信元アドレス、及び送信元の他のエッジサーバ70の負荷情報が記述されるボディ、が含まれる。
【0090】
(エッジサーバ70の処理について)
次に、
図31~
図34のフローチャートに沿って、エッジサーバ70の処理について詳細に説明する。本第1の実施形態においては、エッジサーバ70は、低頻度で実行される低頻度処理(
図31)と、高頻度で実行される高頻度処理(
図32)と、ユーザからの処理要求に応じて実行される要求実行処理(
図33、
図34)と、を並行して実行する。
【0091】
(低頻度処理)
以下、低頻度処理について、
図31に基づいて詳細に説明する。
【0092】
図31の処理では、まずステップS10において、低頻度収集部54が、ネットワーク110に接続されている他のエッジサーバ70から情報収集を行う。この場合、低頻度収集部54は、他のエッジサーバ70からメッセージm7(
図30(c))を取得することで、他のエッジサーバ70のデータ処理負荷総量(π)、データアクセス負荷総量(δ)、データ処理容量(Π)、データアクセス容量(Δ)を取得する。
【0093】
次いで、ステップS12では、キャッシュイン/アウト候補選出部56が、データアクセス統計テーブル62(
図25(b))から、自装置のアクセス統計を取得する。
【0094】
次いで、ステップS14では、キャッシュイン/アウト候補選出部56が、自装置のアクセス統計に基づいて、キャッシュイン候補データを選出する。具体的には、キャッシュイン/アウト候補選出部56は、予め定めた基準以上のアクセスがあるデータであり、かつキャッシュテーブル65に格納されていないデータをキャッシュイン候補として選出する。
【0095】
次いで、ステップS16では、キャッシュイン/アウト候補選出部56が、キャッシュイン候補データ(オリジナルデータ)を保持するエッジサーバ70を高頻度情報収集対象として設定する。キャッシュイン/アウト候補選出部56は、高頻度情報収集対象として設定したエッジサーバ70の情報を高頻度対象テーブル66(
図26(a))に格納する。
【0096】
次いで、ステップS18では、キャッシュイン/アウト候補選出部56が、自装置内のキャッシュデータの情報を格納するキャッシュテーブル65(
図25(c))からキャッシュデータを1つ選択する。
【0097】
次いで、ステップS20では、キャッシュイン/アウト候補選出部56が、ステップS14で選出したキャッシュイン候補データの1つを選択する。
【0098】
次いで、ステップS22では、キャッシュイン/アウト候補選出部56が、選択したキャッシュイン候補データをデータA、選択したキャッシュデータをデータBとして、上述した式(7)、(8)に基づいてTP,TP’を計算する。なお、TPは、データBのキャッシュを維持し、データAをキャッシュしない場合(キャッシュ維持時)の処理スループットであり、TP’は、データBの代わりにデータAをキャッシュする場合(キャッシュ変更時)の処理スループットである。
【0099】
次いで、ステップS24では、キャッシュイン/アウト候補選出部56が、TP’がTPよりも高いか否か(TP’>TP?)を判断する。このステップS24の判断が肯定された場合、すなわち、キャッシュ変更した方が処理スループットが高くなる場合には、ステップS26に移行する。
【0100】
ステップS26に移行すると、キャッシュイン/アウト候補選出部56は、選択したキャッシュデータをキャッシュアウト候補データとし、スコア(TP’-TP)を算出する。その後は、ステップS28に移行する。
【0101】
なお、ステップS24の判断が否定された場合、すなわち、キャッシュ維持した方が処理スループットが高い場合には、ステップS26を経ずに、ステップS28に移行する。
【0102】
ステップS28に移行すると、キャッシュイン/アウト候補選出部56は、全キャッシュイン候補データを選択したか否かを判断する。このステップS28の判断が否定された場合には、ステップS20に戻る。そして、ステップS28の判断が肯定されるまで、ステップS20~S28の処理、判断を繰り返す。これにより、キャッシュデータ(データB)を固定したまま、各キャッシュイン候補データ(データA)がキャッシュアウト候補データとなるかを判定し、キャッシュアウト候補データとなる場合には、そのスコア(TP’-TP)を算出することができる。
【0103】
その後、ステップS28の判断が肯定されると、ステップS30に移行する。
【0104】
ステップS30に移行すると、キャッシュイン/アウト候補選出部56が、保有するキャッシュアウト候補リストにキャッシュアウト候補データをスコアの最大値とともに格納する。
【0105】
次いで、ステップS32では、キャッシュイン/アウト候補選出部56が、全キャッシュデータを選択したか否かを判断する。このステップS32の判断が否定された場合には、ステップS18に戻る。そして、ステップS32の判断が肯定されるまで、ステップS18~S30の処理、判断を繰り返す。これにより、全キャッシュデータについて、キャッシュアウト候補データとなるかを判定し、キャッシュアウト候補データとなる場合には、キャッシュアウト候補リストに、そのデータをスコア(TP’-TP)の最大値とともに格納することができる。
【0106】
その後、ステップS32の判断が肯定されると、ステップS34に移行する。
【0107】
ステップS34に移行すると、キャッシュイン/アウト候補選出部56は、キャッシュアウト候補リストの上位N個を選択し、同データのオリジナルデータを保持するエッジサーバ70を高頻度情報収集対象として設定する。キャッシュイン/アウト候補選出部56は、高頻度情報収集対象として設定したエッジサーバ70の情報を高頻度対象テーブル66(
図26(a))に格納する。
【0108】
次いで、ステップS36では、低頻度収集部54が、時間(T)待機する。この時間Tは、低頻度でステップS10~S34の処理を繰り返すための、予め定められた繰返し周期である。
【0109】
その後は、ステップS10に戻り、時間Tごとに(低頻度で)ステップS10~S34の処理が繰り返し実行されるようになっている。
【0110】
(高頻度処理)
次に、高頻度処理について、
図32のフローチャートに沿って説明する。
【0111】
図32の処理では、まず、ステップS40において、高頻度収集部58が、高頻度対象テーブル66を参照して、高頻度情報収集対象のエッジサーバ70を特定し、特定したエッジサーバ70からリソース情報を収集する。そして、高頻度収集部58は、収集したリソース情報を、リソース情報テーブル68(
図26(b))に格納する。
【0112】
次いで、ステップS42では、高頻度収集部58は、時間(τ)だけ待機する。この時間τは、前述した時間Tよりも短い時間であり、予め定められた高頻度の繰返し周期である。
【0113】
ステップS42の後は、ステップS40に戻る。すなわち、
図32の処理においては、ステップS40の処理が時間τ毎に(高頻度で)繰り返し実行される。
【0114】
(要求実行処理)
次に、要求実行処理について、
図33、
図34のフローチャートに沿って詳細に説明する。
【0115】
図33の処理では、まず、ステップS50において、要求受付部72が、ユーザの端末から処理実行要求を受信するまで待機する。端末から処理実行要求があると、ステップS52に移行し、要求受付部72は、データアクセス統計テーブル62を更新する。
【0116】
次いで、ステップS54では、要求受付部72が、対象データがキャッシュイン候補データであるか否かを判断する。この場合、要求受付部72は、上述したステップS14のキャッシュイン/アウト候補選出部56の処理と同様に、データアクセス統計テーブル62を参照して、キャッシュイン候補データを選出し、対象データがキャッシュイン候補データであるか否かを判断する。
【0117】
このステップS54の判断が肯定された場合には、ステップS56に移行するが、否定された場合には、ステップS62に移行する。
【0118】
ステップS54の判断が肯定されて、ステップS56に移行すると、キャッシュアウトデータ選定処理のサブルーチンが実行される。このキャッシュアウトデータ選定処理においては、
図34のフローチャートに沿った処理が実行される。
【0119】
図34の処理では、まず、ステップS80において、要求受付部72が、キャッシュアウト候補データを1つ選択する。なお、要求受付部72は、キャッシュイン/アウト候補選出部56が選出したキャッシュアウト候補データの情報を取得しているものとし、キャッシュアウト候補データの中から、1つを選択するものとする。
【0120】
次いで、ステップS82では、要求受付部72は、選択したキャッシュイン候補データをデータA、選択したキャッシュアウト候補データをデータBとして、リソース情報テーブル68のデータに基づいて、TP,TP’を計算する。なお、この計算においては、上式(7)、(8)を用いるものとする。なお、TPは、データBのキャッシュを維持し、データAをキャッシュしない場合(キャッシュ維持時)の処理スループットであり、TP’は、データBの代わりにデータAをキャッシュする場合(キャッシュ変更時)の処理スループットである。なお、要求受付部72は、算出したTP,TP’をキャッシュイン/アウト判定部74に送信する。
【0121】
次いで、ステップS84では、キャッシュイン/アウト判定部74が、TP’の方がTPよりも大きく、かつTP’がTP’MAXよりも大きいか否かを判断する。ここで、TP’MAXは、初期値が0であるものとする。このステップS84の判断が肯定された場合には、ステップS86に移行する。
【0122】
ステップS86に移行すると、キャッシュイン/アウト判定部74は、選択したキャッシュアウト候補データをキャッシュアウトデータとし、TP’MAXをTP’とする。その後は、ステップS88に移行する。
【0123】
一方、ステップS84の判断が否定された場合には、ステップS86を経ずにステップS88に移行する。
【0124】
ステップS88に移行すると、要求受付部72は、すべてのキャッシュアウト候補データを選択したか否かを判断する。このステップS88の判断が否定された場合には、ステップS80に戻り、ステップS88の判断が肯定されるまでステップS80~S88の処理、判断を繰り返し実行する。
【0125】
そして、ステップS88の判断が肯定された場合には、
図34の全処理を終了し、
図33のステップS58に移行する。
【0126】
ステップS58に移行すると、キャッシュイン/アウト判定部74は、キャッシュアウトデータが無いか否かを判断する。このステップS58の判断が否定された場合、すなわち、キャッシュアウトデータが存在する場合には、ステップS60に移行する。一方、ステップS58の判断が肯定された場合、すなわち、キャッシュアウトデータが存在しない場合には、ステップS62に移行する。
【0127】
ステップS58の判断が否定されて、ステップS60に移行すると、キャッシュイン/アウト判定部74は、処理対象データをキャッシュインし、キャッシュアウトデータをキャッシュアウトする。また、処理実行場所決定部76は、処理実行場所を自装置のアプリとする。その後は、ステップS64に移行し、要求受付部72は、処理実行場所(自装置のアプリ80)にメッセージm1’を送信して、アプリ80に処理を実行させる。
【0128】
一方、ステップS62に移行した場合、処理実行場所決定部76は、処理実行場所計算の結果に基づいて処理実行場所を決定する。具体的には、処理実行場所決定部76は、上式(1)を用いて説明した方法で、処理が完了するまでの時間が最小となる処理実行場所を決定する。この場合、処理実行要求のあったデータをいずれのエッジサーバ70が保持しているか、に基づいて、処理実行場所を決定していることになる。そして、ステップS64に移行すると、要求受付部72は、決定した処理実行場所にメッセージm1’を送信して、処理を実行させる。
【0129】
上述したように、ステップS64の処理が実行されると、
図33の全処理が終了する。なお、
図33の処理は、繰り返し実行されるようになっている。
【0130】
これまでの説明から明らかなように、本第1の実施形態では、キャッシュイン/アウト候補選出部56により、キャッシュイン候補データを特定する記憶候補特定部及びキャッシュアウト候補データを特定する削除候補特定部としての機能が実現されている。また、本第1の実施形態では、要求受付部72と、キャッシュイン/アウト判定部74とにより、キャッシュ維持するかキャッシュ変更するかを決定する決定部としての機能が実現されている。
【0131】
以上詳細に説明したように、本第1の実施形態によると、キャッシュイン/アウト候補選出部56は、過去におけるデータへのアクセス履歴を格納するデータアクセス統計テーブル62及びキャッシュテーブル65に基づいて、キャッシュイン候補データを特定する。また、低頻度収集部54は、時間Tごとに(低頻度で)他のエッジサーバ70から負荷情報を取得する。これに対し、キャッシュイン/アウト候補選出部56は、リソース情報一時記憶テーブル64に格納されている他のエッジサーバ70の負荷情報と自装置の負荷情報とに基づいて、キャッシュデータの中から、キャッシュアウト候補データを特定する。また、高頻度収集部58は、時間τごとに(高頻度で)、キャッシュイン候補データ又はキャッシュアウト候補データを保持する他のエッジサーバ70の負荷情報を取得する。そして、要求受付部72及びキャッシュイン/アウト判定部74は、キャッシュイン候補データの処理要求があった場合に、高頻度で取得された他のエッジサーバ70の負荷情報と自装置の負荷情報とに基づいて、キャッシュを維持するか変更するかを決定する。このように、本実施形態では、
図35に示すように、エッジサーバ70が、(1)他のエッジサーバから低頻度で負荷情報を収集し、(2)収集した情報を用いて、高頻度で負荷情報を収集する対象の他のエッジサーバを決定する(絞り込む)。また、エッジサーバ70は、(3)決定した(絞り込んだ)エッジサーバのみから高頻度で負荷情報を収集する。そして、エッジサーバ70は、(4)処理実行要求があった場合に、(5)高頻度で収集した負荷情報を用いて、キャッシュ維持するか、キャッシュ変更するかを決定する。したがって、本実施形態では、すべてのエッジサーバから高頻度で負荷情報を収集しなくても、キャッシュ維持するかキャッシュ変更するかを適切に決定することができるため、トラフィック量を削減することができる。また、トラフィック量を削減するために、処理実行要求があった後にエッジサーバに対して負荷情報を問い合わせるというようなことはしないため、サービス応答性を良好にすることが可能である。
【0132】
また、本実施形態では、キャッシュイン/アウト候補選出部56は、キャッシュデータを維持した場合と、キャッシュイン候補データをキャッシュデータと変更した場合との処理スループットを比較する(S22)。そして、キャッシュイン/アウト候補選出部56は、キャッシュデータを変更した方が処理スループットが高い場合に、そのキャッシュデータをキャッシュアウト候補データとする。これにより、キャッシュアウト候補データとして適切なキャッシュデータを選定することができる。
【0133】
また、本実施形態では、処理実行場所決定部76は、キャッシュ変更しない場合(S54:否定、S58:肯定)に、処理実行場所計算の結果に基づいて処理実行場所を決定する(S62)。これにより、処理時間の短いエッジサーバ70において処理を行うことができる。
【0134】
《第2の実施形態》
次に、第2の実施形態について、
図36に基づいて説明する。本第2の実施形態においては、どのデータをどのエッジサーバで保持しているかの情報(データ位置情報)を各エッジサーバで保持することとしている。
【0135】
図36には、本第2の実施形態のエッジサーバ70の機能ブロック図が示されている。
図36に示すように、本第2の実施形態においては、分散データ位置管理部44がデータ位置情報管理テーブルと、データ位置情報テーブルを有している点が第1の実施形態(
図24)と異なる。なお、データ位置情報テーブルは、第1の実施形態で説明した
図23のようなテーブルであるが、エッジサーバそれぞれが、すべてのデータの位置情報を保持していないものとする。このため、分散データ位置管理部44は、データ位置情報管理テーブルにおいて、自装置内で管理していないデータの位置情報について問い合わせる際の問い合わせ先のエッジサーバの情報を管理している。
【0136】
図37には、データ位置情報管理テーブルのデータ構造が示されている。
図37に示すように、データ位置情報管理テーブルにおいては、自装置内で位置情報を管理していないデータのデータIDと、当該データの位置情報を管理しているエッジサーバの識別情報(管理担当エッジサーバID)と、を対応付けて記憶している。
【0137】
このようにすることで、第1の実施形態のように、クラウドサーバ10においてデータの位置情報を管理しなくても、データの位置情報をエッジサーバ70において分散管理することができる。
【0138】
なお、データの位置情報をエッジ間で分担して管理するために、DHT(Distributed Hash Table:分散ハッシュテーブル)を用いて効率化を図ることとしてもよい。
【0139】
なお、上記各実施形態においては、キャッシュイン/アウト候補選出部56は、低頻度で収集される各エッジサーバ70(自装置及び他のエッジサーバ)の負荷情報を用いて、自装置の負荷情報と、他エッジサーバそれぞれの負荷情報との相関関係を算出してもよい。
【0140】
例えば、自装置のデータ処理負荷総量をπi、データアクセス負荷総量をδiとしたときに、他のエッジサーバsのデータ処理負荷総量πs、データアクセス負荷総量δsが、次式(9)、(10)にて表されるとする。
πs=απ
s×πi+βπ
s …(9)
δs=αδ
s×δi+βδ
s …(10)
【0141】
この場合、キャッシュイン/アウト候補選出部56は、相関関係として、自装置の負荷情報とエッジサーバsの負荷情報を統計処理して、απ
s、αδ
s及びβπ
s、βδ
sを求める。
【0142】
キャッシュイン/アウト候補選出部56は、ある時刻における他のエッジサーバそれぞれの負荷情報を、ある時刻における自装置の負荷情報と、上式(9)、(10)とに基づいて推定することができる。したがって、キャッシュイン/アウト候補選出部56は、推定したある時刻における他のエッジサーバの負荷情報に基づいてキャッシュアウト候補データを選定することができる。
【0143】
このようにすることで、低頻度での他のエッジサーバ70の負荷情報の収集頻度を更に低頻度化することが可能である。
【0144】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記憶媒体(ただし、搬送波は除く)に記録しておくことができる。
【0145】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD(Digital Versatile Disc)、CD-ROM(Compact Disc Read Only Memory)などの可搬型記憶媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0146】
プログラムを実行するコンピュータは、例えば、可搬型記憶媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記憶媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0147】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【0148】
なお、以上の第1、第2の実施形態の説明に関して、更に以下の付記を開示する。
(付記1) 過去におけるデータへのアクセス履歴に基づいて、記憶部に一時的に記憶するデータの候補を特定する記憶候補特定部と、
第1の時間間隔で他の情報処理装置から負荷情報を取得する第1取得部と、
前記第1取得部が取得した前記他の情報処理装置の負荷情報と自装置の負荷情報とに基づいて、前記記憶部に一時的に記憶されているデータの中から、特定した前記記憶するデータの候補の代わりに前記記憶部から削除するデータの候補を特定する削除候補特定部と、
前記第1の時間間隔よりも短い第2の時間間隔で、前記記憶するデータの候補を保持する情報処理装置と、前記削除するデータの候補を保持する情報処理装置とから負荷情報を取得する第2取得部と、
前記記憶するデータの候補へのアクセスがあった場合に、前記第2取得部が取得した負荷情報と自装置の負荷情報とに基づいて、前記アクセスがあったデータを前記記憶部に一時的に記憶するか否か、及び前記アクセスがあったデータを前記記憶部に一時的に記憶する場合に前記削除するデータの候補のいずれを削除するかを決定する決定部と、
を備える情報処理装置。
(付記2) 前記削除候補特定部は、前記第1の時間間隔で前記他の情報処理装置から取得した負荷情報と、自装置の負荷情報とに基づいて、自装置の負荷情報と前記他の情報処理装置の負荷情報の相関関係を算出し、算出した前記相関関係と自装置の負荷情報とから推定される前記他の情報処理装置の負荷情報を用いて、前記削除するデータの候補を特定する、ことを特徴とする付記1に記載の情報処理装置。
(付記3) 前記削除候補特定部は、
前記記憶するデータの候補を前記記憶部に記憶しないときよりも、前記記憶するデータの候補を前記記憶部に記憶し、前記記憶部に記憶されていたデータを削除したときの方が、前記記憶するデータの候補を処理する際のスループットが高い場合に、前記記憶部に記憶されていたデータを前記削除するデータの候補として特定する、付記1又は2に記載の情報処理装置。
(付記4) 前記決定部が前記アクセスがあったデータを前記記憶部に一時的に記憶しないと決定した場合に、各情報処理装置の負荷情報と、前記アクセスがあったデータをいずれの情報処理装置が保持しているか、に基づいて、前記アクセスがあったデータの処理を実行する情報処理装置を選定する選定部、を更に備える付記1~3のいずれかに記載の情報処理装置。
(付記5) ネットワークに接続された複数の情報処理装置を有する分散処理システムであって、
前記情報処理装置は、
過去におけるデータへのアクセス履歴に基づいて、記憶部に一時的に記憶するデータの候補を特定する記憶候補特定部と、
第1の時間間隔で他の情報処理装置から負荷情報を取得する第1取得部と、
前記第1取得部が取得した前記他の情報処理装置の負荷情報と自装置の負荷情報とに基づいて、前記記憶部に一時的に記憶されているデータの中から、特定した前記記憶するデータの候補の代わりに前記記憶部から削除するデータの候補を特定する削除候補特定部と、
前記第1の時間間隔よりも短い第2の時間間隔で、前記記憶するデータの候補を保持する情報処理装置と、前記削除するデータの候補を保持する情報処理装置とから負荷情報を取得する第2取得部と、
前記記憶するデータの候補へのアクセスがあった場合に、前記第2取得部が取得した負荷情報と自装置の負荷情報とに基づいて、前記アクセスがあったデータを前記記憶部に一時的に記憶するか否か、及び前記アクセスがあったデータを前記記憶部に一時的に記憶する場合に前記削除するデータの候補のいずれを削除するかを決定する決定部と、
を備えることを特徴とする分散処理システム。
(付記6) ネットワークに接続された複数の情報処理装置のコンピュータに、
過去におけるデータへのアクセス履歴に基づいて、記憶部に一時的に記憶するデータの候補を特定し、
第1の時間間隔で他の情報処理装置から負荷情報を取得し、取得した前記他の情報処理装置の負荷情報と自装置の負荷情報とに基づいて、前記記憶部に一時的に記憶されているデータの中から、特定した前記記憶するデータの候補の代わりに前記記憶部から削除するデータの候補を特定し、
前記第1の時間間隔よりも短い第2の時間間隔で、前記記憶するデータの候補を保持する情報処理装置と、前記削除するデータの候補を保持する情報処理装置とから負荷情報を取得し、
前記記憶するデータの候補へのアクセスがあった場合に、前記第2の時間間隔で取得した負荷情報と自装置の負荷情報とに基づいて、前記アクセスがあったデータを前記記憶部に一時的に記憶するか否か、及び前記アクセスがあったデータを前記記憶部に一時的に記憶する場合に前記削除するデータの候補のいずれを削除するかを決定する、
処理を実行させる分散処理プログラム。
(付記7) 前記削除するデータの候補を特定する処理では、前記第1の時間間隔で前記他の情報処理装置から取得した負荷情報と、自装置の負荷情報とに基づいて、自装置の負荷情報と前記他の情報処理装置の負荷情報の相関関係を算出し、算出した前記相関関係と自装置の負荷情報とから推定される前記他の情報処理装置の負荷情報を用いて、前記削除するデータの候補を特定する、ことを特徴とする付記6に記載の分散処理プログラム。
(付記8) 前記削除するデータの候補を特定する処理では、
前記記憶するデータの候補を前記記憶部に記憶しないときよりも、前記記憶するデータの候補を前記記憶部に記憶し、前記記憶部に記憶されていたデータを削除したときの方が、前記記憶するデータの候補を処理する際のスループットが高い場合に、前記記憶部に記憶されていたデータを前記削除するデータの候補として特定する、付記6又は7に記載の分散処理プログラム。
(付記9) 前記決定する処理において、前記アクセスがあったデータを前記記憶部に一時的に記憶しないと決定した場合に、各情報処理装置の負荷情報と、前記アクセスがあったデータをいずれの情報処理装置が保持しているか、に基づいて、前記アクセスがあったデータの処理を実行する情報処理装置を選定する、処理を前記コンピュータに更に実行させることを特徴とする付記6~8のいずれかに記載の分散処理プログラム。
【符号の説明】
【0149】
54 低頻度収集部(第1取得部)
56 キャッシュイン/アウト候補選出部(記憶候補特定部、削除候補特定部)
58 高頻度収集部(第2取得部)
62 データアクセス統計テーブル(アクセス履歴)
70 エッジサーバ(情報処理装置)
72 要求受付部(決定部の一部)
74 キャッシュイン/アウト判定部(決定部の一部)
76 処理実行場所決定部(選定部)
100 分散処理システム
110 ネットワーク