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

论文标题

  • 英文标题: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客户端的测量

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

多线程测量

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

优化结果

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

结论与未来工作

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[EAI-026] DeepSeek-VL2 技术报告解读

Paper Card 论文标题&#xff1a;DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding 论文作者&#xff1a;Zhiyu Wu, Xiaokang Chen, Zizheng Pan, Xingchao Liu, Wen Liu, Damai Dai, Huazuo Gao, Yiyang Ma, Chengyue Wu, Bin…

基于Python的药物相互作用预测模型AI构建与优化(下.代码部分)

四、特征工程 4.1 分子描述符计算 分子描述符作为量化分子性质的关键数值,能够从多维度反映药物分子的结构和化学特征,在药物相互作用预测中起着举足轻重的作用。RDKit 库凭借其强大的功能,为我们提供了丰富的分子描述符计算方法,涵盖了多个重要方面的分子性质。 分子量…

【算法】动态规划专题① ——线性DP python

目录 引入简单实现稍加变形举一反三实战演练总结 引入 楼梯有个台阶&#xff0c;每次可以一步上1阶或2阶。一共有多少种不同的上楼方法&#xff1f; 怎么去思考&#xff1f; 假设就只有1个台阶&#xff0c;走法只有&#xff1a;1 只有2台阶&#xff1a; 11&#xff0c;2 只有3台…

0 基础学运维:解锁 K8s 云计算运维工程师成长密码

前言&#xff1a;作为一个过来人&#xff0c;我曾站在技术的门槛之外&#xff0c;连电脑运行内存和内存空间都傻傻分不清&#xff0c;完完全全的零基础。但如今&#xff0c;我已成长为一名资深的k8s云计算运维工程师。回顾这段历程&#xff0c;我深知踏上这条技术之路的艰辛与不…

事务03之MVCC机制

MVCC 多版本并发控制机制 文章目录 MVCC 多版本并发控制机制一&#xff1a;并发事务的场景1&#xff1a;读读场景2&#xff1a;写写场景3&#xff1a;读写 or 写读场景 二&#xff1a;MVCC机制综述1&#xff1a;MVCC日常生活的体现2&#xff1a;多版本并发控制 三&#xff1a;M…

数据结构-Stack和栈

1.栈 1.1什么是栈 栈是一种特殊的线性表&#xff0c;只允许在固定的一段进行插入和删除操作&#xff0c;进行插入和删除操作的一段称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵顼后进先出LIFO&#xff08;Last In First Out&#xff09;的原则&#xff0c;就像一…

langchain基础(二)

一、输出解析器&#xff08;Output Parser&#xff09; 作用&#xff1a;&#xff08;1&#xff09;让模型按照指定的格式输出&#xff1b; &#xff08;2&#xff09;解析模型输出&#xff0c;提取所需的信息 1、逗号分隔列表 CommaSeparatedListOutputParser&#xff1a;…

AI编程:如何编写提示词

这是小卷对AI编程工具学习的第2篇文章&#xff0c;今天讲讲如何编写AI编程的提示词&#xff0c;并结合实际功能需求案例来进行开发 1.编写提示词的技巧 好的提示词应该是&#xff1a;目标清晰明确&#xff0c;具有针对性&#xff0c;能引导模型理解问题 下面是两条提示词的对…

【B站保姆级视频教程:Jetson配置YOLOv11环境(五)Miniconda安装与配置】

B站同步视频教程&#xff1a;https://www.bilibili.com/video/BV1MwFDeyEYC/ 文章目录 0. Anaconda vs Miniconda in Jetson1. 下载Miniconda32. 安装Miniconda33. 换源3.1 conda 换源3.2 pip 换源 4. 创建环境5. 设置默认启动环境 0. Anaconda vs Miniconda in Jetson Jetson…

仿真设计|基于51单片机的无线投票系统仿真

目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现&#xff08;protues8.7&#xff09; 程序&#xff08;Keil5&#xff09; 全部内容 资料获取 具体实现功能 &#xff08;1&#xff09;投票系统分为发送端和接收端。 &#xff08;2&#xff09;发送端通过按…

玩转大语言模型——使用langchain和Ollama本地部署大语言模型

系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型——使用GraphRAGOllama构建知识图谱 玩转大语言模型——完美解决Gra…

(动态规划基础 打家劫舍)leetcode 198

已知h2和h1&#xff0c;用已知推出未知 推是求答案&#xff0c;回溯是给答案 这里图片给出dfs暴力&#xff0c;再进行记录答案完成记忆化搜索&#xff0c;再转为dp数组 #include<iostream> #include<vector> #include<algorithm> //nums:2,1,1,2 //dp:2,2,…

origin如何在已经画好的图上修改数据且不改变原图像的画风和格式

例如我现在的.opju文件长这样 现在我换了数据集&#xff0c;我想修改这两个图表里对应的算法里的数据&#xff0c;但是我还想保留这图像现在的形式&#xff0c;可以尝试像下面这样做&#xff1a; 右击第一个图&#xff0c;出现下面&#xff0c;选择Book[sheet1] 选择工作簿 出…

[STM32 - 野火] - - - 固件库学习笔记 - - -十二.基本定时器

一、定时器简介 STM32 中的定时器&#xff08;TIM&#xff0c;Timer&#xff09;是其最重要的外设之一&#xff0c;广泛用于时间管理、事件计数和控制等应用。 1.1 基本功能 定时功能&#xff1a;TIM定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中…

Python从0到100(八十六):神经网络-ShuffleNet通道混合轻量级网络的深入介绍

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

04树 + 堆 + 优先队列 + 图(D1_树(D1_基本介绍))

目录 一、什么是树&#xff1f; 二、相关术语 根结点 边 叶子结点 兄弟结点 祖先结点 结点的大小 树的层 结点的深度 结点的高度 树的高度 斜树 一、什么是树&#xff1f; 树是一种类似于链表的数据结构&#xff0c;不过链表的结点是以线性方式简单地指向其后继结…

Rust语言进阶之文件处理:std::fs用法实例(九十九)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

flowable expression和json字符串中的双引号内容

前言 最近做项目&#xff0c;发现了一批特殊的数据&#xff0c;即特殊字符"&#xff0c;本身输入双引号也不是什么特殊的字符&#xff0c;毕竟在存储时就是正常字符&#xff0c;只不过在编码的时候需要转义&#xff0c;转义符是\&#xff0c;然而转义符\也是特殊字符&…

学习数据结构(5)单向链表的实现

&#xff08;1&#xff09;头部插入 &#xff08;2&#xff09;尾部删除 &#xff08;3&#xff09;头部删除 &#xff08;4&#xff09;查找 &#xff08;5&#xff09;在指定位置之前插入节点 &#xff08;6&#xff09;在指定位置之后插入节点 &#xff08;7&#xff09;删除…

14-8C++STL的queue容器

一、queue容器 (1)queue容器的简介 queue为队列容器&#xff0c;“先进先出”的容器 (2)queue对象的构造 queue<T>q; queue<int>que Int;//存放一个int的queue容器 queue<string>queString;//存放一个string的queue容器 (3)queue容器的push()与pop()方…