当前位置:首页 > 每日看点 > 正文内容

为什么在物联网应用中使用MQTT而不是?

卡卷网1年前 (2025-01-09)每日看点219

最近,我们的后台收到了许多用户的私信咨询,其中一个问题便是:在物联网(IoT)应用中,为何通常更倾向于使用MQTT而非呢?今天我们就来探讨一下这个话题。

前面在介绍MOTT协议的时候我们就已经提到过,MQTT属于一种轻量级的消息传输协议,其协议头相当简洁。正常情况下,MQTT的固定头部仅有2个字节,用来标识消息类型、QoS(服务质量)等级等基本信息。在某些特定的消息类型里,也许会存在可变头部与消息体,不过整体结构较为紧凑。

然而协议的消息头则相对复杂一些。即便是最简单的请求,例如“GET”请求,其头部信息也包含请求方法、L、协议版本、主机信息、用户等诸多字段。一般而言,一个基本的头部大小可能会达到几百字节。

下面我们就来说说这两者在物联网应用中的具体差异。

<>一、传输模式

<>1、MQTT

MQTT运用发布/订阅模式。设备充当发布者(Pulisher),把数据发布至特定的主题(Topic),而订阅者(Suscrier)只需订阅自身感兴趣的主题,就能接收相关数据。在此种模式下,数据传输基于事件驱动。只要存在订阅这些主题的应用程序或者设备,就能够实时接收数据。并且,在设备状态无变化时,无需发送额外的数据,从而减少了不必要的网络流量。

<>2、

属于典型的请求/响应模式。客户端(一般为物联网设备或者用户端应用)要向发送请求,依据请求内容予以响应。这表明每次获取或者更新数据,都需要完整的请求-响应流程。收到请求后返回设备的状态信息。若要频繁获取设备状态,就需不断发送请求,每个请求均带有完整的头部信息,这会产生大量的重复数据传输,占用较多带宽。

<>二、数据传输效率

<>1、MQTT

因为MQTT协议简洁,并且采用高效的发布/订阅模式,所以在传输数据时能更有效地利用网络带宽。尤其在传输小数据量的物联网应用场景下,例如传感器数据的定期上报时,MQTT的优势更为显著。每次传输的数据主要为电量数值,协议开销小,能够快速、高效地完成数据传输,从而减少网络带宽的占用。

<>2、

的效率较低,在频繁进行数据交互的场景中尤其如此。由于每次请求与响应都要传输大量的头部信息,即便数据本身可能很少,也会让整体的数据传输量变大。这些多余的头部信息会降低传输效率,占用较多的网络带宽。

<>三、连接建立过程

<>1、MQTT

MQTT协议构建于TCP协议之上,当设备与之间的连接建立起来后,此连接能够长时间维持。这种长连接机制让设备在有数据传输需求时,仅需发送简单消息,而不必重新建立连接。连接建立的开销只在初始阶段出现,后续的数据交互会更加迅速。

<>2、

属于一种无状态协议,每一次数据请求都得重新建立连接。这一过程会涉及到TCP的三次握手,从而产生一定的延迟。每一回通信都要重新构建一条通信链路,其中包含发送请求头、等待响应等步骤,这使得延迟相对较高。

<>四、消息推送机制

<>1、MQTT

MQTT采用发布/订阅模式,可主动向订阅特定主题的设备推送消息。这种实时推送机制让设备能在第一时间接收到重要信息。借助MQTT,能够实现实时的事件通知,延迟可控制在很低的水平,一般能在几百毫秒内完成消息推送。

<>2、

自身并不具备主动推送消息的功能。在物联网应用场景下,若要获取设备的最新状态或者接收来自的通知,往往需要运用轮询的方式。这种轮询方式所产生的延迟取决于轮询的间隔时长,并且在两次轮询的间隙可能会遗漏实时消息,实时性不佳。

<>五、数据更新效率

<>1、MQTT

因为设备与之间为长连接,而且消息格式较为简洁,所以当设备状态改变时,MQTT能够迅速地把更新后的状态信息发送至,整个过程的延迟较低,非常好地满足实时性要求。

<>2、

每次更新数据都需要完整的请求-响应过程,这使得数据更新效率相对较低。尤其是在需要频繁更新少量数据的情况下,由于每次都要建立连接和传输完整的请求头,会导致设备状态的更新不能及时反映在用户界面或者相关设备上,实时性大打折扣。

<>六、可性

<>1、MQTT

<>发布订阅模式:​即便处于网络连接不稳定的状况下,也可达成数据的可传输。当设备离线时,MQTT会把数据存储于队列之中,直至设备重新上线时再予以发送。

<>自动重连机制:具备自动重连机制,即便网络断开,也能够自动恢复连接,确保消息得以可传输。

<>QoS机制:提供三种等级的服务质量,范围从至多一次到恰好一次不等,能够依据不同的应用场景以及数据的重要性,选择适宜的QoS等级,以保证消息的可传递。

<>2、

<>本身不具备消息保证机制:自身并不提供消息重发或者持久化机制,通常这些问题需要应用层自行处理。

<>基于TCP的可性:主要依TCP协议自身的可性确保数据传输的完整性与顺序性,不过在网络不稳定或者出现故障的时候,或许需要应用层进行额外的处理并设置重试机制。

<>无状态性的:因为是无状态的,每个请求均相互,不会留存之前请求的任何信息,在一些需要连续进行数据传输与处理的物联网场景下,这可能会对数据的连贯性和可性产生影响。

<>七、安全性

