[go: up one dir, main page]

JP7669769B2 - システム及び方法 - Google Patents

システム及び方法 Download PDF

Info

Publication number
JP7669769B2
JP7669769B2 JP2021064550A JP2021064550A JP7669769B2 JP 7669769 B2 JP7669769 B2 JP 7669769B2 JP 2021064550 A JP2021064550 A JP 2021064550A JP 2021064550 A JP2021064550 A JP 2021064550A JP 7669769 B2 JP7669769 B2 JP 7669769B2
Authority
JP
Japan
Prior art keywords
terminal
application
information
distribution
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021064550A
Other languages
English (en)
Other versions
JP2022108701A (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.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
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 Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Publication of JP2022108701A publication Critical patent/JP2022108701A/ja
Application granted granted Critical
Publication of JP7669769B2 publication Critical patent/JP7669769B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Description

本発明は、システム及びに関する。

工場やプラント等に設置されているエッジコントローラ等の端末をサーバで管理するシステムが従来から利用されている。これらの端末上では様々なアプリケーションが実行されており、各端末を管理するサーバによってその負荷分散が実現されていることが一般的である。負荷分散とは或る端末で実行されるアプリケーション処理を他の端末に実行させることで、そのアプリケーション処理の負荷を各端末で分散させることである。
特開2010-204875号公報 国際公開第2010/064294号
しかしながら、負荷分散を実現するためには各端末を管理するサーバが必要であるため、例えば、災害やインシデント等によりサーバが利用できなくなった場合には負荷分散もできなくなる。また、オンプレミス型のサーバを利用した場合には設置コストや管理コスト等が発生し、クラウド型のサーバを利用した場合であってもサーバ利用に関するコストが発生する。
本発明の一実施形態は、上記の点に鑑みてなされたもので、各端末間の負荷分散を実現することを目的とする。
上記目的を達成するため、一実施形態に係るシステムは、1以上のアプリケーションを実行する複数の端末が含まれるシステムであって、前記端末は、自身が有する演算装置の負荷率が所定の閾値を超えた場合、前記アプリケーションの実行に必要な条件を示すアプリ条件情報を他の端末に送信する条件送信部と、前記アプリ条件情報に対する返信として、前記条件を満たすか否かを示す情報が含まれる返答情報を他の端末から受信する返答受信部と、前記返答情報に基づいて、前記他の端末の中から、前記アプリケーションを実行させる他の端末を選択する選択部と、選択された前記他の端末に対して、前記アプリケーションと、前記アプリケーションの実行に必要な情報とを送信するアプリ送信部と、を有する。
各端末間の負荷分散を実現することができる。
第一の実施形態に係るシステムの全体構成の一例を示す図である。 第一の実施形態に係る端末のハードウェア構成の一例を示す図である。 第一の実施形態に係る分散機能部の詳細な機能構成の一例を示す図である。 所属端末情報の一例を示す図である。 アプリ環境条件情報の一例を示す図である。 第一の実施形態に係る負荷分散処理の流れの一例を説明するための図である。 第一の実施形態に係る端末確認処理の流れの一例を説明するための図である。 第一の実施形態に係る負荷検知処理の流れの一例を説明するための図である。 第一の実施形態に係るアプリ環境条件依頼処理の流れの一例を説明するための図である。 送信用アプリ環境条件情報の一例を示す図である。 第一の実施形態に係る環境条件返答処理の流れの一例を説明するための図である。 環境条件返答情報の一例を示す図である。 第一の実施形態に係る分散先選択処理の流れの一例を説明するための図である。 環境条件返答情報一覧の一例を示す図である。 第一の実施形態に係るアプリ分散処理(分散元側)の流れの一例を説明するための図である。 アプリ実行情報の一例を示す図である。 第一の実施形態に係るアプリ分散処理(分散先側)の流れの一例を説明するための図である。 第一の実施形態に係るアプリ削除処理(分散先側)の流れの一例を説明するための図である。 第一の実施形態に係るアプリ削除処理(分散元側)の流れの一例を説明するための図である。 第二の実施形態に係るシステムの全体構成の一例を示す図である。 第二の実施形態に係る分散機能部の詳細な機能構成の一例を示す図である。 第二の実施形態に係る認証機能部の詳細な機能構成の一例を示す図である。 第二の実施形態に係る新規参加処理の流れの一例を説明するための図である。 第二の実施形態に係る負荷分散処理の流れの一例を説明するための図である。 デフォルト処理時と分散処理時の一例を説明するための図である。 第二の実施形態に係る分散情報作成及び送信処理の流れの一例を説明するための図である。 分散情報の一例を示す図である。 第二の実施形態に係るデータ確認処理の流れの一例を説明するための図である。
以下、本発明の一実施形態について説明する。本実施形態では、各端末を管理するサーバを用いずに、端末群のみで各端末間の負荷分散を実現することができるシステム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が実行されてしまう事態を防止することが可能となる。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲の記載から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
1 システム
10 端末
20 データ収集サーバ
100 アプリ実行環境
110 アプリ
200 分散機能部
201 端末確認部
202 負荷検知部
203 アプリ環境条件依頼部
204 環境条件返答部
205 分散先選択部
206 アプリ分散部
207 アプリ削除部
501 入力装置
502 表示装置
503 外部I/F
503a 記録媒体
504 通信I/F
505 プロセッサ
506 メモリ装置
507 バス
N1 ローカルネットワーク
N2 インターネット

Claims (8)

  1. 1以上のアプリケーションを実行する複数の端末と、認証装置とが含まれるシステムであって、
    前記端末は、
    自身が有する演算装置の負荷率が所定の閾値を超えた場合、前記アプリケーションの実行に必要な条件を示すアプリ条件情報を他の端末に送信する条件送信部と、
    前記アプリ条件情報に対する返信として、前記条件を満たすか否かを示す情報が含まれる返答情報を他の端末から受信する返答受信部と、
    前記返答情報に基づいて、前記他の端末の中から、前記アプリケーションを実行させる他の端末を選択する選択部と、
    選択された前記他の端末に対して、前記アプリケーションと、前記アプリケーションの実行に必要な情報とを送信するアプリ送信部と、
    前記認証装置は、
    新たな端末が前記システムに参加する場合、前記新たな端末に対して秘密鍵を送信する秘密鍵送信部と、
    前記新たな端末の識別情報を、前記システムに既に参加している端末に送信する識別情報送信部と、を有し、
    前記新たな端末は、
    前記認証装置から送信された秘密鍵と自身の識別情報とから算出されたハッシュ値を、前記システムに既に参加している端末に送信するハッシュ値送信部、を有し、
    前記端末は、
    前記新たな端末から受信したハッシュ値が、自身が持つ秘密鍵と前記認証装置から送信された識別情報とから算出されたハッシュ値と一致するか否かを検証する第1の検証部と、を更に有し、
    前記条件送信部は、
    前記第1の検証部によって前記ハッシュ値が一致することが検証された他の端末に前記アプリ条件情報を送信する、システム。
  2. 前記選択部は、
    すべての前記条件を満たすことを示す情報が含まれる返答情報を返信した他の端末の中から、前記アプリケーションを実行させる他の端末を選択する、請求項1に記載のシステム。
  3. 前記返答情報には、該返答情報を返信した他の端末が有する演算装置の負荷率が更に含まれ、
    前記選択部は、
    前記返答情報に含まれる負荷率が所定の閾値を超えていない他の端末の中から、前記アプリケーションを実行させる他の端末を選択する、請求項1又は2に記載のシステム。
  4. 記選択部は、
    前記アプリ条件情報の送信後、前記返答情報を受信するまでの経過時間が所定の閾値を超えていない他の端末の中から、前記アプリケーションを実行させる他の端末を選択する、請求項1乃至3の何れか一項に記載のシステム。
  5. 前記アプリ条件情報には、前記アプリケーションの実行に必要なOSに関する条件、ミドルウェアに関する条件、ハードウェアリソースに関する条件、及び演算装置の使用率に関する条件の少なくとも1つ以上の条件が含まれる、請求項1乃至4の何れか一項に記載のシステム。
  6. 前記端末が所属するネットワーク内に対して疎通確認をブロードキャストする確認部を有し、
    前記条件送信部は、
    前記疎通確認に対して応答があった他の端末に対して、前記アプリ条件情報を送信する、請求項1乃至5の何れか一項に記載のシステム。
  7. 前記端末は、
    前記アプリケーションの処理に関連する他の端末と、前記選択部によって選択された他の端末とに対して、前記アプリケーションの負荷分散に関する情報を送信する分散情報送信部、を有し、
    前記アプリケーションの処理に関連する他の端末のうち、前記アプリケーションの実行に用いられるデータを送信する端末は、
    前記アプリケーションの負荷分散に関する情報と自身が持つ秘密鍵とから算出されたハッシュ値と、前記データとを、前記選択部によって選択された他の端末に送信するデータ送信部、を有し、
    前記選択部によって選択された他の端末は、
    前記アプリケーションの実行に用いられるデータを送信する端末から受信したハッシュ値が、前記アプリケーションの負荷分散に関する情報と自身が持つ秘密鍵とから算出されたハッシュ値と一致するか否かを検証する第2の検証部と、
    前記第2の検証部によって前記ハッシュ値が一致することが検証された場合、前記データを入力データとして前記アプリケーションを実行するアプリ実行部と、を有する請求項1乃至6の何れか一項に記載のシステム。
  8. 1以上のアプリケーションを実行する複数の端末と、認証装置とが含まれるシステムに用いられる方法であって、
    前記端末が、
    自身が有する演算装置の負荷率が所定の閾値を超えた場合、前記アプリケーションの実行に必要な条件を示すアプリ条件情報を他の端末に送信する条件送信手順と、
    前記アプリ条件情報に対する返信として、前記条件を満たすか否かを示す情報が含まれる返答情報を他の端末から受信する返答受信手順と、
    前記返答情報に基づいて、前記他の端末の中から、前記アプリケーションを実行させる他の端末を選択する選択手順と、
    選択された前記他の端末に対して、前記アプリケーションと、前記アプリケーションの実行に必要な情報とを送信するアプリ送信手順と、を実行し、
    前記認証装置が、
    新たな端末が前記システムに参加する場合、前記新たな端末に対して秘密鍵を送信する秘密鍵送信手順と、
    前記新たな端末の識別情報を、前記システムに既に参加している端末に送信する識別情報送信手順と、を実行し、
    前記新たな端末が、
    前記認証装置から送信された秘密鍵と自身の識別情報とから算出されたハッシュ値を、前記システムに既に参加している端末に送信するハッシュ値送信手順、を実行し、
    前記端末が、
    前記新たな端末から受信したハッシュ値が、自身が持つ秘密鍵と前記認証装置から送信された識別情報とから算出されたハッシュ値と一致するか否かを検証する第1の検証手順と、を更に実行し、
    前記条件送信手順は、
    前記第1の検証手順によって前記ハッシュ値が一致することが検証された他の端末に前記アプリ条件情報を送信する、方法。
JP2021064550A 2021-01-13 2021-04-06 システム及び方法 Active JP7669769B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2021003656 2021-01-13
JP2021003656 2021-01-13

Publications (2)

Publication Number Publication Date
JP2022108701A JP2022108701A (ja) 2022-07-26
JP7669769B2 true JP7669769B2 (ja) 2025-04-30

Family

ID=82556421

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021064550A Active JP7669769B2 (ja) 2021-01-13 2021-04-06 システム及び方法

Country Status (1)

Country Link
JP (1) JP7669769B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000261428A (ja) 1999-03-10 2000-09-22 Oki Electric Ind Co Ltd 分散処理システムにおける認証装置
JP2005004676A (ja) 2003-06-16 2005-01-06 Fujitsu Ltd 適応型分散処理システム
JP2009116852A (ja) 2007-10-18 2009-05-28 Fujitsu Ltd マイグレーションプログラム、および仮想マシン管理装置
WO2013157042A1 (ja) 2012-04-20 2013-10-24 株式会社日立製作所 分散アプリケーション及びデータホスティングシステム
WO2018003031A1 (ja) 2016-06-29 2018-01-04 富士通株式会社 仮想化管理プログラム、仮想化管理装置および仮想化管理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07152699A (ja) * 1993-11-29 1995-06-16 Canon Inc 情報処理方法及び装置及びシステム
JPH10161987A (ja) * 1996-11-27 1998-06-19 Toshiba Corp コンピュータシステムにおける負荷分散方法および負荷分散処理システム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000261428A (ja) 1999-03-10 2000-09-22 Oki Electric Ind Co Ltd 分散処理システムにおける認証装置
JP2005004676A (ja) 2003-06-16 2005-01-06 Fujitsu Ltd 適応型分散処理システム
JP2009116852A (ja) 2007-10-18 2009-05-28 Fujitsu Ltd マイグレーションプログラム、および仮想マシン管理装置
WO2013157042A1 (ja) 2012-04-20 2013-10-24 株式会社日立製作所 分散アプリケーション及びデータホスティングシステム
WO2018003031A1 (ja) 2016-06-29 2018-01-04 富士通株式会社 仮想化管理プログラム、仮想化管理装置および仮想化管理方法

Also Published As

Publication number Publication date
JP2022108701A (ja) 2022-07-26

Similar Documents

Publication Publication Date Title
CN108777625B (zh) 签名的验证方法、装置和系统、存储介质、电子装置
CN107295080B (zh) 应用于分布式服务器集群的数据存储方法和服务器
CN111400112B (zh) 分布式集群的存储系统的写入方法、装置及可读存储介质
US10547693B2 (en) Security device capability discovery and device selection
US20170180469A1 (en) Method and system for forming compute clusters using block chains
JP2019200580A (ja) 分散台帳システム、分散台帳サブシステム、および、分散台帳ノード
JP2012174081A (ja) 情報処理システム
EP3647955B1 (en) Consensus-forming method in network, and node for configuring network
KR20140064844A (ko) Smb2 스케일아웃 기법
CN114327827B (zh) 一种任务处理方法、装置和存储介质
US20180027048A1 (en) File transmission method, apparatus, and distributed cluster file system
CN113347164A (zh) 基于区块链的分布式共识系统及方法、设备、存储介质
CN111698315B (zh) 针对区块的数据处理方法、数据处理装置及计算机设备
TW201725889A (zh) 經組態以實施一有條件觸發規則的具有多伺服器節點之實體安全系統
CN109802986B (zh) 设备管理方法、系统、装置及服务器
JP2010541077A (ja) 同期データおよびメタデータの交換
US9733999B1 (en) Dynamic optimization of application workflows
CN110324415B (zh) 一种对等网络的路由实现方法、装置、设备和介质
JP2012507076A (ja) フェデレーションを集合させるブートストラップ
CN108040009A (zh) 数据定向传输方法、数据定向传输控制装置及计算机可读存储介质
JP7669769B2 (ja) システム及び方法
CN105610785B (zh) 网络系统及控制装置
US20150312334A1 (en) Distributed database, method of sharing data, program storing medium, and apparatus for a distributed database
JP7305898B2 (ja) 操作応答方法、操作応答装置、電子機器及び記憶媒体
US20160217014A1 (en) Task Distribution in Peer to Peer Networks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240313

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20241211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250306

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250331

R150 Certificate of patent or registration of utility model

Ref document number: 7669769

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150