物联网中的数据收集:MQTT实现的比较

本篇论文的标题是《Data collection in IoT: A comparison of MQTT implementations》,中文可以翻译为《物联网中的数据收集:MQTT实现的比较》。论文由Erik Gustafsson和Ruben Jarefors撰写,导师是Jalal Maleki,评审员是Rita Kovordanyi,发表于Linköping University的IDA系,是一个16学分的学士学位论文,完成于2022年春季学期。论文的版权属于Erik Gustafsson和Ruben Jarefors,版权归属和使用规定可在论文的版权声明中找到。

摘要: 这篇报告研究了物联网中的可靠性问题,特别关注消息协议MQTT。在MQTT中,研究者探索了确保可靠性的选项,主要是服务质量(Quality of Service, QoS)。报告尝试比较不同MQTT协议实现在不同服务质量水平上的表现。这种比较通过实验进行,测量了在简单发布-订阅通信中通信大小(以字节为单位)和执行时间。研究发现,不同实现之间存在一些差异,这些差异可能足以影响某些应用场景下的最佳选择。报告还涵盖了一些关于物联网系统及其组成部分的基本理论。

引言: 物联网(IoT)是一个快速增长的领域,预计从2015年的约150亿个连接设备增长到2025年的750亿个。IoT设备是具有传感器和软件的物理对象,它们可以在网络中收集和交换数据。随着大量数据的不断生成和传输,确保这些IoT系统的可靠性变得越来越重要。在选择IoT应用的方法时,会受到数据收集目的和特定关注点的影响。MQTT(Message Queuing Telemetry Transport)是目前流行的选择之一,并且正在成为事实上的行业标准。MQTT是一个发布-订阅协议,所有连接到系统的设备都可以订阅和/或发布到所谓的主题,这些都是通过充当客户端设备中心点的代理(broker)来完成的。

研究范围: 本研究将重点关注不同MQTT实现在不同服务质量可靠性方法下的性能。研究范围限定在比较几个MQTT客户端/代理实现。选定的实现包括Mosquitto、Paho MQTT、mqttools、NanoMQ和eMQTT。

研究问题:

  • MQTT客户端和/或代理实现在提供的服务质量支持方面如何比较?
  • 在使用不同服务质量水平时,各种MQTT实现选择的客户/代理组合在数据传输和传输持续时间方面如何比较?

背景: 这项研究由Linköping University的两名学生E. Gustafsson和R. Jarefors与Zenon AB公司合作完成。研究的目的是探索在物联网领域内确保可靠性的方法。

理论: 物联网(IoT)是一个描述具有集成网络、传感器和处理能力的物理对象的术语,这些对象通常通过互联网与其他设备连接以交换数据。设计物联网系统时最基本的架构是“三层架构”,包括感知/物理层、网络层和应用层。

MQTT(Message Queuing Telemetry Transport): MQTT是一个设计用于通过客户端和服务器(代理)进行发布/订阅的消息协议。代理是托管主题的中心点,主题通常格式化为类似文件夹结构的字符串。MQTT的最新版本是5.0,它引入了一些新特性,如主题别名。

可靠性方法: 这部分涵盖了MQTT中使用的可靠性方法,特别是服务质量(QoS)。MQTT定义了三个QoS级别,分别是QoS 0、QoS 1和QoS 2,以及一个在MQTTSN协议中存在的QoS -1级别。

MQTT实现: 这部分介绍了研究中选择的MQTT实现,包括Mosquitto、Paho MQTT、eMQTT5、mqttools和NanoMQ。

相关工作: 随着物联网领域的增长,对结构和不同方法来量化物联网可靠性的需求也在增长。这部分讨论了与MQTT相关的先前研究。

方法: 为了建立不同实现的QoS功能,研究者创建了小型的IoT客户端或代理,并测量了QoS级别的性能。

设置: 这部分描述了进行实验的硬件和软件设置。

实验: 这部分解释了实验的方法论,包括功能性验证和QoS性能测试。

结果: 这一章节展示了实验结果,包括功能性验证和发布对话的大小和持续时间。

功能性验证(Functionality Verification)

实验结果表明,不同客户端/代理组合在多个代理上的功能验证结果可以在表1中找到。值得注意的是,NanoMQ的对话并不完全符合图2-4所示的模式,但这并不表示它缺乏QoS支持。NanoMQ在每次对话结束时没有断开连接的数据包,这仅仅是实现上的特点,QoS级别仍然按预期工作。同样,正如方法部分所述,mqttools高于0的QoS级别没有进行测试。

发布对话大小(Publish Conversation Size)

每个图表(图5a-c)以某种方式显示了单次发布消息的平均字节传输量,并在图5a-c中显示了标准差。目前,NanoMQ显示出较少的字节发送量,部分原因是它在消息发布中不发送断开连接的数据包。这种比较并不完全等价。

  • 图5a:使用HiveMQ代理的对话大小。
  • 图5b:使用Mosquitto代理的对话大小。
  • 图5c:客户端/代理配对的对话大小。

