以下、本発明の一実施形態について説明する。本実施形態では、各端末を管理するサーバを用いずに、端末群のみで各端末間の負荷分散を実現することができるシステム1について説明する。
[第一の実施形態]
以下、第一の実施形態について説明する。
<全体構成>
まず、本実施形態に係るシステム1の全体構成について、図1を参照しながら説明する。図1は、第一の実施形態に係るシステム1の全体構成の一例を示す図である。
図1に示すように、本実施形態に係るシステム1には、複数の端末10(図1に示す例では、端末10A、端末10B、端末10C及び端末10D)がローカルネットワークN1内に存在する。また、各端末10は、インターネットN2を介して、データ収集サーバ20と通信可能に接続される。なお、ローカルネットワークN1とは、例えば、工場内やプラント内、又は或る企業内等のローカルなネットワーク環境のことである。
端末10はエッジコントローラや各種組込み機器等であり、アプリ実行環境100と、当該アプリ実行環境上で実行されるアプリケーション110(以下、「アプリ110」ともいう。)と、他の端末10との間で負荷分散を実現する分散機能部200とを有している。
アプリ実行環境100とはアプリ110を実行するための実行環境のことであり、例えば、OS(Operating System)上に構築されたコンテナ等である。アプリ110は、端末10の配下にある機器(例えば、各種センサ等)から収集したデータや他の端末10から受信したデータ等に対して何等かの処理を実行するアプリケーションプログラムである。図1に示す例では、端末10Aはデータ加工処理を実行するアプリ110Aを有している。同様に、端末10Bはデータ解析処理を実行するアプリ110B、端末10Cはデータ表示処理を実行するアプリ110C、端末10Dはデータ収集サーバ20へのデータ送信処理を実行するアプリ110Dを有している。
これにより、図1に示す例では、例えば、端末10の配下にある機器から収集したデータを端末10Aのアプリ110Aで加工した後、端末10Bのアプリ110Bで解析し、その解析結果を示すデータを端末10Cのアプリ110Cで表示させると共に、端末10Dのアプリ110Dでデータ収集サーバ20へ送信する、といった処理が実現される。なお、図1に示す例では各端末10は1つのアプリ110のみを有しているが、これは一例であって、各端末10は複数のアプリ110を有していてもよい。
また、分散機能部200は、アプリ110の実行を他の端末10に分散させる機能を実現する。このとき、分散機能部200は、アプリ110の処理負荷が高くなった場合に、他の端末10で当該アプリ110が実行可能か否かや他の端末10の負荷状況等を考慮して、当該アプリ110を他の端末10に実行させる。これにより、本実施形態に係るシステム1では、端末10を管理するサーバを用いずに、各端末10間で負荷分散を実現することができる。
<ハードウェア構成>
次に、本実施形態に係る端末10のハードウェア構成について、図2を参照しながら説明する。図2は、第一の実施形態に係る端末10のハードウェア構成の一例を示す図である。
図2に示すように、本実施形態に係る端末10は、入力装置501と、表示装置502と、外部I/F503と、通信I/F504と、プロセッサ505と、メモリ装置506とを有する。これらの各ハードウェアは、それぞれがバス507を介して通信可能に接続されている。
入力装置501は、例えば、各種ボタンやタッチパネル等である。表示装置502は、例えば、表示パネル等である。外部I/F503は、記録媒体503a等の外部装置とのインタフェースである。なお、記録媒体503aとしては、例えば、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等がある。
通信I/F504は、他の端末10やデータ収集サーバ20等と通信するためのインタフェースである。プロセッサ505は、例えば、CPU(Central Processing Unit)等の各種演算装置である。メモリ装置506は、例えば、SSD(Solid State Drive)やRAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ等の各種記憶装置である。
本実施形態に係る端末10は、図2に示すハードウェア構成を有することにより、各種処理を実現することができる。なお、図2に示すハードウェア構成は一例であって、端末10は、他のハードウェア構成を有していてもよい。例えば、端末10は、複数のプロセッサ505を有していてもよいし、複数のメモリ装置506を有していてもよい。
<分散機能部200の詳細な機能構成>
次に、本実施形態に係る分散機能部200の詳細な機能構成について、図3を参照しながら説明する。図3は、第一の実施形態に係る分散機能部200の詳細な機能構成の一例を示す図である。
図3に示すように、本実施形態に係る分散機能部200には、端末確認部201と、負荷検知部202と、アプリ環境条件依頼部203と、環境条件返答部204と、分散先選択部205と、アプリ分散部206と、アプリ削除部207とが含まれる。なお、分散機能部200は、例えば、端末10にインストールされた1以上のプログラムがプロセッサ505に実行させる処理により実現される。
端末確認部201は、ローカルネットワークN1内に存在する端末10(つまり、ローカルネットワークN1に所属する他の端末10)を確認し、所属端末情報を作成する。所属端末情報とは、ローカルネットワークN1内に存在する他の端末10の端末IDとIP(Internet Protocol)アドレスとを対応付けた情報である。所属端末情報の一例を図4に示す。図4に示す所属端末情報では、端末ID「T002」とそのIPアドレス、端末ID「T003」とそのIPアドレス、端末ID「T004」とそのIPアドレスがそれぞれ対応付けられている。なお、所属端末情報には自身(つまり、自端末10)の端末IDとそのIPアドレスは含まれていないものとするが、これは一例であって含まれていてもよい。
負荷検知部202は、自端末10におけるアプリ110のCPU負荷率を取得する。また、負荷検知部202は、当該アプリ110のCPU負荷率が高いか否か(具体的には、後述する負荷率閾値以内であるか否か)を判定する。
アプリ環境条件依頼部203は、アプリ110のCPU負荷率が高い場合に、ローカルネットワークN1内の他の端末10に対して、当該アプリ110の実行に必要な条件を示す情報(以下、「送信用アプリ環境条件情報」ともいう。)を送信する。ここで、送信用アプリ環境条件情報は、アプリ環境条件情報から作成される。アプリ環境条件情報の一例を図5に示す。図5に示すアプリ環境条件情報は、アプリID「AP01」のアプリ環境条件情報である。なお、端末10が複数のアプリ110を有している場合は、各アプリ110に対してそれぞれアプリ環境条件情報が存在する。
図5に示すように、アプリ環境条件情報には、アプリIDの他に、OS、ミドルウェア、必要HWリソース、想定負荷率、現在の負荷率、負荷率閾値、分散フラグ、分散先等の項目が含まれる。項目「アプリID」には、アプリ110を一意に識別する識別情報が設定される。項目「OS」には、当該アプリ110の実行に必要なOS名等が設定される。項目「ミドルウェア」には、当該アプリ110の実行に必要なミドルウェア名等が設定される。項目「必要HWリソース」には、当該アプリ110の実行に必要なハードウェアリソース(例えば、必要なメモリ容量等)が設定される。項目「想定負荷率」には、当該アプリ110を実行した際に想定されるCPU負荷率が設定される。項目「現在の負荷率」には、当該アプリ110の現在のCPU負荷率が設定される。項目「負荷率閾値」には、当該アプリ110の負荷率閾値が設定される。項目「分散フラグ」には、当該アプリ110を負荷分散の対象とするか否かを表す値が設定される。分散フラグは0のとき負荷分散の対象でない、1のとき負荷分散の対象であることを表し、負荷検知部202によってCPU負荷率が高いと判定された場合に1が設定される。項目「分散先」には、当該アプリ110の負荷分散先となる他の端末10の端末IDが設定される。この端末IDは分散先選択部205によって設定される。
環境条件返答部204は、他の端末10から送信用アプリ環境条件情報を受信した場合に、この送信用アプリ環境条件情報に含まれる各条件を満たすか否かと自端末10の端末IDと現在のCPU負荷率とが含まれる環境条件返答情報を返信する。
分散先選択部205は、他の端末10から環境条件返答情報を受信した場合、これらの環境条件返答情報から環境条件返答情報一覧を作成し、負荷分散対象のアプリ110を実行させる他の端末10を選択する。この際、分散先選択部205は、他の端末10で当該アプリ110が実行可能か否かや他の端末10の負荷状況(CPU負荷率)等を考慮して、当該アプリ110の実行させる他の端末10を選択する。
アプリ分散部206は、自端末10が分散元である場合、分散先選択部205によって選択された他の端末10に対して、アプリ110とアプリ実行情報とを送信する。アプリ実行情報とはアプリ110の実行時に必要な各種情報であり、例えば、当該アプリ110に入力する入力データのパス、当該アプリ110の処理結果の転送有無、転送する場合の転送先IPアドレス等の情報が含まれる。
また、アプリ分散部206は、自端末10が分散先である場合、他の端末10から受信したアプリ110とアプリ実行情報とを用いて当該アプリ110を実行する。
アプリ削除部207は、自端末10が分散先である場合、分散元の他の端末10から受信したアプリ110を削除すると共に、当該他の端末10に対して当該アプリ110の実行が完了したことを通知する。また、アプリ削除部207は、自端末10が分散元である場合、他の端末10からの通知に応じて、アプリ環境条件情報の分散フラグや分散先等をリセットする。
<負荷分散処理の流れ>
次に、ローカルネットワークN1内に存在する複数の端末10間で負荷分散処理を行う場合の流れについて、図6を参照しながら説明する。図6は、第一の実施形態に係る負荷分散処理の流れの一例を説明するための図である。この負荷分散処理は、定期的(例えば、数秒~数十秒等の予め決められた時間間隔毎)に繰り返し実行される。
以下では、アプリ110の実行を他の端末10に分散する端末10を「分散元端末10」といい、分散元端末10以外の端末10(つまり、当該アプリ110の分散先又はその候補となる端末10)を「分散先端末10」という。また、分散元端末10の端末IDは「T001」であるものとする。なお、「分散元」、「分散先」との語は相対的なものであり、或る端末10が同時に分散元端末10かつ分散先端末10となり得る。
まず、分散元端末10の端末確認部201は、端末確認処理を実行する(ステップS101)。端末確認処理では、ローカルネットワークN1内に存在する他の端末10の端末IDとIPアドレスを対応付けることで所属端末情報が作成される。なお、端末確認処理の詳細については後述する。
次に、分散元端末10の負荷検知部202は、負荷検知処理を実行する(ステップS102)。負荷検知処理では、分散元端末10のアプリ110のCPU負荷率が高いか否かが判定される。なお、負荷検知処理の詳細については後述する。
次に、負荷検知処理でアプリ110のCPU負荷率が高いと判定された場合、分散元端末10のアプリ環境条件依頼部203は、アプリ環境条件依頼処理を実行する(ステップS103)。アプリ環境条件依頼処理では、送信用アプリ環境条件情報が分散先端末10に送信される。なお、アプリ環境条件依頼処理の詳細については後述する。
各分散先端末10の環境条件返答部204は、環境条件返答処理をそれぞれ実行する(ステップS104)。環境条件返答処理では、環境条件返答情報が分散元端末10に返信される。なお、環境条件返答処理の詳細については後述する。
分散元端末10の分散先選択部205は、分散先選択処理を実行する(ステップS105)。分散先選択処理では、各分散先端末10から返信された環境条件返答情報を用いて、負荷分散対象のアプリ110を実行させる分散先端末10を選択する。なお、分散先選択処理の詳細については後述する。
分散元端末10のアプリ分散部206は、アプリ分散処理(分散元側)を実行する(ステップS106)。アプリ分散処理(分散元側)では、上記のステップS105で選択された分散先端末10に対して、負荷分散対象のアプリ110とアプリ実行情報とを送信する。なお、アプリ分散処理(分散元側)の詳細については後述する。
分散先端末10のアプリ分散部206は、アプリ分散処理(分散先側)を実行する(ステップS107)。アプリ分散処理(分散先側)では、アプリ実行情報を用いてアプリ110が実行される。なお、アプリ分散処理(分散先側)の詳細については後述する。
分散先端末10のアプリ削除部207は、アプリ削除処理(分散先側)を実行する(ステップS108)。アプリ削除処理(分散先側)では、分散元端末10から送信されたアプリ110が削除されると共にその完了通知が分散元端末10に送信される。なお、アプリ削除処理(分散先側)の詳細については後述する。
分散元端末10のアプリ削除部207は、アプリ削除処理(分散元側)を実行する(ステップS109)。アプリ削除処理(分散元側)では、アプリ環境条件情報の分散フラグや分散先等がリセットされる。なお、アプリ削除処理(分散元側)の詳細については後述する。
≪端末確認処理の流れ≫
図6のステップS101の端末確認処理の流れについて、図7を参照しながら説明する。図7は、第一の実施形態に係る端末確認処理の流れの一例を説明するための図である。
分散元端末10の端末確認部201は、ローカルネットワークN1に対して疎通確認をブロードキャストする(ステップS201)。これにより、疎通確認を受信した端末10から、端末IDとIPアドレスとが含まれる応答が分散元端末10に返信される。
次に、分散元端末10の端末確認部201は、各端末10から受信した応答に含まれる端末IDとIPアドレスとを対応付けて所属端末情報を作成する(ステップS202)。これにより、現時点でローカルネットワークN1内に存在する各端末10の端末ID及びIPアドレスが所属端末情報として得られる。
≪負荷検知処理の流れ≫
図6のステップS102の負荷検知処理の流れについて、図8を参照しながら説明する。図8は、第一の実施形態に係る負荷検知処理の流れの一例を説明するための図である。
分散元端末10の負荷検知部202は、自身が有する各アプリ110のCPU負荷率を取得する(ステップS301)。このCPU負荷率は、当該アプリ110のアプリIDが設定されているアプリ環境条件情報の項目「現在の負荷率」に設定される。なお、アプリ110のCPU負荷率とは、例えば、当該アプリ110のCPU使用率(単位は%)のことである。
次に、分散元端末10の負荷検知部202は、すべてのアプリ110のCPU負荷率が閾値以内であるか否かを判定する(ステップS302)。ここで、閾値は、当該アプリ110のアプリIDが設定されているアプリ環境条件情報に含まれる負荷率閾値のことである。したがって、CPU負荷率の閾値はアプリ110毎に異なり得る。
上記のステップS302ですべてのアプリ110のCPU負荷率が閾値以内であると判定された場合、分散元端末10は、負荷分散処理を終了する(ステップS303)。この場合、アプリ110の処理を分散させる必要はないためである。したがって、この場合、図6のステップS103以降の処理は実行されない。
一方で、上記のステップS302ですべてのアプリ110のCPU負荷率が閾値以内であると判定されなかった場合(つまり、CPU負荷率が閾値を超えるアプリ110が存在する場合)、分散元端末10の負荷検知部202は、CPU負荷率が閾値を超えるアプリ110のアプリIDが設定されているアプリ環境条件情報に含まれる分散フラグを1に設定する(ステップS304)。これにより、当該アプリ110が負荷分散の対象となる。なお、端末10が複数のアプリ110を有する場合は複数のアプリ110が負荷分散の対象となり得るが、以降では、簡単のため、或る1つのアプリ110が負荷分散の対象となった場合について説明する。複数のアプリ110が負荷分散の対象となった場合は、負荷分散の対象となったアプリ110毎に、図6のステップS103以降の処理を繰り返せばよい。
≪アプリ環境条件依頼処理の流れ≫
図6のステップS103のアプリ環境条件依頼処理の流れについて、図9を参照しながら説明する。図9は、第一の実施形態に係るアプリ環境条件依頼処理の流れの一例を説明するための図である。
分散元端末10のアプリ環境条件依頼部203は、分散フラグに1が設定されているアプリ環境条件情報から送信用アプリ環境条件情報を作成する(ステップS401)。ここで、送信用アプリ環境条件情報は負荷分散対象のアプリ110の実行に必要な条件を示す情報であり、例えば、アプリ環境条件情報からアプリID、OS、ミドルウェア、必要HWリソース及び想定負荷率を抽出した情報である。図5に示すアプリ環境条件情報から作成された送信用アプリ環境条件情報を図10に示す。
次に、分散元端末10のアプリ環境条件依頼部203は、ローカルネットワークN1内に他の端末10が存在するか否かを判定する(ステップS402)。これは、図6のステップS101で作成された所属端末情報を参照して、自端末10の端末ID以外の端末IDとIPアドレスが存在するか否かを判定すればよい。
上記のステップS402でローカルネットワークN1内に他の端末10が存在すると判定されなかった場合、分散元端末10は、負荷分散処理を終了する(ステップS403)。この場合、負荷分散先となる他の端末10が存在しないためである。したがって、この場合、図6のステップS104以降の処理は実行されない。
一方で、上記のステップS402でローカルネットワークN1内に他の端末10が存在すると判定された場合、分散元端末10のアプリ環境条件依頼部203は、ローカルネットワークN1内に他の端末10(分散先端末10)に対して送信用アプリ環境条件情報を送信する(ステップS404)。
≪環境条件返答処理の流れ≫
図6のステップS104の環境条件返答処理の流れについて、図11を参照しながら説明する。図11は、第一の実施形態に係る環境条件返答処理の流れの一例を説明するための図である。なお、この環境条件返答処理は各分散先端末10でそれぞれ実行されるが、以下では、簡単のため、或る分散先端末10が環境条件返答処理を実行する場合の流れについて説明する。
分散先端末10の環境条件返答部204は、送信用アプリ環境条件情報を受信する(ステップS501)。
次に、分散先端末10の環境条件返答部204は、自身のアプリ実行環境100及びCPU負荷率等に基づいて環境条件返答情報を作成する(ステップS502)。環境条件返答情報は、自身の端末IDと、送信用アプリ環境条件情報に含まれる各条件を満たすか否かと、自身の現在のCPU負荷率とが含まれる情報である。図10に示す送信用アプリ環境条件情報に対応する環境条件返答情報を図12に示す。図12に示す環境条件返答情報には、端末ID「T002」、OS「OS」、ミドルウェア「OK」、必要HWリソース「OK」、想定負荷率「OK」、現在負荷率「20」が含まれている。これは、端末ID「T002」の分散先端末10は、負荷分散対象のアプリ110を実行するために必要なOSの条件、ミドルウェアの条件、ハードウェアリソースの条件及び想定負荷率を満たしている(つまり、負荷分散対象のアプリ110を実行するために必要なアプリ実行環境100を有しており、かつ、必要なハードウェアリソースと必要なCPUリソースを有している)ことを表している。また、当該分散先端末10の現在のCPU負荷率は「20」であることを表している。なお、図12に示す環境条件返答情報は、送信用アプリ環境条件情報に含まれるすべての条件を満たしている例であるが、或る条件を満たさない場合はその条件に対応する項目に「NG」が設定される。
そして、分散先端末10の環境条件返答部204は、上記のステップS502で作成した環境条件返答情報を分散元端末10に返信する(ステップS503)。これにより、分散元端末10は、各分散先端末10から環境条件返答情報を受信することになる。
≪分散先選択処理の流れ≫
図6のステップS105の分散先選択処理の流れについて、図13を参照しながら説明する。図13は、第一の実施形態に係る分散先選択処理の流れの一例を説明するための図である。
分散元端末10の分散先選択部205は、各分散先端末10から返信された環境条件返答情報を用いて、環境条件返答情報一覧を作成する(ステップS601)。環境条件返答情報一覧とは、各分散先端末10から環境条件返答情報の返信があったか否か、返信があった場合はその応答時間、送信用アプリ環境条件情報に含まれる各条件を満たすか否か、現在のCPU負荷率が含まれる情報である。環境条件返答情報一覧の一例を図14に示す。
図14に示すように、環境条件返答情報一覧には、端末ID、返信有無、応答時間、OS、ミドルウェア、必要HWリソース、想定負荷率、現在の負荷率、選択フラグ等の項目が含まれる。項目「端末ID」には、所属端末情報に含まれる端末ID(つまり、分散先端末10の端末ID)が設定される。項目「返信有無」には、当該端末IDの分散先端末10から環境条件返答情報の返信があったか否かを示す情報(OK/NG)が設定される。また、返信有無に「OK」が設定されている場合、項目「OS」、「ミドルウェア」、「必要HWリソース」、「想定負荷率」及び「現在の負荷率」には、環境条件返答情報に含まれる同一項目の値が設定される。また、返信有無に「OK」が設定されている場合、項目「応答時間」には、分散元端末10が送信用アプリ環境条件情報を送信した後、当該端末IDの分散先端末10から環境条件返答情報を受信するまでの経過時間が設定される。このような経過時間は分散元端末10で計測される。
一方で、返信有無に「NG」が設定されている場合、項目「応答時間」、「OS」、「ミドルウェア」、「必要HWリソース」、「想定負荷率」及び「現在の負荷率」には値が設定されない。
項目「選択フラグ」には、当該端末IDの分散先端末10を負荷分散先とするか否かを表す値が設定される。選択フラグは0のとき負荷分散先でない、1のとき負荷分散先であることを表し、デフォルト値は0に設定されている。
なお、以下では、便宜上、環境条件返答情報一覧を構成する各行(レコード)の集まりを「レコード群」という。例えば、ローカルネットワークN1内に存在する端末10の数がN台(つまり、自端末10以外の他の端末10の数はN-1台)である場合、レコード群はN-1件のレコードの集まりである。
次に、分散元端末10の分散先選択部205は、上記のステップS601で作成した環境条件返答情報一覧を用いて、負荷分散先とする分散先端末10を絞り込む(ステップS602)。このとき、分散先選択部205は、環境条件返答情報一覧を構成するレコード群を絞り込むことで、負荷分散先とする分散先端末10を絞り込む。ここで、分散先選択部205は、例えば、以下の手順1~手順6により負荷分散先とする分散先端末10を絞り込めばよい。
手順1:まず、分散先選択部205は、環境条件返答情報一覧を構成するレコード群の中から、項目「返信有無」にNGが設定されているレコードを除外する。
手順2:次に、分散先選択部205は、上記の手順1で除外後のレコード群の中から、項目「応答時間」に設定されている値が所定の第1の閾値以上のレコードを除外する。なお、当該第1の閾値は予め決められた値である。
手順3:次に、分散先選択部205は、上記の手順2で除外後のレコード群の中から、項目「OS」及び項目「ミドルウェア」の少なくとも一方にNGが設定されているレコードを除外する。
手順4:次に、分散先選択部205は、上記の手順3で除外後のレコード群の中から、項目「必要HWリソース」にNGが設定されているレコードを除外する。
手順5:次に、分散先選択部205は、上記の手順4で除外後のレコード群の中から、項目「想定負荷率」にNGが設定されているレコードを除外する。
手順6:そして、分散先選択部205は、上記の手順5で除外後のレコード群の中から、項目「現在の負荷率」に設定されている値が所定の第2の閾値以上のレコードを除外する。なお、当該第2の閾値は予め決められた値である。
これにより、環境条件返答情報一覧を構成するレコード群が絞り込まれ、その結果、絞り込み後のレコード群に含まれるレコードに対応する分散先端末10に負荷分散先が絞り込まれたことになる。
ただし、上記の手順1~手順6によりレコード群を絞り込むことは一例であって、これらの手順1~手順6のうちの一部の手順によりレコード群を絞り込んでもよい。例えば、手順2は行わずに、手順1と手順3~手順6によりレコード群を絞り込んでもよい。又は、例えば、手順6は行わずに、手順1~手順5によりレコード群を絞り込んでもよいし、手順2と手順6は行わずに、手順1と手順3~手順5によりレコード群を絞り込んでもよい。
次に、分散元端末10の分散先選択部205は、分散可能な分散先端末10があるか否か(つまり、上記のステップS602で絞り込み後の分散先端末10が1台以上あるか否か)を判定する(ステップS603)。
上記のステップS603で分散可能な分散先端末10があると判定されなかった場合、分散元端末10は、負荷分散処理を終了する(ステップS604)。この場合、負荷分散対象のアプリ110の処理を分散させることが可能な他の端末10が存在しないためである。したがって、この場合、図6のステップS106以降の処理は実行されない。
一方で、上記のステップS603で分散可能な分散先端末10があると判定された場合、分散元端末10の分散先選択部205は、環境条件返答情報一覧を構成するレコードのうち、分散可能な分散先端末10の端末IDが設定されているレコードの選択フラグを1に設定する(ステップS605)。このとき、分散可能な分散先端末10に対応するレコードが複数存在する場合(つまり、上記のステップS602で絞り込み後の分散先端末10が2台以上ある場合)、分散元端末10の分散先選択部205は、これら複数のレコードのうちのいずれか1つのレコードの選択フラグのみを1に設定する。この際、当該複数のレコードのうちのどのレコードの選択フラグを1に設定するかは、例えば、最も応答時間が短いレコードの選択フラグを1に設定してもよいし、最も現在の負荷率が低いレコードの選択フラグを1に設定してもよいし、又はランダムに選択したレコードの選択フラグを1に設定してもよい。これにより、選択フラグに1を設定したレコードに対応する分散先端末10が、負荷分散対象のアプリ110の負荷分散先として選択されたことになる。
次に、分散元端末10の分散先選択部205は、負荷分散対象のアプリ110のアプリIDが設定されているアプリ環境条件情報の項目「分散先」に対して、上記のステップS605で選択フラグを1に設定したレコードに含まれる端末IDを設定する(ステップS606)。
≪アプリ分散処理(分散元側)の流れ≫
図6のステップS106のアプリ分散処理(分散元側)の流れについて、図15を参照しながら説明する。図15は、第一の実施形態に係るアプリ分散処理(分散元側)の流れの一例を説明するための図である。
分散元端末10のアプリ分散部206は、分散フラグに1が設定されているアプリ環境条件情報に対応するアプリ110(つまり、負荷分散対象のアプリ110)のアプリ実行情報を作成する(ステップS701)。アプリ実行情報とは、上述したように、アプリ110の実行時に必要な各種情報であり、例えば、当該アプリ110に入力する入力データのパス、当該アプリ110の処理結果の転送有無、転送する場合の転送先IPアドレス等の情報が含まれる。アプリ実行情報の一例を図16に示す。図16に示すアプリ実行情報は、アプリID「AP01」のアプリ110の実行時に必要な情報であり、転送有無、転送先IP及び入力データパス等の項目が含まれる。項目「転送有無」には、当該アプリ110の処理結果を転送するか否かを示す情報が設定される。項目「転送先IP」には、当該アプリ110の処理結果を転送する場合にその転送先となるIPアドレスが設定される。項目「入力データパス」には、当該アプリ110を実行する際に入力されるデータのパスが設定される。なお、これらの項目は一例であって、これら以外にも、アプリ110の実行時に必要な情報が設定される様々な項目が含まれていてもよい。
次に、分散元端末10のアプリ分散部206は、当該アプリ環境条件情報(つまり、負荷分散対象のアプリ110のアプリ環境条件情報)の分散先に設定されている端末IDを取得する(ステップS702)。
そして、分散元端末10のアプリ分散部206は、負荷分散対象のアプリ110と上記のステップS701で作成したアプリ実行情報とを、上記のステップS702で取得した端末IDの分散先端末10に送信する(ステップS703)。なお、アプリ110の送信には、例えば、Dockerコンテナ等の既知の技術を利用すればよい。
≪アプリ分散処理(分散先側)の流れ≫
図6のステップS107のアプリ分散処理(分散先側)の流れについて、図17を参照しながら説明する。図17は、第一の実施形態に係るアプリ分散処理(分散先側)の流れの一例を説明するための図である。
分散先端末10のアプリ分散部206は、負荷分散対象のアプリ110とそのアプリ実行情報とを受信する(ステップS801)。
次に、分散先端末10のアプリ分散部206は、当該アプリ110とそのアプリ実行情報とをアプリ実行環境100上に展開する(ステップS802)。
そして、分散先端末10のアプリ分散部206は、アプリ実行環境100上で当該アプリ実行情報を用いて当該アプリ110を実行する(ステップS803)。例えば、分散先端末10のアプリ分散部206は、当該アプリ実行情報に含まれる入力データパスに設定されているパスから入力データを取得した上で、この入力データを入力として当該アプリ110を実行する。これにより、負荷分散対象のアプリ110が分散先端末10で実行されたことになる。
≪アプリ削除処理(分散先側)の流れ≫
図6のステップS108のアプリ削除処理(分散先側)の流れについて、図18を参照しながら説明する。図18は、第一の実施形態に係るアプリ削除処理(分散先側)の流れの一例を説明するための図である。
分散先端末10のアプリ削除部207は、図17のステップS803におけるアプリ110の実行が終了したか否かを判定する(ステップS901)。
上記のステップS901でアプリ110の実行が終了したと判定されなかった場合、分散先端末10は、ステップS901に戻る。すなわち、分散先端末10は、当該アプリ110の実行終了待ち状態となる。
一方で、上記のステップS901でアプリ110の実行が終了したと判定された場合、分散先端末10のアプリ削除部207は、当該アプリ110をアプリ実行環境100から削除する(ステップS902)。
次に、分散先端末10のアプリ削除部207は、当該アプリ110の処理結果の転送が必要であるか否かを判定する(ステップS903)。これは、アプリ実行情報の転送有無から判定される。
上記のステップS903で転送が必要であると判定された場合、分散先端末10のアプリ削除部207は、当該アプリ110の処理結果を転送する(ステップS904)。すなわち、分散先端末10のアプリ削除部207は、当該アプリ実行情報の転送先IPに設定されているIPアドレスに対して、当該アプリ110の処理結果を転送する。これにより、例えば、アプリ実行情報の転送先IPに設定されているIPアドレスがデータ収集サーバ20のIPアドレスであれば、当該アプリ110の処理結果はデータ収集サーバ20に送信される。また、例えば、アプリ実行情報の転送先IPに設定されているIPアドレスが分散元端末10のIPアドレスであれば、当該アプリ110の処理結果は分散元端末10に送信される。また、例えば、当該アプリ110がデータ加工処理を実行するアプリケーションプログラムである場合には、データ解析処理を実行するアプリ110Bを有する端末10BのIPアドレスが転送先IPとして設定され、当該アプリ110の処理結果は端末10Bに送信される。このように、転送先IPはシステム1全体でのアプリ110の処理順に応じて設定される。
なお、アプリ実行情報の転送先IPには2つ以上のIPアドレスが設定されていてもよく、この場合は2つ以上のIPアドレス宛にアプリ110の処理結果が送信されることになる。
上記のステップS903で転送が必要であると判定されなかった場合又はステップS904に続いて、分散先端末10のアプリ削除部207は、負荷分散対象のアプリ110の処理が完了したことを示す完了通知を分散元端末10に送信する(ステップS905)。
≪アプリ削除処理(分散元側)の流れ≫
図6のステップS109のアプリ削除処理(分散元側)の流れについて、図19を参照しながら説明する。図19は、第一の実施形態に係るアプリ削除処理(分散元側)の流れの一例を説明するための図である。
分散元端末10のアプリ削除部207は、分散先端末10から完了通知を受信する(ステップS1001)。
そして、分散元端末10のアプリ削除部207は、負荷分散対象のアプリ110のアプリIDが設定されているアプリ環境条件情報の分散フラグ及び分散先をリセット(つまり、分散フラグに0を設定すると共に分散先をブランクに設定)する(ステップS1002)。これにより、当該アプリ110の負荷分散が完了する。
[第二の実施形態]
以下、第二の実施形態について説明する。第一の実施形態ではローカルネットワークN1内に存在する複数の端末10(以下、端末群ともいう。)で負荷分散を行う場合について説明した。しかしながら、ローカルネットワークN1には様々な端末10が参加し得る(つまり、端末群には様々な端末10が追加され得る)ため、不正な端末がローカルネットワークN1に参加してしまう可能性がある。また、不正な端末との間で負荷分散が行われた場合は、不正なデータの送受信が発生する可能性がある。
そこで、本実施形態では、端末10がローカルネットワークN1に参加する際にその端末10を他の端末10が認証する仕組みを導入し、不正な端末がローカルネットワークN1に参加してしまう事態を防止する。また、データ送受信の際にそのデータが不正なデータであるか否かを確認する仕組みを導入し、万が一、不正な端末がローカルネットワークN1に参加してしまった場合であっても、不正なデータでアプリ110が実行されてしまったり、不正なデータにより正規の端末10が攻撃されてしまったりする事態を防止する。
なお、第二の実施形態では、主に、第一の実施形態との相違点について説明し、第一の実施形態と同様の構成要素についてはその説明を省略する。
<全体構成>
まず、本実施形態に係るシステム1の全体構成について、図20を参照しながら説明する。図20は、第二の実施形態に係るシステム1の全体構成の一例を示す図である。
図20に示すように、本実施形態に係るシステム1には、第一の実施形態で説明した端末10及びデータ収集サーバ20に加えて、認証装置30が更に含まれている。
認証装置30は端末10を管理する事業者のサーバ等のコンピュータ又はコンピュータシステムであり、認証機能部300を有する。認証機能部300は、端末10がローカルネットワークN1に参加する際にその端末10(以下、新規参加端末10ともいう。)を、ローカルネットワークN1に既に参加している端末10(以下、参加済端末10ともいう。)が認証するための秘密鍵を管理する。この秘密鍵はシステム1全体で一意な情報であり、新規参加端末10に配布される(したがって、参加済端末10も秘密鍵を所持している。)。各参加済端末10は、新規参加端末10が自身と同一の秘密鍵を所持していることを検証することで、当該新規参加端末10検証することができる。なお、後述するように、この検証は、新規参加端末10の端末IDと秘密鍵とに関するハッシュ値の同一性を検証することで行われる。
また、本実施形態に係る端末10が有する分散機能部200は、当該端末10が分散元端末10のアプリ110を実行する場合、自身が所持する秘密鍵を用いて、当該アプリ110の実行に用いるデータが不正なデータであるか否かを確認する。この確認は、後述するように、分散情報と秘密鍵とに関するハッシュ値の同一性を検証することで行われる。分散情報とは、負荷分散対象のアプリ110のアプリIDや分散元端末10の端末ID、分散先端末10の端末ID、当該アプリ110の実行に用いるデータの送信元、当該アプリ110の実行結果を示すデータの送信先、分散開始時刻等が含まれる情報のことである。分散情報の具体例については後述する。
<分散機能部200の詳細な機能構成>
次に、本実施形態に係る分散機能部200の詳細な機能構成について、図21を参照しながら説明する。図21は、第二の実施形態に係る分散機能部200の詳細な機能構成の一例を示す図である。
図21に示すように、本実施形態に係る分散機能部200には、第一の実施形態で説明した各部に加えて、新規参加部208と、参加検証部209と、データ確認部210とが含まれる。
新規参加部208は、ローカルネットワークN1に参加する場合(つまり、自身が新規参加端末10である場合)に、自身の端末IDを認証装置30に通知する。また、新規参加部208は、自身の端末IDと、認証装置30から通知された秘密鍵とから所定のハッシュ関数によりハッシュ値を算出し、そのハッシュ値を参加済端末10に送信する。
参加検証部209は、認証装置30から通知された端末ID(新規参加端末10の端末ID)と、自身が所持する秘密鍵とから所定のハッシュ関数によりハッシュ値を算出し、このハッシュ値と、新規参加端末10から通知されたハッシュ値とが一致するか否かを検証する。そして、参加検証部209は、これらのハッシュ値が一致する場合は新規参加端末10の端末IDを所属端末情報に追加し、そうでない場合は異常を通知する。これにより、ハッシュ値が一致する場合(つまり、新規参加端末10が秘密鍵を所持している正規の端末10である場合)にのみ、新規参加端末10の端末IDが、各参加済端末10の所属端末情報に追加される。
データ確認部210は、自身が分散元端末10である場合、分散情報を作成した上で、所定の端末10と負荷分散対象のアプリ110を実行させる端末10とに対して、当該分散情報を送信する。
また、データ確認部210は、負荷分散対象のアプリ110を実行する分散先端末10に対してそのアプリ110の実行に用いられるデータを送信する場合、自身が所持する分散情報と秘密鍵とから所定のハッシュ関数によりハッシュ値を算出した上で、そのデータと共に当該分散先端末10に送信する。
また、データ確認部210は、自身が分散元端末10の負荷分散対象のアプリ110を実行する場合、自身が所持する秘密鍵と、分散元端末10から受信した分散情報とから所定のハッシュ関数によりハッシュ値を算出する。そして、データ確認部210は、当該アプリ110の実行に用いるデータの送信元の端末10から受信したハッシュ値と、自身が算出したハッシュ値とが一致するか否かを検証する。その後、データ確認部210は、これらのハッシュ値が一致する場合はアプリ分散部206により当該データを入力データとして当該アプリ110を実行し、そうでない場合は異常を通知する。これにより、ハッシュ値が一致する場合(つまり、当該アプリ110の実行に用いるデータの送信元の端末10が秘密鍵と分散情報を所持している正規の端末10である場合)にのみ、分散元端末10から受信したアプリ110(負荷分散対象のアプリ110)を実行される。
なお、以下では、負荷分散対象のアプリ110に用いられるデータの送信元の端末10を「データ送信側端末10」ともいう。また、このデータを用いて当該アプリ110を実行する端末10(つまり、分散元端末10の負荷分散対象のアプリ110を実行する分散先端末10)を「データ受信側端末10」ともいう。
<認証機能部300の詳細な機能構成>
次に、本実施形態に係る認証機能部300の詳細な機能構成について、図22を参照しながら説明する。図22は、第二の実施形態に係る認証機能部300の詳細な機能構成の一例を示す図である。
図22に示すように、本実施形態に係る認証機能部300には、認証部301が含まれる。なお、認証機能部300は、例えば、認証装置30にインストールされた1以上のプログラムが、CPU等のプロセッサに実行させる処理により実現される。
認証部301は、新規参加端末10から端末IDを受信した場合、当該新規参加端末10に対して秘密鍵を通知する。また、認証部301は、参加済端末情報を参照して、当該新規参加端末10の端末IDを各参加済端末10に通知する。ここで、参加済端末情報とは、ローカルネットワークN1に参加している正規の端末10(つまり、秘密鍵を所持している端末10)の端末IDのリストである。
そして、認証部301は、どの参加済端末10からも異常が通知されなかった場合、新規参加端末10の端末IDを参加済端末情報に追加する。これにより、新規参加端末10が参加済端末10として認証装置30に登録されたことになる。
<新規参加処理の流れ>
次に、或る新規参加端末10がローカルネットワークN1に新たに参加する場合の処理の流れについて、図23を参照しながら説明する。図23は、第二の実施形態に係る新規参加処理の流れの一例を説明するための図である。
新規参加端末10の新規参加部208は、自身の端末IDを認証装置30に通知(送信)する(ステップS1101)。
認証装置30の認証部301は、新規参加端末10からの端末IDを受信する(ステップS1102)。
次に、認証装置30の認証部301は、参加済端末情報を参照して、この参加済端末情報に含まれる端末IDの端末10(つまり、参加済端末10)に対して、新規参加端末10の端末IDを通知(送信)する(ステップS1103)。
次に、認証装置30の認証部301は、秘密鍵を新規参加端末10に通知(送信)する(ステップS1104)。
新規参加端末10の新規参加部208は、認証装置30からの秘密鍵を受信する(ステップS1105)。
次に、新規参加端末10の新規参加部208は、ローカルネットワークN1に参加する(ステップS1106)。すなわち、新規参加端末10の新規参加部208は、ローカルネットワークN1に接続する。
次に、新規参加端末10の新規参加部208は、自身の端末IDと、上記のステップS1105で受信した秘密鍵とから所定のハッシュ関数によりハッシュ値を算出する(ステップS1107)。
そして、新規参加端末10の新規参加部208は、上記のステップS1107で算出したハッシュ値を参加済端末10に通知(送信)する(ステップS1108)。なお、新規参加端末10の新規参加部208は、ローカルネットワークN1内に存在する各端末10に対して、上記のステップS1107で算出したハッシュ値をブロードキャストすればよい。
一方で、参加済端末10の参加検証部209は、新規参加端末10の端末IDを認証装置30から受信する(ステップS1109)と、この端末IDと、自身が所持する秘密鍵とから所定のハッシュ関数によりハッシュ値を算出する(ステップS1110)。
次に、参加済端末10の参加検証部209は、上記のステップS1110で算出したハッシュ値と、新規参加端末10からのハッシュ値とが一致するか否かを検証する(ステップS1111)。
そして、参加済端末10の参加検証部209は、上記のステップS1111の検証の結果、ハッシュ値が一致する場合は新規参加端末10の端末IDを所属端末情報に追加し、そうでない場合は認証装置30に異常を通知する(ステップS1112)。
最後に、認証装置30の認証部301は、どの参加済端末10からも異常が通知されなかった場合、新規参加端末10の端末IDを参加済端末情報に追加する(ステップS1113)。なお、本ステップは、例えば、上記のステップS1104が実行された後、所定の時間の経過後に実行すること等が考えられる。これにより、新規参加端末10が参加済端末10として認証装置30に登録される。
なお、例えば、上記のステップS1112で各参加済端末10の参加検証部209は、ハッシュ値が一致する場合に新規参加端末10の端末IDを所属端末情報に追加すると共に、正常である旨を認証装置30に通知してもよい。この場合、例えば、認証装置30の認証部301は、全ての参加済端末10から正常である旨の通知を受信したときに、上記のステップS1113を実行すればよい。
<負荷分散処理の流れ>
次に、ローカルネットワークN1内に存在する複数の端末10間で負荷分散処理を行う場合の流れについて、図24を参照しながら説明する。図24は、第二の実施形態に係る負荷分散処理の流れの一例を説明するための図である。
以下では、一例として、ローカルネットワークN1内には端末10A(端末ID「T001」)~端末10E(端末ID「T005」)の5台の端末10が存在するものとする。そして、デフォルト処理時(つまり、負荷分散を行っていない時)には、図25の上図に示すように、機器から収集したデータを端末10Aのアプリ110Aで加工し、その加工後のデータを端末10Bのアプリ110Bで解析し、その解析結果を示すデータを端末10Cのアプリ110Cでデータ収集サーバ20に送信する、といった一連の処理を行っているものとする。なお、以下では、デフォルト処理時に一連の処理を構成する各処理を実行する端末10を「関連端末10」ともいう。図25の上図に示す例では、端末10A、端末10B、及び端末10Cが関連端末10に該当する。
このとき、以下では、図25の下図に示すように、端末10Bを分散元端末10として、端末10Eに負荷分散対象のアプリ110Bを実行させる場合について説明する。すなわち、分散処理時には、機器から収集したデータを端末10Aのアプリ110Aで加工し、その加工後のデータを端末10Eのアプリ110Bで解析し、その解析結果を示すデータを端末10Cのアプリ110Cでデータ収集サーバ20に送信する、といった一連の処理を行うものとする。
まず、分散元端末10(端末10B)の端末確認部201は、図6のステップS101と同様に、端末確認処理を実行する(ステップS1201)。ただし、図7のステップS202では、例えば、認証装置30が所持する参加済端末情報(又は、認証装置30から取得した参加済端末情報)に含まれない端末IDは、所属端末情報に追加しないようにする。
次に、分散元端末10(端末10B)の負荷検知部202は、図6のステップS102と同様に、負荷検知処理を実行する(ステップS1202)。
次に、負荷検知処理でアプリ110(アプリ110B)のCPU負荷率が高いと判定された場合、分散元端末10(端末10B)のアプリ環境条件依頼部203は、図6のステップS103と同様に、アプリ環境条件依頼処理を実行する(ステップS1203)。
各分散先端末10(端末10A、端末10C~端末10E)の環境条件返答部204は、図6のステップS104と同様に、環境条件返答処理をそれぞれ実行する(ステップS1204)。
分散元端末10(端末10B)の分散先選択部205は、図6のステップS105と同様に、分散先選択処理を実行する(ステップS1205)。上述したように、ここでは、負荷分散対象のアプリ110(アプリ110B)を実行させる分散先端末10として端末10Eが選択されたものとする。
分散元端末10(端末10B)のデータ確認部210は、分散情報作成及び送信処理を実行する(ステップS1206)。分散情報作成及び送信処理では、分散情報が作成され、自身以外の各関連端末10に当該分散情報が送信される。なお、分散情報作成及び送信処理の詳細については後述する。
次に、分散元端末10(端末10B)のアプリ分散部206は、アプリ分散処理(分散元側)を実行する(ステップS1207)。このアプリ分散処理(分散元側)では、図15のステップS701~ステップS702は第一の実施形態と同様であるが、図15のステップS703で負荷分散対象のアプリ110(アプリ110B)とそのアプリ実行情報と共に、上記のステップS1206で作成された分散情報も分散先端末10(端末10E)に送信される。
分散先端末10(端末10E)のアプリ分散部206は、アプリ分散処理(分散先側)を実行する(ステップS1208)。このアプリ分散処理(分散先側)では、図17のステップS802~ステップS803は第一の実施形態と同様であるが、図17のステップS801で負荷分散対象のアプリ110(アプリ110B)とそのアプリ実行情報と共に分散情報も受信される。また、図17のステップS803でアプリ110Bが実行される際には、データ送信側端末10(端末10A)から受信したデータが不正なデータであるか否かを確認した上で、当該データを入力データとしてアプリ110Bが実行される。このデータ確認処理の詳細については後述する。
分散先端末10(端末10E)のアプリ削除部207は、アプリ削除処理(分散先側)を実行する(ステップS1209)。このアプリ削除処理(分散先側)では、図18のステップS901~ステップS904は第一の実施形態と同様であるが、ステップS905で分散元端末10(端末10B)だけなく、端末10B以外の関連端末10(端末10A及び端末10C)にも完了通知が送信される。また、ステップS905が実行された後、分散情報が削除される。なお、各関連端末(端末10A、端末10B、端末10C)では、完了通知を受信した後に、この完了通知に対応するアプリ110に関する分散情報が削除される。
分散元端末10(端末10B)のアプリ削除部207は、アプリ削除処理(分散元側)を実行する(ステップS1210)。このアプリ削除処理(分散先側)では、図19のステップS1001~ステップS1002は第一の実施形態と同様であるが、ステップS1002が実行された後に分散情報が削除される。
≪分散情報作成及び送信処理の流れ≫
図24のステップS1206の分散情報作成及び送信処理の流れについて、図26を参照しながら説明する。図26は、第二の実施形態に係る分散情報作成及び送信処理の流れの一例を説明するための図である。
分散元端末10(端末10B)のデータ確認部210は、負荷分散対象のアプリ110(アプリ110B)の分散情報を作成する(ステップS1301)。ここで、分散情報は負荷分散対象のアプリ110に関する情報のことであり、上述したように、負荷分散対象のアプリ110のアプリID、分散元端末10の端末ID、分散先端末10の端末ID、当該アプリ110の実行に用いるデータの送信元、当該アプリ110の実行結果を示すデータの送信先、分散開始時刻等が含まれる情報のことである。分散情報の具体例を図27に示す。図27に示す例は、アプリID「AP02」、分散元端末ID「T002」、分散先端末ID「T005」、データ送信元「T001」、データ送信先「T003」、分散開始時刻「202011011010」が含まれる分散情報である。この分散情報は、負荷分散対象のアプリ110のアプリIDは「AP02」、分散元端末10の端末IDは「T002」、分散先端末10の端末IDは「T005」、当該アプリ110の実行に用いるデータの送信元は「T001」、当該アプリ110の実行結果を示すデータの送信先は「T003」、負荷分散の開始時刻は2020年11月01日10時10分であることを表している。
ただし、上記の分散情報は一例であって、アプリID、分散元端末ID、分散先端末ID、データ送信元、データ送信先、分散開始時刻以外の任意の情報が含まれていてもよい。
次に、分散元端末10(端末10B)のデータ確認部210は、自身以外の他の関連端末10(端末10A及び端末10C)に対して、上記のステップS1301で作成した分散情報を送信する(ステップS1302)。これにより、各関連端末10は分散情報を保持することになる。
≪データ確認処理の流れ≫
次に、図17のステップS803で分散先端末10が負荷分散対象のアプリ110Bを実行する際に、データ送信側端末10(端末10A)から受信したデータが不正なデータであるか否かを確認する場合のデータ確認処理の流れについて、図28を参照しながら説明する。図28は、第二の実施形態に係るデータ確認処理の流れの一例を説明するための図である。
データ送信側端末10(端末10A)のデータ確認部210は、自身が所持する分散情報と秘密鍵から所定のハッシュ関数によりハッシュ値を算出する(ステップS1401)。
次に、データ送信側端末10(端末10A)のデータ確認部210は、分散情報を参照して、当該アプリ110Bの実行に用いられるデータと、上記のステップS1401で算出されたハッシュ値とをデータ受信側端末10(端末10E)に送信する(ステップS1402)。なお、データ受信側端末10の端末IDは、分散情報に含まれる分散先端末IDから特定することができる。
データ受信側端末10(端末10E)のデータ確認部210は、データ送信側端末10(端末10A)からのデータ及びハッシュ値を受信する(ステップS1403)。
次に、データ受信側端末10(端末10E)のデータ確認部210は、自身が所持する分散情報と秘密鍵から所定のハッシュ関数によりハッシュ値を算出する(ステップS1404)。
次に、データ受信側端末10(端末10E)のデータ確認部210は、上記のステップS1403で受信したハッシュ値と、上記のステップS1404で算出したハッシュ値とが一致するか否かを検証する(ステップS1405)。
そして、データ受信側端末10(端末10E)のデータ確認部210は、上記のステップS1405の検証の結果、ハッシュ値が一致する場合は上記のステップS1403で受信したデータを入力データとしてアプリ分散部206により当該アプリ110(アプリ110B)を実行し、そうでない場合は異常を通知する(ステップS1406)。これにより、データ送信側端末10が秘密鍵と分散情報を所持している正規の端末10である場合にのみ、このデータ送信側端末10から受信したデータを入力データとして負荷分散対象のアプリ110が実行される。したがって、不正なデータを用いてアプリ110が実行されてしまう事態を防止することが可能となる。
<まとめ>
以上のように、第一の実施形態に係るシステム1に含まれる複数の端末10は、ローカルネットワークN1内に存在する他の端末10に自身のアプリ110を実行させることで、負荷分散を実現することができる。しかも、この際に、各端末10は、他の端末10が当該アプリ110を実行することができるか否かに加えて、当該他の端末10の現在の負荷状況や通信状況等を考慮して、負荷分散先の他の端末10を選択する。これにより、本実施形態に係るシステム1は、各端末10を管理するサーバを必要とせずに、各端末10だけで適切な負荷分散を実現することが可能となる。
また、第二の実施形態に係るシステム1では、認証装置30を導入することで、不正な端末がローカルネットワークN1に参加してしまう事態を防止することができる。また、万が一、不正な端末がローカルネットワークN1に参加してしまったとしても、負荷分散対象のアプリ110に用いられるデータを受信したときに、当該データが不正なデータであるか否かを確認することができるため、不正なデータにより当該アプリ110が実行されてしまう事態を防止することが可能となる。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲の記載から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。