当前位置: 首页 > news >正文

基于排队理论的物联网发布/订阅通信系统建模与优化

论文标题

  • 英文标题:Queuing Theory-Based Modeling and Optimization of a Publish/Subscribe IoT Communication System

  • 中文标题:基于排队理论的物联网发布/订阅通信系统建模与优化

作者信息

  • Franc Pouhela

  • Anthony Kiggundu

  • Hans D. Schotten

论文出处

本文是一篇会议论文,发表于2025年1月。论文链接为:https://www.researchgate.net/publication/388221957。

摘要

本文提出了一个基于排队理论的物联网(IoT)发布/订阅通信系统的全面模型。利用马尔可夫(M/M/1)排队过程,对中间件消息队列协议(MMQP)代理的消息传递进行了建模、分析和优化。研究推导了关键性能指标,如平均等待时间、系统利用率以及多线程对性能的影响。该模型旨在通过确定代理服务率与消息到达率之间的最佳关系来优化系统的吞吐量和效率。通过实验评估,验证了模型的准确性及其在改进物联网通信中的价值。

引言

随着分布式系统中高效、可扩展和连续的数据收集与处理需求的增加,尤其是在5G和未来的6G网络背景下,物联网(IoT)通信的上下文感知需求愈发显著。通过在网络操作的不同层集成人工智能(AI),实现上下文感知的物联网通信成为一个重要方向。消息队列遥测传输(MQTT)协议作为一种轻量级消息协议,在物联网和机器对机器(M2M)场景中被广泛使用。然而,MQTT在某些方面仍有改进空间。为此,本文设计了一种类似的协议——中间件消息队列协议(MMQP),以提高效率、灵活性、可扩展性和安全性。为了确保代理在不同网络条件下的最佳性能和可靠性,本文利用排队理论对其行为进行了数学建模。

相关工作

发布/订阅通信范式在分布式系统和物联网应用中得到了广泛研究。MQTT和高级消息队列协议(AMQP)是这种范式的两个主要实现,它们在消息分发和服务质量(QoS)管理方面具有相似的机制。排队理论已被广泛应用于通信系统的建模和优化。Kleinrock开创了使用排队模型分析网络性能的先河,为后续研究奠定了基础。近年来,研究者们利用排队模型分析了无线和移动网络的性能。Eugster等人对发布/订阅范式进行了全面综述,概述了各种设计选择及其对系统性能的影响。针对MQTT,研究者们也对其设计和实现进行了研究,强调了其在资源受限环境(如物联网)中的适用性。

通信系统

高效的物联网通信在很大程度上依赖于所选择的消息模式和协议。本文介绍了一种新的协议——MMQP,它是一种专为物联网和M2M通信设计的轻量级二进制协议。MMQP允许客户端通过一个中央分发节点(代理)间接通信。客户端既可以作为发布者,也可以作为订阅者。订阅者通过订阅特定主题来表达对消息的兴趣,而发布者则将消息发布到这些主题。代理通过管理主题层次结构,将消息从发布者分发到适当的订阅者。

消息路由

在MMQP中,主题作为关键标识符,用于组织和分发消息。这些主题由代理以层次结构管理,并以字符串形式表示,多个级别之间用正斜杠(“/”)分隔。当客户端发布消息时,代理会分析主题层次结构以识别适当的订阅者,并将消息转发给对确切主题或其任何父级感兴趣的订阅者。

服务质量

MMQP支持三个级别的服务质量(QoS):

  • QoS 0(最多一次):尽力而为的传输,不保证消息确认。

  • QoS 1(至少一次):发送方发布消息,接收方(代理或订阅者)确认收到。如果未收到确认,发送方可能会重发消息。

  • QoS 2(恰好一次):保证消息仅被传递一次,涉及两步过程。

系统建模

排队理论是研究等待线或队列的数学工具,用于建模为随机到达的客户提供服务的系统行为。本文利用排队理论对通信系统进行建模,以分析和预测系统在不同负载条件下的行为。典型的排队系统由客户到达过程、服务过程和队列规则(决定服务顺序)组成。本文采用的M/M/1模型是最简单的排队模型,其中到达过程遵循泊松分布,服务时间呈指数分布,且只有一个服务器。

系统动态

