MQTT系列—(6)MQTT 服务质量等级(QoS)详解 - 指南

目录

一、QoS 的概念

二、QoS 等级对比总览

三、QoS 传递过程详解

QoS 0 — 最多一次(At most once)

QoS 1 — 至少一次(At least once)

QoS 2 — 仅一次(Exactly once)

四、QoS 协议层报文说明

五、QoS 匹配规则(发布者与订阅者)

六、QoS 与性能对比

七、QoS 选择使用建议(最佳实践)

八、智能锁系统中推荐 QoS 策略示例


一、QoS 的概念

QoS(Quality of Service)用于定义 消息从发布者到订阅者传递的可靠性等级。 不同等级代表不同的消息传递保证。

MQTT 支持 三种 QoS 等级:0、1、2,每一级别都在可靠性与性能之间做取舍。

为什么服务质量很重要?

QoS 是 MQTT 协议的⼀项关键功能。QoS 使客⼾端能够选择与其⽹络可靠性和应⽤程序逻辑相匹 配的服务级别。由于 MQTT 管理消息的重传并保证消息的送达(即使底层传输不可靠),QoS 使 得在不可靠⽹络中的通信变得更容易。


二、QoS 等级对比总览

等级名称含义是否可能丢消息是否可能重复网络开销典型场景
QoS 0最多一次 (At most once)尽力而为传递,不确认是否到达✅ 可能❌ 不重复最低传感器上报频繁、非关键数据
QoS 1至少一次 (At least once)确保消息至少到达一次❌ 不丢失✅ 可能重复中等命令、告警消息
QoS 2仅一次 (Exactly once)确保消息到达且仅到达一次❌ 不丢失❌ 不重复最高金融交易、计费系统

三、QoS 传递过程详解

QoS 0 — 最多一次(At most once)

最低 QoS 级别为 0。此服务级别保证尽⼒送达。不保证送达。接收⽅⽆需确认收到消息,发送⽅也不会存储和重新传输该消息。QoS 级别 0 通常被称为“即发即弃”,其提供的保证与底层 TCP 协议相同。

特点

  • 无确认机制。

  • 发布后立即发送,客户端或网络异常时可能丢失。

  • 最快,但不可靠。

消息流程:

Publisher ---- PUBLISH(QoS=0) ---> Broker ---> Subscriber

应用场景:

  • 设备上传频繁的温湿度、心跳、传感器数据;

  • 对丢失个别数据包不敏感的监控系统。

示例:

Topic: smartlock/device001/telemetry
QoS: 0
说明: 设备每10秒上报一次电池电量,不要求100%可靠。

QoS 1 — 至少一次(At least once)

QoS 级别 1 保证消息⾄少投递给接收⽅⼀次。发送⽅会存储该消息,直到收到接收⽅发送的 PUBACK 数据包确认已收到该消息为⽌。⼀条消息可能会被发送或投递多次。

特点

  • 通过 PUBACK 确认机制保证消息至少到达一次。

  • 若在确认前重发,会出现重复消息。

  • 在可靠性与性能之间取得平衡。

消息流程:

Publisher -- PUBLISH(QoS=1) --> Broker
Publisher <-- PUBACK -------- Broker
Broker
posted @ 2025-11-24 20:10  yangykaifa  阅读(75)  评论(0)    收藏  举报