JP6183198B2 - 分散配備装置、分散配備方法及び分散配備プログラム - Google Patents

分散配備装置、分散配備方法及び分散配備プログラム Download PDF

Info

Publication number
JP6183198B2
JP6183198B2 JP2013258709A JP2013258709A JP6183198B2 JP 6183198 B2 JP6183198 B2 JP 6183198B2 JP 2013258709 A JP2013258709 A JP 2013258709A JP 2013258709 A JP2013258709 A JP 2013258709A JP 6183198 B2 JP6183198 B2 JP 6183198B2
Authority
JP
Japan
Prior art keywords
changed
module
unit
processing
instance
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
JP2013258709A
Other languages
English (en)
Other versions
JP2015115013A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013258709A priority Critical patent/JP6183198B2/ja
Publication of JP2015115013A publication Critical patent/JP2015115013A/ja
Application granted granted Critical
Publication of JP6183198B2 publication Critical patent/JP6183198B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、分散配備装置、分散配備方法及び分散配備プログラムに関する。
センサノードによってセンシングされたセンシングデータをイベントとして採取するセンサネットワークが知られている。かかるセンサネットワークを介してサーバノードに採取されたイベントに応じて各種のサービス、例えばアラートの発信や機器の制御などが提供される。
このように、センサノードからのイベントをサーバノードに収集させる場合には、全てのイベントがサーバノードに集中して通知されることになる。このため、サーバノードの処理の負荷が増大するとともに、ネットワークのトラフィックの増加に伴ってネットワーク帯域も逼迫する。また、センサネットワークにおいては、あるセンサノードの処理量を、他のセンサノードの処理量よりも低くするなどの所定の制約条件がある。
特開2008−269250号公報 特開2012−175418号公報 特開平7−262115号公報 特開平11−345257号公報
ここで、サーバノードの負荷とネットワークトラフィックを抑制しつつ、所定の制約条件を満たすように、センサノードやイベントを中継する中継ノードなどの下位ノードに配備する処理インスタンスを決定する技術の一例として、以下のような技術が考えられる。例えば、下位ノードに配備する処理インスタンスを決定する技術は、まず、イベントの発生状況やセンサネットワークのトポロジに応じてイベントの収集経路を決定する。そして、下位ノードに配備する処理インスタンスを決定する技術は、決定した収集経路に基づいて、下位ノードと、下位ノードに対して配備された、イベントを処理する処理インスタンスとの全ての組合せについて、次のような処理を行う。すなわち、下位ノードの配備する処理インスタンスを決定する技術は、全ての組合せについて、サーバノードの負荷を示す第1の評価値と、ネットワークトラフィックを示す第2の評価値と、所定の制約条件のうち違反した条件の数を示す第3の評価値とを算出する。そして、下位ノードに配備する処理インスタンスを決定する技術は、第1の評価値と、第2の評価値と、第3の評価値とに基づいて、下位ノードに配備する処理インスタンスを決定する。
上述した下位ノードに配備する処理インスタンスを決定する技術では、収集経路上に処理インスタンスを配備するために、所定の順序で実行される複数のモジュールのそれぞれを処理対象のデータ毎に論理的に分割した処理インスタンスを生成する。そして、下位ノードに配備する処理インスタンスを生成する技術では、生成した処理インスタンスの処理対象データと、収集経路上のデータの流れとを見比べて、処理インスタンスを配備すべきノードを決定する。
ここで、下位ノードに配備する処理インスタンスを決定する技術では、処理インスタンスを生成する際に、各モジュールの入出力データを表すログを解析することにより、各モジュールを分割する分割数を算出する。ここで、各モジュールの入力データの一例としては、各モジュールに入力されるイベントが挙げられ、各モジュールの出力データの一例としては、各モジュールによって加工されたイベントが挙げられる。そして、下位ノードに配備する処理インスタンスを決定する技術では、モジュールごとに、分割数分の処理インスタンスを生成し、処理インスタンスの接続関係を示すインスタンスフローを生成し、インスタンスフローを用いて処理インスタンスの配備先のノードを決定する。そして、下位ノードに配備する処理インスタンスを決定する技術では、決定された配備先のノードに、処理インスタンスを配備する。
このように、インスタンスフローを生成する際には、実際に各モジュールを実行させて各モジュールの入出力データを表すログを解析する必要があり、多大な時間がかかる。
ここで、一部のモジュールを変更する時には、変更モジュールが変えた出力データの影響によって、変更部より後に実行するモジュール間の入出力関係が変わるか解析する必要がある。また、変更部より前に実行するモジュールは前記解析のために変更モジュールの入力データを作る必要がある。このため、複数のモジュールのうち一部のモジュールに変更があった場合でも、実際に全てのモジュールを実行させて全てのモジュールの入出力データを表すログを解析してインスタンスフローを生成し、インスタンスフローを用いて処理インスタンスの配備先を決定する。このため、一部のモジュールに変更があった場合であっても、全てのモジュールの入出力データを表すログを解析対象とするので、多大な時間がかかるという問題がある。
1つの側面では、本発明は、所定の順序で実行される複数の処理のうち、一部の処理に変更があった場合でも、簡易に処理インスタンスを配備することができる分散配備装置、分散配備方法及び分散配備プログラムを提供することを目的とする。
分散配備装置は、所定の順序で実行される複数の処理のそれぞれの処理インスタンスが配備された複数のノードにおける前記処理が変更された場合に、変更された該処理の変更内容に応じて、前記複数の処理の中から再配備の対象の処理を特定する特定部を有する。分散配備装置は、前記特定部により特定された処理の処理インスタンスを生成する生成部を有する.分散配備装置は、前記複数のノードの中から、前記生成部により生成された処理インスタンスを配備するノードを特定し、特定したノードに、前記生成部により生成された処理インスタンスを配備する配備部を有する。
所定の順序で実行される複数の処理のうち、一部の処理に変更があった場合でも、簡易に処理インスタンスを配備することができる。
図1は、実施例に係るセンサネットワークシステムのシステム構成の一例を示す図である。 図2は、開発されたアプリケーションの一例を示す図である。 図3は、図2の例に示すアプリケーションとともに、サーバノードに送信されるアプリケーション定義データの一例を示す図である。 図4は、イベントを加工する処理が変更されたかどうかを開発者に問い合わせるための画面の一例を示す図である。 図5は、変更されたアプリケーションの一例を示す図である。 図6Aは、アプリケーション定義データの登録方法を説明するための図である。 図6Bは、アプリケーション定義データの登録方法を説明するための図である。 図6Cは、アプリケーション定義データの登録方法を説明するための図である。 図7Aは、アプリケーション定義データの登録方法を説明するための図である。 図7Bは、アプリケーション定義データの登録方法を説明するための図である。 図7Cは、アプリケーション定義データの登録方法を説明するための図である。 図8Aは、アプリケーション定義データの登録方法を説明するための図である。 図8Bは、アプリケーション定義データの登録方法を説明するための図である。 図8Cは、アプリケーション定義データの登録方法を説明するための図である。 図9Aは、アプリケーション定義データの登録方法を説明するための図である。 図9Bは、アプリケーション定義データの登録方法を説明するための図である。 図9Cは、アプリケーション定義データの登録方法を説明するための図である。 図10は、実施例に係るサーバノードの機能構成の一例を示すブロック図である。 図11は、アプリケーションの変更前後のインスタンスフロー及び処理インスタンスの配備先の一例を示す図である。 図12は、アプリケーションの変更前後のインスタンスフロー及び処理インスタンスの配備先の一例を示す図である。 図13は、アプリケーションの変更前後のインスタンスフロー及び処理インスタンスの配備先の一例を示す図である。 図14は、アプリケーションの変更前後のインスタンスフロー及び処理インスタンスの配備先の一例を示す図である。 図15は、実施例に係るセンサノードの機能構成の一例を示すブロック図である。 図16は、実施例に係るGWノードの機能構成の一例を示すブロック図である。 図17は、実施例に係る分散配備処理の手順を示すフローチャートである。 図18は、分散配備プログラムを実行するコンピュータを示す図である。
以下に、本願の開示する分散配備装置の一例であるサーバノード、分散配備プログラム及び分散配備方法の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
[実施例に係るセンサネットワークシステムのシステム構成の一例]
図1は、実施例に係るセンサネットワークシステムのシステム構成の一例を示す図である。図1に示すセンサネットワークシステム10は、イベントを加工する処理を行う各種の処理インスタンス(モジュール)をどのノード(センサノード、GWノード、サーバノード)に配備するかを決定するシステムである。ここでいうイベントとは、センサノードによってセンシングされたデータ、または、センシングされたデータが加工処理されたデータを指す。
図1の例に示すように、センサネットワークシステム10は、サーバノード1と、5つのセンサノード21a〜21eと、4つのGW(GateWay)ノード22a〜22dとを有する。図1の例では、センサノード21a,21bと、GWノード22aとが通信可能に接続される。また、センサノード21c,21d,21eと、GWノード22bとが通信可能に接続される。また、GWノード22a,22bと、GWノード22cとが通信可能に接続される。また、GWノード22cと、GWノード22dとが通信可能に接続される。
また、図1の例では、サーバノード1とGWノード22dとがネットワーク23を介して通信可能に接続される。ネットワーク23の一例としては、有線または無線を問わず、インターネット(internet)、LAN(Local Area Network)やVPN(Virtual Private Network)などの通信網が挙げられる。なお、図1では、センサネットワークシステム10が、5つのセンサノード21a〜21eを有する場合を例示したが、センサネットワークシステム10は、任意の数のセンサノードを有することができる。また、以下の説明では、5つのセンサノード21a〜21eを区別することなく総称する場合には、単に、「センサノード21」と表記する。また、図1の例では、センサネットワークシステム10が、4つのGWノード22a〜22dを有する場合を例示したが、センサネットワークシステム10は、任意の数のGWノードを有することができる。また、以下の説明では、4つのGWノード22a〜22dを区別することなく総称する場合には、単に、「GWノード22」と表記する。
また、図1の例では、サーバノード1と、端末99とが通信可能に接続される。端末99は、センサネットワークシステム10で実行される複数のモジュールを含むアプリケーションを開発者が開発や変更するための開発環境における端末である。開発者が端末99を操作することによりアプリケーションを開発したり、開発済みのアプリケーションを変更したりする。そして、端末99は、開発されたアプリケーションや、変更されたアプリケーションをサーバノード1に送信する。
また、端末99は、アプリケーションをサーバノード1に送信する際に、アプリケーションとともに、アプリケーション定義データをサーバノード1に送信する。ここで、アプリケーション定義データについて説明する。
図2は、開発されたアプリケーションの一例を示す図である。また、図3は、図2の例に示すアプリケーションとともに、サーバノードに送信されるアプリケーション定義データの一例を示す図である。
図2に示すアプリケーションは、所定の順序で実行される3つのモジュールを有する。1番目に実行されるモジュールは、従業員単位で、業務で使用するPC(Personal Computer)などの各種の機器の消費電力を取得するモジュールであり、名称が「電力取得1」である。1番目に実行されるモジュールの次に実行されるモジュール、すなわち、2番目に実行されるモジュールは、会社の部署単位で、各部署に属する従業員の消費電力を集計するモジュールであり、名称が「電力集計2」である。2番目に実行されるモジュールの次に実行されるモジュール、すなわち、3番目に実行されるモジュールは、会社単位で、部署単位で集計された消費電力を集計するモジュールであり、名称が「電力集計3」である。図2に示すようなアプリケーションが開発された場合には、端末99は、図2に示すアプリケーションとともに、図3に示すアプリケーション定義データをサーバノード1に送信する。
図3の例に示すアプリケーション定義データは、「処理名」、「入力型」、「出力型」、「集約キー名」、「モジュール」、「処理設定」、「処理変更」、「集約キー変更」の各項目を有する。これらの各項目には、アプリケーションを開発した開発者などが端末99を操作することにより各種の内容が登録されたり、端末99がアプリケーションの変更を検知したときに各種の内容が登録される。
「処理名」の項目には、開発したアプリケーションに含まれる、所定の順序で実行される複数のモジュールのそれぞれの名称が開発者などにより登録される。図3の例は、アプリケーション定義データの1番目のレコードの「処理名」の項目に、開発したアプリケーションに含まれる1番目に実行されるモジュールの名称「電力取得1」が登録された場合を示す。また、図3の例は、アプリケーション定義データの2番目のレコードの「処理名」の項目に、開発したアプリケーションに含まれる2番目に実行されるモジュールの名称「電力集計2」が登録された場合を示す。また、図3の例は、アプリケーション定義データの3番目のレコードの「処理名」の項目に、開発したアプリケーションに含まれる3番目に実行されるモジュールの名称「電力集計3」が登録された場合を示す。
「入力型」の項目には、「処理名」の項目に名称が登録されたモジュールの入力となるイベントの型が開発者などにより登録される。図3の例は、アプリケーション定義データの1番目のレコードの「入力型」の項目に、イベントの型「センサ電力」が登録された場合を示す。ここで、「センサ電力」は、名称が「電力取得1」であるモジュールの入力となるイベントの型であり、センサによって検出されて出力された、従業員の消費電力を含むイベントの型である。また、図3の例は、アプリケーション定義データの2番目のレコードの「入力型」の項目に、イベントの型「集計電力1」が登録された場合を示す。ここで、「集計電力1」は、名称が「電力集計2」であるモジュールの入力となるイベントの型であり、名称が「電力取得1」であるモジュールによって加工されたイベントの型である。また、図3の例は、アプリケーション定義データの3番目のレコードの「入力型」の項目に、イベントの型「集計電力2」が登録された場合を示す。ここで、「集計電力2」は、名称が「電力集計3」であるモジュールの入力となるイベントの型であり、名称が「電力集計2」であるモジュールによって加工されたイベントの型である。
「出力型」の項目には、「処理名」の項目に名称が登録されたモジュールによって実行された処理の出力となるイベントの型が開発者などにより登録される。図3の例は、アプリケーション定義データの1番目のレコードの「出力型」の項目に、イベントの型「集計電力1」が登録された場合を示す。この「集計電力1」は、名称が「電力取得1」であるモジュールによって加工されたイベントの型である。また、図3の例は、アプリケーション定義データの2番目のレコードの「出力型」の項目に、イベントの型「集計電力2」が登録された場合を示す。この「集計電力2」は、名称が「電力集計2」であるモジュールによって加工されたイベントの型である。また、図3の例は、アプリケーション定義データの3番目のレコードの「出力型」の項目に、イベントの型「集計電力結果」が登録された場合を示す。この「集計電力結果」は、名称が「電力集計3」であるモジュールによって加工されたイベントの型である。
「集約キー名」の項目には、「処理名」の項目に名称が登録されたモジュールによって実行される処理における処理単位を示すキーが開発者などにより登録される。図3の例は、アプリケーション定義データの1番目のレコードの「集約キー名」の項目に、従業員IDが登録された場合を示す。すなわち、図3の例に示すアプリケーション定義データの1番目のレコードの「集約キー名」の項目は、名称が「電力取得1」であるモジュールにより、従業員IDが示す従業員単位で、業務で使用する各種の機器の消費電力を取得する処理が実行されることを示す。また、図3の例は、アプリケーション定義データの2番目のレコードの「集約キー名」の項目に、部署IDが登録された場合を示す。すなわち、図3の例に示すアプリケーション定義データの2番目のレコードの「集約キー名」の項目は、名称が「電力集計2」であるモジュールにより、部署IDが示す部署単位で、各部署に属する従業員の消費電力を集計する処理が実行されることを示す。また、図3の例は、アプリケーション定義データの3番目のレコードの「集約キー名」の項目に、会社IDが登録された場合を示す。すなわち、図3の例に示すアプリケーション定義データの3番目のレコードの「集約キー名」の項目は、名称が「電力集計3」であるモジュールにより、会社IDが示す会社単位で、各部署の消費電力を集計する処理が実行されることを示す。
「モジュール」の項目には、「処理名」の項目に名称が登録されたモジュールが開発者などにより登録される。図3の例は、アプリケーション定義データの1番目のレコードの「モジュール」の項目に、名称が「電力取得1」であるモジュール「取得.jar」が登録された場合を示す。また、図3の例は、アプリケーション定義データの2番目のレコードの「モジュール」の項目に、名称が「電力集計2」であるモジュール「集計.jar」が登録された場合を示す。また、図3の例は、アプリケーション定義データの3番目のレコードの「モジュール」の項目に、名称が「電力集計3」であるモジュール「集計.jar」が登録された場合を示す。
「処理設定」の項目には、「処理名」の項目に名称が登録されたモジュールが各種の処理を実行する際に用いるパラメータが開発者などにより登録される。図3の例は、アプリケーション定義データの1番目のレコードの「処理設定」の項目に、「取得対象=list.xml」が登録された場合を示す。この「取得対象=list.xml」は、消費電力を取得する処理を実行する際に、消費電力を取得する対象の従業員の従業員IDと同従業員の消費電力を計測するセンサのアドレス(URLなど)が登録されたlist.xmlを参照して、list.xmlに従業員IDが登録された従業員について消費電力を取得することを示す。また、図3の例は、アプリケーション定義データの2番目のレコードの「処理設定」の項目に、「集計キー=電力」が登録された場合を示す。この「集計キー=電力」は、部署単位で、入力されたイベントの属性に含まれる「電力」をキーとして、「電力」に対応付けられた消費電力を集計することを示す。また、図3の例は、アプリケーション定義データの3番目のレコードの「処理設定」の項目に、「集計キー=電力」が登録された場合を示す。この「集計キー=電力」は、会社単位で、入力されたイベントの属性に含まれる「電力」をキーとして、「電力」に対応付けられた消費電力を集計することを示す。
「処理変更」の項目には、「処理名」の項目に名称が登録されたモジュールが変更された場合に、端末99によって「あり」が登録される。例えば、端末99は、アプリケーションが開発された時点では、全てのモジュールのそれぞれに対応する「処理変更」の項目に「なし」を登録する。また、端末99は、アプリケーションに含まれるモジュールが開発者により変更されたか否かを監視している。そして、端末99は、モジュールに変更があったことを検知した場合に、変更があったモジュールに対応する「処理変更」の項目に、「あり」を登録する。図2の例に示すアプリケーションは、開発されてから、いずれのモジュールも変更されていないので、図3の例に示すように、全てのモジュールのそれぞれに対応する「処理変更」の項目には、「なし」が登録される。
「集約キー変更」の項目には、「処理名」の項目に名称が登録されたモジュールが変更され、変更されたモジュールによって実行される処理における処理単位が変更された場合には、端末99によって「あり」が登録される。また、「集約キー変更」の項目には、モジュールが変更されても、処理単位が変更されていない場合には、端末99によって「なし」が登録される。例えば、端末99は、アプリケーションが開発された時点では、全てのモジュールのそれぞれに対応する「集約キー変更」の項目に「なし」を登録する。そして、端末99は、モジュールに変更があったことを検知し、かつ、変更されたモジュールによって実行される処理における処理単位が変更されたことを検知した場合に、変更されたモジュールに対応する「集約キー変更」の項目に、「あり」を登録する。ここで、処理単位が変更された場合には、「集約キー名」の項目に登録された内容も変更されるので、「処理変更」の項目には、「集約キー名」の項目に登録された内容に変更があった場合に、「あり」が登録され、「集約キー名」の項目に登録された内容に変更がない場合に、「なし」が登録されることとなる。図2の例に示すアプリケーションは、開発されてから、いずれのモジュールも変更されていないので、図3の例に示すように、全てのモジュールのそれぞれに対応する「集約キー変更」の項目には、「なし」が登録される。
また、「集約キー変更」の項目には、「処理名」の項目に名称が登録されたモジュールが実行する処理によって、入力されたイベントを加工する処理が変更された場合に、端末99によって「あり」が登録される。例えば、端末99は、モジュールに変更があったことを検知した場合には、入力されたイベントを加工する処理が変更されたかどうかを開発者に問い合わせるための画面を端末99の図示しない表示部に表示する。図4は、イベントを加工する処理が変更されたかどうかを開発者に問い合わせるための画面の一例を示す図である。例えば、図4の例に示す画面は、名称が「電力集計2」であるモジュールにおいて、会社単位で消費電力を集計する、名称が「電力集計3」であるモジュールに対して出力するイベントを加工する際の処理を変更したかどうかを問い合わせるための画面である。図4の例に示す画面において、「Yes」と表記されたボタンが押下されると、端末99は、イベントを加工する際の処理に変更があったため、「電力集計3」であるモジュールに対応する「集約キー変更」の項目に、「あり」を登録する。また、図4の例に示す画面において、「No」と表記されたボタンが押下されると、端末99は、イベントを加工する際の処理に変更がなかったため、名称が「電力集計3」であるモジュールに対応する「集約キー変更」の項目に、「なし」を登録する。
図2に示すアプリケーションが開発された場合には、端末99は、開発されたアプリケーションとともに、上述したような方法で各種の内容が登録された図3に示すアプリケーション定義データをサーバノード1に送信する。
また、図2に示すアプリケーションに対して、開発者が、図5の例に示すように、名称が「電力集計2」であるモジュールが実行する処理における処理単位を「部署」から「Project(プロジェクト)」に変更した場合について説明する。なお、開発者は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理をも変更している。この場合には、モジュールを変更した開発者が、図3に示すアプリケーション定義データにおける2番目のレコードの「集約キー名」の項目に登録された「部署ID」を、プロジェクトを示す「プロジェクトID」に変更する。そして、端末99は、2番目のレコードの「集約キー名」の項目の登録内容が「プロジェクトID」に変更されたアプリケーション定義データの「処理変更」及び「集約キー変更」の各項目の登録内容をクリアする。そして、端末99は、図6Aに示すように、名称が「電力集計2」である変更されたモジュールの「処理変更」の項目に、「あり」を登録し、その他の変更されていないモジュールの「処理変更」の項目に、「なし」を登録する。そして、端末99は、図6Bに示すように、処理単位が「部署」から「Project(プロジェクト)」に変更されたモジュールの「集約キー変更」の項目に「あり」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたかどうかを開発者に問い合わせるための画面を端末99の図示しない表示部に表示する。なお、この場合における、入力されたイベントを加工する処理は、名称が「電力集計3」であるモジュールに対して出力するイベントを加工する際の処理のことを指す。また、ここでは、開発者から、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたとの回答を得たものとする。この場合には、端末99は、図6Cに示すように、名称が「電力集計3」であるモジュールに対応する「集約キー変更」の項目に、「あり」を登録する。また、図6Cに示すように、端末99は、変更されたモジュールよりも前に実行されるモジュール、すなわち、名称が「電力取得1」であるモジュールに対応する「集約キー変更」の項目には、「なし」を登録する。そして、端末99は、図5に示す変更されたアプリケーションとともに、上述したような方法で各種の内容が登録された図6Cに示すアプリケーション定義データをサーバノード1に送信する。
また、図2に示すアプリケーションに対して、開発者が、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理を変更した場合について説明する。この場合には、端末99は、図3に示すアプリケーション定義データの「処理変更」及び「集約キー変更」の各項目の登録内容をクリアする。そして、端末99は、図7Aに示すように、名称が「電力集計2」である変更されたモジュールに対応する「処理変更」の項目に、「あり」を登録し、その他の変更されていないモジュールの「処理変更」の項目に、「なし」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて処理単位が変更されていないため、図7Bに示すように、名称が「電力集計2」であるモジュールに対応する「集約キー変更」の項目に「なし」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたかどうかを開発者に問い合わせるための画面を端末99の図示しない表示部に表示する。ここでは、開発者から、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたとの回答を得たものとする。この場合には、端末99は、図7Cに示すように、名称が「電力集計3」であるモジュールに対応する「集約キー変更」の項目に、「あり」を登録する。また、図7Cに示すように、端末99は、変更されたモジュールよりも前に実行されるモジュール、すなわち、名称が「電力取得1」であるモジュールに対応する「集約キー変更」の項目に、「なし」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたアプリケーションとともに、上述したような方法で各種の内容が登録された図7Cに示すアプリケーション定義データをサーバノード1に送信する。
また、図2に示すアプリケーションに対して、開発者が、名称が「電力集計2」であるモジュールが実行する処理における処理単位を「部署」から「Project(プロジェクト)」に変更した場合について説明する。なお、開発者は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理については変更していない。この場合には、モジュールを変更した開発者が、図3に示すアプリケーション定義データにおける2番目のレコードの「集約キー名」の項目に登録された「部署ID」を、プロジェクトを示す「プロジェクトID」に変更する。そして、端末99は、2番目のレコードの「集約キー名」の項目の登録内容が「プロジェクトID」に変更されたアプリケーション定義データの「処理変更」及び「集約キー変更」の各項目の登録内容をクリアする。そして、端末99は、図8Aに示すように、名称が「電力集計2」である変更されたモジュールの「処理変更」の項目に、「あり」を登録し、その他の変更されていないモジュールの「処理変更」の項目に、「なし」を登録する。そして、端末99は、図8Bに示すように、処理単位が「部署」から「Project(プロジェクト)」に変更されたモジュールに対応する「集約キー変更」の項目に「あり」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたかどうかを開発者に問い合わせるための画面を端末99の図示しない表示部に表示する。ここでは、開発者から、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されていないとの回答を得たものとする。この場合には、端末99は、図8Cに示すように、名称が「電力集計3」であるモジュールに対応する「集約キー変更」の項目に、「なし」を登録する。また、図8Cに示すように、端末99は、変更されたモジュールよりも前に実行されるモジュール、すなわち、名称が「電力取得1」であるモジュールに対応する「集約キー変更」の項目に、「なし」を登録する。そして、端末99は、処理単位が「部署」から「Project」に変更されたアプリケーションとともに、上述したような方法で各種の内容が登録された図8Cに示すアプリケーション定義データをサーバノード1に送信する。
また、図2に示すアプリケーションに対して、開発者が、名称が「電力集計2」であるモジュールを変更したが、処理単位、及び、入力されたイベントを加工する処理について変更していない場合について説明する。この場合には、端末99は、図3に示すアプリケーション定義データの「処理変更」及び「集約キー変更」の各項目の登録内容をクリアする。そして、端末99は、図9Aに示すように、名称が「電力集計2」である変更されたモジュールの「処理変更」の項目に、「あり」を登録し、その他の変更されていないモジュールの「処理変更」の項目に、「なし」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて処理単位が変更されていないため、図9Bに示すように、名称が「電力集計2」であるモジュールに対応する「集約キー変更」の項目に「なし」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されたかどうかを開発者に問い合わせるための画面を端末99の図示しない表示部に表示する。ここでは、開発者から、名称が「電力集計2」であるモジュールにおいて、入力されたイベントを加工する処理が変更されていないとの回答を得たものとする。この場合には、端末99は、図9Cに示すように、名称が「電力集計3」であるモジュールに対応する「集約キー変更」の項目に、「なし」を登録する。また、図9Cに示すように、端末99は、変更されたモジュールよりも前に実行されるモジュール、すなわち、名称が「電力取得1」であるモジュールに対応する「集約キー変更」の項目に、「なし」を登録する。そして、端末99は、名称が「電力集計2」であるモジュールが変更されたが、このモジュールにおいて処理単位、及び、入力されたイベントを加工する処理については変更されていないアプリケーションとともに、上述したような方法で各種の内容が登録された図8Cに示すアプリケーション定義データをサーバノード1に送信する。
図1の説明に戻り、センサネットワークシステム10では、センサノード21から送信されたイベントを、GWノード22及びネットワーク23を介して、サーバノード1が収集する。
センサノード21は、センサが搭載された通信端末である。センサノード21の一態様としては、パーソナルコンピュータやパーソナルコンピュータの周辺機器、AV(Audio Visual)機器、携帯電話機やPHS(Personal Handyphone System)の携帯端末、家電製品などの各種の機器が挙げられる。また、センサノード21に搭載されるセンサの一態様としては、照度を検出する照度センサ、温度を検出する温度センサ、湿度を検出する湿度センサ、温度及び湿度を検出する温湿度センサなどの環境センサが挙げられる。なお、センサノード21に搭載されるセンサは、環境センサに限られない。例えば、センサノード21に搭載されるセンサは、GPS(Global Positioning System)センサ、加速度センサ、ジャイロセンサや従業員の消費電力を検出するセンサなどの各種のセンサでもよい。ここで、以下、センサノード21に、従業員の消費電力を検出するセンサが搭載された場合について説明する。
GWノード22は、サーバノード1とセンサノード21との通信を中継するノードである。例えば、GWノード22は、センサノード21から送信されたイベントを受信し、受信したイベントを、ネットワーク23を介してサーバノード1へ送信する。以下の説明では、センサネットワークにおけるルートノードであるサーバノード1以外のノード、すなわち、センサノード21およびGWノード22を「下位ノード」と表記する場合がある。
サーバノード1は、センサネットワークにおけるルートノードとしての機能を有する。サーバノード1は、イベントを加工する処理を行う各種のモジュールをどのノード(センサノード、GWノード、サーバノード)に配備するかを決定するサーバである。
[サーバノード1の機能構成の一例]
続いて、本実施例に係るサーバノード1の機能構成の一例について説明する。図10は、実施例に係るサーバノードの機能構成の一例を示すブロック図である。図10の例に示すように、サーバノード1は、入力部2と、出力部3と、通信部4と、制御部6と、アプリケーション記憶部5aと、アプリケーション定義データ記憶部5bとを有する。
入力部2は、各種の情報をサーバノード1に入力する。例えば、入力部2は、サーバノード1のユーザから、後述の分散配備処理を実行する指示を受け付けた場合には、受け付けた指示をサーバノード1に入力する。入力部2のデバイスの一例としては、キーボードやマウスなどが挙げられる。
出力部3は、各種の情報を出力する。例えば、出力部3は、後述の配備部6dが実行する処理により、イベントを加工する処理を行う各種のモジュールの配備先を示す情報を表示するように制御される。出力部3のデバイスの一例としては、液晶ディスプレイなどの各種の表示装置や、音声を出力する音声出力装置が挙げられる。
通信部4は、サーバノード1と、下位ノードとの通信を行う。例えば、通信部4は、端末99から送信されたアプリケーション及びアプリケーション定義データを受信すると、受信したアプリケーション及びアプリケーション定義データを制御部6に送信する。また、通信部4は、後述の配備部6dが実行する後述の処理により、モジュールを下位ノードに送信するように制御される。通信部4のデバイスの一例として、ネットワークインタフェースカードなどの各種の通信を行うためのデバイスが挙げられる。
アプリケーション記憶部5aには、後述の登録部6aにより、サーバノード1が受信したアプリケーションのうち、最新のアプリケーションが登録される。
アプリケーション定義データ記憶部5bには、後述の登録部6aにより、サーバノード1が受信したアプリケーション定義データのうち、最新のアプリケーション定義データが登録される。
制御部6は、登録部6aと、特定部6bと、生成部6cと、配備部6dとを有する。制御部6は、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、CPU(Central Processing Unit)、MPU(Micro Processing Unit)などの回路である。
登録部6aは、各種の情報を登録する。登録部6aの一態様について説明する。例えば、登録部6aは、通信部4により送信されたアプリケーションを受信すると、受信したアプリケーションをアプリケーション記憶部5aに登録する。なお、登録部6aは、受信したアプリケーションをアプリケーション記憶部5aに登録する際に、アプリケーション記憶部5aに他のアプリケーションが記憶されている場合には、他のアプリケーションをアプリケーション記憶部5aから削除する。そして、登録部6aは、受信したアプリケーションをアプリケーション記憶部5aに登録する。これにより、アプリケーション記憶部5aには、サーバノード1が受信したアプリケーションのうち、最新のアプリケーションのみが記憶される。
また、登録部6aは、通信部4により送信されたアプリケーション定義データを受信すると、受信したアプリケーション定義データをアプリケーション定義データ記憶部5bに登録する。なお、登録部6aは、受信したアプリケーション定義データをアプリケーション定義データ記憶部5bに登録する際に、アプリケーション定義データ記憶部5bに他のアプリケーション定義データが記憶されている場合には、他のアプリケーション定義データを削除する。そして、登録部6aは、受信したアプリケーション定義データをアプリケーション定義データ記憶部5bに登録する。これにより、アプリケーション定義データ記憶部5bには、サーバノード1が受信したアプリケーション定義データのうち、最新のアプリケーション定義データのみが記憶される。
特定部6bは、所定の順序で実行される複数のモジュールのそれぞれの処理インスタンスが配備された複数の下位ノードにおけるモジュールが変更された場合に、次の処理を行う。すなわち、特定部6bは、変更されたモジュールの変更内容に応じて、複数のモジュールの中から再配備の対象のモジュールを特定する。
特定部6bの一態様について説明する。例えば、特定部6bは、登録部6aによりアプリケーションがアプリケーション記憶部5aに登録され、アプリケーション定義データがアプリケーション定義データ記憶部5bに登録された場合に、次の処理を行う。すなわち、特定部6bは、アプリケーション記憶部5aからアプリケーションを取得するとともに、アプリケーション定義データ記憶部5bからアプリケーション定義データを取得する。
そして、特定部6bは、取得したアプリケーション定義データの全レコードの中に、「処理変更」の項目に「あり」が登録されたレコードがあるか否かを判定する。「処理変更」の項目に「あり」が登録されたレコードがあると判定した場合には、特定部6bは、「処理変更」の項目に「あり」が登録されたレコードの「集約キー変更」の項目に登録された内容を取得する。すなわち、「処理変更」の項目に「あり」が登録されたレコードがあると判定した場合には、特定部6bは、変更されたモジュールにおいて、処理単位が変更されたか否かを示す情報を取得する。
また、「処理変更」の項目に「あり」が登録されたレコードがあると判定した場合には、特定部6bは、「処理変更」の項目に「あり」が登録されたレコードの「出力型」の項目に登録された内容を取得する。そして、特定部6bは、取得した「出力型」の項目の登録内容が、「入力型」の項目に登録されたレコードをアプリケーション定義データの全レコードの中から特定する。さらに特定したレコードの「出力型」の項目の登録内容が、「入力型」の項目に登録されたレコードを特定し、出力-入力の連鎖が続く限り再帰的に特定を続ける。そして、特定部6bは、特定したレコードの「集約キー変更」の項目に登録された内容を取得する。すなわち、「処理変更」の項目に「あり」が登録されたレコードがあると判定した場合には、特定部6bは、変更されたモジュールにおいて、実行される処理の内容が変更されたか否かを示す情報を取得する。
上述したように、特定部6bは、モジュールが変更された場合に、変更されたモジュールにおいて、処理単位が変更されたか否かを示す情報を取得し、実行される処理の内容が変更されたか否かを示す情報を取得する。例えば、図6Cに示すアプリケーション定義データをアプリケーション定義データ記憶部5bから取得した場合には、特定部6bは、次の情報を取得する。すなわち、特定部6bは、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されたことを示す情報「あり」を取得し、実行される処理の内容が変更されたことを示す情報「あり」を取得する。また、図7Cに示すアプリケーション定義データをアプリケーション定義データ記憶部5bから取得した場合には、特定部6bは、次の情報を取得する。すなわち、特定部6bは、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていないことを示す情報「なし」を取得し、実行される処理の内容が変更されたことを示す情報「あり」を取得する。また、図8Cに示すアプリケーション定義データをアプリケーション定義データ記憶部5bから取得した場合には、特定部6bは、次の情報を取得する。すなわち、特定部6bは、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていることを示す情報「あり」を取得し、実行される処理の内容が変更されていないことを示す情報「なし」を取得する。また、図9Cに示すアプリケーション定義データをアプリケーション定義データ記憶部5bから取得した場合には、特定部6bは、次の情報を取得する。すなわち、特定部6bは、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていないことを示す情報「なし」を取得し、実行される処理の内容が変更されていないことを示す情報「なし」を取得する。
そして、特定部6bは、取得した処理単位が変更されたか否かを示す情報、及び、取得した実行される処理の内容が変更されたか否かを示す情報に応じて、再配備の対象となるモジュールを特定する。
例えば、図6Cに示すアプリケーション定義データから、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されたことを示す情報「あり」を取得し、実行される処理の内容が変更されたことを示す情報「あり」を取得した場合について説明する。この場合には、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されたため、名称が「電力集計2」であるモジュールの処理インスタンスが変更される。また、名称が「電力集計2」であるモジュールにおいて、実行される処理の内容が変更されたため、名称が「電力集計3」であるモジュールの処理インスタンスが変更される。そこで、特定部6bは、名称が「電力集計2」であるモジュール、及び、名称が「電力集計3」であるモジュールを再配備するために、名称が「電力集計2」であるモジュール、及び、名称が「電力集計3」であるモジュールを再配備の対象のモジュールとして特定する。
また、図7Cに示すアプリケーション定義データから、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていないことを示す情報「なし」を取得し、実行される処理の内容が変更されたことを示す情報「あり」を取得した場合について説明する。この場合には、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていないため、名称が「電力集計2」であるモジュールの処理インスタンスは、変更されない。一方、名称が「電力集計2」であるモジュールにおいて、実行される処理の内容が変更されたため、名称が「電力集計3」であるモジュールの処理インスタンスは、変更される。そこで、特定部6bは、名称が「電力集計3」であるモジュールを再配備するために、名称が「電力集計3」であるモジュールを再配備の対象のモジュールとして特定する。
また、図8Cに示すアプリケーション定義データから、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されたことを示す情報「あり」を取得し、実行される処理の内容が変更されていないことを示す情報「なし」を取得した場合について説明する。この場合には、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されたため、名称が「電力集計2」であるモジュールの処理インスタンスは、変更される。一方、名称が「電力集計2」であるモジュールにおいて、実行される処理の内容が変更されないため、名称が「電力集計3」であるモジュールの処理インスタンスは、変更されない。そこで、特定部6bは、名称が「電力集計2」であるモジュールを再配備するために、名称が「電力集計2」であるモジュールを再配備の対象のモジュールとして特定する。
また、図9Cに示すアプリケーション定義データから、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていないことを示す情報「なし」を取得し、実行される処理の内容が変更されていないことを示す情報「なし」を取得した場合について説明する。この場合には、名称が「電力集計2」であるモジュールにおいて、処理単位が変更されていないため、名称が「電力集計2」であるモジュールの処理インスタンスは、変更されない。また、名称が「電力集計2」であるモジュールにおいて、実行される処理の内容が変更されないため、名称が「電力集計3」であるモジュールの処理インスタンスも、変更されない。そこで、この場合には、特定部6bは、再配備の対象のモジュールを特定しない。
生成部6cは、特定部6bにより特定されたモジュールの処理インスタンスを生成する。
生成部6cの一態様について説明する。例えば、生成部6cは、特定されたモジュールを、下位ノードのうちイベントが流れる方向の最下流側に位置するノードに配備した上で、アプリケーションに含まれる複数のモジュールを実行させる。そして、生成部6cは、特定されたモジュールの入出力データを表すログを解析することにより、特定されたモジュールを分割する分割数を算出する。ここで、モジュールの入力データの一例としては、モジュールに入力されるイベントが挙げられ、モジュールの出力データの一例としては、モジュールによって加工されたイベントが挙げられる。そして、生成部6cは、特定されたモジュールについて分割数分の処理インスタンスを生成する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールのそれぞれの処理インスタンスの接続関係を示すインスタンスフローを生成する。
図11〜図14を参照して、生成部6cが実行する処理の一例について説明する。図11は、アプリケーションの変更前後のインスタンスフロー及び処理インスタンスの配備先の一例を示す図である。図11中左上側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスが接続されたインスタンスフローが示されている。このインスタンスフローは、名称が「電力取得1」であるモジュールの処理インスタンス「取得1a」〜「取得1e」と、名称が「電力集計2」であるモジュールの処理インスタンス「集計2x」、「集計2y」と、名称が「電力集計3」であるモジュールの処理インスタンス「集計3P」、「集計3Q」との接続関係を示す。なお、処理インスタンス「取得1a」〜「取得1e」のそれぞれは、処理インスタンス「1a」〜「1e」のそれぞれと表記される場合がある。また、処理インスタンス「集計2x」、「集計2y」のそれぞれは、処理インスタンス「2x」、「2y」のそれぞれと表記される場合がある。また、処理インスタンス「集計3P」、「集計3Q」のそれぞれは、処理インスタンス「3P」、「3Q」のそれぞれと表記される場合がある。各インスタンスの末尾につく記号は、各処理の集約キー値に対応する。すなわち、「取得1a」〜「取得1e」は従業員ID「a」〜「e」の各データに対応する処理を行い、「集計2x」、「集計2y」は部署ID「x」と「y」に対応する処理を行う。また、後述する末尾に?が付くインスタンスは、集約キーの値が不明の場合の処理、あるいは既知でない集約キー値に対応する処理を表す。また、図11中左下側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスの配備先の一例が示されている。図11中左下側に示す例は、処理インスタンス「1a」、「1b」がGWノード22aに配備され、処理インスタンス「1c」〜「1e」、「2y」がGWノード22bに配備され、処理インスタンス「2x」、「3P」、「3Q」がGWノード22cに配備された場合を示す。このような場合に、名称が「電力集計2」であるモジュール、及び、名称が「電力集計3」であるモジュールが再配備の対象のモジュールとして特定された場合には、生成部6cは、次の処理を行う。すなわち、生成部6cは、図11中右下側に示すように、イベントが流れる方向において最上流に位置するGWノード22dに、名称が「電力集計2」であるモジュール「2?」、及び、名称が「電力集計3」であるモジュール「3?」をまず配備する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールを実行させる。そして、生成部6cは、モジュール「2?」,「3?」の入出力データを表すログを解析することにより、モジュール「2?」,「3?」のそれぞれを分割する分割数を算出する。そして、生成部6cは、モジュール「2?」,「3?」のそれぞれについて分割数分の処理インスタンスを生成する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールのそれぞれの処理インスタンスの接続関係を示すインスタンスフローを生成する。これにより、全てのモジュールの入出力データを解析することなく、インスタンスフローを生成することができるので、複数のモジュールのうち、一部のモジュールに変更があった場合でも、簡易にインスタンスフローを生成することができる。なお、図11中右上側には、モジュール「2?」,「3?」と、処理インスタンス「1a」〜「1e」との接続関係が示されている。
図12は、アプリケーションの変更前後のインスタンスフロー及び処理インスタンスの配備先の一例を示す図である。図12中左上側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスが接続されたインスタンスフローが示されている。このインスタンスフローは、図11中左側に示されたインスタンスフローと同様であるため、説明を省略する。また、図12中左下側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスの配備先の一例が示されている。この処理インスタンスの配備先の一例についても、図11中左下側に示された処理インスタンスの配備先の一例と同様であるため、説明を省略する。図12中左上側及び図12中左下側に示すような場合に、名称が「電力集計3」であるモジュールが再配備の対象のモジュールとして特定された場合には、生成部6cは、次の処理を行う。すなわち、生成部6cは、図12中右下側に示すように、イベントが流れる方向において最上流に位置するGWノード22dに、名称が「電力集計3」であるモジュール「3?」をまず配備する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールを実行させる。そして、生成部6cは、モジュール「3?」の入出力データを表すログを解析することにより、モジュール「3?」を分割する分割数を算出する。そして、生成部6cは、モジュール「3?」について分割数分の処理インスタンスを生成する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールのそれぞれの処理インスタンスの接続関係を示すインスタンスフローを生成する。これにより、全てのモジュールの入出力データを解析することなく、インスタンスフローを生成することができるので、複数のモジュールのうち、一部のモジュールに変更があった場合でも、簡易にインスタンスフローを生成することができる。なお、図12中右上側には、モジュール「3?」と、処理インスタンス「1a」〜「1e」,「2x」,「2y」との接続関係が示されている。
図13は、アプリケーションの変更前後のインスタンスフロー及び処理インスタンスの配備先の一例を示す図である。図13中左上側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスが接続されたインスタンスフローが示されている。このインスタンスフローは、図11中左側に示されたインスタンスフローと同様であるため、説明を省略する。また、図13中左下側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスの配備先の一例が示されている。この処理インスタンスの配備先の一例についても、図11中左下側に示された処理インスタンスの配備先の一例と同様であるため、説明を省略する。図13中左上側及び図13中左下側に示すような場合に、名称が「電力集計2」であるモジュールが再配備の対象のモジュールとして特定された場合には、生成部6cは、次の処理を行う。すなわち、生成部6cは、図13中右下側に示すように、イベントが流れる方向において最上流に位置するGWノード22dに、名称が「電力集計3」であるモジュール「2?」をまず配備する。これに加えて、生成部6cは、処理インスタンス「3P」,「3Q」をもGWノード22dに配備する。これは、処理インスタンス「3P」,「3Q」がGWノード22cに配備された場合に、複数のモジュールが実行された場合には、処理インスタンス「3P」,「3Q」とモジュール「2?」との通信に時間がかかってしまうからである。そして、生成部6cは、アプリケーションに含まれる複数のモジュールを実行させる。そして、生成部6cは、モジュール「2?」の入出力データを表すログを解析することにより、モジュール「2?」を分割する分割数を算出する。そして、生成部6cは、モジュール「2?」について分割数分の処理インスタンスを生成する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールのそれぞれの処理インスタンスの接続関係を示すインスタンスフローを生成する。これにより、全てのモジュールの入出力データを解析することなく、インスタンスフローを生成することができるので、複数のモジュールのうち、一部のモジュールに変更があった場合でも、簡易にインスタンスフローを生成することができる。なお、図13中右上側には、モジュール「2?」と、処理インスタンス「1a」〜「1e」,「3P」,「3Q」との接続関係が示されている。
図14は、アプリケーションの変更前後のインスタンスフロー及び処理インスタンスの配備先の一例を示す図である。図14中左上側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスが接続されたインスタンスフローが示されている。このインスタンスフローは、図11中左側に示されたインスタンスフローと同様であるため、説明を省略する。また、図14中左下側には、図2に示す変更前のアプリケーションに含まれるモジュールの処理インスタンスの配備先の一例が示されている。この処理インスタンスの配備先の一例についても、図11中左下側に示された処理インスタンスの配備先の一例と同様であるため、説明を省略する。図14中左上側及び図14中左下側に示すような場合に、モジュールが変更されたにも関わらず、再配備の対象のモジュールが特定されなかった場合には、生成部6cは、何も処理を行わず、サーバノード1は、モジュールの配備先に変更がないものとして扱う。これにより、一部のモジュールに変更があった場合でも、インスタンスフローを再生成しないので、簡易にモジュールの配備先が決定できる結果、簡易にモジュールを配備することができる。なお、図14中右上側には、処理インスタンス「1a」〜「1e」,「2x」,「2y」,「3P」,「3Q」との接続関係を示すインスタンスフローが示されている。
この実施例の処理の中で、集約キーの変更などで対応するデータが集約されると保証されないインスタンス「2x」「2y」「3P」「3Q」を消滅させ、未知のデータに対応する「2?」または「3?」を生成するケースがある。この時、消滅させたインスタンスの内容を、対応する未知データのインスタンスに移動して引き継いでも良い。すなわち、インスタンス「2?」に「2y」「2x」のデータを移動し、インスタンス「3?」に「3P」「3Q」のデータを移動する。この時、未知のデータに対応するインスタンス「2?」は、再びデータxに対応するデータが届いた場合には「2x」から引き継いだデータを元に処理を継続する。さらに、引き継いだインスタンス内容に対応するデータが届かない場合、一定時間の後に内容を消去すると良い。
図10の説明に戻り、配備部6dは、生成部6cにより生成されたインスタンスフローを用いて処理インスタンスの配備先のノードを決定し、決定された配備先のノードに、処理インスタンスを配備する。したがって、本実施例によれば、上述したように、インスタンスフローを簡易に生成することができる結果、簡易に処理インスタンスを配備先のノードに配備することができる。
センサノード21の機能構成について説明する。図15は、実施例に係るセンサノードの機能構成の一例を示す図である。図15に示すように、センサノード21は、制御部70を有する。制御部70は、センサノード21に搭載されたセンサによってセンシングされたデータをイベントとして、GWノード22及びネットワーク23を介して、サーバノード1へ送信する。また、制御部70は、サーバノード1から送信された処理インスタンスを受信すると、受信した処理インスタンスを自ノードに配備する。これにより、制御部70は、受信した処理インスタンスを実行することができる。
次に、GWノード22の機能構成について説明する。図16は、実施例に係るGWノードの機能構成の一例を示す図である。図16に示すように、GWノード22は、制御部71を有する。制御部71は、センサノード21から送信されたイベントを受信すると、受信したイベントをネットワーク23を介して、サーバノード1へ送信する。また、制御部71は、サーバノード1から送信された処理インスタンスを受信すると、受信した処理インスタンスを自ノードに配備する。これにより、制御部71は、受信した処理インスタンスを実行することができる。
[処理の流れ]
次に、実施例に係るサーバノード1が実行する分散配備処理の流れについて説明する。図17は、実施例に係る分散配備処理の手順を示すフローチャートである。実施例に係る分散配備処理は、例えば、通信部4により送信されたアプリケーション及びアプリケーション定義データを制御部6が受信するたびに、制御部6により実行される。
図17に示すように、登録部6aは、受信したアプリケーションをアプリケーション記憶部5aに登録し、受信したアプリケーション定義データをアプリケーション定義データ記憶部5bに登録する(S101)。
そして、特定部6bは、アプリケーション記憶部5aからアプリケーションを取得するとともに、アプリケーション定義データ記憶部5bからアプリケーション定義データを取得する(S102)。
そして、特定部6bは、取得したアプリケーション定義データの全レコードの中に、「処理変更」の項目に「あり」が登録されたレコードがあるか否かを判定する(S103)。「処理変更」の項目に「あり」が登録されたレコードがあると判定した場合(S103;Yes)には、特定部6bは、次の処理を行う。すなわち、特定部6bは、変更されたモジュールにおいて、処理単位が変更されたか否かを示す情報を取得し、実行される処理の内容が変更されたか否かを示す情報を取得する。そして、特定部6bは、処理単位が変更されたことを示す情報「あり」を取得し、かつ、実行される処理の内容が変更されたことを示す情報「あり」を取得したか否かを判定する(S104)。処理単位が変更されたことを示す情報「あり」を取得し、かつ、実行される処理の内容が変更されたことを示す情報「あり」を取得したと判定した場合(S104;Yes)には、特定部6bは、次の処理を行う。すなわち、特定部6bは、変更されたモジュール、及び、変更されたモジュールより後に実行されるモジュールを再配備の対象のモジュールとして特定し(S105)、後述するS110に進む。
処理単位が変更されたことを示す情報「あり」を取得していないか、または、実行される処理の内容が変更されたことを示す情報「あり」を取得していないと判定した場合(S104;No)には、特定部6bは、次の処理を行う。すなわち、特定部6bは、処理単位が変更されていないことを示す情報「なし」を取得し、かつ、実行される処理の内容が変更されたことを示す情報「あり」を取得したか否かを判定する(S106)。
処理単位が変更されていないことを示す情報「なし」を取得し、かつ、実行される処理の内容が変更されたことを示す情報「あり」を取得したと判定した場合(S106;Yes)には、特定部6bは、次の処理を行う。すなわち、特定部6bは、変更されたモジュールより後に実行されるモジュールを再配備の対象のモジュールとして特定し(S107)、後述するS110に進む。
処理単位が変更されていないことを示す情報「なし」を取得していなか、または、実行される処理の内容が変更されたことを示す情報「あり」を取得していないと判定した場合(S106;No)には、特定部6bは、次の処理を行う。すなわち、特定部6bは、処理単位が変更されたことを示す情報「あり」を取得し、かつ、実行される処理の内容が変更されていないことを示す情報「なし」を取得したか否かを判定する(S108)。
処理単位が変更されたことを示す情報「あり」を取得し、かつ、実行される処理の内容が変更されていないことを示す情報「なし」を取得したと判定した場合(S108;Yes)には、特定部6bは、次の処理を行う。すなわち、特定部6bは、変更されたモジュールを再配備の対象のモジュールとして特定し(S109)、後述するS110に進む。一方、処理単位が変更されたことを示す情報「あり」を取得していないか、または、実行される処理の内容が変更されていないことを示す情報「なし」を取得していないと判定した場合(S108;No)には、分散配備処理を終了する。
S110では、生成部6cは、特定されたモジュールを、下位ノードのうちイベントが流れる方向の最下流側に位置するノードに配備した上で、アプリケーションに含まれる複数のモジュールを実行させる。そして、生成部6cは、特定されたモジュールの入出力データを表すログを解析することにより、特定されたモジュールを分割する分割数を算出する。ここで、モジュールの入力データの一例としては、モジュールに入力されるイベントが挙げられ、モジュールの出力データの一例としては、モジュールによって加工されたイベントが挙げられる。そして、生成部6cは、特定されたモジュールについて分割数分の処理インスタンスを生成する。そして、生成部6cは、アプリケーションに含まれる複数のモジュールのそれぞれの処理インスタンスの接続関係を示すインスタンスフローを生成する。
そして、配備部6dは、生成部6cにより生成されたインスタンスフローを用いて処理インスタンスの配備先のノードを決定し、決定された配備先のノードに、処理インスタンスを配備し(S111)、分散配備処理を終了する。
一方、取得したアプリケーション定義データの全レコードの中に、「処理変更」の項目に「あり」が登録されたレコードがないと判定した場合(S103;No)には、生成部6cは、取得したアプリケーションに含まれる全てのモジュールを、いずれかの下位ノードに仮に配備した上で、アプリケーションに含まれる複数のモジュールを実行させる。そして、生成部6cは、全てのモジュールの入出力データを表すログを解析することにより、全てのモジュールのそれぞれを分割する分割数を算出する。そして、生成部6cは、全てのモジュールのそれぞれについて分割数分の処理インスタンスを生成する。そして、生成部6cは、アプリケーションに含まれる全てのモジュールのそれぞれの処理インスタンスの接続関係を示すインスタンスフローを生成する(S112)。
そして、配備部6dは、生成部6cにより生成されたインスタンスフローを用いて処理インスタンスの配備先のノードを決定し、決定された配備先のノードに、処理インスタンスを配備し(S113)、分散配備処理を終了する。
上述したように、本実施例に係るサーバノード1によれば、簡易に処理インスタンスを配備先のノードに配備することができる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
例えば、実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
また、各種の負荷や使用状況などに応じて、実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
また、各種の負荷や使用状況などに応じて、実施例において説明した各処理の各ステップでの処理の順番を変更できる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
[分散配備プログラム]
また、上記の実施例で説明したサーバノード1の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図18を用いて、上記の実施例で説明したサーバノード1と同様の機能を有する分散配備プログラムを実行するコンピュータの一例を説明する。図18は、分散配備プログラムを実行するコンピュータを示す図である。
図18に示すように、コンピュータ300は、CPU310、ROM320、HDD(Hard Disk Drive)330、RAM340を有する。これら各機器310〜340は、バス350を介して接続されている。
ROM320には、OS(Operating System)などの基本プログラムが記憶されている。また、HDD330には、登録部6aと、特定部6bと、生成部6cと、配備部6dと同様の機能を発揮する分散配備プログラム330aが予め記憶される。
そして、CPU310が、分散配備プログラム330aをHDD330から読み出して実行する。
なお、上記した分散配備プログラム330aについては、必ずしも最初からHDD330に記憶させておく必要はない。
例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に分散配備プログラム330aを記憶させておく。そして、コンピュータ300がこれらから分散配備プログラム330aを読み出して実行するようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される「他のコンピュータ(またはサーバ)」などに分散配備プログラム330aを記憶させておく。そして、コンピュータ300がこれらから分散配備プログラム330aを読み出して実行するようにしてもよい。
1 サーバノード
5a アプリケーション記憶部
5b アプリケーション定義データ記憶部
6 制御部
6a 登録部
6b 特定部
6c 生成部
6d 配備部

