当前位置: 首页 > 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;以提高教…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...