SpringCloud-高级篇(二十一)

news2024/11/24 16:59:05

前面解决了消息的可靠性、消息的延迟问题,下面研究一下消息的堆积的问题: 

(1)消息堆积问题

消息产生堆积,上限后,最早的消息成为死信,有消息被丢弃,这对安全性较高的业务中是不行的,需要去解决消息堆积的问题。

前两种是消费者角度,第三种是队列的角度 ,提高队列的容积,可以缓解消息堆积问题

开启线程池也是有限制的,如果消息很多,需要开启很多很多线程,开启的线程很多对cpu是一种浪费,cpu需要在多个线程之间做上下文的切换,因此这种方案适合,这个消息处理的业务耗时比价长的情况,可以开多个线程,cpu可以并行处理多个业务

我们下面将一下第三种:扩大队列的容积

(2)惰性队列

我们知道MQ的队列是内存存储的,如果说在高并发的情况下,消息量非常大,达到数百万,这些消息都给他扔到内存中,显然是不合适的,我们要学习惰性队列去解决这个问题

对于传统的对类来讲,如果你没有开启消息的持久化,所有的消息都是在内存中的,其目的是加快消息投递的速度,优势就是响应速度快,也有一个问题就是在内存中存储有一个上限, mq会设置一个内存的预警值默认40%,如果在消息堆积的情况下,很容易达到消息的预警,此时mq就会处于一个暂停状态,会阻止生产者投递消息进来,会给这部分消息刷出到磁盘,清理一部分内存空间,这个动作叫做快照,所以呢会导致mq处于间歇性的暂停状态组织用户写入请求,所以mq的并发能力处于波浪形的忽高忽低的情况,性能不够稳定

惰性队列会把请求直接写入磁盘,很难触发mq的预警,性能会比较稳定,但是写磁盘性能不如内存,会带来一定的读写延迟 ,但是也再可以接收的范围内,消费者消费消息再从磁盘读,带来的还是性能损耗,带来延迟

把对列变成惰性队列,有两种

消费者:

发送者:

惰性对列直接到磁盘 

普通队列先发到内存,达到预警,刷出到磁盘 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Uniapp真机调试:手机端访问电脑端的后端接口解决

Uniapp真机调试:手机端访问电脑端的后端接口解决 1、前置操作 HBuilderX -> 运行 -> 运行到手机或模拟器 -> 运行到Android App基座 少了什么根据提示点击下载即可 使用数据线连接手机和电脑 手机端:打开开发者模式 -> USB调试打开手机端&…

小白速成法:剖析一个Android项目以快速上手

这是一个基于Tasmota的设备、用MQTT协议来通信控制的安卓应用程序。支持ON/OFF命令插座和基本的RGB LED控制。 源码点击此处 只需要关注SmartController-main\app\src的代码 项目解压之后如图 只需要关注“app”文件夹里的东西即可,“gradle”是配置文件&#xf…

【前端web入门第五天】03 清除默认样式与外边距问题【附综合案例产品卡片与新闻列表】

文章目录: 1.清除默认样式 1.1清除内外边距1.2清除列表圆点(项目符号) 3.外边距问题-合并现象4.外边距问题–塌陷问题5.行内元素垂直内外边距6.圆角与盒子阴影 6.1圆角 6.2 盒子模型-阴影(拓展) 综合案例一 产品卡片 综合案例二 新闻列表 1.清除默认样式 在实际设计开发中,要…

Pandas深度解析GroupBy函数的妙用技巧【第75篇—GroupBy函数】

Pandas深度解析GroupBy函数的妙用技巧 数据处理和分析中,Pandas是一款非常强大的Python库,提供了丰富的数据结构和功能,使得数据分析变得更加简便高效。其中,GroupBy函数是Pandas中一个重要且常用的功能,通过它我们可…

第四节课[XTuner微调]作业

文章目录 前言作业基础作业-XTuner InternLM-Chat 个人小助手认知微调实践 前言 XTuner 做在第三节课LangChain作业之前,因为第三节课没想好找哪个领域,等第三节课作业做了一起部署。 作业 基础作业-XTuner InternLM-Chat 个人小助手认知微调实践 然…

Ps:直接从图层生成文件(图像资源)

通过Ps菜单:文件/导出/将图层导出到文件 Layers to Files命令,我们可以快速地将当前文档中的每个图层导出为同一类型、相同大小和选项的独立文件。 Photoshop 还提供了一个功能,可以基于文档中的图层或图层组的名称,自动生成指定大…

渗透专用虚拟机(公开版)