表2a-c显示了在每种代理情况下测量到的两个实现之间对话大小的最大增加量。NanoMQ在HiveMQ代理的QoS0情况下是最小的,因此我们添加了第二大的差异(括号内),因为NanoMQ不发送断开连接的数据包,这使得它在比较中不可靠。

发布对话持续时间(Publish Conversation Duration)

这些结果中,由于无法配置NanoMQ使其在完成后发送断开连接的消息,因此排除了NanoMQ。这可能导致测量结果取决于我们手动结束对话的速度。

  • 图9a 显示了每个客户端使用通用Mosquitto代理的对话时间。
  • 图9b 显示了除NanoMQ之外的每个客户端/代理配对的对话时间。值得注意的是,Paho MQTT和Mosquitto客户端都以Mosquitto代理为默认代理,因此这个图主要用于显示mqttools和Mosquitto配对之间的差异。

以上结果提供了不同MQTT实现在功能性验证、发布对话大小和持续时间方面的详细比较和分析。这些数据有助于理解不同MQTT客户端和代理在实际应用中的性能表现,以及它们在不同服务质量(QoS)水平下的行为。

讨论: 这部分讨论了不同实现的性能,并讨论了QoS级别差异、大小差异和持续时间差异的影响。

结论: 研究提供了支持选择MQTT实现的依据,并提供了比较MQTT实现的方法,供进一步研究使用。结果表明,Paho MQTT客户端在所研究的实现中是首选,因为它提供了快速且通信量小的通信。它还自带代理,即Mosquitto代理,但也可以与HiveMQ代理一起使用,以减少通信量。

参考文献: 论文最后列出了参考文献,提供了研究的来源和背景资料。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/938035.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【开源】使用环信UIKit for uniapp 做一个IM即时聊天应用

环信单群聊 UIKit 是基于环信即时通讯云 IM SDK 开发的一款即时通讯 UI 组件库,提供各种组件实现会话列表、聊天界面、联系人列表及后续界面等功能,帮助开发者根据实际业务需求快速搭建包含 UI 界面的即时通讯应用。 本文教大家使用环信 uniapp UIKit 快…

人工智能增强的音频和聊天协作服务

论文标题:AI-enabled Audio and Chat Collaboration Services 中文标题:人工智能增强的音频和聊天协作服务 作者信息: Emil P. Andersen, Norwegian Defence Research Establishment (FFI), Kjeller, NorwayJesper R. Goksr, Sindre E. Ha…

突破时间与空间限制的富媒体百宝箱——智能工具箱:让云上内容生产更easy

“这是你的同款日常吗?老是在赶deadline,苦练PS还未出师,premiere、达芬奇真的好难,学python脑容量确实不够~打工人太难了~~” 来试试智能工具箱吧!即来即用,一键实现办公自由。图片工具、视频工具、音频工…

基于python绘制数据表(下)

绘制雷达图-源码 from openpyxl import Workbook from openpyxl.chart import RadarChart, Reference# 创建工作薄 wb Workbook() # 选定工作表 ws wb.active# 准备数据 rows [[Mouth, Bulbs, Seeds, Flowers, Trees],[Jan, 0, 2200, 500, 0],[Feb, 0, 2000, 560, 0],[Mar,…

PT2044A 单触控单输出IC

1 产品概述 ● PT2044A 是一款单通道触摸检测芯片。该芯片内建稳压电路,提供稳定电压给触摸感应电路使用。同时内部集成高效完善的触摸检测算法,使得芯片具有稳定的触摸检测效果。该芯片专为取代传统按键而设计,具有宽工作电压与低功耗的特性…

华为HarmonyOS实现跨多个子系统融合的场景化服务 -- 7 地图选点Button

场景介绍 本章节将向您介绍如何使用地图选点Button功能,开发者可调用Button组件拉起Map Kit的地图选点页面,用户在地图中选择位置后,位置相关信息返回Button界面。 说明 该场景暂不支持2in1设备。 前提条件 参见开发准备。 效果图展示 …

MVC流程分析

DisaptcherServlet本质是servlet&#xff0c;执行init()方法&#xff0c;自启动底层执行代码&#xff0c; 作用&#xff1a; 1、读取springmvc配置文件&#xff0c;创建Controller对象&#xff0c;放入容器中&#xff0c;map<"id",对象> 2、接收用户请求&#…

路径规划之启发式算法之十六:和声搜索算法(Harmony Search, HS)

和声搜索算法(Harmony Search, HS)是一种新兴的启发式全局搜索算法,是一种模拟音乐家即兴演奏过程的群体智能优化算法。这种算法由Zong Woo Geem等人在2001年提出,灵感来源于音乐家在寻找和声时的创造性思维过程。HS算法通过模拟音乐家演奏音乐时的选择过程来寻找问题的最优…

