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一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
5天前
|
消息中间件 Java 中间件
详解rocketMq通信模块&升级构想(上)
详解rocketMq通信模块&升级构想(上)
167 0
|
5天前
|
消息中间件 Java 应用服务中间件
详解rocketMq通信模块&升级构想(下)
详解rocketMq通信模块&升级构想(下)
400 0
详解rocketMq通信模块&升级构想(下)
|
8月前
|
存储 网络协议 物联网
Android集成MQTT教程:实现高效通信和实时消息传输
Android集成MQTT教程:实现高效通信和实时消息传输
834 0
|
9月前
|
物联网 Java Linux
Linux安装与配置Eclipse Paho库:实现MQTT通信
Eclipse Paho是一个开源的MQTT(Message Queuing Telemetry Transport)实现,提供了多种编程语言的客户端库,包括C、C++、Java、Python等。在Linux系统中,通过安装和配置Eclipse Paho库,我们可以方便地实现MQTT通信功能。本文将详细介绍在Linux系统中安装和配置Eclipse Paho库的步骤,以便于开发者在物联网项目中使用MQTT协议进行通信。
739 0
|
6月前
|
存储 传感器 物联网
如何在Docker中配置Mosquitto MQTT代理,以便在容器化环境中运行和管理MQTT通信
如何在Docker中配置Mosquitto MQTT代理,以便在容器化环境中运行和管理MQTT通信
336 0
如何在Docker中配置Mosquitto MQTT代理,以便在容器化环境中运行和管理MQTT通信
|
9月前
|
传感器 网络协议 物联网
Linux MQTT通信:实现轻量级物联网传输协议
MQTT(Message Queuing Telemetry Transport)是一种轻量级的物联网传输协议,专门设计用于低带宽、不稳定网络环境下的传感器和物联网设备通信。本文将深入探讨Linux环境下如何实现MQTT通信,介绍MQTT协议的基本原理、常用MQTT库以及如何在Linux系统中编写MQTT客户端和服务器端程序。
474 0
|
5天前
|
消息中间件 存储 算法
RocketMQ学习笔记
RocketMQ学习笔记
76 0
|
5天前
|
传感器 网络协议 中间件
Mqtt学习笔记--交叉编译移植(1)
Mqtt学习笔记--交叉编译移植(1)
23 0
|
5天前
|
消息中间件 缓存 API
|
7月前
|
消息中间件 中间件 Kafka
RocketMQ源码(一)RocketMQ消息生产及消费通信链路源码分析
**RocketMQ**的核心架构主要分为Broker、Producer、Consumer,通过阅读源码看到他们之间是通过Netty来通信的 ,具体来说Broker端是**Netty服务器**用来负责与客户端的连接请求处理,而Producer/Consumer端是**Netty客户端**用来负责与Netty服务器的通信及请求响应处理。
160 1