MQTT、CoAP、AMQP、DDS、HTTP 五家分居不同性格,本节把它们放上一张横向对比表,按"发布订阅 vs 请求响应"与"轻量 vs 企业级"两条轴定位,给出协议选型的快捷判据。
阅读完本节,你应当能够:
前文把物理通道讲了个遍,现在要摔到最高一层"业务语言"。物联网应用层有一群常客,它们性子差别很大。把五家放在一起,最大的分水岭是范式的基因——回看 2.3 的发布订阅与请求响应,几乎立刻能分出阵营:
一句话记法:想一句话发许多人 → MQTT/AMQP;想一问一答 → CoAP/HTTP;想让若干节点各取所需的高频实时数据 → DDS。
| 维度 | MQTT | CoAP | AMQP | DDS | HTTP |
|---|---|---|---|---|---|
| 范式 | 发布订阅 | 请求响应 | 发布订阅/队列 | 实时数据分发 | 请求响应 |
| 底层 | TCP | UDP | TCP | 多变 | TCP |
| 轻量度 | 高 | 高 | 中 | 中 | 轻但重头 |
| 首选场景 | 物联网上报 | 受限设备 | 企业消息 | 实时协同 | 通用 Web / 管理 |
| 带宽占用 | 低 | 极低 | 中 | 中 | 高(头部大) |
这张表只是开胃。真正选型要靠下面五问定案,而不是凭表头"噢 MQTT 厉害"拍板。先把五家的"性格光谱"铺成一张二维定位图,纵轴 lightweight(轻量度)、横轴范式(发布订阅 ↔ 请求响应),你就能在俯视全局里挑落点:

问一:交互是"一呼多应"还是一问一答?
一呼多应、产品要解耦 → 发布订阅(MQTT/AMQP);一问一答、要确认结果 → 请求响应(CoAP/HTTP)。
问二:设备有多受限(内存、功耗、带宽)?
极受限的传感器 → CoAP 极省、MQTT 轻量可扛;资源宽裕的企业应用 → AMQP,功能全但要厚底子。
问三:实时性与可靠性哪头更重要?
要高速实时数据共享与部署机器集群 → DDS;要消息可靠不丢、可回放、企业级事务 → AMQP;要海量小传感可靠上报 → MQTT 的 QoS。
问四:数据要经过云端还是网域内自发?
要上云、要边缘与平台松耦合 → MQTT(broker 上云天然);要局域网内节点间实时分发、不追求集中云 → DDS。
问五:要不要和传统 Web 生态兼容?
要、或要浏览器直连、要做管理页面 → HTTP 躲不掉;纯物联后台、不想背 HTTP 头部 → MQTT/CoAP。
真到落地,若每问都对号入座,多半是这样的大概率组合:
最后给一句冷静帖:不存在"所有物联网都用 MQTT"这种真理。协议是业务语言的搭配,而语言要看场景脸色。一个静态抄表项目用 CoAP 或 MQTT 皆可,一个需要消息回放与事务的交易平台配 AMQP,一个工业产线要毫秒级协同配 DDS。选型的本质是回到 2.3 的范式判断 + 业务约束,而不是听说谁就抄谁。
五问定案听着顺,真选起来还有三处特别容易栽跟头,先给你排雷:
用一个真实过程把五问用起来,比背口诀牢靠。团队先是给室内空气监测的一批十几台设备挑协议,拍脑袋上了 MQTT,理由是"大家都用"。可这些设备 RAM 只有 64 KB、功耗预算极紧、场景又是一问一答取读数——MQTT 的 TCP 连接和保活会话让设备根本没法睡稳,电池三月就没。走五问:范式是请求响应、设备极受限 → 该是 CoAP,改成 CoAP 后设备睡眠深度提升、功耗降了七八成,问题解决。
紧接着又要做园区几千点状态上报,这次不敢再拍脑袋,规规矩矩过五问:范式要解耦一对多、要上云 → MQTT,完美落单,一次选对。
两次对比说明:五问选型不是纸上谈兵,它把你从"听说谁火就抄谁"拉回"按约束对号入座"。同一个团队、同两个项目,用对方法一个选错一个选对,差距全在是否按范式与约束去推,而不是靠直觉。
光看参数表容易飘,不如把"同一件小事"换五种协议各说一遍,体感立刻上桌。现假定一台咖啡机要上报"水温 88℃,注入 200ml":
MQTT → publish 到主题 咖啡A/状态,QoS1,broker 按订阅放给消费方 CoAP → PUT /咖啡A/状态 body={水温,注量},UDP 一问一答,可选确认 AMQP → 放进 咖啡机进线 队列,带事务确认与路由键,多系统各有队列 DDS → 在网域内 publish 主题数据,机器人/看板直接读到这份状态 HTTP → POST /api/咖啡机/状态 JSON,浏览器/管理后台直接看
同样是"一杯咖啡的数据飞出去",五种协议长得完全不同:MQTT 找 broker 挂账,CoAP 直接在 UDP 上问答,AMQP 进企业队列,DDS 走本地总线广播,HTTP 穿一身 Web 标准的行头。这一排下来你就明白——协议不是可选项里的"哪个好",而是"同一句人话翻成哪种专业语言"。挑的是语言,不是答案。业务在哪个生态里、要什么范式与开销,语言就落在哪一格。
五问已建框架,谁做得了海量上报的 boss?下一节请出 MQTT——物联网发布订阅的首选。