为了有效建模通信系统,本文提出了一些关键假设,以简化系统的复杂性,同时确保模型能够准确反映其行为。这些假设包括:

  • 遵循先进先出(FIFO)队列规则。

  • 消息可靠地传递给订阅者。

  • 代理作为单服务器队列运行。

  • 系统处于稳态,允许使用稳态概率分布。

  • K和S分别表示发布者和订阅者的集合。

  • µs≥0表示订阅者s的服务率。

  • λk≥0表示发布者k的到达率。

总体到达率

本文的排队模型如图5所示。左侧是发布者集合K,其随机消息到达率用λ1、...、λk表示。右侧是订阅者集合S,每个订阅者都有其各自独立的服务率µ1、...、µs。中间的代理在M/M/1队列模型中充当服务节点。每个发布者k以独立的速率λk广播消息,该速率遵循泊松分布。系统的总体到达率可以描述为所有发布者到达率的总和,这也导致了泊松分布。

总体服务率

本文有一个单一的代理,它将消息转发给一组订阅者S。每个订阅者s都有一个指数分布的服务时间,其服务率用µs表示。系统的总体有效服务率µ可以定义为所有订阅者服务率的总和。这个组合服务率µ表示所有订阅者共同处理消息的预期速率。

稳态指标

流量强度ρ定义为ρ=λ/µ,它有助于确定系统的负载。当ρ<1时,系统是稳定的,这意味着代理可以处理传入的消息,而不会使队列无限增长。如果ρ≥1,系统不稳定,队列长度可能会无限制地增长。系统中消息数量的稳态概率分布为P(n)=(1-ρ)ρ^n。系统的平均消息数量为L=ρ/(1-ρ),消息在系统中的平均停留时间(包括等待和服务时间)为W=1/(µ-λ),消息在队列中等待的平均时间为Wq=ρ/(µ-λ)=λ/(µ(µ-λ))。

优化约束

为了优化通信系统,本文提出了一个优化问题,旨在最小化延迟(平均等待时间),同时确保系统稳定并最大化吞吐量。关键目标是优化代理的消息服务率µ,同时保持等待时间在可接受范围内。然而,随着服务率µ的增加,通常会带来额外的运营成本(例如,更多的处理能力、更高的网络带宽、更高的内存使用等)。因此,需要在优化目标中纳入与服务率增长相关的成本项。

实验评估

本文利用自定义的MMQP代理进行了实验评估,该代理用C++17实现,兼容Windows和Linux操作系统,并利用Asio库进行跨平台的异步网络和低级I/O操作。代理的软件架构基于实体-组件-系统(ECS)设计模式,以实现灵活和可扩展的行为。

测量设置

实验数据是在配备11代英特尔酷睿i7-11800H处理器和32GB RAM的笔记本电脑上收集的。在实验设置中,发布者以100ms(10Hz)的频率向代理发送消息,消息负载大小从10B到10K不等,代理将消息转发给订阅者,同时测量消息和字节的到达率和服务率。此外,还测量了不同线程数量(从1到8)对系统性能的影响。

n客户端的测量

在这种场景下,发布者和订阅者的数量相等,且处于单线程模式。实验结果表明,随着客户端数量的增加,到达率呈线性增长,表明每个额外的客户端都会为代理带来几乎恒定的消息负载增加。服务率随着客户端数量的增加而显著增加,这表明更多的客户端连接到代理会生成更多的消息,系统需要处理这些消息。系统利用率ρ=λ/µ的值随着客户端数量的增加而降低,这表明代理的服务能力能够有效地扩展,使系统在流量增加时保持低利用率、高响应性和操作稳定性。

多线程测量

在这种场景下,通过增加工作线程的数量,同时保持负载大小和客户端数量不变,测量代理的到达率和服务率。实验结果表明,随着线程数量的增加,到达率略有下降,这可能是由于线程之间的上下文切换导致的。服务率在增加线程数量时保持相对稳定,这表明增加线程数量对代理的整体服务率影响不大。

优化结果

根据优化模型,本文计算了一些值,以观察最优服务率µ如何响应惩罚参数ϵ和到达率λ的变化。随着λ的增加,最优服务率µ明显增加,这表明µ必须与λ成比例增长,以保持系统稳定。此外,µ对λ的变化比对ϵ的变化更敏感,这有助于避免对系统进行过度惩罚,减少为了保持低运营成本而过度丢弃消息的需要。

