C++消息队列处理提高性能的方法

1 消息队列特点

在当前多数软件系统中,处理传递消息多用消息队列机制,他具有以下优点:

1. 异步通信:消息队列支持异步通信,发送者和接收者之间的解耦程度较高。发送者将消息放入队列后即可继续执行,而不需要等待接收者的响应。这样可以提高系统的吞吐量和处理能力。

2. 可靠性:消息队列通常提供持久化机制,可以在消息发送后将其持久化到磁盘,并在需要时重新加载。这样即使在系统故障或服务不可用的情况下,消息也不会丢失。

3. 缓冲能力:消息队列允许在发送者和接收者之间建立一个缓冲区,即消息队列。这使得发送者和接收者在处理速率不一致的情况下可以进行解耦削峰,缓解系统压力。在发送者消息发送速率慢下来的时候,接收者可以继续处理缓冲区中余下的消息,起到平谷的作用。

4. 异构系统集成:消息队列可以用于将不同平台、不同语言或不同应用程序之间的消息传递进行集成。通过定义统一的消息格式和协议,不同的系统可以相互通信,实现解耦和互操作。


然而,使用消息队列也存在一些不足之处:
1. 复杂性:实现消息队列需要引入额外的组件和架构,增加了系统的复杂性和维护成本。需要确保消息队列的可用性、消息的序列化和反序列化,以及处理消息队列故障等问题。

2. 系统延迟:由于消息队列是一种异步通信机制,消息的发送和接收之间可能存在一定的延迟。这对于某些实时性要求较高的应用来说可能是不可接受的。

3. 系统依赖性:使用消息队列需要依赖消息队列中间件或者第三方库。这增加了系统的依赖性,并可能导致与特定消息队列中间件相关的限制或问题。

综上所述,使用消息队列可以提供异步通信、可靠性、缓冲能力和异构系统集成等优点,但也会增加系统的复杂性、引入延迟并增加系统的依赖性。在使用消息队列时需要根据具体的应用场景权衡利弊并适当选择。

2 消息队列处理性能提升的过程

2.1 初步阶段

以最简单的sleep为例:

使用while(true)+sleep的方法,当消息队列中有数据时根据数据来到的时间次序依次处理,当队列为空时会进行一段时间的休眠,范围是5-100毫秒,在休眠的这段时间将CPU让给其他线程执行,其他线程根据自身情况向消息队列发送消息,存储在缓冲区,等待休眠时间过去,查看队列是否为空,有消息则处理,没有则继续休眠。

这样的处理模式缺点在于消息从发送到处理会经过毫秒数量级的时间,满足不了高性能的要求。

在此基础上,如果去掉消息队列处理时休眠的语句,令其不停的查看消息队列是否存在数据,实测下来速率并没有很明显的提升,因为在

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

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

相关文章

删除指定的数

删除指定的数 题目描述:解法思路:解法代码:运行结果: 题目描述: 先输入10个整数存放在数组中,再输入⼀个整数n,删除数组中所有等于n的数字,数组中剩余的数组保证数组的最前面&#…

电脑键盘快捷键,掌握这些,快速提高效率!

“我是一名电脑新手,在使用电脑时还有很多不懂的。想问问大家平常有什么比较好用的电脑键盘快捷键可以推荐吗?” 在数字化时代,电脑已成为我们生活与工作中不可或缺的工具。掌握一些常用的电脑键盘快捷键,不仅能提高我们的工作效率…

[备赛笔记]——5G大唐杯(5G考试等级考考试基础试题)

个人名片: 🦁作者简介:学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:Vir2021GKBS 🐼本文由…

学生信息管理展示-h5版(uniapp+springboot+vue)

记录一下做的第一个完整的h5业务。 一、登录 二、个人中心 三、首页(管理员) 四、首页(学生) 五、视频展示 学生信息管理展示(h5)完整版

如何解决由于浏览器版本升级导致脚本用不了的问题【文章底部可得就业内推码】

目录 1. 使用WebDriverManager: 2. 手动下载更新驱动: 3. 设置浏览器选项: 4. 使用Selenium Grid: 5. 参考官方文档和社区: 面对浏览器版本升级导致的网页自动化脚本无法正常运行的问题,你可以采取以下…

chromedriverUnable to obtain driver for chrome using ,selenium找不到chromedriver

1、下载chromedriver chromedriver下载网址:CNPM Binaries Mirror 老版本在:chromedriver/ 较新版本在:chrome-for-testing/ 2、设置了环境变量还是找不到chromedriverUnable to obtain driver for chrome using NoSuchDriverException:…

Java基础及开发环境配置教程

Java基础 Java是一种广泛使用的编程语言,以其“一次编写,到处运行”的能力而闻名。无论是开发桌面应用程序、Web应用程序还是移动应用程序,Java都是一个优秀的选择。本文将介绍Java的基础知识和如何配置Java开发环境。 1. Java简介 Java是…

