mqtt通俗理解
MQTT是机器对机器(M2M)/物联网(IoT)连接协议。它被设计为一个极其轻量级的发布/订阅消息传输协议。对于需要较小代码占用空间和/或网络带宽非常宝贵的远程连接非常有用是专为受限设备和低带宽、高延迟或不可靠的网络而设计。这些原则也使该协议成为新兴的“机器到机器”(M2M)或物联网(IoT)世界的连接设备以及带宽和电池功率非常高的移动应用的理想选择。例如它已被用于通过卫星链路与代理通信的传感器、与医疗服务提供者的拨号连接以及一系列家庭自动化和小型设备场景。它也是移动应用的理想选择因为它体积小功耗低数据包最小并且可以有效地将信息分配给一个或多个接收器。
MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等领域。
一种程序或设备充当发布发布消息的客户端和已订阅的客户端之间的中介。
客户机和服务器之间的有状态交互。有些会话只持续网络连接的时间有些会话可以跨越客户端和服务器之间的多个连续网络连接。
网络上搜索MQTT协议会出现太多的解释这里就不做官方标准释义的复制了。这一节我们从实战理解角度通俗的将MQTT协议的作用及实现原理说一下旨在可以快速理解MQTT协议。所以可能会出现很多看似不标准的解释但是更容易理解MQTT的内涵对MQTT十分精通者请忽略此文。
在物联网项目中经常出现的要求是“有限环境”。什么意思呢通俗说就是网络可能不太稳定带宽也可能很小网速也比较低硬件MCU性能也很低要求在这种情况下也能可靠联网传输信息。看到这里大家就会想到我前面提到的短指令中说到的问题了不是我们认为开发容易好维护就可以的首先要满足工作环境的需要项目才可以成功落地否则都是无用功。
在N年前最初尝试做物联网项目的时候很多用HTTP协议做硬件设备信息的上报利用返回结果控制硬件设备执行的项目其实现在也有人还在使用。这样硬件设备信息上报的即时性没有问题但经过服务端发送控制指令去操控硬件设备的时候及时性就很难满足。因为HTTP是单方向主动请求服务器有请求才有返回返回后就断开了。要想服务端与硬件设备再有联系只能等硬件设备通过HTTP的下一个请求上来才可以也就是服务端不能主动推送消息给硬件设备。看到这里可能会有很多人会说出N多种基于HTTP服务端推送的方案但是很抱歉在物联网环境中都不适合。因为无论是轮询还是长连接用HTTP维持所消耗的网络资源和硬件性能要求对项目来说都是高昂的必须考虑项目落地要求的“有限环境”。对于网络不稳定和带宽低比如移动网络、信号弱的区域等的环境极大可能造成项目运行失败这是不能接受的结果。
1、网络开销小消息头最小只有2字