Skip to Content
アーキテクチャMessage Broker (WAMP)

メッセージブローカー(WAMP)

WAMPメッセージブローカーはIronFlockの通信基盤です。すべてのコンポーネント — エッジデバイス、中央サービス、仮想デバイス、AIシステム、Web UI — がブローカーに接続し、それを通じて通信します。

WAMPを選ぶ理由

WAMP(Web Application Messaging Protocol)は2つの通信パターンを1つのプロトコルに統合します:

  • Publish/Subscribe(Pub/Sub) — デバイスがセンサーデータをトピックにパブリッシュし、ダッシュボード、FleetDB Service、アラーム評価エンジンがサブスクライブしてリアルタイムで受信します
  • リモートプロシージャコール(RPC) — AIサービスがエッジデバイス上の関数を呼び出し、バックエンドがOTAアップデートをトリガーし、オペレーターがマシンにコマンドを送信します

このデュアルパターンにより、IronFlockはリアルタイムデータストリーミングとリクエスト-レスポンス操作に別々のシステムを必要としません。1つのプロトコル、1つの接続、両方のパターン。

コンポーネントの接続方法

┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ エッジ │ │ 仮想 │ │ Web UI │ │ デバイス │ │ デバイス │ │ (ブラウザ) │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │ WSS │ WSS │ WSS └────────────────────┼────────────────────┘ ┌───────┴───────┐ │ WAMP Broker │ └───────┬───────┘ ┌────────────────────┼────────────────────┐ │ WSS │ WSS │ WSS ┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐ │ バックエンド │ │ FleetDB │ │ AI │ │ サービス │ │ サービス │ │ サービス │ └──────────────┘ └──────────────┘ └──────────────┘

すべての接続はWSS(WebSocket Secure) — TLS上の暗号化された永続的な双方向接続を使用します。

レルムによるプロジェクト分離

ブローカーはWAMPレルムを使用してプロジェクト間の厳密な分離を強制します:

  • 各プロジェクト-アプリの組み合わせに独自のレルム — 完全に分離されたメッセージング名前空間が割り当てられます
  • あるレルムでパブリッシュされたメッセージは、他のすべてのレルムからは見えません
  • プロジェクトAのデバイスはプロジェクトBのデバイスを見ることも操作することもできません
  • 同じアプリが2つの異なるプロジェクトにインストールされていても、別々のレルムで動作します

認証

ブローカーへのすべての接続には認証が必要です:

コンポーネント認証方式
エッジデバイスWAMP-CRA(チャレンジ-レスポンス)、デバイスごとのシークレット使用
バックエンドサービスWAMP-CRA、システム資格情報使用
Web UIクライアントOIDCベースのセッショントークン
AIサービススコープ付きアクセスのシステム資格情報

認証されていないクライアントはレルムへの参加、トピックのサブスクライブ、プロシージャの呼び出しができません。

リアルタイムデータフロー

センサー値がデバイスからダッシュボードに流れる仕組み:

  1. デバイスアプリがセンサー値を読み取り、プロジェクトレルム内のWAMPトピックにパブリッシュします
  2. WAMPブローカーがそのレルム内のすべてのサブスクライバーにメッセージをルーティングします
  3. FleetDB Serviceがメッセージを受信し、TimescaleDBに書き込み、アラームルールを評価します
  4. Web UIが同じメッセージを受信し、ダッシュボードチャートをリアルタイムで更新します

このフロー全体はサブ秒のレイテンシで発生します — ダッシュボードはデータが到着するのと同じ速さで更新されます。

デバイス制御のためのRPC

ブローカーはエッジデバイスの直接制御も可能にします:

  1. オペレーターがWeb UIで「アプリを再起動」をクリックします
  2. バックエンドがブローカーを通じてデバイスエージェント上のRPCを呼び出します
  3. デバイスエージェントが呼び出しを受信し、コンテナを再起動して結果を返します
  4. Web UIが確認を表示します

同じメカニズムがフィジカルAIを実現します — AIアシスタントがデバイス上の関数を呼び出すとき、それはブローカーを通じたRPCコールです。

スケーラビリティ

WAMPブローカーはプロダクション環境でクラスターとして動作します:

  • 複数のブローカーノードが同時接続を処理します
  • 負荷はノード間で分散されます
  • デバイスは障害時の自動再接続を含む永続的な接続を維持します
  • ブローカーは数千の同時デバイス接続を低レイテンシのメッセージ配信で処理します

オンプレミス展開

オンプレミス展開では、WAMPブローカーは他の中央サービスとともにお客様のインフラストラクチャ上で実行されます。プロトコルと分離保証はまったく同じです — 唯一の違いはネットワークパス(インターネットの代わりにローカル)です。

詳細はオンプレミス展開をご覧ください。

Last updated on