Claims (7)

  1. 所定の順序で実行される複数の処理のそれぞれの処理インスタンスが配備された複数のノードにおける前記処理が変更された場合に、変更された該処理の変更内容に応じて、前記複数の処理の中から再配備の対象の処理を特定する特定部と、
    前記特定部により特定された処理の処理インスタンスを生成する生成部と、
    前記複数のノードの中から、前記生成部により生成された処理インスタンスを配備するノードを特定し、特定したノードに、前記生成部により生成された処理インスタンスを配備する配備部と、
    を有することを特徴とする分散配備装置。
  2. 前記複数の処理のそれぞれは、処理対象のデータに対して所定の単位ごとに所定の処理を実行し、
    前記特定部は、前記変更された処理が、処理対象のデータに対して前記所定の単位とは異なる単位で、前記所定の処理とは異なる処理を実行する場合には、前記複数の処理の中から、前記変更された処理以降に実行される処理を特定する
    ことを特徴とする請求項1に記載の分散配備装置。
  3. 前記特定部は、前記変更された処理が、処理対象のデータに対して前記所定の単位とは異なる単位で、前記所定の処理を実行する場合には、前記複数の処理の中から、前記変更された処理を特定する
    ことを特徴とする請求項2に記載の分散配備装置。
  4. 前記特定部は、前記変更された処理が、処理対象のデータに対して前記所定の単位で、前記所定の処理とは異なる処理を実行する場合には、前記複数の処理の中から、前記変更された処理よりも後に実行される処理を特定する
    ことを特徴とする請求項2または3に記載の分散配備装置。
  5. 前記特定部は、前記変更された処理が、処理対象のデータに対して前記所定の単位で、前記所定の処理を実行する場合には、前記複数の処理の中からいずれの処理も特定しない
    ことを特徴とする請求項2〜4のいずれか1項に記載の分散配備装置。
  6. コンピュータに、
    所定の順序で実行される複数の処理のそれぞれの処理インスタンスが配備された複数のノードにおける前記処理が変更された場合に、変更された該処理の変更内容に応じて、前記複数の処理の中から再配備の対象の処理を特定し、
    特定された処理の処理インスタンスを生成し、
    前記複数のノードの中から、生成された処理インスタンスを配備するノードを特定し、特定したノードに、前記生成された処理インスタンスを配備する
    処理を実行させることを特徴とする分散配備プログラム。
  7. コンピュータが、
    所定の順序で実行される複数の処理のそれぞれの処理インスタンスが配備された複数のノードにおける前記処理が変更された場合に、変更された該処理の変更内容に応じて、前記複数の処理の中から再配備の対象の処理を特定し、
    特定された処理の処理インスタンスを生成し、
    前記複数のノードの中から、生成された処理インスタンスを配備するノードを特定し、特定したノードに、前記生成された処理インスタンスを配備する
    処理を実行することを特徴とする分散配備方法。
