Skip to content

5.1 平台层整体架构与核心组件

5.1.1 物联网平台的分层架构

从现场设备到业务应用,数据需要穿过一条由不同技术栈拼接而成的链路。业界习惯将这条链路抽象为四个标准层——感知层、网络层、平台层、应用层。层与层之间有清晰的职责边界,但实际部署中边界会因边缘计算等因素而模糊。平台层位于中间,它向上屏蔽底层硬件差异,向下封装应用逻辑变化,是整个系统的信息中枢。

感知层离物理世界最近,涵盖各类传感器、执行器和 RFID 读写器。这些设备资源受限,通信方式各异:有些输出 4–20 mA 模拟信号,有些走 RS485 数字总线,还有的使用无线局域网协议。在智能工厂中,一台设备可能同时输出多种信号,感知层必须完成信号采集和初步调理。第 3 章已详细讨论传感器选型与端侧 AI 趋势,本节不再展开。

网络层负责将感知层的数据搬运到平台层。它覆盖近距离的无线局域网和远距离的蜂窝 / LPWAN(Low-Power Wide-Area Network,低功耗广域网)。网络层需解决不稳定连接下的数据完整性:偏远风电场一旦网络断开,边缘网关需要本地缓存数据并在恢复后补充上传。网络层的设计直接影响上行消息的可靠性,这部分将在 5.2.3 节数据传输的容错机制中进一步讨论。

平台层正是本章的核心。它从网络层接收设备上报的数据,完成协议适配、消息队列缓冲、数据持久化、规则判断、设备管理等任务。平台层的核心使命是让物联网系统从“把数据接到服务器”升级为“把数据变成可用的服务”。其主要功能模块包括:

  • 设备接入:提供统一的设备注册、认证、鉴权能力。在轻量级设备端,MQTT 协议较为常见;对于资源更受限的场景,CoAP(Constrained Application Protocol,受限应用协议)是另一种选择。平台通常需要在服务端实现多协议网关,或在边缘侧完成协议转换。
  • 数据汇聚:将来源不同、格式各异的设备数据统一为物模型 Thing Model,再推送到消息队列。消息队列是数据链路的第一个缓冲层,负责削峰填谷,防止后端过载。消息队列的选型与特性在 5.1.2 节单独剖析。
  • 规则引擎:允许用户定义“如果…那么…”逻辑,对实时数据进行判断与响应。规则引擎可以部署在平台层云端,也可以下沉到边缘节点。例如,当某种振动传感器的幅值超过预先设定的阈值时,规则引擎可以自动触发告警通知或调用云函数执行后续动作。
  • 数据存储:物联网数据中大部分是带时间戳的序列数据,时序数据库(TSDB)因此成为平台层的基础设施。平台层通常还集成关系型数据库,用于存储设备元数据和配置信息。
  • 应用使能:通过 RESTful API、数据订阅、可视化组件等方式,向上层应用开放数据与能力。应用层可以基于这些接口开发大屏、移动 App 或 AI 分析模型。

应用层是用户直接交互的界面,包括监控大屏、运维系统、企业系统集成、AI 异常检测模型等。应用层使用平台层暴露的 API 获取实时和历史数据,并结合业务逻辑实现最终价值。例如,工厂的 OEE(Overall Equipment Effectiveness,设备综合效率)看板就是应用层从平台层拉取产量、停机时间等数据后计算得出。关于 AI 模型与平台层集成的具体机制,我们将在第 7 章 AIoT 与智能体应用中详细展开。

下面用一张分层图来总结这个模型。

图 5-1 物联网平台分层架构示意平台层承上启下:数据向上汇聚,控制指令向下传递。图 5-1 物联网平台分层架构示意平台层承上启下:数据向上汇聚,控制指令向下传递。数据上行控制下行应用层监控大屏 · 移动 App · AI 模型 · 企业系统集成平台层设备接入协议适配消息处理队列缓冲存储时序 / 关系库应用使能API / 订阅网络层无线局域网 · 蜂窝 / LPWAN · 有线感知层传感器 · 执行器 · RFID数据流(上行感知数据)控制流(下行命令)平台层内部处理顺序图 5-1 物联网平台分层架构示意:感知层采集物理信号并数字化,经网络层传输至平台层完成协议转换、消息缓冲、规则判断与存储,再通过 API 暴露给应用层提供人机交互与决策支持。
图 5-1 物联网平台分层架构示意