游戏引擎学习第45天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾 我们刚刚开始研究运动方程&#xff0c;展示了如何处理当人物遇到障碍物时的情况。有一种版本是角色会从障碍物上反弹&#xff0c;而另一版本是角色会完全停下来。这种方式感觉不太自然&#xff0c;因为在游戏中&#xff0c;…

[2015~2024]SmartMediaKit音视频直播技术演进之路

技术背景 2015年&#xff0c;因应急指挥项目需求&#xff0c;我们实现了RTMP推送音视频采集推送&#xff08;采集摄像头和麦克风数据&#xff09;模块&#xff0c;在我们做好了RTMP推送模块后&#xff0c;苦于没有一个满足我们毫秒级延迟诉求的RTMP播放器&#xff0c;于是第一…

C语言实现八大排序算法

目录 1.插入排序 1.1 直接插入排序 1.2 希尔排序 2. 选择排序 2.1 直接选择排序 2.2 堆排序 *TopK问题&#xff1a; 3. 交换排序 3.1 冒泡排序 3.2 快速排序 1. Hoare版本 2. 挖坑法 3. 前后指针法 4. 快速排序优化 5. 非递归快速排序 4.归并排序 1.递归式归并…

走进 RAG 技术:一场智能数据交互的奇幻之旅

朋友们&#xff0c;咱身处的这个时代&#xff0c;科技那可是跟开了挂似的往前冲&#xff0c;其中人工智能更是厉害得没话说&#xff0c;宛如一个充满无限可能的魔法领域&#xff0c;时不时就给咱的生活来个大变样。而在这其中&#xff0c;RAG 技术就像是突然冒出来的一颗超亮眼…

商业化大前端在性能优化领域的探索与实践

导读&#xff1a;在业务飞速发展的过程中&#xff0c;用户体验是必不可少的一个环节&#xff0c;而页面性能是直接影响用户体验的重要因素。当页面加载时间过长、交互操作不流畅时&#xff0c;意味着业务可能会出现转化率降低、用户流失等业务问题。在过去一年&#xff0c;为了…

C# 位运算

一、数据大小对应关系 说明&#xff1a; 将一个数据每左移一位&#xff0c;相当于乘以2。因此&#xff0c;左移8位就是乘以2的8次方&#xff0c;即256。 二、转换 1、 10进制转2进制字符串 #region 10进制转2进制字符串int number1 10;string binary Convert.ToString(num…

YOLOv10改进,YOLOv10利用DLKAttention融合DCNv3、DCNv4形成全新的可变形大核注意力,并二次创新C2f结构,全网首发

理论介绍 完成本篇需要参考以下三篇文章,并已添加到YOLOv10代码中 YOLOv10改进,YOLOv10添加DCNv3可变性卷积与C2f结构融合(无需编译)YOLOv10改进,YOLOv10添加DCNv4可变性卷积(windows系统成功编译),全网最详细教程YOLOv10改进,YOLOv10添加DLKA-Attention可变形大核注意力…

Linux高性能服务器编程 | 读书笔记 | 8. 信号

8. 信号 信号是由用户、系统、进程发送给目标进程的信息&#xff0c;以通知目标进程某个状态的改变或系统异常。Linux信号可由以下条件产生&#xff1a; 对于前台进程&#xff0c;用户可通过输入特殊终端字符来给它发送信号&#xff0c;如输入CtrlC通常会给进程发送一个中断信…

记录学习《手动学习深度学习》这本书的笔记(五)

这一章是循环神经网络&#xff0c;太难了太难了&#xff0c;有很多卡壳的地方理解了好久&#xff0c;比如隐藏层和隐状态的区别、代码的含义&#xff08;为此专门另写了一篇【笔记】记录对自主实现一个神经网络的步骤的理解&#xff09;、梯度计算相关&#xff08;【笔记】记录…

【git、gerrit】特性分支合入主分支方法 git rebase 、git cherry-pick、git merge

文章目录 1. 场景描述1.1 分支状态 2. 推荐的操作方式方法 1&#xff1a;git merge&#xff08;保留分支结构&#xff09;方法 2&#xff1a;git rebase&#xff08;线性合并提交历史&#xff09;直接在master分支执行git merge br_feature&#xff0c;再 执行 git pull --reba…

Python-基于Pygame的小游戏(天空之战)(一)

前言:不久前接触了Python的游戏制作的相关第三方库&#xff0c;于是学习了pygame的相关内容&#xff0c;想制作一款基于pygame的小游戏。因为还不太熟悉游戏制作和pygame&#xff0c;部分内容我参考了《Python-从入门到精通》这本书。那么好&#xff0c;话不多说&#xff0c;我…

探索 Cesium 的未来:3D Tiles Next 标准解析

探索 Cesium 的未来&#xff1a;3D Tiles Next 标准解析 随着地理信息系统&#xff08;GIS&#xff09;和 3D 空间数据的快速发展&#xff0c;Cesium 作为领先的开源 3D 地球可视化平台&#xff0c;已成为展示大规模三维数据和进行实时渲染的强大工具。近年来&#xff0c;随着…