1.2 四层架构与数据流动路径 本节摘要:把"感知层、网络层、平台层、应用层"四层压实,并沿一条温度采集数据从传感器走到看板的完整路径,逐一指出每一层上发生的事故点与协议接口。承接 1.1 的演进脉络,通往 1.3 的四大约束,以及第 2 章的协议选型。 架构图纸画得再漂亮,不如让一条真实数据走一遍。本节的思路很直白:不看层的定义背了多久,要看数据在层与层之间流经哪些检查点。我们把四个层当成四道闸口,跟着一枚贴在冷链车厢里的温度计走吧。 一、四层各自负责什么 老话说分层是为了"各管一段、出了问题知道怪谁"。物联网的四层各有明确分工: 感知层:物理世界与数字世界的翻译官。温度计、湿度计、霍尔开关、步进电机都在这层,它只负责"量得准、动得对",不关心数据怎么长途跋涉。 网络层:数据的运输队。
本节摘要:把"感知层、网络层、平台层、应用层"四层压实,并沿一条温度采集数据从传感器走到看板的完整路径,逐一指出每一层上发生的事故点与协议接口。承接 1.1 的演进脉络,通往 1.3 的四大约束,以及第 2 章的协议选型。
架构图纸画得再漂亮,不如让一条真实数据走一遍。本节的思路很直白:不看层的定义背了多久,要看数据在层与层之间流经哪些检查点。我们把四个层当成四道闸口,跟着一枚贴在冷链车厢里的温度计走吧。
老话说分层是为了"各管一段、出了问题知道怪谁"。物联网的四层各有明确分工:
下面这张接力图把"采集、承载、加工、呈现"四棒串起来,并标注了每一棒的典型协议接口:
第一步,采集(感知层)。温度计内部做模数转换,攒齐一个窗口的数据再统一上报,既省射频唤醒次数,也降低丢包后的重传成本。第二步,承载(网络层)。冷藏车厢在移动中,用 LoRaWAN 上报占比过高会挤占链路——数据帧很克制,仅仅携带设备号、读数、时间戳三要素,头部比 HTTP 动不动几百字节的报文省太多。第三步,加工(平台层)。消息中间件先查时间戳是不是旧的、同一条数据有没有重复投递,去重后落进时序库。第四步,消费(应用层)。看板订阅了对应主题,数据一到就刷新曲线,超过阈值马上推告警,并把"加压升温"指令经下行窗口送回车厢。
下面这张分层透视把每一层可能埋雷的位置标出来:

每层都有一个"最容易出事的检测点":感知层怕读错单位(把华氏当摄氏),网络层怕丢帧,平台层怕重复与乱序,应用层怕丢了设备标识导致数据对不上号。架构设计的意义,就是把每个检查点都纳入协议约定。
纸上谈兵不如排一次雷。假设看板上突然冒出一串 32 摄氏度的"异常高温",排查顺序应当遵沿途检测点:
⚠️ 常见坑:多数"数据异常"并非故障,而是握手两端的单位、量纲、时区约定不一致。先把 1.2 的检测点过一遍,比急着推倒重连链路高效得多。
很多初学者把四层背成四个名词,却在"数据上一层时到底靠什么交接"上卡壳。这一行的答案恰恰是后三章的主角。我们把一条温度上报的路再拆细一点,标出每一棒交接时用到的具体协议与它的职责:
| 交接点 | 谁到谁 | 常用协议 | 这一棒主要解决的 | 对应章节 |
|---|---|---|---|---|
| 感知→网络 | 传感器到网关 | LoRaWAN / BLE / Zigbee | 近距或广域、省电、可靠送达 | 第 5 章 |
| 网络→平台 | 网关到 Broker | MQTT / CoAP | 主题路由、QoS、消息中间件 | 第 3、4 章 |
| 平台→应用 | Broker 到看板 | MQTT 订阅 / WebSocket | 实时推送、过滤、分发 | 第 3 章 |
| 应用→设备下行 | 看板回终端 | 同一套反向 | 指令唤醒、确认回执 | 第 5 章 |
看这张交接表你会发现一个关键事实:同一套 MQTT / CoAP 往往同时承担上行汇报与下行指令两条链路,区别只在主题归属与 QoS 等级的设置上。架构设计的第一反应不该是"换一套协议跑下行",而是"在现有协议里把下行主题与确认机制补全"。这个判断能帮你省下大量无谓的适配工作。
只看图会有"好像懂了"的错觉。要真正把四层走顺,值得动手用测试命令把每一棒单独验一遍。下面是一套不涉及具体业务、纯验证"路是否通"的探针方式(以常见的 mosquitto 为例,Windows/Linux 均有对应安装):
# 感知层交付到网关(以 LoRaWAN 网关为例,通过串口/回传脚本落一条记录) # 假设网关把上行帧解析后写入本地文件 echo 'sensor_12 25.6 1720000000' >> /data/inbound.log # 网络层桥接到平台:由网关侧把记录发布到 MQTT 主题 mosquitto_pub -h broker.internal -t factory_a/temperature/sensor_12/k3 \ -m '{"metric":"temp","value":25.6,"unit":"celsius"}' # 平台层消费:订阅同一主题,确认一条数据到达 mosquitto_sub -h broker.internal -t 'factory_a/#'
按"先网关本地文件有记录 → 再主题被发布 → 最后订阅端能收到"的顺序逐步建桩,哪一步没通就聚焦在哪一层排查,把"四层协作"抽象成一个可逐步验证的过程。这样即使你不会写完整业务代码,也能配齐一套手工冒烟路径,为第 6 章讲网关桥接打下实操基础。
下一节把这里点到的四个检测点升级为"连接、安全、互操作、能耗"四大约束,讨论它们如何反向塑造协议设计。