这种四层模型在不同云厂商的物联网平台上可以看到高度一致的映射。从工程实践来看,主流云厂商的物联网平台(如 AWS IoT Core、Azure IoT Hub、阿里云 IoT)在分层架构上高度一致,差异主要体现在认证方式、设备影子(Device Shadow)、消息路由策略等细节。例如,AWS IoT Core 提供设备网关和规则引擎,可将消息路由至 Lambda 或 Kinesis;Azure IoT Hub 侧重于设备管理与消息路由,支持与 Event Hubs 集成;阿里云 IoT 则整合了设备接入、数据流转和时序数据库。架构细节虽有差异,但分层逻辑始终遵循设备→传输→处理→应用的主线。这种高度共性反映了物联网场景对实时性、可靠性与伸缩性的共同要求。

平台层的边界在实践中有时会模糊:当边缘计算节点执行数据过滤和本地控制时,就在“平台层”与“网络层”之间划出了一片灰色地带。第 5.3 节会专门讨论边缘计算与云计算的协同模型。在不涉足边缘之前,理解上述四层模型是构建任何物联网系统的基础——它帮助你判断哪个组件负责设备连接,哪个负责数据清洗,哪个负责存储和分发。分层一旦清晰,后续的选型与架构决策就有了依据。

5.1.2 核心组件:消息队列、时序数据库、规则引擎

分层骨架搭好之后,真正撑起数据链路运转的是三个核心组件:消息队列、时序数据库和规则引擎。它们分别解决数据缓冲、高效存储和智能判决的问题。选型和部署决策直接决定了平台层的吞吐边界、存储成本和响应时效。

消息队列:数据流通的缓冲带

设备上报数据的节奏与云端消费的节奏很难完全同步。设备可能在网络恢复后集中补报一批数据,也可能在正常工况下以固定频率上报。若让云端应用直连设备,一旦设备大规模上线或突发洪峰,后端服务可能被瞬时冲垮。消息队列就是在这两者之间插入的一个缓冲带。

消息队列常采用发布/订阅 Publish/Subscribe模式:设备作为生产者,将数据发往一个逻辑通道(主题);消费者订阅主题后,异步地从队列中拉取数据。生产者和消费者在时间和空间上都解耦——设备不需要知道谁在消费数据,消费者也不需要等待设备响应。

在物联网场景中,MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是设备端最常用的轻量级协议之一。其设计初衷是应对低带宽、高延迟、网络不稳定的嵌入式环境:头部开销极小,支持三种服务质量等级(QoS 0/1/2),且通过单一长连接承载大量消息。资源充足的设备(如Linux网关)可直接集成MQTT客户端SDK;资源受限的MCU也能通过精简的MQTT库完成连接。下面是一个使用Python paho-mqtt 的发布/订阅示例:

python
import paho.mqtt.client as mqtt
import time

# 发布端
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.publish("sensor/temperature", payload="25.3", qos=1)

client_pub = mqtt.Client()
client_pub.on_connect = on_connect
client_pub.connect("mqtt.example.com", 1883, 60)
client_pub.loop_start()
time.sleep(1)
client_pub.loop_stop()

# 订阅端
def on_message(client, userdata, msg):
    print(f"{msg.topic}: {msg.payload.decode()}")

client_sub = mqtt.Client()
client_sub.on_connect = lambda c, u, f, rc: c.subscribe("sensor/temperature")
client_sub.on_message = on_message
client_sub.connect("mqtt.example.com", 1883, 60)
client_sub.loop_forever()

消息从设备端进入后端后,队列选型的焦点转向吞吐能力和持久化策略。Kafka(Apache Kafka,分布式消息流平台)以顺序写磁盘和分区机制实现高写入吞吐,适合海量设备持续上报的后端管道;RabbitMQ(基于AMQP 0-9-1协议的开源消息代理)强调灵活的路由和消息确认,适合需要精细控制消息流向的业务集成。下表从几个关键维度展示MQTT Broker(作为消息队列代理)、Kafka和RabbitMQ在物联网场景下的典型差异。这里给出的对比是定性等级,实际性能受硬件、网络、配置影响极大,选型前应进行压测验证。