<>1、MQTT

<>支持TLS/SSL加密协议:这能够确保数据传输过程中的安全性,防止数据遭受篡改与窃取。同时,MQTT5.0还引入了增强认证机制以提供双向的身份确认。

<>认证与授权:通过用户名、密码字段实现对密码认证和Token认证的支持,从而确保只有合法设备能够接入MQTT,并且能够检查接入者可执行的作,例如可以将消息发布到哪些主题以及能够从哪些主题获取消息。

<>2、

<>S:借助S协议,于之上添加SSL/TLS层,以确保数据在客户端与之间加密传输,达成数据加密、身份验证以及数据完整性保护的目的。

<>安全配置:需采用更为复杂的安全举措,例如安全头部、安全的身份验证机制等,从而提升We应用的安全性,防范跨站脚本攻击、跨站请求伪造等情况。

<>八、扩展性

<>1、MQTT

<>多对多通信模式:支持多对多通信模式,这一模式十分契合大规模物联网设备的连接与数据交互需求,能够轻松扩展至大型。例如,在智能家居中,多个传感器与设备可借助MQTT协议相互通信并协同工作。

<>轻量级协议:MQTT的轻量级协议让实现MQTT库的成本较低,易于移植到不同平台,方便在各类物联网设备中集成与应用,为扩展提供了方便。

<>2、

<>可扩展性:协议自身具备一定的可扩展性,能够借助附加头部字段与参数来扩展功能,例如认证信息、缓存控制等。不过,在物联网应用场景下,针对大规模设备连接以及实时数据传输的情形,的扩展性就相对较差。

<>基于We的扩展:主要应用于基于We的应用和服务扩展,与现有的We技术和架构有较好的兼容性,但是在处理物联网设备之间复杂的通信以及大规模连接时,或许会遭遇性能与可扩展性方面的挑战。

<>九、功耗

<>1、MQTT

MQTT协议专为低功耗目标而设计。它在设计时考虑到了资源受限设备与低带宽网络环境的情况,目的在于实现设备间的可通信。该协议能够保持长连接,在空闲时处于低功耗状态,从而节省设备能源,延长电池供电设备的使用寿命。

<>2、

协议在设计之时并未着重考量低功耗这一因素。其头部信息较为完整且规模偏大,在应对频繁的小数据交换时,会造成较大的资源损耗。每一次请求均需构建新的连接,并且在请求完成之后断开连接。这种连接构建与断开的流程会消耗一定的能量,在物联网设备中更是如此,这种频繁的连接作会大幅提升功耗。

MQTT在物联网应用中的传输模式、传输效率、连接建立过程、消息推送机制、数据更新效率、可性、安全性、扩展性、功耗等多个方面具备一定的优势。这些优势让MQTT成为连接众多物联网设备的理想之选,特别是在资源受限的情况下。与之相,协议在物联网场景里就显得较为臃肿,不适用于对实时性和资源使用高效性有极高要求的应用。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/7502.html

分享给朋友:

相关文章

普通人一部手机用多久?

普通人一部手机用多久?

各位知友,你们的现在的手机用了多久了呢?回看国外分析机构TechInsights的报告,目前大家的用机周期是越来越长了,在国内,也达到了「40个月」,就是很多人至少三年半才会换一次手机。仔细想想,不对呀,现在新机不是一直出吗?为什么大家都不...

有哪些好用不火的软件?

有哪些好用不火的软件?

20个无敌冷门的小众APP,好用到内存爆了都不想卸载,个个是宝藏!特别是第4、13、19个,大多数人都没玩过~喜欢可以双击屏幕取走哦~1、【毒汤日历 】 – 你的每日快乐源泉[iPhone/Android]好用指数:⭐⭐⭐⭐⭐下载地址:各...

想要在双 11 换一台全面无短板的新手机,有没有「闭眼买」的机型推荐?

想要在双 11 换一台全面无短板的新手机,有没有「闭眼买」的机型推荐?

最近一个月各大手机厂商的旗舰机扎堆发布,不知道大家看爽了没?这一代的性能续航大提升,最低 3599 元就能买到,同时老款也有不小的降幅,今年双 11 算是相当适合换手机的节点了!这次,小黑就给大家推荐双 11 期间值得购买的手机...150...

腾讯云为何在云服务市场败给了阿里云?

IDC领域,2010年以前,万网、新网互联、新网,三家公司瓜分天下,其中万网市场份额最高,排名第一。当时,万网的域名是http://www.net.cn,通过该域名就可以判断万网的地位。2010年阿里云成立,直接收购了万网,大量用户直接流向...

无意中发现技术主管写的代码,大家帮忙看看什么水平?

无意中发现技术主管写的代码,大家帮忙看看什么水平?

虽然很多答主用了诸如“典范级”、“心旷神怡” 的形容, 赞美这段代码, 但这里, 出于技术讨论的动机, 我说说不同看法.栈, 如果善于利用栈来处理树结构, 那么可以写出更简洁的代码, 根本不需要 recuresiveFn 这种方法. 泛型,...

自己拥有一台服务器可以做哪些很酷的事情?

自己拥有一台服务器可以做哪些很酷的事情?

我就有一台,跑了两年了,ipv6 ddns 网络,加虚拟化平台.跑了个 winserver 和 ubuntu 服务器。稳的雅皮!拆掉后盖,散热更好。烟盒固定硬盘。键盘防止灰尘掉落。电池拆掉,屏幕拆掉,也是散热考虑。屏幕拿去做便携副屏了。换...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。