MQTT 背景介绍 | 学习笔记

简介: 快速学习 MQTT 背景介绍

开发者学堂课程【嵌入式之 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/(需要详细了解的途径)

image.png

后续内容会详细介绍如何安装、下载。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
8月前
|
消息中间件 存储 算法
RocketMQ学习笔记
RocketMQ学习笔记
173 0
|
8月前
|
传感器 网络协议 中间件
Mqtt学习笔记--交叉编译移植(1)
Mqtt学习笔记--交叉编译移植(1)
157 0
|
消息中间件 存储 缓存
RibbitMQ学习笔记之MQ练习(三)
RibbitMQ学习笔记之MQ练习
56 0
|
消息中间件 网络协议 数据中心
RabbmitMQ学习笔记-RabbitMQ集群架构模式
RabbmitMQ学习笔记-RabbitMQ集群架构模式
99 0
|
消息中间件 Java
RabbmitMQ学习笔记-RabbitMQ与SpringBoot2.0整合实战
在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。
122 0
|
消息中间件 中间件
RibbitMQ学习笔记之MQ发布确认
RibbitMQ学习笔记之MQ发布确认
62 0
|
消息中间件 网络协议
RibbitMQ学习笔记之MQ练习(二)
RibbitMQ学习笔记之MQ练习
42 0
|
消息中间件 网络协议 Java
RibbitMQ学习笔记之MQ练习(一)
RibbitMQ学习笔记之MQ练习
90 0
|
消息中间件 存储 网络协议
RibbitMQ学习笔记之MQ 的相关概念
RibbitMQ学习笔记之MQ 的相关概念
91 0
|
消息中间件 存储 缓存
RocketMQ 5.0 可观测能力升级: Tracing 链路追踪介绍|学习笔记
快速学习 RocketMQ 5.0 可观测能力升级: Tracing 链路追踪介绍
848 0
RocketMQ 5.0 可观测能力升级: Tracing 链路追踪介绍|学习笔记
下一篇
开通oss服务