Skip to Content
架构语义架构

语义架构

本页描述IronFlock的数据模型:核心资产及其相互关系。架构概述介绍了系统的物理层(边缘、云、消息代理),而本页重点关注逻辑结构 — 项目、设备、应用和数据之间的关系。

实体概览

账户 ├─ 应用 │ └─ 发布 └─ 项目 ├─ 设备 ────────────┐ │ └─ 应用边缘组件 ├─ 组 ──────────────┘ ├─ 发布安装 ├─ Fleet数据库 │ └─ 数据表 ├─ 仪表盘 └─ 告警

核心资产

账户

账户是顶层身份 — 在IronFlock中登录的个人或组织。账户拥有项目应用。应用和项目都是账户的直接子级,但彼此独立存在。

应用

应用是可部署的软件包。应用属于账户而非项目 — 同一个应用可以安装到多个不同的项目中。应用本身不会运行;它作为目录条目,其发布可以安装到设备上。

发布

发布是应用的不可变版本化构建。只有READY状态的发布才能安装到设备上。发布是不可变的 — 要更改应用的行为,需要发布新版本。

项目

项目是主要的隔离边界。项目内的所有内容 — 设备、组、安装、数据、仪表盘、告警 — 对其他项目不可见。每个项目在消息代理上有自己的WAMP域、专用的Fleet数据库,以及自己的设备、组、安装、仪表盘和告警。

设备

设备是运行IronFlock代理的物理或虚拟Linux机器。每个设备恰好属于一个项目。设备托管已安装发布的边缘组件 — 在硬件上本地运行的容器。一个设备可以同时托管多个发布的边缘组件,并且可以是多个组的成员。

是项目内设备的逻辑集合,用于批量操作。设备可以属于多个组(多对多)。当发布安装到组上时,每个成员设备会收到一个安装,可以继承组的配置或在本地覆盖。

发布安装

发布安装是特定设备上特定发布的运行实例。它是项目内设备和发布之间的连接。通过组安装时,每个设备的安装可以继承或覆盖组的配置,提供舰队级默认值和设备级例外。

组安装 ├─ 设备A → 从组继承 ├─ 设备B → 从组继承 └─ 设备C → 使用自定义配置覆盖

Fleet数据库

每个项目有一个专用的Fleet数据库 — 带有TimescaleDB扩展的PostgreSQL数据库,用于时序数据。设备上的边缘组件通过WAMP发布遥测数据,FleetDB服务将其写入项目数据库,数据可由仪表盘、AI查询服务和外部工具查询。

仪表盘

仪表盘可视化项目Fleet数据库中的数据。仪表盘属于项目,可以将多个应用和设备的数据整合到单一视图中。

告警

告警是项目内基于阈值的警报规则。告警监控Fleet数据库中的数据,在满足条件时触发通知。

实体关系图

┌──────────┐ │ 账户 │ └──┬───┬───┘ │ │ │ │ 拥有 1:N │ ▼ │ ┌─────────────────────┐ │ │ 应用 │ │ └────────┬────────────┘ │ │ 包含 1:N │ ▼ │ ┌─────────────────────┐ │ │ 发布 │ │ └─────────────────────┘ │ ▲ │ │ 引用 │ 拥有 1:N │ ▼ │ ┌──────────────────────────────────────────────────────────────────┐ │ 项目 │ │ │ │ ┌──────────┐ N:N ┌──────────┐ │ │ │ 设备 │◆──────────◆│ 组 │ │ │ └────┬─────┘ └────┬─────┘ │ │ │ 托管 │ 安装到 │ │ │ 边缘组件 │ 成员设备 │ │ │ 1:N │ │ │ │ ▼ │ │ │ ┌──────────────┐ │ │ └──────────────►│ 发布安装 │ (继承或 │ │ │ │ 覆盖组配置) │ │ └──────────────┘ │ │ │ │ ┌───────────────────────┐ │ │ │ Fleet数据库 │ │ │ │ (TimescaleDB) │ │ │ │ ┌─────┐ ┌─────┐ │ │ │ │ │ 表 │ │ 表 │ ... │ │ │ │ └─────┘ └─────┘ │ │ │ └───────────────────────┘ │ │ ▲ │ │ │ 被查询 │ │ ┌───────────┴───────────┐ │ │ │ 仪表盘 │ │ │ └───────────────────────┘ │ │ │ │ ┌───────────────────────┐ │ │ │ 告警 │ │ │ │ (监控FleetDB) │ │ │ └───────────────────────┘ │ │ │ └──────────────────────────────────────────────────────────────────┘

关系概要

关系类型说明
账户 → 项目1:N一个账户拥有多个项目
账户 → 应用1:N一个账户拥有多个应用(独立于项目)
应用 → 发布1:N一个应用包含多个版本化发布
项目 → 设备1:N每个设备恰好属于一个项目
项目 → 组1:N组归属于一个项目
设备 ↔ 组N:N设备可以属于多个组;组可以包含多个设备
项目 → Fleet数据库1:1每个项目有自己的专用数据库
项目 → 仪表盘1:N仪表盘属于项目并查询其Fleet数据库
项目 → 告警1:N告警归属于项目并监控其Fleet数据库
设备 → 发布安装1:N设备托管多个发布安装的边缘组件
发布安装 → 发布N:1每个安装引用特定的发布版本
Last updated on