结论与未来工作

本文通过实验评估,展示了将排队理论应用于建模和优化发布/订阅通信系统的潜在好处。实验结果表明,到达率λ主要驱动最优服务率µ*的增长,以确保系统稳定,而惩罚参数ϵ通过在延迟降低和成本效率之间进行平衡来调整这种增长。所提出的优化方法为开发更有效的管理消息队列的算法提供了基础。未来的研究应专注于使用更多真实世界的数据来提高优化的准确性。此外,实施各种机器学习算法以预测流量增长并确定最优的惩罚参数,可以进一步增强延迟和资源利用之间的平衡。

相关文章:

基于排队理论的物联网发布/订阅通信系统建模与优化

论文标题 英文标题&#xff1a;Queuing Theory-Based Modeling and Optimization of a Publish/Subscribe IoT Communication System 中文标题&#xff1a;基于排队理论的物联网发布/订阅通信系统建模与优化 作者信息 Franc Pouhela Anthony Kiggundu Hans D. Schotten …...

指针(C语言)从0到1掌握指针,为后续学习c++打下基础

目录 一&#xff0c;指针 二&#xff0c;内存地址和指针 1&#xff0c;什么是内存地址 2&#xff0c;指针在不同系统下所占内存 三&#xff0c;指针的声明和初始化以及类型 1,指针的声明 2,指针 的初始化 1&#xff0c; 初始化方式优点及适用场景 4,指针的声明初始化类型…...

实验八 JSP访问数据库

实验八 JSP访问数据库 目的&#xff1a; 1、熟悉JDBC的数据库访问模式。 2、掌握使用My SQL数据库的使用 实验要求&#xff1a; 1、通过JDBC访问mysql数据&#xff0c;实现增删改查功能的实现 2、要求提交实验报告&#xff0c;将代码和实验结果页面截图放入报告中 实验过程&a…...

Day31-【AI思考】-关键支点识别与战略聚焦框架

文章目录 关键支点识别与战略聚焦框架**第一步&#xff1a;支点目标四维定位法****第二步&#xff1a;支点验证里程碑设计****第三步&#xff1a;目标网络重构方案****第四步&#xff1a;动态监控仪表盘** 执行工具箱核心心法 关键支点识别与战略聚焦框架 让思想碎片重焕生机的…...

DeepSeek与其他大模型相比

DeepSeek与其他大模型相比 与GPT-4对比 性能方面 推理速度:DeepSeek在解决复杂的数学、物理和逻辑推理问题方面速度惊人,是ChatGPT的两倍。“幻觉”现象:在处理需要网络信息检索的任务时,DeepSeek的“幻觉”现象似乎比ChatGPT更少。创意任务:ChatGPT在创意性任务,如创作…...

在深度Linux (Deepin) 20中安装Nvidia驱动

文章创作不易&#xff0c;麻烦大家点赞关注收藏一键三连。 在Deepin上面跑Tensorflow, pytorch等人工智能框架不是一件容易的事情。特别是如果你要使用GPU&#xff0c;就得有nvidia的驱动。默认情况下Deepin系统自带的是nouveau开源驱动。这是没办法用tensorflow的。下面内容是…...

“LoRA技术中参数初始化策略:为何A参数采用正态分布而B参数初始化为0”

在LoRA&#xff08;Low-Rank Adaptation&#xff09;中&#xff0c;参数A和B的初始化策略是经过精心设计的&#xff0c;以确保模型训练的稳定性和有效性。具体来说&#xff0c;参数A通常被初始化为正态分布&#xff0c;而参数B则初始化为0。这样的设计有以下几个优点&#xff1…...

C语言初阶力扣刷题——349. 两个数组的交集【难度:简单】

1. 题目描述 力扣在线OJ题目 给定两个数组&#xff0c;编写一个函数来计算它们的交集。 示例&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2] 输入&#xff1a;nums1 [4,9,5], nums2 [9,4,9,8,4] 输出&#xff1a;[9,4] 2. 思路 直接暴力…...

理解动手学深度学习的自编包d2l

跟着李沐的《动手学深度学习-PyTorch版》入门Python编程和Pytorch框架&#xff0c;以前是重度Matlab用户&#xff0c;对于Python里的各种包很不习惯。特别是&#xff0c;本书还自己做了一个名为d2l包&#xff0c;有几个问题很是困惑。今天终于弄明白了&#xff0c;写在这里&…...