维度MQTT Broker (消息队列代理)KafkaRabbitMQ
协议定位设备端轻量发布/订阅代理分布式消息流平台通用消息代理
写入吞吐高(基于会话与消息缓存)极高(分区并行写入)中高(取决于队列数和确认模式)
端到端延迟低(长连接推模式)中(批量拉取引入缓冲)低(支持推模式与确认)
消息持久化依赖Broker会话存储与保留策略磁盘顺序写+日志压缩队列/消息持久化标志
典型场景海量设备长连接、低带宽、指令下发后端数据管道、流处理输入复杂路由、业务系统集成
典型部署位置边缘网关或云端接入层数据中心或公有云云端应用层

三者并非互斥。常见架构中,MQTT Broker负责接收设备消息,再通过Kafka或RabbitMQ分发到下游消费者。消息队列的吞吐能力决定了后续时序数据库的写入压力,因此它通常是平台层最先确定的选型。

时序数据库:专为时间印记优化

物联网设备上报的数据格式非常固定:每个数据点携带时间戳、一组标签(设备ID、位置等)以及若干数值字段(温度、振动频率)。这类数据天然是时间序列。传统关系型数据库采用行存储,在按时间戳做高效范围查询时,需要遍历大量无关列,性能不佳。时序数据库(TSDB, Time Series Database)针对这类场景做了两件事:改写存储引擎和极致的写入压缩。

InfluxDB 为例,其在 1.x/2.x 时代自研的 TSM 引擎(Time-Structured Merge Tree)本质上是 LSM-Tree(Log-Structured Merge-Tree,日志结构合并树)的变体。新写入的数据先缓存在内存的写前日志(WAL, Write-Ahead Logging)中,积累到一定量后分批合并到磁盘,使得持续高频写入时性能稳定。在数值字段存储上,InfluxDB 采用差分编码和 delta-of-delta 压缩——相邻时间戳的差值很小,只存差值能显著减少存储空间。压缩效果受数据波动程度影响较大,但通常能大幅降低磁盘占用。版本坐标需要更新:2025 年 4 月,InfluxDB 3.x 正式 GA,存储与查询层以 Rust 重写,改用 Apache Arrow/Parquet 作为存储底座、DataFusion 作为查询引擎,并继续兼容行协议写入;开源版将热数据限制在 72 小时,更长保留需要企业版或自建降采样归档。早年与 Telegraf、Chronograf、Kapacitor 并称的“TICK 栈”已成历史名词,官方工具链已围绕 3.x 重组。

TimescaleDB 走的是另一条路:基于 PostgreSQL,以插件形式提供时序能力。它引入超表(Hypertable)概念,按时间将大表自动切分成多个分区(Chunk);查询时只扫描涉及时间段的 Chunk,跳过无关分区。其优势在于 SQL 兼容性好,运维人员不需要学习全新语法。对于数据量中等、查询条件复杂的场景,TimescaleDB 既有 SQL 灵活性,又能享受分区带来的查询剪枝收益。

选择 InfluxDB 还是 TimescaleDB,取决于团队技术栈。如果团队熟悉 PostgreSQL 且数据总量可控,TimescaleDB 可减少迁移成本;如果面临写入密集型场景且存储空间紧张,InfluxDB 的 TSM 引擎和强压缩方案可能更优。但没有任何一种时序数据库在所有场景下全面领先,选型必须结合真实业务压测验证。

规则引擎:从简单阈值到复杂事件处理

数据有了去处,还需要判断这些数据是否异常。规则引擎就是这个判断器。最简单的规则是阈值触发:温度超过80°C就告警。这类计算在边缘节点或云端的流处理中均可完成,无需引入额外组件。

更复杂的业务场景涉及多个事件之间的时序关系和逻辑组合。例如:电机在5分钟内出现三次电流尖峰,且伴随一次温度上升,可能预示轴承故障。这已不是单点阈值能处理的,需要用复杂事件处理(CEP, Complex Event Processing)。CEP 引擎支持在时间窗口内对事件流做模式匹配——定义事件A发生后3秒内事件B发生,满足条件则触发复合事件。

