MQTT协议

一、MQTT(V3.1.1) and Mosquitto

本节主要学习MQTT这种轻量化消息传输系统如何工作,学习MQTT基本的术语和它的模式。

  • 理解MQTT协议使用的场景
  • 订阅和发布的工作模式
  • 信息过滤
  • MQTT基本概念
  • 理解MQTT:客户端、服务端、代理和连接
  • 发布消息
  • 订阅消息
  • 取消订阅主题
  • 当创建主题时,最好的实践
  • 理解通配符
  • 学习不同服务级别的质量(Qos)
  • 至少完成一次交付
  • 仅完成一次交付

1.1 MQTT协议适用的场景

假如我们有很多不同的设备交换数据,这些设备需要向其他设备请求数据,并且接受请求的设备必须响应所需求的数据。请求数据的设备必须处理响应所需数据的设备接收到的数据。

这些设备就是IoT(Internet of Things),它有不同的传感器,希望这些和传感器都可以完成数据的发送与接收。

我们希望数据可以通过互联网完成接近实时的收发,但是我们会面对一些问题,比如我们的WIFI是不稳定高延迟的环境的网络问题,一些设备是低电压,他们大多都是由电池供电,另外,我们必须小心网络带宽的使用,因为有些设备使用计量连接。

我们可以使用HTTP请求,在不同的设备间建立一个发布-订阅的模型,完成数据的交互。然而,有一种协议被专门设计为比HTTP 1.1协议更轻,并且在涉及到不可靠的网络和连接时断时续时工作得更好。遥测传输(MQTT)更适合这种情况,在这种情况下,许多设备必须通过Internet在它们之间近乎实时地交换数据,而且我们需要尽可能减少网络带宽的消耗。

MQTT协议是一种Machine-to-Machine (M2M)和物联网连接协议。MQTT是一种轻量级消息传递协议,它使用基于代理的发布-订阅机制,并运行在传输控制协议/ Internet协议(TCP/IP)之上。如下图:

MQTT协议

总结,MQTT是被设计成一个适用支持物联网的以下场景:M2M、嵌入式、手机应用等

  • 轻量级,使得在没有巨大开销的情况下传输大量数据成为可能
  • 在大容量中分发最小的数据包
  • 支持消息的异步双向低延迟推送传递的面向事件范式
  • 轻松地将数据从一个客户端发送到多个客户端
  • 使得事件发生时,监听成为可能
  • 支持始终连接和偶尔连接模型
  • 在不稳定连接、不可信网路下发布信息并且提供可靠的传输通过
  • 适用于电池供电的设备或需要低功耗的设备
  • 提供接近实施的信息传输
  • 提供对所有数据安全和私有。
  • 能够提供必要的可伸缩性,以便将数据分发给数十万个客户机