MQTT 通信特点 | 学习笔记

简介: 快速学习 MQTT 通信特点

开发者学堂课程【嵌入式之 RFID 开发与应用2020版:MQTT 通信特点】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/665/detail/11172


MQTT 通信特点

内容简介

一、MQTT 协议的中心

二、MQTT 主题模式

三、MQTT 总结分析

 

本节内容我们学习 MQTT 的通信特点

 

一、MQTT 协议的中心

从功能上分类 MQTT 协议的中心是 MQTT 服务器或代理(broker)

image.png

首先是 broker,可以称作 MQTT 服务器或 hub,用来连接各个终端或者客户端。第二是 publish,指数据的发布端,把信息发给指定服务器,再者是 subscribe 是订阅方,向服务器订阅发布的信息,主题和内容,当然订阅方也可以发布信息,数据的发布端也可以订阅信息。所以服务器就类似于中介,完成了所有有需求客户端数据的来往,交互,发布。

基于上述,用户可以使用 MQTT 构建一个传感器网络,以服务器为中心,发布订阅为客户端,可以很方便的完成传感网络的建立,而且传感网络可以很庞大,因为本身服务器的特点就是实现成千上万客户端的接入,其中各种传感器都能够以其传感器独有的消息形式发布传感器值即发送信息的格式自己来约定,比如哪个表示产品,名称是什么,终端设备名是什么等,订阅程序能够订阅不同的消息,以据此采取措施,MQTT 代理将处理从发布程序到订阅程序的转发消息。

MQTT 服务器除了收集转发数据,还可以进行数据处理和存储,例如,实时存储共享单车车辆运行位置、电池用量、状态信息等数据,以及对总体的车辆数据进行计算和统筹管理,甚至为一些聊天工具提供平

台服务。

 

二、MQTT 主题模式

整个通信过程除了刚才学习的三个模块,另外通信是以主题为模式,即发布的任何信息都必须要有主题,就像新闻有标题,然后有正文。

1.MQTH 是通过主题对消息进行分类的

2.主题本质上就是一个 UTF-8 的字符串(主题和内容都是)

3.主题可以通过反斜杠表示多个层级关系(类似于文件夹)

4.主题并不需要创建,直接使用就是了

5.主题还可以通过通配符进行过滤(支持层级管理的过滤方式)

6.+可以过滤一个层级

7.*只能出现在主题最后表示过滤任意级别的层级

举个例子:

➢building -b/floor- 5: 代表 B 楼 5 层的设备

➢+/floor-5: 代表任何一个楼的 5 层的设备

➢building-b/*: 代表 B 楼所有的设备

表示园区有很多栋楼,有 a 栋,b 栋等,每一栋都有很多层,floor1,floor2,floor3 等,每一层都有传感器比如空调,烟雾传感器。+ 表示可以过滤一个层级,如果订阅 building -b/floor- 5 表示 B 楼 5 层的传感器,则 +/floor-5 代表任何一个楼的 5 层的设备,也可以使用 * 过滤,要注意它只能在主题结尾处,代表过滤剩余层级关系,比如 building-b/* 表示 b 栋所有传感器都过滤出。过滤这种方式不适用于发布信息,主要用于订阅主题,就是获取信息的时候。

 

三、MQTT 总结分析

1.MQTT中有 3 个角色

➢发布者 Publisher

➢订阅者 Subscriber

➢代理 Broker(服务器)

其实三者之间,把发布者和订阅者称为客户端,服务端可以发布信息,服务端可以针对某个主题发布订阅。

2.MQTT 这种结构替代了传统的客户端/服务器模型,可以实现以下解耦

(1)空间解耦,发布者和订阅者不需要知道对方。

(2)时间解耦,发布者和订阅者不需要同时运行。

(离线消息服务器会保存)

(3)同步解耦,发布和接收都是异步通讯,不需要同时在,无需

停止任何处理。

以上就是 mqtt 的一些特点,这些特点也符合网络环境复杂,很好的结合了物联网,mqtt 在现时代得到了很好的运用。

相关实践学习
消息队列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月前
|
消息中间件 Java 中间件
详解rocketMq通信模块&升级构想(上)
详解rocketMq通信模块&升级构想(上)
199 0
|
3月前
|
存储 消息中间件 安全
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
【10月更文挑战第9天】本文介绍了如何利用JUC组件实现Java服务与硬件通过MQTT的同步通信(RRPC)。通过模拟MQTT通信流程,使用`LinkedBlockingQueue`作为消息队列,详细讲解了消息发送、接收及响应的同步处理机制,包括任务超时处理和内存泄漏的预防措施。文中还提供了具体的类设计和方法实现,帮助理解同步通信的内部工作原理。
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
|
4月前
|
消息中间件 Kafka 数据安全/隐私保护
RabbitMQ异步通信详解
RabbitMQ异步通信详解
117 16
|
5月前
|
物联网 C# Windows
看看如何使用 C# 代码让 MQTT 进行完美通信
看看如何使用 C# 代码让 MQTT 进行完美通信
698 0
|
5月前
|
物联网 网络性能优化 Python
"掌握MQTT协议,开启物联网通信新篇章——揭秘轻量级消息传输背后的力量!"
【8月更文挑战第21天】MQTT是一种轻量级的消息传输协议,以其低功耗、低带宽的特点在物联网和移动应用领域广泛应用。基于发布/订阅模型,MQTT支持三种服务质量级别,非常适合受限网络环境。本文详细阐述了MQTT的工作原理及特点,并提供了使用Python `paho-mqtt`库实现的发布与订阅示例代码,帮助读者快速掌握MQTT的应用技巧。
102 0
|
8月前
|
消息中间件 存储 JSON
服务器的异步通信——RabbitMQ2
服务器的异步通信——RabbitMQ
63 0
|
8月前
|
消息中间件 缓存 中间件
服务器的异步通信——RabbitMQ1
服务器的异步通信——RabbitMQ
65 0
|
8月前
|
消息中间件 存储 算法
RocketMQ学习笔记
RocketMQ学习笔记
173 0
|
8月前
|
传感器 网络协议 中间件
Mqtt学习笔记--交叉编译移植(1)
Mqtt学习笔记--交叉编译移植(1)
155 0