规则引擎在实际部署中有两种常见形态。对于需要毫秒级响应的场景(如切断危险设备电源),规则应下沉到边缘节点执行,避免网络往返延迟。对于分析跨度大、依赖历史数据的规则(如逐小时计算平均负载),可在云端执行。平台层架构通常支持灵活部署:规则引擎可部署在边缘,也可集中部署在云端,具体取决于延迟要求和资源约束。

这三个组件——消息队列缓冲流量、时序数据库高效存储、规则引擎智能判断——构成了平台层的核心能力。它们的选型相互影响:消息队列的吞吐决定时序数据库的写入压力,规则引擎的实时性依赖队列的延迟。在工程实践中,消息队列通常最先选型,因为它直接影响整个链路对抗洪峰的能力;时序数据库的压缩比决定了硬件成本和查询性能;规则引擎则需根据延迟要求确认是否下放边缘。这套三组件组合在开源平台 IoT DC3 的数据中心中有对应落地——采集值统一封装为位号值对象(point value)、写入时序库、经消息队列缓冲、由规则引擎消费——但组件选型本身是通用工程决策,与具体平台无关(时序库权衡见 5.4 节,完整落地见第 14 章)。

需要说明的是,规则引擎能覆盖的判断模式终究是预设的。当设备异常呈现非规律性(如变频器瞬态波形中的边缘振荡),或需要在百万级位号中关联跨设备模式时,传统规则引擎往往力不从心。这正是 AI 驱动的异常检测和预测性分析关注的问题。AI 模型能从历史时序数据中学习基线模式,识别传统阈值规则无法捕捉的细微偏离,并给出剩余寿命预测。规则引擎解决确定性逻辑,AI 解决非确定性模式,两者是互补而非替代关系。AI 数据处理的技术方案——包括模型选型、训练推理管道、边缘与云端的分工——留到第7章展开,这里先点明边界。

图 5-2 平台层核心组件:消息队列、时序数据库、规则引擎消息队列缓冲流量、时序数据库高效存储、规则引擎智能判断,三组件选型相互影响。图 5-2 平台层核心组件:消息队列、时序数据库、规则引擎分别解决数据缓冲、高效存储、智能判决,选型决定吞吐、成本与时效消息队列:数据缓冲带发布/订阅解耦生产与消费设备洪峰时后端不被瞬时冲垮选型对比MQTT Broker:设备端轻量代理,长连接推模式Kafka:顺序写磁盘 + 分区,海量后端管道RabbitMQ:灵活路由 + 确认,业务集成三者不互斥:MQTT 收 → Kafka/RabbitMQ 分发通常最先选型,决定抗洪峰能力时序数据库:专为时间印记优化数据点 = 时间戳 + 标签 + 数值字段改存储引擎 + 极致写入压缩两条技术路线InfluxDB:TSM 引擎(LSM 变体)+ WAL差分编码 + delta-of-delta 压缩,TICK 生态TimescaleDB:基于 PostgreSQL,超表按时间分 ChunkSQL 兼容好,查询只扫涉及分区压缩比决定硬件成本与查询性能规则引擎:从阈值到 CEP简单阈值:温度超 80℃ 告警CEP:时间窗口内多事件模式匹配两种部署形态边缘:毫秒级响应(切断危险电源)云端:分析跨度大、依赖历史数据例:5 分钟内三次电流尖峰 + 温度上升 → 轴承故障规则引擎解决确定性逻辑AI 解决非确定性模式,两者互补三组件选型相互影响消息队列吞吐 → 决定时序数据库写入压力 · 规则引擎实时性 → 依赖队列延迟工程顺序:消息队列最先选型(抗洪峰)→ 时序数据库压缩比定硬件成本 → 规则引擎按延迟要求确认是否下放边缘IoT DC3 落地:采集值封装位号值对象 → 写入时序库 → 经消息队列缓冲 → 规则引擎消费组件选型是通用工程决策,与具体平台无关;时序库权衡见 5.4 节,完整落地见第 14 章图 5-2 消息队列缓冲流量、时序数据库高效存储、规则引擎智能判断,三组件选型相互影响:队列吞吐决定时序库写入压力,规则引擎实时性依赖队列延迟,通常消息队列最先选型。
图 5-2 平台层核心组件:消息队列、时序数据库、规则引擎

