开发者学堂课程【嵌入式之 RFID 开发与应用2020版:MQTT 背景介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/665/detail/11171
MQTT 背景介绍
本节课开始学习物联网中很重要的概念 MQTT。分为五个部分学习,MQTT 介绍;MQTT 协议,建立在 TCPIP 协议之上,学习应用层的协议和平常的协议有什么区别;MQTT 应用,在 linux 系统里搭建 mqtt 环境,通过常用的指令,来对 mqtt 通信过程进行演示;mosquitto 移植,移植分为向 pc 端移植和目标平台 mcu 移植以及 mosquitto 应用编程,针对移植过后的代码进行二次开发或定制化功能开发。
一、MQTT 介绍
MQTT 在物联网领域广泛使用,是由 IBM 公司开发,不是新协议,90 年代的产物。现在兴起是因为物联网到了爆发的时代,过去的物联网局限于各行各业,不够成熟,现在基础设施相对完善,物联网生态成熟。
1.产生背景
MQTT 的产生背景是 90 年代 IBM 公司接了给石油天然气公司做管道检测的项目,这个管道需要进行无人监控,监控是否出现问题。管道很长,关键是管道经过很多区域,有些区域人烟稀少,而且可能整个通信过程中有人居住的地方会通过基站完成,但是人烟稀少的地方没有基站,只能通过卫星来控制。通过卫星通信,就会存在延迟高,当时卫星数量少,进行卫星轨道切换过程存在断网问题,会导致它网络不稳定。如果有地面基站,数据通信比较正常,使用普通通信协议就可。还有就是卫星通信比基站移动通信费用高。所以是在这样的背景下研发出。
2.MQTT 解决问题:
(1)服务器必须要能够实现成千上万客户端的接入,由于管道传输过程路程远,每隔一段距离就需要安插数据采集点,采集点非常庞大。
(2)单次数据量小,但不能出错
(3)必须能够适应高延迟,偶尔断网等通信不可靠的风险
(4)根据数据的重要程度和特性设置不同等级的服务质量(session)
3.MQTT(全称消息队列遥测传输)特性:
(1)是 IBM 推出的一种针对移动终端设备的基于 TCP/IP 的发布/订阅协议
(2)可以连接大量的远程传感器和控制设备,MQTT 的特点是可以保持长连接,具有一定的实时性。执行机构可以选择 MQTT,采集系统不需要很强的实时性,就不采用 mqtt。控制单元实时性和可靠性需要很高。
(3)云端向设备端发送消息,设备端可以在最短的时间内接收到并作出响应(实时性)
(4)MQTT 更适合需要实时控制的场合,尤其适合执行器
(5)要保持长连接,那么就要时不时地发送心跳包,这就不会省电(因为不断数据来往)
(6)低功耗的场合并不适合 MQTT
(7)MQTT 的长连接需要建立在 TCP 的基础上,TCP 协议的复杂性决定了对设备的要求相比 UDP 更高一些
4.MQTT 协议特性:
(1)使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
(2)根据重要程度分级,有三种消息发布服务质量( QoS0、 QoS1、 QoS2 ) :
①“至多一次”( QoS0 ),消息发布完全依赖底层 TCP/IP 网络,会发生消息丢失或重复,这一级别可用于对采集数据要求不严格的情况(如果 tcpip 足够可靠,它把数据发送出去,到底对方能否接受,至少 mqtt 协议不管)
②“至少一次”,确保消息到达,但消息可能会重复发生( mqt 应用上层协议做出应答,必须收到消息才停止)
③“只有一次”(级别最高,通常用于安全性高的,会有多次来回沟通),确保消息只到达一次,这一级别可用于要求严格如涉及计费系统的情况,消息重复或丢失都是不允许的。
(3)小型传输,开销很小(固定长度的头部是 2 字书),协议交换最小化,以降低网络流量
(4)使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制
(5)允许用户动态创建主题,因为整个发布是以主题为订阅机制模式,并且主题可以自定义。零运维成本
(6)把低带宽、高延迟、不稳定的网络等因素考虑在内(使在不可靠网络中实现可靠传输)
(7)假设数据不可知,不强求传输数据的类型与格式,保持灵活性
(8)官网: http://mqtt. org/(需要详细了解的途径)
后续内容会详细介绍如何安装、下载。