MQTT协议


什么是物联网

物联网一词在2009年由Kevin Ashton首次使用。物联网指的是通过互联网来连接物理设备。物理设备可以相互之间通过互联网交换数据或由其他设备控制。物联网设备可以是冰箱、交通信号灯、工业控制系统等电子装置或电气设备。最常见的用例之一是传感器数据的收集,传输,分析和显示。工作人员可利用物联网数据实现远程监控台,或者对超过阈值的数据设置警报。

什么是MQTT

MQTT是一种轻量级消息传输协议,它为物联网设备提供了一种简单的方法来传输数据信息。由于MQTT占用网络资源小,且适用于远程信息传输,MQTT在物联网(IoT)领域起着重要作用。

MQTT协议的第一版由Andy Stanford-Clark(IBM)和Arlen Nipper(Cirrus Link)于1999年建立的。该协议最早应用于监控穿越沙漠的石油管道。因为设备是通过卫星链路连接的,所以当时MQTT所运行的网络带宽很小,且十分不稳定。而MQTT协议的设计目标也正是为了适用于这类传输距离远,带宽小,不稳定的网络环境。

MQTT运行机制

MQTT协议的中央通信中枢是MQTT服务器,它负责发送方和接收方间的信息通讯。每个向MQTT服务器发布消息的客户端都会在发布消息中包含一个主题。每个想要接收该消息的客户端都会订阅该主题。MQTT服务器在收到客户端向主题发布的信息后,会将信息发送给所有订阅该主题的客户端。这种体系结构可实现高度可扩展的解决方案,而数据生产者和数据使用者之间没有依赖关系。

当MQTT客户端订阅了某一主题后,服务器一旦接收到该主题的新信息,就会将新信息推送给客户端。因此,每个MQTT客户端在工作过程中,都会与MQTT服务器保持TCP连接。如果此连接在任何情况下被中断,MQTT服务器将会缓冲消息,并在MQTT客户端重新联机时将消息发送给客户端。

MQTT主题

如前所述,MQTT协议中用于消息分发的中心概念是”主题”。”主题”是一个字符串,可以具有多层次结构级别,并用斜杠“/”分隔。以下是一个主题示例。

当MQTT客户端订阅了以上主题后,每当有MQTT客户端向该主题发布信息,MQTT服务器将会把该信息发布到订阅了该主题的客户端。