MQTT,基于TCP/IP协议的一种传输模式
MQTT传输模式 MQTT(Message Queuing Telemetry Transport)是一种基于发布-订阅模型的消息传递协议,定义为「Message Queuing Telemetry Transport」,是一种基于TCP/IP协议族的应用层协议。MQTT协议专门针对硬件性能低下和网络状况不稳定的场景设计,使得它在物联网和移动应用等受限场景得到广泛应用。 架构设计 MQTT协议采用发布-订阅模型,使得消息发布者和消息订阅者互相解耦,当一个客户端断线时,整个系统可以继续工作。这使得MQTT在网络质量的场景下更具优势。 消息大小 MQTT协议具有非常小的消息头,这使得MQTT协议更适应低带宽网络环境。 交付能力 MQTT协议提供了更可靠的消息交付保证,它定义了三种消息发布服务质量(QoS):“最多发一次-不保证消息交付”、“最少发一次-保证消息交付,可能出现重复”和“正好发一次-保证没有重复的消息交付”。其中,“正好一次”用于计费系统和IM App推送中,能确保用户收到且只收到一次。 特性 MQTT提供了遗嘱消息和保留消息的特性。遗嘱消息使得客户端断开连接时,所有订阅的客户端都能收到来自代理的消息;保留消息意味着新订阅的客户端可以立即获得保留的消息。这使得MQTT协议更适合「间歇性连接的场景。」 QoS发布服务质量等级 MQTT协议提供了三种QoS等级:“最多发一次”、“最少发一次”和“正好发一次”。 * QoS 0:最多发一次(不保证消息交付) * QoS 1:最少发一次(保证消息交付,可能出现重复) * QoS 2:正好发一次(保证没有重复的消息交付) 工作模型 MQTT协议的工作模型主要有三种角色:「publisher & subscriber & subscriber」。在QoS 0等级的PUBLISH消息中不包含包唯一标识,发送者不考虑消息交付结果,接收者也不发送响应。接收者最多只能收到一次消息,也有可能一次也收不到。 在QoS 1等级的PUBLISH消息中包含包唯一标识,发送方会一直将该消息当作“未确认”的消息,直到收到对应的PUBACK确认消息。在QoS 2等级的PUBLISH消息中包含包唯一标识,发送者会一直将该消息当作“未确认”的消息,知道收到对应的PUBCOMP确认消息。 MQTT协议是一种基于发布-订阅模型的消息传递协议,具有小消息头、可靠的消息交付保证和适应低带宽网络环境等特点,广泛应用于物联网和移动应用等受限场景。