0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

哪个版本的MQTT协议更好用?

亿佰特物联网应用专家 2023-03-17 10:06 次阅读

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是ISO标准下基于发布/订阅方式的轻量级消息协议,其通常应用于物联网智能家居等设备和应用程序之间的通信de04239c-c35f-11ed-ad0d-dac502259ad0.png

MQTT协议由发布者/订阅者,消息代理Broker两部分组成,如图1所示,发布者负责消息推送至Broker,Broker将消息推送至匹配的订阅者。发布者(Publisher):设备通过主题将消息发送给订阅者。订阅者(Subscriber):作为终端设备,订阅者通过主题从发布者处接收消息。消息代理(Broker):服务器作为中央枢纽,负责发布者和订阅者之间的组织级通信。
MQTT有两个主要版本:v3 和 v5。这两个版本原理基本相同,但它们之间存在一些关键的差异,下面将从以下几个方面来介绍它们之间的区别。

01

协议格式

MQTT v5 新增了一个 Property字段,这个字段使MQTT v5 可以支持更多的新特性。而在MQTT v3 中,MQTT没有任何可以拓展的地方,限制了MQTT拓展功能的可能性。

02

主题别名

主题是MQTT中的核心概念,它用于标识消息的内容和意图。在MQTT v3 中,主题只是一个简单的字符串,其结构是由一系列以斜杠分隔的单词组成的。例如,一个 MQTT v3 主题可以是 sensors/temperature/room1,其中sensors是顶级主题,temperature是其子主题,room1是子主题下的一个特定设备。de874bf0-c35f-11ed-ad0d-dac502259ad0.png

然而,在 MQTT v5 中,主题的结构得到了扩展,新增了一些更高级的功能。具体来说,MQTT v5 引入了一个名为主题别名的新概念,它允许客户端将主题字符串映射到预定义的主题 ID,从而减少网络流量和消息大小。主题别名由客户端和服务端各自维护,且生命周期和作用范围仅限于当前连接。deca6638-c35f-11ed-ad0d-dac502259ad0.png

针对某个主题,首次发布时设置别名,之后就可以使用主题别名发布。这使得客户端能够在发送消息时只发送主题ID,而不必每次都发送完整的主题字符串。这对于 IoT 设备和网络带宽有限的环境来说非常有用。

03

订阅操作

MQTT v5 引入了一种名为共享订阅的新订阅类型。可以通过其他标志和过滤功能,来实现更灵活的订阅。如下图所示,共享订阅允许多个客户端共享一个订阅,并按照一定规则进行分配。这种订阅类型对于订阅高负载主题非常有用,因为它可以平衡订阅请求,减轻单个客户端的负载压力。
df0f5f4a-c35f-11ed-ad0d-dac502259ad0.png

另外MQTT v5 增加了订阅选项的概念,可以指定订阅选项,例如QoS等级、Retain As Publish、Retain Handling、消息的生命周期等,来对订阅行为进行更加精细地控制。

04

遗嘱消息

遗嘱消息是MQTT为那些可能出现意外断线的设备提供的将遗嘱优雅地发送给第三方的能力。在 CONNECT 报文的 Payload 中,部分字段发生了变化,其中Will Message(遗嘱消息)变成了Will Payload(遗嘱载荷)。df481ee8-c35f-11ed-ad0d-dac502259ad0.png

Will Properties(遗嘱属性)是MQTT v5新增的一个字段,不同类型的报文有着不同的属性,例如CONNECT报文有最大报文长度、会话过期间隔等属性,SUBSCRIBE报文则有订阅标识符等属性。而且MQTT v5较v3相比,遗嘱消息的内容变得更加灵活,可以包含任何主题和任何消息内容。

05

错误处理

MQTT v5支持更加详细的错误处理机制,可以通过错误码和错误原因来定位和解决问题。同时,MQTT v5还引入了一个新的控制报文——Disconnect报文,可以帮助客户端和服务器更好地处理错误情况。

06

流量控制

MQTT v5 在 v3 版本基础上引入了一些新的机制用于流量控制,为了更好地控制消息的传输和处理,避免因为消息传输速度过快导致的网络拥塞和负载过高。
最大报文大小限制(Maximum Packet Size):MQTT v5 允许客户端和服务端在握手时协商最大报文大小。如下图所示,这个最大报文大小限制可以用于控制客户端和服务端之间传输的最大消息大小,防止因为传输的消息过大导致网络拥塞和负载过高。df75ba92-c35f-11ed-ad0d-dac502259ad0.png

消息队列(Message Queue):当服务端发送的消息超出了客户端处理的速度时,服务端可以将消息存储到消息队列中,等待客户端处理。MQTT v5 定义了消息队列的队列大小和超时时间,以控制消息队列的大小和生命周期。

07

性能效率

MQTT v5 相对于 MQTT v3 来说,可以更好地处理大规模的数据传输,提高了通信的效率和性能。例如MQTT v5 支持批量发布(Batch Publish)和预取(Message Prefetch)等功能,可以大大减少MQTT通信时的开销。