5.1.3 平台层安全与访问控制

平台层的集中化服务在提升数据吞吐和处理效率的同时,也把攻击面从分散的设备收拢到了几个关键节点。一个未经认证的设备可能冒充合法传感器注入虚假读数;一条未加密的传输链路可能被中间人窃听甚至篡改指令;一个权限配置失效的账号可能无意中越权操作危险动作。这些问题可以归纳为三个必须回答的工程问题:你是谁(设备身份)、数据在路上是否安全(传输加密)、你能做什么(访问控制)。

设备身份认证:证书与Token的工程取舍

设备接入平台的第一步是证明自己的身份。与用户登录不同,设备没有交互界面输入密码,密钥必须安全地存储在固件或安全芯片中。工业场景中常见方案包括X.509证书和Token两种路径,选择取决于设备的算力、存储和安全等级要求。

X.509证书方案:每个设备出厂时预置一个由平台根CA签发的数字证书。连接时设备出示证书,平台验证签名链、有效期,并可查询证书吊销列表或通过在线证书状态协议实时验签。资源充足的设备(例如运行完整Linux的工业网关)可以启用TLS双向认证——设备和服务端相互验证证书,杜绝中间人攻击。即使设备被物理破解,攻击者也无法伪造其他证书设备的身份,因为私钥只存放于本设备的安全存储区(如TPM/SE等硬件安全元件)。证书方案的高安全强度伴生了较高的计算开销——证书链验证、CRL/OCSP查询都需要额外算力和网络往返,对于只有几百KB RAM的MCU设备可能难以承受。

Token方案:适用于资源受限的MCU或需要频繁切换认证上下文的场景。设备用预置的设备密钥发起认证请求,平台验证后签发一个短期有效的JSON Web Token(JWT,即JSON Web令牌)。Token的计算开销远小于证书签名验证,且无需维护证书链和吊销列表。然而,Token必须配合加密传输,且需设定较短的有效期和刷新机制——一旦泄露,Token可以被重放使用直到过期。实践中常见做法是将Token有效期设为几小时,配合refresh token延长生命周期,同时通过设备指纹(如IMEI、MAC地址绑定)增加额外验证维度。

实际工程中,两种方式可以混合使用:设备用证书建立mTLS连接,平台在握手完成后通过内部管道生成临时Token供后续API调用使用。这既利用了证书的高安全强度,又避免了每次RESTful请求都做证书验证的性能开销。对于超大规模设备群(数十万台以上),证书签发和吊销管理的运维负担不容忽视,因此部分平台倾向于在设备侧使用预置对称密钥配合TLS-PSK(Pre-Shared Key,即预共享密钥)方案,进一步降低握手开销。无论采用哪种方式,设备密钥的安全存储是整个信任链的根基——如果私钥或预置密钥被提取,所有基于该身份的安全前提都失效。

传输加密:TLS与DTLS

设备与平台之间的通信链路必须加密。工业现场的设备读数和控制指令在传输中被窃听或篡改,直接后果可能是生产事故。

TLS(传输层安全协议,Transport Layer Security) 是互联网通用的加密层。设备与平台通过TLS握手协商出对称会话密钥,后续所有数据流加密传输。设备端资源有限时可选用mbedTLS或WolfSSL这类轻量级实现,内存占用可控制在较小范围(相较于OpenSSL的全功能实现)。TLS 1.3进一步优化了握手效率,将往返次数从TLS 1.2的两次降为一次,并直接移除了全部传统密码套件——RC4 早已被 RFC 7465(2015)禁止,DES 等遗留算法在 TLS 1.3 中不复存在,协议只保留 AEAD 加密与新一代密钥交换。对于MQTT over TLS的典型场景,TLS 1.3能在一次往返内完成握手,大幅降低设备首次连接的时延。

DTLS(数据报传输层安全协议,Datagram Transport Layer Security) 专为UDP传输设计,适用于CoAP这类应用层协议。DTLS在UDP之上模拟TLS的握手与加密,通过重传和序列号机制克服UDP的不可靠性。典型场景是低功耗传感器通过CoAP over DTLS上报数据,平台端以无连接方式接收。需要注意的是,DTLS握手比TLS多一次往返,且受UDP包大小限制(通常需要IP分片),在丢包率高的无线网络中容易导致握手超时。工程上可以通过会话缓存和连接ID(Connection ID)减少重复握手的次数。

