1. システム デザイン

1.1. コンポーネントの概要

1.1.1. システム アーキテクチャー

FogFlow フレームワークは、クラウド ノード、エッジ ノード、IoT デバイスを含む、地理的に分散した階層型の異種 ICT インフラストラクチャで動作します。次の図は、FogFlow のシステム アーキテクチャと、3つの論理レイヤーにわたるその主要コンポーネントを示しています。

_images/architecture.png

1.1.2. 3つのレイヤー

論理的には、FogFlow は次の3つのレイヤーで構成されています:

  • service management (サービス管理): サービス要件を具体的な実行プランに変換し、生成された実行プランをクラウドとエッジにデプロイします。
  • context management (コンテキスト管理): すべてのコンテキスト情報を管理し、柔軟なクエリおよびサブスクライブ インターフェイスを介してそれらを検出およびアクセスできるようにします。
  • data processing (データ処理): データ処理タスクを起動し、コンテキスト管理レイヤーによって提供される pub/sub インターフェイスを介してタスク間のデータ フローを確立します。

1.1.3. システム コンポーネント

クラウドにデプロイされる一元化されたサービス コンポーネント

  • Task Designer (タスク デザイナ): サービス プロバイダーがタスクとサービス トポロジーを指定、登録、および管理するための Web ベースのインターフェイスを提供します。
  • Topology Master (トポロジー マスター): いつ、どのタスクをインスタンス化する必要があるかを把握し、それらを動的に構成し、クラウドとエッジのどこにデプロイするかを決定します。
  • IoT Discovery: ID、エンティティ タイプ、属性リスト、メタデータなど、レジストレーションされているすべてのコンテキスト可用性情報を管理します。他のコンポーネントが NGSI9 を介して関心のあるコンテキスト可用性情報をクエリおよびサブスクライブできるようにします。

クラウドとエッジの両方にデプロイされる分散コンポーネント

  • Worker (ワーカー): トポロジー マスターからの割り当てに従って、各ワーカーはローカル ホストの Docker コンテナーでスケジュールされたタスク インスタンスを起動します。入力と出力を構成し、タスクの優先度に基づいてすべてのタスク インスタンスをローカルで管理します。
  • IoT Broker: 各ブローカーは、近くの IoT デバイスによって公開されたコンテキスト エンティティの一部を管理し、IoT デバイスが必要なエンティティをクエリしてサブスクライブするためのすべてのコンテキスト エンティティの単一のビューも提供します。

FogFlow で使用される外部サービスコンポーネント

  • Dock Registry: 開発者が提供するすべての Docker イメージを管理。
  • RabbitMQ: トポロジー マスターとワーカー間の内部通信。
  • PostgreSQL: レジストレーションされたコンテキストの可用性情報を保存するためのバックエンド データベース