RK3568使用opencv(使用摄像头捕获图像数据显示)

文章目录 一、opencv相关的类1. **cv::VideoCapture**2. **cv::Mat**3. **cv::cvtColor**4. **QImage**5. **QPixmap**总结 二、代码实现 一、opencv相关的类 1. cv::VideoCapture cv::VideoCapture 是 OpenCV 中用于视频捕捉的类&#xff0c;常用于从摄像头、视频文件、或者…...

OpenEuler学习笔记(十六):搭建postgresql高可用数据库环境

以下是在OpenEuler系统上搭建PostgreSQL高可用数据环境的一般步骤&#xff0c;通常可以使用流复制&#xff08;Streaming Replication&#xff09;或基于Patroni等工具来实现高可用&#xff0c;以下以流复制为例&#xff1a; 安装PostgreSQL 配置软件源&#xff1a;可以使用O…...

数学平均数应用

给定一个长度为 n 的数组 a。在一次操作中&#xff0c;你可以从索引 2 到 n−1中选择一个索引i&#xff0c;然后执行以下两个操作之一&#xff1a; 将 a[i−1] 减少 1&#xff0c;同时将 a[i1] 增加 1。 将 a[i1] 减少 1&#xff0c;同时将 a[i−1] 增加 1。 在每次操作后&…...

元旦和春节取名的历史变迁

在中国漫长的历史长河中的春节&#xff0c;真要追溯起来也只有一百多年历史——是从晚清时期才逐渐出现在国人的生活里的&#xff0c;而且那时不叫“春节”而叫“元旦”。只不过随着历史的发展过程&#xff0c;“过年”这个名词也一直在演变&#xff0c;直至1949年最终才定下来…...

USB鼠标的数据格式

USB鼠标的数据格式由HID&#xff08;Human Interface Device&#xff09;协议定义&#xff0c;通常包含3个字节的标准数据&#xff0c;具体格式如下&#xff1a; 字节内容描述第1字节按键状态Bit 0: 左键按下&#xff08;1&#xff09;<br>Bit 1: 右键按下&#xff08;1…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.27 线性代数王国:矩阵分解实战指南

1.27 线性代数王国&#xff1a;矩阵分解实战指南 #mermaid-svg-JWrp2JAP9qkdS2A7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-JWrp2JAP9qkdS2A7 .error-icon{fill:#552222;}#mermaid-svg-JWrp2JAP9qkdS2A7 .erro…...

Kafka常见问题之 java.io.IOException: Disk error when trying to write to log

文章目录 Kafka常见问题之 java.io.IOException: Disk error when trying to write to log1. 问题概述2. 问题排查方向&#xff08;1&#xff09;磁盘空间不足&#xff08;2&#xff09;磁盘 I/O 故障&#xff08;3&#xff09;Kafka 日志文件损坏&#xff08;4&#xff09;Kaf…...

libOnvif通过组播不能发现相机

使用libOnvif库OnvifDiscoveryClient类&#xff0c; auto discovery new OnvifDiscoveryClient(QUrl(“soap.udp://239.255.255.250:3702”), cb.Build()); 会有错误&#xff1a; end of file or no input: message transfer interrupted or timed out(30 sec max recv delay)…...

Flink (十二) :Table API SQL (一) 概览

Apache Flink 有两种关系型 API 来做流批统一处理&#xff1a;Table API 和 SQL。Table API 是用于 Scala 和 Java 语言的查询API&#xff0c;它可以用一种非常直观的方式来组合使用选取、过滤、join 等关系型算子。Flink SQL 是基于 Apache Calcite 来实现的标准 SQL。无论输入…...

FFmpeg(7.1版本)的基本组成

1. 前言 FFmpeg 是一个非常流行的开源项目&#xff0c;它提供了处理音频、视频以及其他多媒体内容的强大工具。FFmpeg 包含了大量的库&#xff0c;可以用来解码、编码、转码、处理和播放几乎所有类型的多媒体文件。它广泛用于视频和音频的录制、转换、流媒体传输等领域。 2. F…...

基于微信小程序的辅助教学系统的设计与实现