一个常被忽略的工程边界:TLS/DTLS只保证传输中的安全,不保证存储中的安全。数据到达平台端后,解密后的明文需要内部的加密存储策略来保护。传输加密与存储加密是两个独立的安全域,设计时必须在数据处理链路中对两者分别定义,并明确各自的密钥管理职责。

访问控制:RBAC与ABAC的协同

身份认证之后,平台必须回答“设备可以做什么”以及“不同用户和组织能访问哪些数据”。常见的访问控制模型有两种,取舍在于管理复杂度和灵活性。

基于角色的访问控制(RBAC,Role-Based Access Control):将权限绑定到角色,用户或设备被赋予一个或多个角色。角色的结构清晰、管理简单,适用于权限种类不多的场景。典型角色包括“设备只读”(只能上报数据)、“现场运维”(可读写本产线设备)、“系统管理员”(可配置规则和用户)。RBAC的代价是当场景增长时角色数量会膨胀,最终出现“角色爆炸”。例如在一个多租户平台中,若每个租户都需要独立的管理员、运维、审计角色,角色数会成倍增长。

基于属性的访问控制(ABAC,Attribute-Based Access Control):根据用户、设备、资源、环境的多维属性动态决策。例如,一条策略可以是“只有设备所在厂房区域为‘A区’且当前时间在工作日,才允许执行‘固件升级’操作”。ABAC能灵活支撑租户隔离、时间窗口控制、设备类型约束等复杂场景,但策略定义和维护成本显著更高——策略引擎需要实时评估属性,对平台层的响应延迟有直接影响。

大型平台通常同时采用两者:用RBAC管理常规用户权限,用ABAC处理边界条件和风险操作。例如,一个“运维”角色下的用户在非工作时间执行高危命令时,系统叠加ABAC策略要求二次确认(通过短信验证码或上级审批)。这种混合模型既保持了日常操作的简洁性,又为敏感行为提供了动态约束。

安全相关策略的变动不只是一次性的部署工作。证书更新、TLS密码套件升级、ABAC策略变更,任何一环出错都可能导致全量设备离线或数据泄露。灰度发布和回滚机制,是平台层安全工程中需要持续维护的体系边界。所有安全策略的调整应在测试环境和生产环境之间设置明确的灰度发布窗口和回滚预案。这一点将在第8章中进一步展开。

图 5-3 设备认证与数据加密流程证书认证属于 TLS/mTLS 握手;Token 必须在加密通道内认证后签发,混合路径依次经过 mTLS、Token 和 API。图 5-3 设备认证与数据加密流程认证凭据必须在正确的安全边界内使用;传输解密后仍需存储保护。证书路径设备证书与私钥在握手内完成身份验证设备证书与私钥X.509 证书TLS / mTLS 握手握手内验证证书链与设备身份加密会话 / 受保护 API会话密钥保护后续通信握手完成Token 路径先建立加密通道,再于通道内认证并签发短期 Token设备凭据预共享密钥等TLS 加密通道先保护认证请求通道内认证验证设备凭据短期 Token + refresh短有效期限制泄漏影响混合路径(主链路)依次使用 mTLS → 短期 Token → 业务 APImTLS 设备认证握手内完成短期 Token通道内签发业务 API受保护调用关键要点证书认证是 TLS / mTLS 握手的一部分,不是握手前后的独立认证请求。Token 认证请求必须先由 TLS 加密通道保护,通过通道内认证后才签发。Token 以短有效期 + refresh 机制限制泄漏影响,传输解密后仍需访问控制与存储保护。实线箭头:请求 / 数据流虚线箭头:握手完成 / 返回主链路:mTLS → 短期 Token → 业务 API图 5-3 设备认证与数据加密流程:证书在 TLS/mTLS 握手内完成认证,Token 在加密通道内认证后签发,混合模式依次使用 mTLS、短期 Token 与业务 API。
图 5-3 设备认证与数据加密流程

从工业软件到 AI 智能体 · 构建面向智能体演进的多协议、云原生、开源工业物联网平台