跨组织环境下 MQTT 桥接架构的评估

devtools/2025/2/2 19:59:30/

论文标题

中文标题: 跨组织环境下 MQTT 桥接架构的评估
英文标题: Evaluation of MQTT Bridge Architectures in a Cross-Organizational Context

作者信息

Keila Lima, Tosin Daniel Oyetoyan, Rogardt Heldal, Wilhelm Hasselbring
Western Norway University of Applied Sciences, Norway
Email: {keila.lima, rogardt.heldal, tosin.daniel.oyetoyan}@hvl.no
Kiel University, Kiel, Germany
Email: hasselbring@email.uni-kiel.de

摘要

本文对物联网(IoT)平台中使用的 MQTT 桥接架构进行了初步研究,重点关注实时数据处理的基准配置选项。研究识别了系统组件部署中的相关 MQTT 可配置参数和指标,并以一个真实世界的 IoT 平台为基准,评估了在跨组织环境中数据传输的延迟和可靠性。研究结果表明,桥接组件的数量、MQTT 数据包大小和主题名称会对使用 MQTT 协议的 IoT 架构的质量属性产生影响。

1. 引言

随着 IoT 设备数量的快速增长(预计到 2025 年将达到 160 亿台),数据作为服务的提供方式变得越来越普遍。然而,这种跨组织的数据共享带来了互操作性和信任边界等问题。MQTT 协议作为一种轻量级的发布/订阅通信协议,被广泛应用于 IoT 系统中。本文研究了在跨组织环境中,MQTT 桥接架构的部署选项对延迟和可靠性的影响,并评估了主题名称和负载大小对性能的影响。

2. MQTT 在 IoT 架构中的角色

IoT 架构通常分为感知层、网络层、处理层、应用层和业务层。MQTT 协议因其轻量级和可靠性而被广泛应用于网络层。MQTT 采用发布/订阅模型,支持三种服务质量(QoS)级别:最多一次(QoS 0)、至少一次(QoS 1)和恰好一次(QoS 2)。本文还讨论了 MQTT 桥接架构的三种部署选项:单个代理、代理集群和代理桥接。

3. 方法论

本研究采用基准测试方法,评估了两种 MQTT 桥接架构部署选项(AUT 1 和 AUT 2)在跨组织环境下的延迟和可靠性。实验设置包括数据提供者、源代理、转换器(桥接组件)、目标代理和数据消费者。实验中考虑了不同的主题名称、QoS 级别和负载大小。实验使用真实传感器数据生成负载,并在不同的网络环境中进行测试。

 

4. 结果与讨论

实验结果显示,较小的负载大小(如 1.5 KB)在 QoS 0 级别下可以可靠传输,而较大的负载大小(如 35 KB 和 125 KB)则会遭受较高的消息丢失率。对于所有负载大小,QoS 1 和 QoS 2 级别在延迟和可靠性之间存在权衡。AUT 1 架构(每个数据提供者部署一个桥接组件)在延迟方面表现更好,而 AUT 2 架构(每个传感器中心部署一个桥接组件)在小负载大小下表现出更高的可靠性。此外,主题名称的长度对延迟有一定影响,但这种影响相对较小。

5. 有效性威胁

本文讨论了研究的构建有效性和可靠性。实验中使用了端到端延迟作为延迟指标,并通过在不同网络环境中部署客户端和代理来评估消息丢失情况。实验重复了 10 次以减少云基础设施和网络变化的影响。然而,由于实验仅考虑了有限的负载大小和部署选项,因此无法推广到其他配置。

6. 相关工作

本文回顾了其他关于 MQTT 性能评估的研究,这些研究主要关注 MQTT 代理的延迟、可扩展性和 QoS 级别。与以往研究不同,本文引入了主题名称长度作为基准参数,并使用真实传感器数据进行测试。此外,本文还讨论了网络局部性和负载大小对 MQTT 性能的影响。

7. 结论与未来工作

本文得出结论,MQTT 的负载大小和 QoS 级别对延迟和可靠性有显著影响。对于小负载大小,QoS 0 级别可以实现可靠传输,但对于大负载大小,应避免使用 QoS 0 级别。未来的研究可以进一步探索不同负载大小和网络条件下的 MQTT 性能,并考虑数据传输的能效作为质量属性。


http://www.ppmy.cn/devtools/155523.html

相关文章

2024第十五届蓝桥杯网安赛道省赛题目--rc4

rc4 一、查壳 无壳,32位 二、IDA分析 1.main 2.sub_401005 根据题目以及该函数的内容都可以让我们确定这是个rc4加密题。 所以

C++实现状态模式

首先上代码&#xff1a; #include <iostream> #include <memory>class Context;class State { public:virtual void Handle(Context * context) 0; //纯虚函数virtual ~State() default; //虚析构函数 };//创建状态A class ConcreateStateA : public State{…

第四章-SUSE- Rancher-容器高可用与容灾测试-RKE2(容灾测试)

系列文章目录 第一章-SUSE- Rancher-容器高可用与容灾测试-RKE2-外置Mysql&#xff08;主备集群搭建&#xff09;-CSDN博客 第二章-SUSE- Rancher-容器高可用与容灾测试-RKE2-集群搭建&#xff08;外置Mysql&#xff09; 第三章-SUSE- Rancher-容器高可用与容灾测试-Rancher-…

独立游戏RPG回顾:高成本

刚看了某纪录片&#xff0c; 内容是rpg项目的回顾。也是这个以钱为核心话题的系列的最后一集。 对这期特别有代入感&#xff0c;因为主角是曾经的同事&#xff0c;曾经在某天晚上听过其项目组的争论。 对其这些年的起伏特别的能体会。 主角是制作人&#xff0c;在访谈中透露这…

Android Studio 新版本24.2.2 运行后自动切到 LogCat

最近更新了 Android studio 版本&#xff0c;发现有个问题&#xff1a; 每次 Run app 之后。都会自动切换到 run 标签。这让我非常不习惯。我个人习惯在app 运行后查看Logcat 最后靠 deepSeek 找到一种解决方案&#xff1a; Android Studio 中截图如下&#xff1a;

微机原理与接口技术期末大作业——4位抢答器仿真

在微机原理与接口技术的学习旅程中&#xff0c;期末大作业成为了检验知识掌握程度与实践能力的关键环节。本次我选择设计并仿真一个 4 位抢答器系统&#xff0c;通过这个项目&#xff0c;深入探索 8086CPU 及其接口技术的实际应用。附完整压缩包下载。 一、系统设计思路 &…

C#面试常考随笔6:ArrayList和 List的主要区别?

在 C# 中&#xff0c;ArrayList和List<T>&#xff08;泛型列表&#xff09;都可用于存储一组对象。推荐优先使用List<T>&#xff0c;因为它具有更好的类型安全性、性能和语法简洁性&#xff0c;并且提供了更丰富的功能。只有在需要与旧代码兼容或存储不同类型对象的…

oracle:子查询

子查询: 一条查询语句中嵌入了另一条查询语句, 被嵌入里面的这条查询语句称为子查询, 外面的查询语句称为主查询 子查询的分类 相关性子查询&#xff08;Correlated Subquery&#xff09;是指子查询的执行依赖于外部查询的每一行数据。也就是说&#xff0c;子查询会对外部查询…