JP2013258709A 2013-12-13 2013-12-13 分散配備装置、分散配備方法及び分散配備プログラム Expired - Fee Related JP6183198B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013258709A JP6183198B2 (ja) 2013-12-13 2013-12-13 分散配備装置、分散配備方法及び分散配備プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013258709A JP6183198B2 (ja) 2013-12-13 2013-12-13 分散配備装置、分散配備方法及び分散配備プログラム

Publications (2)

Publication Number Publication Date
JP2015115013A JP2015115013A (ja) 2015-06-22
JP6183198B2 true JP6183198B2 (ja) 2017-08-23

Family

ID=53528706

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013258709A Expired - Fee Related JP6183198B2 (ja) 2013-12-13 2013-12-13 分散配備装置、分散配備方法及び分散配備プログラム

Country Status (1)

Country Link
JP (1) JP6183198B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6679445B2 (ja) * 2016-08-31 2020-04-15 ヤフー株式会社 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003337702A (ja) * 2002-05-20 2003-11-28 Nec Corp ソフトウェア無線機モジュール構成動的変更方式
JP2010028339A (ja) * 2008-07-17 2010-02-04 Fujitsu Ltd 局データの不整合を検出する方法および装置並びにコンピュータプログラム
EP2538343A4 (en) * 2010-02-18 2013-07-31 Hitachi Ltd INFORMATION AND COMMUNICATION PROCESSING SYSTEM, METHOD AND NETWORK NODES