0x01 工具介绍 okfafu渗透虚拟机公开版。解压密码:Mrl64Miku,压缩包大小:15.5G,解压后大小:16.5G。安装的软件已分类并在桌面中体现,也可以使用everything进行查找。包含一些常用的渗透工具以及一些基本工…

opencv图像像素的读写操作

void QuickDemo::pixel_visit_demo(Mat & image) {int w image.cols;//宽度int h image.rows;//高度int dims image.channels();//通道数 图像为灰度dims等于一 图像为彩色时dims等于三 for (int row 0; row < h; row) {for (int col 0; col < w; col) {if…

RabbitMQ之五种消息模型

1、 环境准备 创建Virtual Hosts 虚拟主机&#xff1a;类似于mysql中的database。他们都是以“/”开头 设置权限 2. 五种消息模型 RabbitMQ提供了6种消息模型&#xff0c;但是第6种其实是RPC&#xff0c;并不是MQ&#xff0c;因此不予学习。那么也就剩下5种。 但是其实3、4…

【数学建模】【2024年】【第40届】【MCM/ICM】【E题 财产保险的可持续性】【解题思路】

一、题目 &#xff08;一&#xff09; 赛题原文 2024 ICM Problem E: Sustainability of Property Insurance Extreme-weather events are becoming a crisis for property owners and insurers. The world has endured “more than $1 trillion in damages from more than …

尚硅谷 Vue3+TypeScript 学习笔记(下)

目录 五、组件通信 5.1. 【props】 5.2. 【自定义事件】 5.3. 【mitt】 5.4.【v-model】 5.5.【$attrs】 5.6. 【$refs、$parent】 5.7. 【provide、inject】 5.8. 【pinia】 5.9. 【slot】 1. 默认插槽 2. 具名插槽 3. 作用域插槽 六、其它 API 6.1.【shallowR…

Python学习从0到1 day16 Python文件操作

2024新年快乐&#xff01;&#xff01;&#xff01; 今天是大年初三&#xff0c;祝大家万事胜意&#xff0c;一切都会好的&#xff0c;休息了一段时间&#xff0c;从今天开始继续学习~ ​​​​​​​——24.2.12 一、文件的编码 计算机只能识别0和1&#xff0c;那么我们丰富的…

Spring Boot 笔记 002 整合mybatis做数据库读取

概念 MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;Plain Old Java Objec…

并发CPU伪共享及优化

目录 伪共享 解决 伪共享 缓存系统中是以缓存行&#xff08;cache line&#xff09;为单位存储的。缓存行是2的整数幂个连续字节&#xff0c;一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时&#xff0c;如果这些变量共享同一个缓存行&am…

如何在 Windows 10/11 上恢复回收站永久删除的文件夹?

经验丰富的 Windows 用户将使用 Windows 备份和还原或文件历史记录来恢复不在回收站中的已删除文件夹。这些工具确实有助于 Windows 文件夹恢复&#xff0c;但并不总是有效。现在有许多专用的 Windows 数据恢复软件和免费解决方案可以替代它们&#xff0c;为 Windows 用户提供了…

前端vue 数字 字符串 丢失精度问题

1.问题 后端返回的数据 是这样的 一个字符串类型的数据 前端要想显示这个 肯定需要使用Json.parse() 转换一下 但是 目前有一个问题 转换的确可以 showId:1206381711026823172 有一个这样的字段 转换了以后 发现 字段成了1206381711026823200 精度直接丢了 原本的数据…

分享76个文字特效,总有一款适合您

分享76个文字特效&#xff0c;总有一款适合您 76个文字特效下载链接&#xff1a;https://pan.baidu.com/s/1rIiUdCMQScoRVKhFhXQYpw?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不…

项目02《游戏-14-开发》Unity3D

基于 项目02《游戏-13-开发》Unity3D &#xff0c; 任务&#xff1a;战斗系统之击败怪物与怪物UI血条信息 using UnityEngine; public abstract class Living : MonoBehaviour{ protected float hp; protected float attack; protected float define; …

Ubuntu Desktop 自动获取 IP 地址

Ubuntu Desktop 自动获取 IP 地址 1. 左键单击网络图标 -> Edit Connections2. Network Connections3. Edit -> IPv4 SettingsReferences 1. 左键单击网络图标 -> Edit Connections 2. Network Connections ​​​ 3. Edit -> IPv4 Settings Automatic (DHCP) …

C++ shell - 在线 C++ 编译器

C shell - 在线 C 编译器 1. C shell2. Example program3. Options4. ExecutionReferences 1. C shell C Shell v2 https://cpp.sh/ https://cpp.sh/about.html C Shell v2, free online compiler, proudly uses emscripten to compile your code. emscripten is a clang-ba…