Skip to Content
架构Message Broker (WAMP)

消息代理(WAMP)

WAMP消息代理是IronFlock的通信骨干。每个组件 — 边缘设备、中央服务、虚拟设备、AI系统和Web UI — 都连接到代理并通过它进行通信。

为什么选择WAMP

WAMP(Web Application Messaging Protocol)将两种通信模式统一在一个协议中:

  • 发布/订阅(Pub/Sub) — 设备将传感器数据发布到主题;仪表板、FleetDB服务和警报评估器订阅并实时接收数据
  • 远程过程调用(RPC) — AI服务调用边缘设备上的函数;后端触发OTA更新;操作员向机器发送命令

这种双模式意味着IronFlock不需要为实时数据流和请求-响应操作使用不同的系统。一个协议,一个连接,两种模式。

组件如何连接

┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 边缘 │ │ 虚拟 │ │ Web UI │ │ 设备 │ │ 设备 │ │ (浏览器) │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │ WSS │ WSS │ WSS └────────────────────┼────────────────────┘ ┌───────┴───────┐ │ WAMP Broker │ └───────┬───────┘ ┌────────────────────┼────────────────────┐ │ WSS │ WSS │ WSS ┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐ │ 后端 │ │ FleetDB │ │ AI │ │ 服务 │ │ 服务 │ │ 服务 │ └──────────────┘ └──────────────┘ └──────────────┘

所有连接使用WSS(WebSocket Secure) — 基于TLS的加密、持久、双向连接。

通过Realm实现项目隔离

代理使用WAMP Realm在项目之间强制执行严格隔离:

  • 每个项目-应用组合获得自己的Realm — 一个完全隔离的消息命名空间
  • 在一个Realm中发布的消息对所有其他Realm不可见
  • 项目A中的设备无法看到或与项目B中的设备交互
  • 即使相同的应用安装在两个不同的项目中,也在不同的Realm中运行

认证

与代理的每个连接都需要认证:

组件认证方式
边缘设备WAMP-CRA(质询-响应),使用每设备密钥
后端服务WAMP-CRA,使用系统凭据
Web UI客户端基于OIDC的会话令牌
AI服务具有范围限制的系统凭据

未授权的客户端无法加入Realm、订阅主题或调用过程。

实时数据流

传感器读数从设备到仪表板的流动过程:

  1. 设备应用读取传感器值并将其发布到项目Realm中的WAMP主题
  2. WAMP代理将消息路由到该Realm中的所有订阅者
  3. FleetDB服务接收消息,将其写入TimescaleDB,并评估警报规则
  4. Web UI接收同一消息并实时更新仪表板图表

整个流程以亚秒级延迟发生 — 仪表板随数据到达的速度实时更新。

用于设备控制的RPC

代理还支持对边缘设备的直接控制:

  1. 操作员在Web UI中点击”重启应用”
  2. 后端通过代理在设备代理上调用RPC
  3. 设备代理接收调用,重启容器并返回结果
  4. Web UI显示确认信息

相同的机制驱动物理AI — 当AI助手在设备上调用函数时,它就是通过代理的RPC调用。

可扩展性

WAMP代理在生产部署中作为集群运行:

  • 多个代理节点处理并发连接
  • 负载在节点间分配
  • 设备维持持久连接,故障时自动重连
  • 代理以低延迟消息传递处理数千个并发设备连接

本地部署

在本地部署中,WAMP代理与其他中央服务一起运行在您的基础设施上。协议和隔离保证完全相同 — 唯一的区别是网络路径(本地而非互联网)。

详见本地部署

Last updated on