Also Published As

Publication number Publication date
JP2015115013A (ja) 2015-06-22

Similar Documents

Publication Publication Date Title
Ranjan et al. The next grand challenges: Integrating the internet of things and data science
EP3044976B1 (en) Managing machine to machine devices
JP4991670B2 (ja) ノードネットワークのためのフォールトトレランスフレームワーク
CN105934916B (zh) 向所部署装置编制和管理服务
CN101206569B (zh) 用于动态识别促使服务劣化的组件的方法和系统
JP6097889B2 (ja) 監視システム、監視装置、および検査装置
US11411830B2 (en) Systems and methods for determining entry points for mapping a network
JP6571565B2 (ja) 異常診断装置および方法、並びに、異常診断システム
US20150067153A1 (en) Remote monitoring of data facility in real-time using wireless sensor network
US20160103750A1 (en) Application programming interface monitoring tool notification and escalation method and system
KR20200080234A (ko) 장치 설계를 위한 코드 모듈 선택
JP6549959B2 (ja) 障害切り分け方法および障害切り分けを行う管理サーバ
JP2016062506A (ja) 監視システム、監視装置及び監視方法
JP6183198B2 (ja) 分散配備装置、分散配備方法及び分散配備プログラム
Kharchenko et al. Availability models and maintenance strategies for smart building automation systems considering attacks on component vulnerabilities
US9621656B2 (en) Distributed deployment device and method
JP7168060B2 (ja) ネットワーク構築装置、ネットワーク構築方法、及びプログラム
Lu et al. IoT and smart infrastructure
US8260929B2 (en) Deploying analytic functions
Păduraru et al. RiverIoT-a framework proposal for fuzzing IoT applications
Lakshman Narayana et al. An intelligent IoT framework for handling multidimensional data generated by IoT gadgets
Khanna et al. Time varying communication networks: Modelling, reliability evaluation and optimization
Farid Designing multi-agent systems for resilient engineering systems
Liu et al. Distributed service integration for disaster monitoring sensor systems
JP2011257994A (ja) 更新api検出システム、更新api検出装置、更新api検出方法、および更新api検出プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170614

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170710

R150 Certificate of patent or registration of utility model

Ref document number: 6183198

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees