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

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

卡卷网12个月前 (01-09)每日看点196

最近,我们的后台收到了许多用户的私信咨询,其中一个问题便是:在物联网(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

分享给朋友:

相关文章

创业容易吗?

创业容易吗?创建企业不一定是困难或令人生畏的。它可以从一个简单但有力的想法开始,比如小强意识到,如果洗手液能杀死真菌,尤其是拳击台上的真菌,就会更加有用。创业确实需要奉献精神、努力工作和仔细规划——这是没有办法的。虽然这本身可能并不容易,但...

OZON平台什么产品好卖?

ozon选品的核心重点我不说 你们全网也不见说的这么干的教学了你信我就按照我说的思路去走 不信的出去买课去 一时间消化不了的先点赞收藏起来 真不中了下载也行 因为最近总有坏人给我使诈 平台已经下了我八个视频了 还都是实操教学不废话的那种 气...

用红米手机会很丢人吗?

前些日子遇到了一位快递小哥,京东的,签收小哥年纪不算大,目测二十多岁他的手机上全是一道道极严重的划痕,有点卡,他开热点了,热点名就是手机型号,红米9a,我父母的同款现在他那边操作了一会,然后又是我这边操作了一会小哥看着我手机刷刷的,颇有些好...

什么样的网站能快速捕获你的心?

什么样的网站能快速捕获你的心?

大家好,我是程序员鱼皮。大家如果平时使用网站或产品时出现了问题,一般都会去寻找 “联系客服” 的位置,从而获得人工的帮助。我们团队的面试刷题产品 - 面试鸭最近就遇到了这样一个难题:明明我们网站右下角就有联系客服按钮、而且我们每道面试题目下...

程序员都有自己的服务器吗?

程序员都有自己的服务器吗?

2024.9. 24,有朋友咨询功耗,我没有单独给服务器弄智能插座,系统做的 esxi 也看不到,所以只能用其他角度判断供大家参考。我有一个餐边柜改的机柜,里面白裙两盘,黑群晖 4 机械 1 mvme,一个爱快硬路由,一个联通光猫,一个 2...

测试用例是怎么写的?

测试用例是怎么写的?

测试用例对于测试人员而言,虽说是最最基础的技能,但却非常重要。测试用例是支撑我们在测试道路上进一步学习其他测试技能的基本功。那测试用例如何撰写,完整来说应该包含两部分内容:内容1: 测试用例撰写(按照八大要素);内容2: 测试用例(测试点)...

发表评论

访客

看不清,换一张

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