标题:基于微信小程序的辅助教学系统的设计与实现 内容:1.摘要 摘要&#xff1a;随着移动互联网的普及和微信小程序的兴起&#xff0c;基于微信小程序的辅助教学系统成为了教育领域的一个新的研究热点。本文旨在设计和实现一个基于微信小程序的辅助教学系统&#xff0c;以提高教…...

单片机基础模块学习——超声波传感器

一、超声波原理 左边发射超声波信号&#xff0c;右边接收超声波信号 左边的芯片用来处理超声波发射信号&#xff0c;中间的芯片用来处理接收的超声波信号 二、超声波原理图 T——transmit 发送R——Recieve 接收 U18芯片对输入的N_A1信号进行放大&#xff0c;然后输入给超声…...

HTML<hgroup>标签

例子&#xff1a; 使用hgroup元素标记标题和段落是相关的&#xff1a; <hgroup> <h2>Norway</h2> <p>The land with the midnight sun.</p> </hgroup> 定义和用法&#xff1a; 标签<hgroup>用于包围标题和一个或多个<p&g…...

C++并发编程指南08

以下是经过优化排版后的5.3节内容&#xff0c;详细解释了C中的同步操作和强制排序机制。每个部分都有详细的注释和结构化展示。 文章目录 5.3 同步操作和强制排序假设场景示例代码 5.3.1 同步发生 (Synchronizes-with)基本思想 5.3.2 先行发生 (Happens-before)单线程环境多线程…...

Spring Boot - 数据库集成03 - 集成Mybatis

Spring boot集成Mybatis 文章目录 Spring boot集成Mybatis一&#xff1a;基础知识1&#xff1a;什么是MyBatis2&#xff1a;为什么说MyBatis是半自动ORM3&#xff1a;MyBatis栈技术演进3.1&#xff1a;JDBC&#xff0c;自行封装JDBCUtil3.2&#xff1a;IBatis3.3&#xff1a;My…...

python:洛伦兹变换

洛伦兹变换&#xff08;Lorentz transformations&#xff09;是相对论中的一个重要概念&#xff0c;特别是在讨论时空的变换时非常重要。在四维时空的背景下&#xff0c;洛伦兹变换描述了在不同惯性参考系之间如何变换时间和空间坐标。在狭义相对论中&#xff0c;洛伦兹变换通常…...

“星门计划对AI未来的意义——以及谁将掌控它”

“星门计划对AI未来的意义——以及谁将掌控它” 图片由DALL-E 3生成 就在几天前&#xff0c;唐纳德特朗普宣布了“星门计划”&#xff0c;OpenAI随即跟进&#xff0c;分享了更多细节。他们明确表示&#xff0c;计划在未来四年内投资5000亿美元&#xff0c;在美国为OpenAI构建一…...

为什么“记住密码”适合持久化?

✅ 特性 1&#xff1a;应用重启后仍需生效 记住密码的本质是长期存储用户的登录凭证&#xff08;如用户名、密码、JWT Token&#xff09;&#xff0c;即使用户关闭应用、重启设备&#xff0c;仍然可以自动登录。持久化存储方案&#xff1a; React Native 推荐使用 AsyncStorag…...

国产SiC碳化硅功率器件技术成为服务器电源升级的核心引擎

在服务器电源应用中&#xff0c;国产650V碳化硅&#xff08;SiC&#xff09;MOSFET逐步取代传统超结&#xff08;Super Junction, SJ&#xff09;MOSFET&#xff0c;其核心驱动力源于SiC材料在效率、功率密度、可靠性和长期经济性上的显著优势&#xff0c;叠加产业链成熟与政策…...

【Block总结】动态蛇形卷积,专注于细长和弯曲的局部结构|即插即用

论文信息 标题: Dynamic Snake Convolution based on Topological Geometric Constraints for Tubular Structure Segmentation 作者: 戚耀磊、何宇霆、戚晓明、张媛、杨冠羽 会议: 2023 IEEE/CVF International Conference on Computer Vision (ICCV) 发表时间: 2023年10月…...

Spring MVC 框架:构建高效 Java Web 应用的利器

Java学习资料 Java学习资料 Java学习资料 一、引言 在 Java Web 开发领域&#xff0c;Spring MVC 框架是一颗耀眼的明星。它作为 Spring 框架家族的重要成员&#xff0c;为开发者提供了一套强大而灵活的解决方案&#xff0c;用于构建 Web 应用程序。Spring MVC 遵循模型 - 视…...