【CSP试题回顾】201609-2-火车购票

CSP-201609-2-火车购票 解题思路 初始化座位: 首先,它创建了一个20行5列的二维向量 seatMap 用于表示车厢的座位情况。每个座位按顺序赋予了一个编号,从1到100。这部分代码通过两层循环完成,外层循环遍历所有的排,内层循环遍历每…

【学习】torch.nn.CrossEntropyLoss交叉熵损失函数

交叉熵损失函数torch.nn.CrossEntropyLoss 交叉熵主要是用来判定实际的输出与期望的输出的接近程度,为什么这么说呢,举个例子: 在做分类的训练的时候,如果一个样本属于第K类,那么这个类别所对应的输出节点的输出值应…

性能对比:mysql 5.7-8.0-TiDB 7.5-OceanBase 4.2-MariaDB 10.11-机械硬盘-固态硬盘-

1.mysql 5.7-8.0 5.7比8.0优秀 结果:5.7比8.0优秀 10% 2.机械硬盘和固态硬盘 影响不大,主要是CPU 3. JAVA MYSQL 分开 4.『直属 MySQL 』vs 『Docker MySQL』 vs 『Podman MySQL』 直属最好 ,其次是Podman,最后是DOCKER 5.MySQL …

CKA考试必备:解锁Pod封装多容器的高级技巧!

往期精彩文章 : 提升CKA考试胜算:一文带你全面了解RBAC权限控制!揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?CKA认证必备:掌握k8s网络策略的关键要点提高CKA认证成功率,CKA真题中的节点维…

《JAVA与模式》之责任链模式

系列文章目录 文章目录 系列文章目录前言一、从击鼓传花谈起二、责任链模式的结构三、使用场景四、责任链模式在Tomcat中的应用 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站&…

LeetCode_25_困难_K个一组翻转链表

文章目录 1. 题目2. 思路及代码实现(Python)2.1 模拟 1. 题目 给你链表的头节点 h e a d head head ,每 k k k 个节点一组进行翻转,请你返回修改后的链表。 k k k 是一个正整数,它的值小于或等于链表的长度。如果节…

Spring之Bean详解

Spring之Bean详解 什么是Bean? 在Spring中,Bean是指由Spring容器管理的对象,这些对象是由Spring IoC容器负责创建、组装和管理的。Bean可以是Java类的实例,也可以是其他Spring管理的组件,例如数据源、事务管理器等。…

【树上倍增】【割点】 【换根法】3067. 在带权树网络中统计可连接服务器对数目

作者推荐 视频算法专题 本文涉及知识点 树上倍增 树 图论 并集查找 换根法 深度优先 割点 LeetCode3067. 在带权树网络中统计可连接服务器对数目 给你一棵无根带权树,树中总共有 n 个节点,分别表示 n 个服务器,服务器从 0 到 n - 1 编号…

Wireshark_labs TCP

在本实验中,我们将详细研究著名的TCP协议的行为。我们将通过从您的电脑向远程服务器传输一份150KB 的文件(一份Lewis Carrol 的“爱丽丝梦游仙境”文本), 并分析TCP传输内容的发送和接收过程来实现。我们将研究TCP对序列和确认号的使用,以提供…

Proxmox VE安装CentOS

1、下载CentOS镜像文件 阿里巴巴开源镜像站: https://developer.aliyun.com/mirror/ CentOS 镜像文件 https://mirrors.aliyun.com/centos/8.5.2111/isos/x86_64/CentOS-8.5.2111-x86_64-dvd1.iso 2、上传ISO镜像 选择ISO镜像上传 3、创建虚拟机 1、点击【创…

python转换json

import json import os from enum import Enumclass LaneDirectionType(int, Enum):LaneDirectionType_Unknown -1 # 类型未知OneWay 1 # 单向TwoWay 2 # 双向# 颜色类型 class ColorCombo(int, Enum):NOUSE 0 # 默认值UNKNOWN 1000 # 未定义WHITE 1 # 白色(默认值…

俄罗斯套娃 (Matryoshka) 嵌入模型概述

在这篇博客中,我们将向你介绍俄罗斯套娃嵌入的概念,并解释为什么它们很有用。我们将讨论这些模型在理论上是如何训练的,以及你如何使用 Sentence Transformers 来训练它们。 除此之外,我们还会告诉你怎么用这种像套娃一样的俄罗斯…

【Vue】vue3 在图片上渲染 OCR 识别后的文本框、可复制文本组件

需求 后面返回解析后的文本和四角坐标,在图片上渲染成框,并且可复制。图片还可以缩放、拖拽 实现 这里要重点讲下关于OCR文本框的处理: 因为一些文字可能是斜着放的,所有我们要特殊处理,根据三角函数来计算出它的偏…