文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在物联网应用开发中是否该用MQTT v5.0?

2024-12-03 05:56

关注

【51CTO.com快译】于1999年面市的MQTT,最初被用于油气管道与远程卫星之间的通信。目前它作为一种工具,被广泛地用在各种规模的部署中,以连接多种类型的物联网(IoT)设备。由于是基于TCP/IP的网络协议,因此MQTT采用的是发布方-订阅方(publisher-subscriber)的通信模型。它的轻量级特性足以让其运行在IoT设备上,而其强大的功能又确保了它能够在不稳定的网络条件下工作。

MQTT的工作原理

MQTT协议是由如下元素构成:

下图展示了简单的MQTT通信逻辑。

如果某个云平台不适合使用MQTT的通信方式来开发系统,则可以改用hbmqtt、gmqtt和paho-mqtt lib。

服务质量级别(QoS)是MQTT协议的关键功能,作为消息发送方和接收方之间的约定,它定义了系统传递特定消息的能力。

客户端可以选择与其所处网络的可靠性,以及应用程序的逻辑,相匹配的服务级别。由于MQTT能够通过重新传输的机制,来管理并保证消息的传递(即使是底层的传输并不可靠),因此QoS可以让不可靠网络中的通信更加安全。

为何在物联网的开发中要用到MQTT?

凭借其“节能(energy-efficient)”的数据传输方式,MQTT往往被用在CPU和内存(RAM)功率有限的低功耗设备上,以及如下场景用例中:

MQTT的优势

MQTT的劣势

当然,MQTT并非在所有场景中都是理想选择。MQTT协议在客观上存在着如下劣势:

MQTT v5.0的功能概述

通过各种新功能,MQTT v5.0可以实现如下目标:

MQTT v5.0与MQTT 3.1.1的基本功能

1.通信功能

2.发布功能

3.订阅功能

4.一般特征

MQTT v5.0在小型系统部署中的示例

下面让我们来看一个带有基于Python的客户端利用MQTT v5.0本地网络的示例。在客观总结其优缺点的同时,我们还会将其与MQTT v3.1.1的网络进行比较。

场景简述

假设有一栋实现了局域网(LAN)覆盖的建筑物。其中某些房间被安装了三种设备--独立的运动传感器、照相传感器和音频传感器。其主机设备位于LAN之中,并通过无线或网线的方式连接到路由器上。它能够定期从独立的设备上收集或处理数据,并且将这些数据存储在本地数据库中。目前,我们使用SQLLite数据库或更简单的替代方法,仅在收到三种传感器的消息后,才会被激活工作。

目标

保证主机设备与独立设备之间的通信,并在主机端提供本地数据库的部署和通信。

应用要求

设备要求

支持MQTT v5.0和Python的代理

虽然paho-mqtt是两种常见的代理。但是,由于它们并无内置的MQTT v5.0代理,因此无法实现网络的本地部署。对此,我们采用支持MQTT v5.0的Mosquitto作为代理。其配套的文档链接为--https://mosquitto.org/。它能够代理大约200到300个设备,且一次性仅支持一个连接。

基于Python的系统如何与MQTT v5.0一起使用

在Python开发人员看来,MQTT v5.0协议里的库和文档并不多。其唯一的Python 客户端便是上面提到的gmqtt和paho-mqtt。

MQTT v5.0本地网络的优缺点

优点

缺点

MQTT v5.0较v3.1.1的改进之处

MQTT v5.0可以简化数据负载的处理和解析,具有对消息、连接和会话进行单独且精确控制的能力。而且,它能够通过属性来传输附加数据,开发者可以据此创建更为复杂的IoT解决方案。

MQTT v5.0的挑战

到底是否该选用MQTT v5.0?

总的说来,如果您拥有在设备与主机之间进行消息通信的托管式代理设备,而且物联网的规模不大,那么将MQTT v5.0用于本地IoT设备间的通信则为首选。

原文MQTT 5 vs. MQTT v3.1.1 for IoT App Development,作者:Daniil Liadov

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