总之,相比于MQTT v3,MQTT v5 具有更多的新功能和安全性。但是,需要注意的是,MQTT v5 增加了很多新的功能和概念,因此在使用MQTT v5时,需要对MQTT协议的新特性进行深入的了解,以便可以更好地使用这个新协议来构建可靠的应用程序。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信
    +关注

    关注

    18

    文章

    5896

    浏览量

    135376
  • 物联网
    +关注

    关注

    2895

    文章

    43521

    浏览量

    367023
  • MQTT
    +关注

    关注

    5

    文章

    631

    浏览量

    22296
收藏 人收藏

    评论

    相关推荐

    MQTT协议网关的工作原理及功能特性

    在物联网的快速发展中,MQTT协议网关作为连接物联网设备与消息代理服务器的重要桥梁,扮演着不可或缺的角色。MQTT是一种基于发布/订阅模式的轻量级通信协议,特别适用于低带宽、不稳定网络
    的头像 发表于 09-18 17:00 158次阅读
    <b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>网关的工作原理及功能特性

    基于MQTT协议云平台的Modbus转MQTT网关

    钡铼Modbus转MQTT网关BL100是一款高性能、高性价比的物联网网关,它支持将Modbus协议(包括Modbus RTU和Modbus TCP)的数据转换为MQTT协议的数据格式
    的头像 发表于 07-29 17:59 549次阅读
    基于<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>云平台的Modbus转<b class='flag-5'>MQTT</b>网关

    SolidWorks教育版本好用吗?

    SolidWorks教育版本,作为一款专为教育领域设计的三维CAD软件,以其直观易用的界面、强大的功能以及丰富的教育资源,受到了广大师生的青睐。那么,SolidWorks教育版本好用吗?答案是肯定的。
    的头像 发表于 05-09 16:18 298次阅读
    SolidWorks教育<b class='flag-5'>版本</b><b class='flag-5'>好用</b>吗?

    mqtt协议和tcp协议区别

    MQTT协议和TCP协议在设计和应用上存在以下主要区别: 1. 起源与设计:MQTT协议诞生于1999年互联网初期,而TCP
    的头像 发表于 04-01 09:15 1398次阅读

    MQTT和Modbus的物联网网关协议的区别分析

    MQTT和Modbus的物联网网关协议区别分析 MQTT(Message Queuing Telemetry Transport)与Modbus是两种广泛应用在物联网环境中的通信协议
    的头像 发表于 03-18 16:50 631次阅读
    <b class='flag-5'>MQTT</b>和Modbus的物联网网关<b class='flag-5'>协议</b>的区别分析

    MQTT协议网关解决方案设计与实施

    MQTT协议网关是一个中间件,负责接收来自不同MQTT客户端的消息,并将这些消息转发到MQTT服务器;同时,也能接收来自MQTT服务器的消息
    的头像 发表于 03-11 14:07 378次阅读

    什么是MQTTMQTT协议中的方法

    MQTT是一种轻量级消息传递协议,由IBM开发,于1999年首次发布。它使用发布/订阅模式并在设备、服务器和应用程序之间转换消息。
    的头像 发表于 02-25 17:04 1141次阅读
    什么是<b class='flag-5'>MQTT</b>?<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>中的方法

    mqtt协议和http协议区别

    MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的“轻量级”通讯协议,构建于TCP/IP协议上。它是由IBM在1999年发布的。MQT
    的头像 发表于 01-19 15:56 6553次阅读

    lwm2m协议MQTT协议有什么区别?怎么选择?哪个更适合物联网?

    LwM2M(Lightweight M2M)和MQTT(Message Queuing Telemetry Transport)是两种不同的通信协议,它们在物联网领域有着不同的应用和特点。
    的头像 发表于 01-07 10:20 568次阅读

    MQTT和Modbus协议的区别

    两种物联网补充协议:用于短距离设备连接的本地协议 Modbus 以及支持物联网进行全局通信的可扩展互联网协议 “消息队列遥测传输 (MQTT)”。 Modbus 是一个串行通信
    的头像 发表于 12-08 15:21 2054次阅读
    <b class='flag-5'>MQTT</b>和Modbus<b class='flag-5'>协议</b>的区别

    物联网中的MQTT协议概述

    MQTT协议已经成了物联网通信中的一个热词,今天我们一起来学习一下关于MQTT协议的一些知识。
    的头像 发表于 11-25 14:09 1174次阅读

    如何实现MQTT协议数据传输?

    如何实现MQTT协议数据传输? 随着物联网技术的不断发展,越来越多的设备和应用需要实现互联互通。而MQTT作为一种轻量级的发布/订阅消息传输协议,在物联网领域应用广泛,成为了许多设备之
    的头像 发表于 11-15 17:23 1022次阅读

    MQTT协议和EDP协议该怎么选?

    OneNet支持HTTP,MQTT和EDP,HTTP好像不能下发指令,MQTT和EDP可以,我需要控制一个简单的开关,用那个协议更合理一些。
    发表于 11-09 07:18

    中值滤波算法和均值滤波算法有什么区别,哪个效果更好

    两者的主要区别是什么?哪个更好用
    发表于 10-15 11:02

    MQTT协议采集网关可自定义格式

    在工业自动化和楼宇自动化领域中,Modbus、MQTT和BACnet/IP是三种常用的通信协议。Modbus是一种串行通信协议,常用于连接工业电子设备;MQTT是一种基于发布/订阅模式
    发表于 10-09 19:33