物联网平台架构设计文档
参考:阿里云物联网平台架构设计理念编写,适用于通用物联网场景。
1. 整体架构
物联网平台采用四层分层架构:设备层 → 接入层 → 平台层 → 应用层,实现设备接入、数据采集、指令下发、模型训练与部署等全链路能力。
┌─────────────────────────────────────────────────────────────┐
│ 应用层 (Application) │
│ 移动端APP │ Web管理后台 │ 第三方系统集成 │ 大屏展示 │
└───────────────────────────┬─────────────────────────────────┘
│ HTTP/HTTPS
┌───────────────────────────▼─────────────────────────────────┐
│ 平台层 (Platform) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ 设备管理 │ │ 数据采集 │ │ 规则引擎 │ │ AI模型服务 │ │
│ │ 生命周期 │ │ 协议解析 │ │ 消息转发 │ │ 训练/推理/部署│ │
│ └──────────┘ └──────────┘ └──────────┘ └───────────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ OTA升级 │ │ 时间同步 │ │ 数据打标 │ │ 产品管理 │ │
│ └──────────┘ └──────────┘ └──────────┘ └───────────────┘ │
└───────────────────────────┬─────────────────────────────────┘
│ MQTT/CoAP/HTTP
┌───────────────────────────▼─────────────────────────────────┐
│ 接入层 (Access) │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ MQTT Broker (EMQX Cluster) │ │
│ │ 设备认证 │ Topic管理 │ 消息路由 │ │
│ └──────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 负载均衡 │ TLS/SSL │ 设备证书管理 │ │
│ └──────────────────────────────────────────────────────┘ │
└───────────────────────────┬─────────────────────────────────┘
│ MQTT/CoAP/HTTP/BLE
┌───────────────────────────▼─────────────────────────────────┐
│ 设备层 (Device) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ 传感器 │ │ 执行器 │ │ 智能网关 │ │ 其他品类设备 │ │
│ │ 设备 │ │ 设备 │ │ │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ └───────────────┘ │
└─────────────────────────────────────────────────────────────┘
2. 设备端上报数据
2.1 数据上报流程
设备端 ──MQTT Publish──→ MQTT Broker ──消息路由──→ 后端服务 ──→ 数据存储
│
├──→ 规则引擎 ──→ 实时告警判定
├──→ 数据转发 ──→ 时序数据库
└──→ 消息队列 ──→ 异步处理
2.2 Topic 设计
Topic 命名遵循业界通用规范(参考阿里云 IoT、AWS IoT Core),采用 /{scope}/{productKey}/{deviceName}/{thing}/{action} 层级结构。
| Topic | 方向 | 说明 |
|---|
/sys/{productKey}/{deviceName}/thing/event/property/post | 上行 | 设备属性上报 |
/sys/{productKey}/{deviceName}/thing/event/{eventId}/post | 上行 | 设备事件上报(如告警、故障) |
/sys/{productKey}/{deviceName}/thing/lifecycle/post | 上行 | 设备生命周期状态(在线/离线) |
/ota/device/upgrade/{productKey}/{deviceName} | 上行 | OTA 升级状态上报 |
/sys/{productKey}/{deviceName}/thing/deviceinfo/update | 上行 | 设备信息更新 |
/sys/{productKey}/{deviceName}/thing/config/ack | 上行 | 远程配置确认 |
/sys/{productKey}/{deviceName}/thing/log/post | 上行 | 设备日志上报 |
/sys/{productKey}/{deviceName}/thing/time/sync | 上行 | 时间同步请求 |
2.3 数据格式
JSON 格式
{
"deviceId": "DEV2026070001",
"temperature": 25.3,
"humidity": 60.5,
"sensor1": 0.8,
"sensor2": 12.3,
"sensor3": 45.6,
"status": 0,
"timestamp": "2026-07-10T14:30:25+08:00"
}
管道符分隔格式(适用于资源受限设备)
Model|DeviceId|Field1|Field2|Field3|...|FieldN|Status|Timestamp
2.4 上报策略
| 策略 | 说明 |
|---|
| 周期上报 | 设备按固定周期采集并上报数据 |
| 变化上报 | 数据变化超过阈值时触发上报,减少无效数据 |
| 心跳上报 | 设备定期发送心跳包,维持在线状态(续约机制) |
| 离线缓存 | 网络中断时本地缓存数据,恢复后批量补传 |
3. 云端下发指令
3.1 指令下发流程
管理端/APP ──→ 后端服务 ──→ MQTT Publish ──→ MQTT Broker ──→ 设备端
│
┌─────────┴─────────┐
▼ ▼
设备在线: 实时下发 设备离线: 暂存为设备影子
(/sys/.../thing/service/*) │
设备上线后自动推送
3.2 指令类型
| 指令类型 | Topic | 说明 |
|---|
| OTA 升级 | /sys/{productKey}/{deviceName}/thing/service/ota | 固件升级指令(含下载 URL + CRC32) |
| 属性设置 | /sys/{productKey}/{deviceName}/thing/service/property/set | 设置设备属性(阈值、运行参数等) |
| 服务调用 | /sys/{productKey}/{deviceName}/thing/service/{serviceId} | 调用设备自定义服务(重启、校准、日志查询等) |
| 远程配置 | /sys/{productKey}/{deviceName}/thing/config/push | 推送远程配置参数 |
| 时间同步 | /sys/{productKey}/{deviceName}/thing/time/sync | 触发设备时间同步 |
3.3 指令格式
{
"method": "thing.service.ota",
"id": "20260710001",
"params": {
"url": "https://ota.example.com/firmware-v2.1.0.bin",
"version": "2.1.0",
"crc32": "A1B2C3D4",
"md5": "e10adc3949ba59abbe56e057f20f883e"
}
}
3.4 设备影子
设备影子用于存储设备离线时的待下发指令,设备上线后自动推送:
Redis Key: iot:shadow:{productKey}:{deviceName}
Value: 待下发指令列表(JSON 数组)
TTL: 7 天
4. 云端采集协议
4.1 协议矩阵
| 协议 | 适用场景 | 传输层 | QoS | 功耗 | 带宽 |
|---|
| MQTT | 传感器数据上报、指令下发 | TCP/TLS | 0/1/2 | 低 | 低 |
| CoAP | 资源受限设备 | UDP/DTLS | 0/1 | 极低 | 极低 |
| HTTP/HTTPS | 设备配置获取、日志上传 | TCP/TLS | - | 高 | 高 |
| WebSocket | 实时数据推送 | TCP/TLS | - | 中 | 中 |
| BLE | 设备配网(近场) | 2.4GHz | - | 极低 | 低 |
4.2 MQTT 协议详解
| 参数 | 配置 |
|---|
| 协议版本 | MQTT 3.1.1 / 5.0 |
| Broker | EMQX 5.x 集群 |
| 端口 | 1883(TCP)、8883(TLS) |
| QoS 级别 | 设备上报 QoS 0,指令下发 QoS 1 |
| Keep Alive | 60 秒 |
| Clean Session | true(设备端) |
| 客户端 ID | 设备唯一标识(deviceId) |
4.3 协议适配层
设备上报 → 协议解析器(MQTT/CoAP/HTTP) → 统一消息对象 → 业务处理
│
┌────────┴────────┐
▼ ▼
内置协议解析 自定义脚本解析
(JSON/二进制) (Groovy/Lua)
5. 产品品类
5.1 品类定义
产品品类是物联网平台对设备进行分类管理的核心维度,定义了设备的功能集合、数据模型和通信规范。
| 品类编码 | 品类名称 | 说明 |
|---|
SENSOR_01 | 传感器设备 | 采集环境/物理量数据 |
ACTUATOR_01 | 执行器设备 | 接收指令执行动作 |
ALARM_01 | 告警设备 | 声光告警输出 |
GATEWAY_01 | 网关设备 | 多设备汇聚接入,协议转换 |
5.2 品类属性模板
每个品类定义标准属性集:
品类: 传感器设备 (SENSOR_01)
属性:
- name: temperature # 温度
type: float
unit: "°C"
range: [-40, 125]
- name: humidity # 湿度
type: float
unit: "%RH"
range: [0, 100]
- name: pressure # 压力
type: float
unit: "kPa"
range: [0, 1000]
- name: status # 设备状态
type: enum
values: [0=正常, 1=告警, 2=故障]
6. 产品管理
6.1 产品定义
产品是品类的具体化实例,包含产品型号、固件信息、通信参数等。
| 字段 | 说明 |
|---|
productKey | 产品唯一标识(平台分配) |
productName | 产品名称 |
category | 所属品类 |
model | 产品型号 |
protocol | 通信协议(MQTT/CoAP) |
dataFormat | 数据格式(JSON/二进制/自定义) |
firmwareVersion | 当前固件版本 |
createTime | 创建时间 |
6.2 产品管理功能
| 功能 | 说明 |
|---|
| 产品注册 | 创建新产品,生成 productKey 和 productSecret |
| 产品配置 | 配置通信参数、数据格式、Topic 定义 |
| 固件管理 | 上传固件、版本管理、灰度发布 |
| 产品删除 | 删除产品前需解绑所有设备 |
6.3 产品与设备关系
产品 (Product)
├── 设备 1 (Device)
├── 设备 2 (Device)
├── 设备 3 (Device)
└── ...
同一产品下的设备共享相同的通信协议、数据格式和固件版本体系。
7. 设备管理
7.1 设备生命周期
未激活 ──→ 正常 ──→ 故障 ──→ 报废
│ │
│ ┌────┴────┐
│ ▼ ▼
│ 在线 离线
│ (动态状态)
▼
激活(配网绑定)
7.2 设备状态管理
| 状态 | 类型 | 说明 |
|---|
| 未激活 (0) | 人工管理 | 设备入库但未投入使用 |
| 正常 (1) | 人工管理 | 设备正常运行 |
| 故障 (2) | 人工管理 | 设备故障待维修 |
| 报废 (3) | 人工管理 | 设备报废退出 |
| 在线 (1) | 自动上报 | 设备当前在线 |
| 离线 (0) | 自动判定 | 设备当前离线(心跳超时) |
7.3 设备认证
| 认证方式 | 说明 |
|---|
| 设备密钥 | productKey + deviceName + deviceSecret 三元组认证 |
| X.509 证书 | 设备端加载证书,平台验证签名 |
| Token 认证 | 设备首次激活时获取临时 Token |
| 一机一密 | 每台设备烧录唯一密钥 |
7.4 设备管理功能
| 功能 | 说明 |
|---|
| 设备注册 | 创建设备,生成设备凭证 |
| 设备激活 | 设备首次联网完成激活 |
| 设备绑定 | 设备与用户/租户建立绑定关系 |
| 设备解绑 | 解除绑定关系,设备恢复待绑定 |
| 设备标签 | 自定义标签(如位置、区域、责任人) |
| 设备分组 | 按项目/区域/类型分组管理 |
| 设备搜索 | 支持多维度高级搜索 |
| 设备禁用 | 临时禁用设备,禁止数据上报 |
8. 数据采集
8.1 采集架构
设备 ──MQTT──→ EMQX ──消息路由──→ 数据采集服务
│
┌─────────────┼─────────────┐
▼ ▼ ▼
MySQL(结构化) Redis(缓存) TSDB(时序)
│
▼
数据打标服务 → 模型训练 → 模型发布
8.2 数据存储策略
| 数据类型 | 存储引擎 | 保留周期 | 说明 |
|---|
| 原始采集数据 | MySQL(分区表) | 3 个月 | 按月分区,过期自动清理 |
| 时序数据 | 时序数据库 | 12 个月 | 降采样后长期保存 |
| 告警数据 | MySQL | 24 个月 | 告警记录长期保存 |
| 设备状态 | Redis | 实时(TTL) | 在线状态缓存 |
| 热点数据 | Redis | 按业务需求 | 最新采集值缓存 |
8.3 数据分区策略
-- 采集数据表按月分区
CREATE TABLE iot_device_data (
id BIGINT NOT NULL,
device_id VARCHAR(64) NOT NULL,
collect_date DATE NOT NULL,
-- ... 其他字段
PRIMARY KEY (id, collect_date)
) PARTITION BY RANGE (TO_DAYS(collect_date)) (
PARTITION p202601 VALUES LESS THAN (TO_DAYS('2026-02-01')),
PARTITION p202602 VALUES LESS THAN (TO_DAYS('2026-03-01')),
-- ... 每月新增分区
PARTITION p202612 VALUES LESS THAN (TO_DAYS('2027-01-01'))
);
8.4 数据采集指标
| 指标 | 目标值 |
|---|
| 单设备采集周期 | 按业务需求配置 |
| 单台 Broker 连接数 | ≥ 10 万 |
| 消息吞吐量 | ≥ 100 万条/秒 |
| 数据写入延迟 | < 100ms |
| 数据可用性 | ≥ 99.95% |
9. 数据打标
9.1 打标定义
数据打标是对采集到的原始数据进行标注,为模型训练提供标注数据集。
9.2 打标类型
| 打标类型 | 说明 | 示例 |
|---|
| 自动打标 | 系统根据规则自动标注 | 设备上报的状态字段自动映射为标签 |
| 人工打标 | 管理员/专家手动标注 | 在管理后台查看数据并标注 |
| 批量打标 | 对满足条件的数据批量标注 | 某时间段内所有数据标记为”测试数据” |
| 二次打标 | 在已有标签基础上修正 | 纠正自动打标的错误结果 |
9.3 打标数据模型
CREATE TABLE iot_data_label (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
data_id BIGINT NOT NULL COMMENT '采集数据ID',
data_type VARCHAR(32) NOT NULL COMMENT '数据类型',
label_type VARCHAR(32) NOT NULL COMMENT '标签类型(auto/manual)',
label_value VARCHAR(64) NOT NULL COMMENT '标签值',
confidence DECIMAL(5,2) COMMENT '置信度(0-100)',
labeler_id BIGINT COMMENT '标注人ID',
label_time DATETIME NOT NULL COMMENT '标注时间',
remark VARCHAR(500) COMMENT '备注'
);
9.4 打标流程
原始数据 ──→ 自动打标(规则/算法) ──→ 人工审核 ──→ 确认标签
│ │
▼ ▼
高置信度自动入库 低置信度待人工审核
│
▼
专家标注修正
│
▼
入库(训练集)
10. 模型训练
10.1 训练架构
数据打标结果 ──→ 特征工程 ──→ 数据集划分 ──→ 模型训练 ──→ 模型评估
│ │ │
▼ ▼ ▼
特征提取服务 训练集群 评估报告
(Spark/Flink) (GPU/CPU集群)
10.2 训练流程
1. 数据准备
├── 从打标数据库导出标注数据
├── 数据清洗(去噪、去重、缺失值处理)
└── 特征提取(统计特征、频域特征、时域特征)
2. 数据集划分
├── 训练集 (70%)
├── 验证集 (15%)
└── 测试集 (15%)
3. 模型训练
├── 算法选择(分类/回归/聚类)
├── 超参数调优(Grid Search / Bayesian Optimization)
└── 训练过程监控(Loss / Accuracy 曲线)
4. 模型评估
├── 准确率 (Accuracy)
├── 精确率 (Precision)
├── 召回率 (Recall)
├── F1-Score
└── 混淆矩阵 (Confusion Matrix)
10.3 模型类型
| 模型类型 | 用途 | 输入 | 输出 |
|---|
| 分类模型 | 识别设备状态/事件类型 | 传感器数据 | 分类标签 + 置信度 |
| 回归预测模型 | 预测连续数值 | 传感器原始数据 | 预测数值 |
| 异常检测模型 | 检测设备异常状态 | 设备运行参数 | 是否异常 + 异常类型 |
| 时序预测模型 | 预测未来数据趋势 | 历史时序数据 | 未来 N 个时间点的预测值 |
11. 模型输出
11.1 模型格式
| 格式 | 说明 | 适用场景 |
|---|
| TensorFlow Lite (.tflite) | Google 移动端推理框架 | 嵌入式设备、移动端 |
| ONNX (.onnx) | 开放神经网络交换格式 | 跨平台部署 |
| OpenVINO (.xml+.bin) | Intel 推理优化框架 | Intel 平台设备 |
| Paddle Lite (.nb) | 百度移动端推理框架 | 国产芯片设备 |
| C 数组 (.h/.c) | 模型参数硬编码 | 资源极度受限设备 |
11.2 模型版本管理
CREATE TABLE iot_model_info (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
model_name VARCHAR(128) NOT NULL COMMENT '模型名称',
model_version VARCHAR(32) NOT NULL COMMENT '模型版本',
model_type VARCHAR(32) NOT NULL COMMENT '模型类型',
model_format VARCHAR(32) NOT NULL COMMENT '模型格式(tflite/onnx等)',
model_size BIGINT COMMENT '模型大小(字节)',
model_url VARCHAR(512) COMMENT '模型文件URL',
md5 VARCHAR(64) COMMENT '模型文件MD5',
accuracy DECIMAL(5,2) COMMENT '准确率',
input_shape VARCHAR(128) COMMENT '输入形状',
output_shape VARCHAR(128) COMMENT '输出形状',
train_dataset_id BIGINT COMMENT '训练数据集ID',
status VARCHAR(16) DEFAULT 'draft' COMMENT '状态(draft/review/released/archived)',
create_time DATETIME,
update_time DATETIME
);
12. 模型发布到设备端
12.1 发布流程
模型训练完成 → 模型评估通过 → 模型格式转换 → 模型签名
→ 上传至 OSS/MinIO → 创建发布任务 → 灰度发布 → 全量发布
│
┌─────┴─────┐
▼ ▼
设备在线 设备离线
│ │
▼ ▼
实时下发 设备上线后
自动推送
12.2 发布策略
| 策略 | 说明 |
|---|
| 全量发布 | 所有设备同时更新模型 |
| 灰度发布 | 按比例/设备组逐步推送(如 10% → 30% → 100%) |
| 区域发布 | 按地理位置分批推送 |
| 版本匹配 | 仅推送与固件版本兼容的模型 |
12.3 模型下发指令
Topic: /sys/{productKey}/{deviceName}/thing/service/model_update
{
"method": "thing.service.model_update",
"id": "20260710002",
"params": {
"modelUrl": "https://storage.example.com/models/model-v2.tflite",
"modelVersion": "2.0.0",
"modelType": "classification",
"md5": "d41d8cd98f00b204e9800998ecf8427e",
"inputShape": [1, 64, 6],
"outputShape": [1, 4]
}
}
12.4 设备端模型更新流程
接收指令 → 下载模型文件 → MD5 校验 → 备份旧模型
→ 加载新模型 → 模型验证(推理测试) → 切换生效
→ 上报更新结果(成功/失败 + 原因)
13. 时间同步
13.1 同步机制
物联网设备通常不具备 RTC 电池或 RTC 精度不足,需通过云端进行时间同步。
| 同步方式 | 精度 | 说明 |
|---|
| NTP 协议 | ±10ms | 标准网络时间协议,设备端内置 NTP 客户端 |
| MQTT 时间同步 | ±100ms | 通过 MQTT Topic 交互,平台返回当前时间 |
| HTTP 时间同步 | ±500ms | 设备通过 HTTP 请求获取服务器时间 |
| 设备首次激活同步 | ±1s | 设备首次联网时强制同步 |
13.2 MQTT 时间同步流程
设备端 云端
│ │
│── topic: /sys/{pk}/{dn}/thing/time/sync ──→ │
│ { "type": "request" } │
│ │── 记录接收时间 T1
│ │
│←── topic: /sys/{pk}/{dn}/thing/time/sync ──│
│ { │
│ "type": "response", │
│ "serverTime": 1720600000, │
│ "receiveTime": T1 │
│ } │
│ │
│── 记录接收时间 T2 │
│── 计算 RTT = T2 - T1 │
│── 设置设备时间 = serverTime + RTT/2
13.3 时间同步策略
| 场景 | 同步时机 |
|---|
| 设备首次启动 | 强制同步 |
| 设备每天首次上报 | 自动同步 |
| 连续离线超过 24 小时 | 恢复连接后同步 |
| 手动触发 | 通过云端指令触发同步 |
14. OTA 升级
14.1 OTA 升级流程
固件上传 → 版本管理 → 创建升级任务 → 灰度发布 → 全量发布
│
┌─────────┴─────────┐
▼ ▼
设备在线 设备离线
│ │
▼ ▼
下发升级指令 设备上线后
(/sys/.../thing/service/ota) 自动检测升级
│
▼
设备端升级流程
├── 下载固件
├── CRC32/MD5 校验
├── 备份当前固件
├── 写入新固件
├── 重启设备
└── 上报升级结果
│
▼
更新升级任务状态
(成功/失败/重试)
14.2 OTA 升级指令
Topic: /sys/{productKey}/{deviceName}/thing/service/ota
{
"method": "thing.service.ota",
"id": "20260710003",
"params": {
"url": "https://ota.example.com/firmware-v2.1.0.bin",
"version": "2.1.0",
"crc32": "A1B2C3D4",
"md5": "e10adc3949ba59abbe56e057f20f883e",
"fileSize": 1048576,
"force": false,
"timeout": 300
}
}
14.3 OTA 升级状态
| 状态 | 说明 |
|---|
pending | 等待设备响应 |
downloading | 设备正在下载固件 |
verifying | 设备正在校验固件 |
installing | 设备正在安装固件 |
rebooting | 设备正在重启 |
success | 升级成功 |
failed | 升级失败 |
timeout | 升级超时 |
cancelled | 升级已取消 |
14.4 OTA 升级策略
| 策略 | 说明 |
|---|
| 灰度发布 | 按百分比/设备组逐步推送,监控升级成功率 |
| 自动回滚 | 升级失败自动回滚到上一版本 |
| 断点续传 | 支持固件分包下载,断网后续传 |
| 版本校验 | 仅允许升级到兼容版本,禁止降级 |
| 升级窗口 | 可配置升级时间段(如凌晨 2:00-5:00) |
| 电量保护 | 电量低于阈值时不触发升级 |
14.5 OTA 任务管理
CREATE TABLE iot_ota_task (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
task_name VARCHAR(128) NOT NULL COMMENT '任务名称',
firmware_id BIGINT NOT NULL COMMENT '固件ID',
target_version VARCHAR(32) NOT NULL COMMENT '目标版本',
strategy VARCHAR(16) DEFAULT 'full' COMMENT '策略(full/gray)',
gray_percent INT DEFAULT 100 COMMENT '灰度百分比',
status VARCHAR(16) DEFAULT 'pending' COMMENT '状态(pending/running/success/failed)',
total_count INT DEFAULT 0 COMMENT '设备总数',
success_count INT DEFAULT 0 COMMENT '成功数',
failed_count INT DEFAULT 0 COMMENT '失败数',
create_time DATETIME,
update_time DATETIME
);
CREATE TABLE iot_ota_device_task (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
task_id BIGINT NOT NULL COMMENT '任务ID',
device_id VARCHAR(64) NOT NULL COMMENT '设备ID',
status VARCHAR(16) DEFAULT 'pending' COMMENT '状态',
progress INT DEFAULT 0 COMMENT '升级进度(0-100)',
error_msg VARCHAR(500) COMMENT '错误信息',
start_time DATETIME,
end_time DATETIME,
create_time DATETIME,
update_time DATETIME
);
15. 数据流转全景图
┌──────────────────────────────────────────────┐
│ 应用层 │
│ 移动端APP │ Web管理后台 │ 第三方系统集成 │
└──────────────────────┬───────────────────────┘
│ HTTP API
┌──────────────────────▼───────────────────────┐
│ 平台服务层 │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
│ │设备管理 │ │产品管理 │ │ 数据采集 │ │
│ │生命周期 │ │品类定义 │ │ 协议解析 │ │
│ │认证授权 │ │固件管理 │ │ 数据存储 │ │
│ └─────────┘ └─────────┘ └─────────────┘ │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
│ │规则引擎 │ │OTA升级 │ │ 时间同步 │ │
│ │告警判定 │ │任务管理 │ │ NTP/MQTT │ │
│ │消息转发 │ │灰度发布 │ └─────────────┘ │
│ └─────────┘ └─────────┘ │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
│ │数据打标 │ │模型训练 │ │ 模型发布 │ │
│ │自动/人工 │ │特征工程 │ │ 格式转换 │ │
│ │批量标注 │ │超参调优 │ │ 灰度部署 │ │
│ └─────────┘ └─────────┘ └─────────────┘ │
└──────────────────────┬───────────────────────┘
│ MQTT
┌──────────────────────▼───────────────────────┐
│ 接入层 │
│ EMQX Cluster │ TLS/SSL │ 设备认证 │
└──────────────────────┬───────────────────────┘
│ MQTT/CoAP/HTTP/BLE
┌──────────────────────▼───────────────────────┐
│ 设备层 │
│ 传感器设备 │ 执行器设备 │ 智能网关 │
└──────────────────────────────────────────────┘
16. 安全体系
| 安全维度 | 措施 |
|---|
| 设备认证 | 一机一密 / X.509 证书 / Token 认证 |
| 传输加密 | MQTT over TLS / HTTPS |
| 数据加密 | 敏感字段 AES 加密存储 |
| 访问控制 | RBAC 权限模型,租户/项目数据隔离 |
| 防重放攻击 | 消息 ID + 时间戳校验 |
| 固件安全 | CRC32 + MD5 双重校验,签名验证 |
| 日志审计 | 操作日志全记录,可追溯 |
17. 性能指标
| 指标 | 目标值 |
|---|
| 设备连接数 | ≥ 10 万/集群 |
| 消息吞吐量 | ≥ 100 万 TPS |
| 数据写入延迟 | < 100ms |
| 指令下发延迟 | < 500ms(设备在线) |
| OTA 升级成功率 | ≥ 99.5% |
| 时间同步精度 | < 100ms(MQTT 方式) |
| 系统可用性 | ≥ 99.95% |
18. 总结
本文档从物联网平台的整体架构出发,详细阐述了从设备端数据上报、云端指令下发、协议采集、产品品类管理、设备全生命周期管理、数据采集与打标、AI 模型训练与发布、时间同步到 OTA 升级的完整技术体系。该架构参考阿里云物联网平台的设计理念,为各类物联网平台的建设提供系统化的技术参考。