以下、本発明の実施形態を添付図面に基づいて説明する。
図1は本発明が対象にする計算機システムの構成の一例を示すブロック図である。工場などの装置や設備が配置される現場側には、観測の対象物から温度、湿度、回転数、振動数などを観測するセンサデバイス100−1〜100−3が配置される。なお、以下の説明では、センサデバイスの個々を特定しない場合には、「−」以降を省略した符号100を用いる。他の構成要素の符号についても同様である。
中継装置2は、センサデバイス100から受け付けたセンサデータに所定の処理を実施した処理結果(データオブジェクト)をクラウド40に送信する。クラウド40の計算機(またはサーバ)では受信したデータオブジェクトについて高度な分析処理などを実施するサービス300−1〜300−3が提供される。なお、クラウド40は、複数の仮想計算機等を提供する計算機を含むデータセンタなどで構成される。
また、これらのサービスはクラウド40だけで実行されるのではなく、サービスの性質(リアルタイム性能、ユーザビリティ要件など)や環境(混雑度、消費電力の最適化など)に応じて動的に実行する環境がクラウド40または中継装置2によって決定される。
さらに、1つのサービスは複数のソフトウェアコンポーネントから構成されており、各ソフトウェアコンポーネントがクラウド40と中継装置2に分散して配置されることもある。
サービス300の性質と環境に応じて、各サービス300を提供するためのソフトウェアコンポーネントが動的に配置され、最適な構成でサービス300として動的に再構成される。中継装置2が実行するソフトウェアコンポーネントは、中継装置2が具備する処理基盤30の中の分析ロジックや信号処理などのデータ処理を中継管理部34で実行される。
センサデバイス100は、対象物からセンサデータを取得するためのセンサと、センサデータを中継装置2に送信するための通信装置を具備する。
中継装置2は、センサデバイス100から送信されたセンサデータ及び処理中のデータを格納するためのセンサデータテーブルT100と、サービス300および分析ロジックや信号処理など1つまたは複数の内部処理を中継管理部34が実行して、クラウド40で実行されるサービス300が参照可能なデータオブジェクト(データ処理結果)を格納するためのデータオブジェクトテーブル1100を具備する。
センサデータテーブルT100には、センサデバイス100により観測されたデータ1001が格納される。また、データオブジェクトテーブル1100には、クラウド40などで提供されるサービス300が参照するデータオブジェクト1101が格納される。
そして、中継装置2は、センサデータテーブルT100およびデータオブジェクトテーブル1100を管理するための処理基盤30を具備する。この処理基盤30は、センサデータテーブルT100に格納されるデータ1001を参照して、データオブジェクト1101を生成するためのデータ処理を行う中継管理部34と、中継装置2のソフトウェア更新の受付や実施を行うソフトウェア更新部31と、クラウド40などで提供されるサービス300の優先度や、サービス300に関連するデータを提供するセンサデバイス100を管理するサービス管理部32、および、中継装置2の処理資源量を管理する処理資源管理33を具備する。なお、データオブジェクト生成344は、中継管理部34に含まれる。
また、中継装置2は、ソフトウェアの更新を管理する中継装置管理サーバ400に接続される。中継装置管理サーバ400は、OSやファームウェアなどソフトウェアの更新を管理する。中継装置管理サーバ400は、更新が必要なソフトウェアを外部から取得すると、中継装置2へ更新要求を通知し、ソフトウェアのアップデータを配信する。中継装置2は、中継装置管理サーバ400から更新要求を受け付けると、図4に示す処理を実行する。
図2は、中継装置2の構成の一例を示すブロック図である。
中継装置2は、演算処理を行うCPU21と、プログラムやデータを格納するメモリ22と、CPU21に接続されたI/Oインターフェース23と、I/Oインターフェース23に接続されてデータを永続的に保持可能な不揮発性のストレージ26と、I/Oインターフェース23に接続されてセンタ側ネットワーク28との間で通信を行うセンタ側通信装置25と、I/Oインターフェース23に接続されて現場側ネットワーク27との間で通信を行う現場側通信装置24から構成される。
I/Oインターフェース23は、例えば、PCIexpressで構成され、CPU21とI/Oデバイスと間の通信を行う。メモリ22には、OS200がロードされてCPU21によって実行される。
また、メモリ22には、処理基盤30を構成するプログラムと、処理基盤30が使用するテーブル群T10が格納される。なお、テーブル群T10は、ストレージ26に格納されていても良い。テーブル群T10の詳細を図3に示す。
テーブル群T10は、センサデバイス100から送信されて中継装置2が受信したセンサデータ及び処理中のデータを格納するセンサデータテーブルT100と、前記センサデータをサービス300で扱えるように、分析ロジックや信号処理などのデータ処理を施したデータオブジェクトを格納するデータオブジェクトテーブル1100と、中継装置2が収容するサービス300の優先度と、サービス300のために実施する分析ロジックや信号処理などのデータ処理の関係を考慮して決定した各データの優先度を格納するデータ優先度テーブルT500と、さらに、前記サービス300のために実施する分析ロジックや信号処理などのデータ処理の前後関係および接続関係を保持する内部処理管理テーブル(内部処理属性テーブルT200及び内部処理構成テーブルT300)を含んで、メモリ22上に格納される。
さらに、テーブル群T10は、中継装置2がセンサデータに基づくデータオブジェクトを提供するサービス300を管理するサービス管理テーブルT400と、中継装置2が受け付けるソフトウェアの更新要求の緊急度を判定するための緊急度判定テーブルT600と、ソフトウェアの更新処理を実施するための緊急度と処理資源量(計算機資源の割当量)を管理する要求資源テーブルT700と、データ処理の振分を判定するための優先度閾値テーブルT800を含む。なお、内部処理属性テーブルT200〜優先度閾値テーブルT800は、予め設定されたテーブルである。
また、メモリ22には、処理基盤30を構成するプログラム群として、ソフトウェア更新部31と、サービス管理部32と、処理資源管理33と、中継管理部34がロードされる。
ソフトウェア更新部31のプログラムには、中継装置管理サーバ400からソフトウェアの更新要求を受け付ける要求受付311と、受け付けたソフトウェアの更新要求の緊急度を判定する緊急度判定312と、ソフトウェアの更新要求を実行する更新実行管理313が含まれる。
処理資源管理33は、中継装置2の処理基盤30が利用可能な処理資源量(計算機資源)を制御するプログラムである。
サービス管理部32のプログラムには、中継装置2がデータオブジェクトを提供するサービス300の優先度を管理するサービス管理321と、中継装置2が収容するセンサデバイスを管理するセンサデバイス管理322と、前記内部処理管理テーブル(内部処理属性テーブルT200、内部処理構成テーブルT300)を用いて、サービス300のために実施する分析ロジックや信号処理などのデータ処理の前後関係および接続関係を管理する内部処理管理323と、前記内部処理管理テーブルを用いて、各データの優先度をデータ優先度テーブルT500を用いて管理するセンサデータ評価(優先度決定部)324が含まれる。
処理資源管理33は、中継装置2が具備する処理基盤30の処理資源を管理するプログラムである。
中継管理部34のプログラムには、受信したセンサデータについて、必要な分析ロジックや信号処理などのデータ処理を実施してデータオブジェクトを生成し、データオブジェクトテーブル1100に格納する中継処理を制御する中継処理制御341と、中継装置2の中継処理の負荷状況を監視する負荷監視342と、センサデバイス100から送信されるセンサデータを受信してセンサデータテーブルT100に格納するセンサデータ受信343と、データオブジェクトをサービス300に送信するデータオブジェクト送信346と、センサデータの優先度に応じて分析ロジックや信号処理などのデータ処理の実行を即時実施するかバッチ処理でまとめて実施するかを振り分けるデータ処理振分345が含まれる。
なお、中継処理制御341は、センサデータに対して必要なデータ処理を実施してデータオブジェクトを生成(または変換)するデータオブジェクト生成344を含む。また、センサデータ受信343は、データ処理が連鎖する場合には、データ処理が生成した出力データをセンサデータテーブルT100に格納することができる。
CPU21は、処理基盤30を構成するソフトウェア更新部31と、サービス管理部32と、処理資源管理33と、中継管理部34のプログラムをメモリ22にロードして実行する。
CPU21は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、CPU21は、処理資源管理33のプログラムに従って処理することで処理資源管理部として機能する。他のプログラムについても同様である。さらに、CPU21は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
処理基盤30の各機能を実現するプログラム、テーブル等の情報は、ストレージ26や不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
中継装置2の処理基盤30の機能は、ソフトウェア更新部31が中継装置2のソフトウェアの更新を管理し、サービス管理部32がクラウドなどで提供されるサービスを管理し、処理資源管理33が中継装置2の処理基盤30が具備する処理資源を管理し、中継管理部34が中継装置2に収容されるセンサデバイス100から受信したセンサデータに対して所定の処理を実施してサービス300に送信する。
図4は、中継装置2がソフトウェアの更新要求を受信したときに実行される処理の一例を示すシーケンス図である。
まず、中継装置2の要求受付311が中継装置管理サーバ400から中継装置2のソフトウェアの更新要求を受け付ける(SQ01)。要求受付311は、受け付けたソフトウェアの更新要求の緊急度を判定するために、受け付けた要求に関する情報を緊急度判定312に送信する(SQ02)。緊急度判定312は、ソフトウェアの更新要求の緊急度を判定した結果を要求受付311に送信する(SQ03)。
要求受付311は、緊急度の判定結果により示されたソフトウェアの更新処理のために確保する処理資源を処理資源管理33に要求する(SQ04)。処理資源管理33は、要求された処理資源を確保が完了したことを通知する(SQ05)。
要求受付311は、要求した処理資源が確保できたことを受けて、受け付けたソフトウェアの更新処理の実行を更新実行管理313に指示する(SQ06)。処理資源管理33は、要求受付311からの処理資源の要求により、現在中継処理に割り当てている処理資源量に変化があった場合、変更後に中継処理に割り当てられる処理資源量を中継処理制御341に通知する(SQ07)。
中継処理制御341は、現在収容しているセンサデバイス100およびサービス300と、データオブジェクトを生成するために構成されている分析ロジックや信号処理などデータ処理で扱われるデータの優先度の判定をセンサデータ評価324に依頼する(SQ08)。
センサデータ評価324は、現在収容しているセンサデバイス100およびサービス300と、データオブジェクトを生成するために構成されている分析ロジックや信号処理などデータ処理の構成状況を考慮して、各データ(センサデータ及び処理中のデータ)の処理の優先度を判定する(SQ09)。センサデータ評価324は、判定された優先度を中継処理制御341に応答する。
中継処理制御341は、現在実行している中継処理により発生している処理負荷を負荷監視342に問い合わせる(SQ10)。負荷監視342は、現在実行している中継処理により発生している処理負荷を中継処理制御341に応答する(SQ11)。中継処理制御341は、各データの優先度に応じて、適用する処理を即時(リアルタイム)処理とバッチ処理に振り分けるデータ処理振分345の実行開始を指示する(SQ12)。
上記の処理によって、計算機資源の割り当てと中継処理制御341の処理内容が変更されて、更新実行管理313によってソフトウェアの更新が実行され、中継処理制御341によってデータ処理が継続される。
図5は、センサデバイス100から受信される、センサによって観測されたデータと、中継装置2の内部で処理を行うデータを格納するセンサデータテーブルT100の構成例を示す。
センサデータテーブルT100は、格納するセンサデータまたは処理中のデータ(以下、データとする)の受信の順序を示すシリアル番号T110と、格納するデータの送信元のセンサデバイス100を識別するデバイスID T120は、このセンサデバイス100を製造したベンダを識別するベンダID T121と、該当ベンダの製品を識別するプロダクトID T122と、該当ベンダが付与した該当製品の製造番号を示す製造番号T123で構成され、さらにセンサデバイス100が送信するデータの形式を示すデータ型T130と、センサデバイス100が送信したデータが示す値T140と、各データを中継装置2内で一意に特定するためのデータID T150と、各データの処理状況として、「未処理」、「バッチ」、「処理済」の3つの値を格納する処理状況T160、から構成される。
なお、中継装置2の内部で処理を行うデータ(例えば、前処理PRE100(後述)の出力データ)については、デバイスID T120はブランクとする。また、デバイスID T120は、センサデバイス100毎に予め中継装置2が設定しても良いし、センサデバイス100から読み込むようにしても良い。
図5は、2つのベンダが製造した4種類の製品であるセンサデバイス100から受信したデータを格納した例を示している。
図6は、中継処理制御341がデータを用いてサービス300へ提供するデータオブジェクトを生成するために、中継装置2の内部処理として実施する分析ロジックや信号処理などのデータ処理の属性を格納する内部処理属性テーブルT200の構成例を示す。
内部処理属性テーブルT200は、各内部処理を識別するために付与されたシリアル番号T210と、処理の種別を示す接頭語、”PRE”(前処理)、”INTM”(中間処理)、または”POST”(後処理)、および、各接頭語を含む処理を一意に識別可能な数字から構成されて、中継装置2内のデータ処理を一意に識別可能な処理ID T220と、各データ処理の入力データ数を示す入力数T230と、各データ処理の出力データ数を示す出力数T240、から構成される。
図7は、中継処理制御341がデータを用いてサービス300に提供するデータオブジェクトを生成するために、中継装置2の内部処理として実施する分析ロジックや信号処理などのデータ処理に対する入力データおよび出力データの関係を示す内部処理構成テーブルT300の構成例を示す。
内部処理構成テーブルT300は、各内部処理を識別するために付与されたシリアル番号T310と、処理の種別を示す接頭語、”PRE”(前処理)、”INTM”(中間処理)、または”POST”(後処理)、および、各接頭語を含む処理を一意に識別可能な数字から構成されて、中継装置2内のデータ処理を一意に識別可能な処理ID T320と、各データ処理の入力データを示す入力データID T330と、各データ処理の出力データを示す出力データID T340、から構成される。
前記出力データID T340に複数のデータIDが格納される場合は、該当データ処理の結果の複製を生成して、各出力データのデータIDを付与する。
図8は、中継装置2が収容するサービス300を管理するサービス管理テーブルT400の構成例を示す。サービス管理テーブルT400は、各サービス300に付与されたシリアル番号T410と、サービス300を一意に識別可能なサービスID T420と、該当サービス300の優先度を格納する優先度T430と、該当サービス300への入力となるデータを示す入力データID T440から構成される。前記優先度T430は、1が最も高い優先度を示して、10が最も低い優先度を示す。
図9は、中継装置2内でデータ処理される各データの優先度を格納するデータ優先度テーブルT500の構成例を示す。
データ優先度テーブルT500は、各データに付与されるシリアル番号T510と、各データを中継装置2内で一意に識別するデータID T520と、該当データの優先度を格納する優先度T530、から構成される。前記優先度T530は、「1」が最も高い優先度を示して、「10」が最も低い優先度を示す。
図10は、中継装置2が受け付けるソフトウェアの更新処理の緊急度を判定するための緊急度判定テーブルT600の構成例を示す。
緊急度判定テーブルT600は、各更新内容に付与されるシリアル番号T610と、ソフトウェアの更新処理の内容を示すソフトウェア更新内容T620と、該当ソフトウェア更新処理の緊急度を格納する緊急度T630、から構成される。前記緊急度T630は、1が最も高い緊急度を示して、10が最も低い緊急度を示す。
図11は、中継装置2が受け付けるソフトウェアの更新処理の緊急度に応じて、該当システム更新処理の実施に必要な処理資源量を管理する要求資源テーブルT700の構成例を示す。
要求資源テーブルT700は、各緊急度に割り当てられたシリアル番号T710と、各緊急度を示す緊急度T720と、該当緊急度のときに対応するソフトウェアの更新処理のために割り当てを要求する処理資源の割合(%)を示す要求処理資源T730、から構成される。
要求処理資源T730には、CPU21の使用率やメモリ22の使用率等、処理に必要な計算機資源の割合が設定される。
図12は、中継装置2がデータ処理の振分を判定するときに参照する閾値を格納する中継データ処理振分の優先度閾値テーブルT800の構成例を示す。
優先度閾値テーブルT800は、各エントリに割り当てられたシリアル番号T810と、中継処理のために利用可能な処理資源量を示す利用可能処理資源T820と、中継処理負荷に対する優先度の閾値T830、から構成される。
前記中継処理負荷に対する優先度の閾値T830は、中継処理が低負荷時の閾値を格納する低T831と、中継処理が中負荷時の閾値を格納する中T832と、中継処理が高負荷時の閾値を格納する高T833、から構成される。
なお、低負荷とは、例えば、CPU21の使用率が30%未満の状態を示し、中負荷は、CPU21の使用率が30%以上80%未満の状態を示し、高負荷は、CPU21の使用率が80%以上の状態を示す。また、負荷はCPU21の使用率に限定されるものではなく、メモリ22の使用率やI/Oの頻度やこれらの組合せを用いるようにしても良い。 図13は、各種処理を起動するためのタイマを開始するフローチャートを示す。まず、中継管理部34は、データ処理振分用の短周期タイマを開始するS301。次に、バッチ処理用の長周期タイマを開始するS302。そして、本処理フローを終了する。
なお、短周期タイマは、例えば、100msに設定され、長周期タイマは、例えば、10秒に設定される。これらの周期は、センサデバイス100が測定するセンサデータやサービス300の内容に応じて適宜設定することができる。
図14は、中継装置2が内部処理として実施するデータ処理の振分処理の一例を示すフローチャートS100を示す。本振分処理のフローチャートS100は、事前に設定された短周期タイマが所定の周期となる度にデータ処理振分345が呼び出されて実行される。
まず、データ処理振分345は、現在、中継処理のために利用可能な処理資源量(または比率)を処理資源管理33から取得する(S101)。そして、データ処理振分345は、現時点での中継処理を実行することにより生じている負荷情報を負荷監視342から取得する(S102)。
そして、データ処理振分345は、前記利用可能な処理資源量と前記負荷情報を用いて、優先度閾値テーブルT800を参照して優先度の閾値T830をデータ処理の振分閾値として取得する(S103)。データ処理振分345は、負荷情報が低負荷であれば優先度閾値テーブルT800の低T831のカラムから、利用可能処理資源量T820に対応する閾値を取得する。中負荷、高負荷の場合も同様である。
そして、データ処理振分345は、中継装置2のセンサデータテーブルT100のすべてのデータに対してステップS109までの処理を繰り返す(S104)。まず、データ処理振分345は、センサデータテーブルT100を読み込んで、データの処理状況を示すフィールド(処理状況T160)が「バッチ」または「処理済」か否かを判定する(S105)。
データ処理振分345は、該当フィールド(処理状況T160)の値が「バッチ」または「処理済」であれば該当するデータの処理は終了して、ステップS109へ進んで次のデータの処理に移る。
一方、データ処理振分345は、データの処理状況を示すフィールド(処理状況T160)が「未処理」の場合、ステップS106に進んで各データの優先度が振分閾値以下であるか否を判定する(S106)。データ処理振分345は、取得したデータの識別子でデータ優先度テーブルT500を検索し、当該データの優先度を取得する。そして、データ処理振分345は、データの優先度がステップS103で取得した優先度の閾値T830(振分閾値)以下であるか否かを判定する。
データ処理振分345は、データの優先度が振分閾値以下であれば、ステップS107へ進み、該当データを入力データとするデータ処理を実施する。このデータ処理はリアルタイム処理である。データ処理を実施した後には、データ処理振分345が、該当データの処理状況を示すセンサデータテーブルT100のフィールド(処理状況T160)を「処理済」として更新する。
一方、データの優先度が振分閾値を越えていれば、データ処理振分345は、ステップS108へ進んで、該当データを処理キュー(図示省略)に格納してバッチ処理まで待機するために、該当データの処理状況を示すフィールド(処理状況T160)を「バッチ」として更新する。データ処理振分345は、上記の処理をセンサデータテーブルT100の全てのデータに対して繰り返して実行してから終了する(S109)。
上記処理によって、優先度が振分閾値以下の優先度の高いデータは、そのままデータ処理が実行されて、データオブジェクトが生成される。一方、優先度が振分閾値を超える優先度の低いデータは、処理状況T160が「バッチ」に更新されて、データ処理の実行が遅延される。
図15は、バッチ処理を実施するフローチャートS200を示す。本バッチ処理のフローチャートは、前記振分処理よりも長い時間間隔で実施するため、事前に設定された長周期タイマが所定の周期となったときに呼び出されて実行される。
ただし、バッチ処理の優先度は、振分処理よりも低く設定されるので、バッチ処理の実行中に前記振分処理の用の短周期タイマが所定の周期になると、当該バッチ処理は中断されて、前記振分処理の実行が優先的に行われる。これにより、データのリアルタイム処理とバッチ処理が重複して、中継装置2の負荷が過大になるのを抑制することができる。
本バッチ処理のフローチャートは、センサデータテーブルT100の全てのデータに対してステップS204までを繰り返して処理が実行される(S201)。まず、データ処理振分345は、各データの処理状況を示すフィールド(処理状況T160)が「バッチ」を示すものがあるか否かを判定する(S202)。
判定結果が「バッチ」であれば、データ処理振分345は、処理状況を示すフィールド(処理状況T160)が、「バッチ」であれば、該当データを入力データとするデータ処理を実施して、該当するデータの処理状況を示すフィールドを「処理済」に更新する(S203)。
一方、判定結果が「未処理」または「処理済」であれば、データ処理振分345は、該当データの処理は終了して、次のデータの処理に移る。上記の処理を全てのデータに対して繰り返して実行(S203)した後に、当該バッチ処理を終了する(S204)。
上記処理によって、センサデータテーブルT100の処理状況T160が「バッチ」に設定されたデータは、長周期タイマが所定の周期になると、一括して所定のデータ処理が実施されてデータオブジェクトが生成される。ソフトウェア更新部31がソフトウェアの更新中にデータ処理が保留されていたデータは、長周期タイマのカウントアップの度に一括してデータ処理が実行される。
このように、ソフトウェア更新部31でソフトウェアの更新が実行されている期間は、データ処理振分345がデータの優先度に基づいてリアルタイム処理とバッチ処理のいずれかを選択し、データ処理に割り当てられた計算機資源が制限された環境でセンサデータの中継を継続することができる。
図16は、センサデバイスとサービスを接続する内部処理の第1の構成を示すブロック図である。図示の例は、中継装置2が収容するセンサデバイスD100〜D212と、クラウド40で提供される可視化サービスSV100と、中継装置2の内部で実施されるデータ処理(PRE100、PRE101、およびPOST100)との関係を示す。
これらの関係は、図7の内部処理構成テーブルT300と図8のサービス管理テーブルT400によって決定される。
データ処理としては、センサデバイスD100〜D110のセンサデータを受信して所定の前処理を実施する前処理PRE100と、センサデバイスD200〜D212のセンサデータを受信して所定の前処理を実施する前処理PRE101と、前処理PRE100の出力データと、前処理PRE101の出力データを受信して所定の後処理を実施する後処理POST100が含まれる。
そして、後処理POST100が出力するデータオブジェクトが、可視化サービスSV100によって利用される。本実施例では、収容するサービスやセンサデバイスに応じて、このような中継装置2の内部で実施されるデータ処理の内容や構成が、動的に変化することを想定する。
図17は、センサデバイスとサービスを接続する内部処理の第2の構成を示すブロック図である。図示の例では、図16に示したセンサデバイスと、サービス及びデータ処理の構成に対して、新たにセンサデバイスD300〜D302と、サービスSV200、SV300、データ処理、PRE102、INTM100、POST101、POST102が動的に追加された構成の例を示している。
新たに追加された前処理PRE102は、センサデバイスD300〜D302のセンサデータを受信して所定の前処理を実施する。新たに追加された中間処理INTM100は、前処理PRE101と前処理PRE102の出力を受信して所定の中間処理を実施する。
新たに追加された後処理POST101は、前処理PRE100の出力と、中間処理INTM100の出力を受信して所定の後処理を実施して、省エネサービスSV200にデータオブジェクトを提供する。
新たに追加された後処理POST102は、中間処理INTM100の出力を受信して所定の後処理を実施して、予兆サービスSV300にデータオブジェクトを提供する。
このように、中継管理部34とサービス管理部32は、収容するサービスやセンサデバイスに応じて、内部処理構成テーブルT300やサービス管理テーブルT400を更新することで、中継装置2の内部で実施されるデータ処理の内容や構成を、動的に変更することができる。
図18は、優先度を継承して内部処理の優先度を決定する内部処理の第3の構成を示すブロック図である。図示の例では、図16に示したセンサデバイス、サービス、データ処理の構成のときに、可視化サービスSV100の優先度が「3」を中継装置2内のデータ処理に引き継ぐ。
まず、サービス管理部32のセンサデータ評価324は、サービス管理テーブルT400を参照して、サービスID T410=SV100の優先度T430=3と入力データID T440=30001を取得する。
次に、センサデータ評価324は、内部処理構成テーブルT300を参照して、出力データID T340に入力データID T440の値を含むエントリを検索して、該当する入力データID T330を特定する。
そして、センサデータ評価324は、特定した入力データID T330の値で、データ優先度テーブルT500のデータID T520を検索し、該当するエントリの優先度T530に可視化サービスSV100の優先度T430=「3」を設定する。なお、処理ID T320が、前処理になるまで、後処理から中間処理へ、出力データID T340から入力データID T330を辿ることで、各処理の優先度を設定することができる。
上記処理により、後処理POST100が引き継ぎ優先度=「3」と評価され、次に、前処理PRE100、PRE101が、前記POST100の優先度=「3」を引き継ぎ、前処理PRE100、PRE101の優先度=「3」と評価され、一連の処理にかかわるデータの優先度が「3」と評価される。
このように、センサデータ評価324は、中継装置2の内部のデータ処理の連携関係(処理状況)に応じて優先度を引き継ぐことができる。
図19は、サービスの優先度を継承して内部処理の優先度を決定する内部処理の第4の構成を示すブロック図である。図17に示したサービスとデータ処理及びセンサデバイスの構成で、図18と同様に、サービスの優先度を引き継ぐ例を示す。
図示の例では、内部処理の同一の処理結果が複数のサービスまたはデータ処理の入力として設定されるときの、優先度の評価方法の例を示している。この例では、複数のサービスまたはデータ処理で、データ処理の結果が参照されている場合は、参照されているサービスまたはデータ処理の高いほうの優先度を引き継ぐ例を示す。
例えば、前処理PRE100は、後処理POST100と、後処理POST101に、データ処理結果が参照されている。そのため、後処理POST100と後処理POST101の優先度は「3」と「5」なので、優先度の高い「3」を引き継ぎ、前処理PRE100の優先度は「3」と評価されて、前処理PRE100の入力となっているデータの優先度が「3」と評価される。
以上のように、センサデータ評価324は、中継装置2の内部のデータ処理の連携関係(処理状況)に応じて優先度を変更することができる。これにより、ひとつのサービスに関連するデータ処理の入力データと出力データの優先度を、サービスを起点として優先度を引き継ぐことにより、リアルタイム処理とバッチ処理に振り分けるデータの優先度をサービス単位で統一することができる。また、ひとつのデータが複数のサービスまたはデータ処理で利用される場合には、最も高い優先度を引き継ぐことで、データ処理が遅延するのを抑制することができる。
図20は、処理結果の参照数で内部処理の優先度を決定する内部処理の第5の構成を示すブロック図である。図17に示したサービスとデータ処理及びセンサデバイスの構成のときに、優先度を引き継ぐのではなくて、参照数の和を引き継ぐことで、サービス管理部32が該当するデータ処理およびデータの優先度を評価する例を示している。なお、この処理はサービス管理部32で行うことができる。
ここでは、便宜的に出力データの参照数から優先度を導出する関数fを、f(参照数)=11−(参照数)とする。ただし、これは参照数が最大10を想定した例である。ここでは、参照数が多いほうが、関連するデータ処理およびデータの重要性が高いと判断する。
前処理PRE100は、後処理POST100と後処理POST101に処理結果が参照されているため、参照数は2となる。そのため、f(2)=11−2=9となり、優先度は「9」と評価される。
一方、前処理PRE101は、後処理POST100と中間処理INTM100に処理結果が参照されているため、後処理POST100の参照数は「1」、中間処理INTM100の参照数は「2」なので、参照数の和は「3」となる。したがって、前処理PRE101の参照数は「3」となる。そのため、前処理PRE101の優先度はf(3)=11−3=8となり、優先度は「8」と評価される。
以上のように、センサデータ評価324は、リアルタイム処理とバッチ処理に振り分けるデータの優先度を、データ処理の出力を参照するサービスやデータ処理の数等の処理状況に応じて変更することで、参照数の多い出力の遅延を抑制することができる。
<まとめ>
本発明は、工場などの現場設備にセンサデバイス100を取り付け、クラウド40やエッジまたはフォグにもIoT(Internet of Things)プラットフォームを用いて提供するサービスを構成する各種機能が動的に配置されて、各機能が自律分散的に連携して、動的に実行するソフトウェア構成が変化する環境に適用することができる。
上述のように中継装置2がソフトウェアの更新要求を受信すると、更新の緊急度に応じて更新処理に割り当てる計算機資源を制御することで、中継装置2の運転にかかわるソフトウェアの更新処理を優先的に実施することができる。そして、クラウド40で提供されるサービスの優先度に応じて、優先度の高いサービスが必要とするデータを選択して即時にデータ処理を行い、それ以外の優先度の低いサービスにかかわるデータ処理を所定時間後にバッチ処理することにより、優先度の高いサービスの提供も継続して、計算機システム全体として重要な処理を遅延させることなく高い可用性を提供することが可能となる。
また、中継装置2は、更新するソフトウェアの種類(または内容)に応じて緊急度を変更し、緊急度に応じて計算機資源を更新処理に割り当てるようにしたので、不急のソフトウェアの更新には計算機資源の割当量を抑制することで、データ処理の遅延を抑制して、時間をかけてソフトウェアの更新を実施する。一方、緊急度の高いソフトウェア(例えば、セキュリティパッチ)の更新には、計算機資源の割当量を増大することで、迅速にソフトウェアの更新を実施し、優先度が閾値以下のデータについてはデータ処理の遅延を許容する。
このように、本発明の中継装置2では、更新するソフトウェアの緊急度に応じて、リアルタイム処理とバッチ処理に振り分けるデータの比率を動的に変更することで、センサデータの中継処理と中継装置2のソフトウェアのメンテナンスを両立させることが可能となる。
なお、上記実施例では、サービスに設定された優先度や、データ処理の結果の参照数に応じて中継装置2で処理するデータの優先度を変更する例を示したが、中継装置2のデータオブジェクトを参照するサービスの稼働状況に応じて優先度を変更しても良い。例えば、サービス管理テーブルT400に稼働状況を示すフィールドを追加して、試験中、起動中、停止中、運転中、保守中等の各状況に対して優先度を変更する値を設定しておくことができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。