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

如果任务过多,队列积压怎么处理?

如果任务过多,队列积压怎么处理?

    • 1、内存队列满了应该怎么办
    • 2、问题要治本——发短信导致吞吐量降低的问题不能忽略!!
    • 3、多路复用IO模型的核心组件简介

1、内存队列满了应该怎么办

如图:
在这里插入图片描述
大家可以看到,虽然现在发短信和广告投递,彼此之间的执行效率不受彼此影响,但是请大家注意,投放广告之后还要把请求放到内存队列里面去,而内存空间是很有限的,比方说有一个很热情的厨师,他强行的把自己做好的菜,往客人嘴里塞,然而作为一个普通人你的肠胃对食物的消化速度远远比不了人家做菜的速度,就这样,你肠胃里的食物,还没消化完,厨师还是不停的往你嘴里送。

不用多说这样下去你的肠胃一定会有问题,那么同理发短信的速度,远远比不上商户们投放广告速度,内存就像人的肠胃样,是会被撑爆的,那么如果现在我们没办法改变我们肠胃的消化能力,又不想被热情的厨师做的菜撑爆,那我们最好先客人跟厨师说明,它的饭量大概是多少,当厨师发现你快吃不下的时候人家厨师或许就放慢做菜速度,乃至停止继续做菜了。

内存队列也是一样,我们可以通过对发送短信系统的压测,评估出一个对数据处理的执行效率,从而制定内存队列的大小,投放广高系统,刚知道队列快满的时候可以选择,延缓将数据放入队列的速度甚至极端情况,就可以将数据丢弃,因为本来发短信也不是什么太重要的事情。

2、问题要治本——发短信导致吞吐量降低的问题不能忽略!!

内存被撑爆的问题,算是解决了,但是不是有一种治标不治本呢?因为最根本的问题是还是发送短信的环节导致的?我们所谓的调整内存队列大小,换句话说就是因为发送短信的效率低下最终还是影响了系统的吞吐量,是不是很不爽呢?那么你可能会问了,创建多个线程,多部署几台与短信运营商交互的机器不就行了吗?如图

在这里插入图片描述
是的,没错,这样三个线程消费队列中的请求的的确确是加强了消费速度,但是还是有令人不舒服的地方:

线程是宝贵的系统资源,确实不想为发短信这样的事情开辟更多资源

单个线程的利用率还是很低,只要进行了短信发送就意味着这个线程将被长时间阻塞,还是没能解决消费过慢的根本原因

以一个购物狂的生活状态为背景,思考如何解决队列数据消费过慢的问题

假如有怎么一个购物狂,人生最大的快乐就是网购,拆包裹,由于对购物的热情已达到一种病态的程度,以至于当他买了一将商品之后,就日日夜夜的在快递存放点蹲守等着收自己的快递,直到拿到了才罢休。

我们把这种取快递的方式如果比作是IO操作的一种方式,那就是阻塞IO了,也就是说我只要调用了read方法我必须读取到所要的信息才行,否则我就一直在这里阻塞着。这也是发短信系统中的线程所采取的IO读写方式。

过了几天,购物狂也明白了,毕竟他还要买买买啊,老在这花大把的时间干等,也不是一个事儿,所以他现在稍微理性了些,不管在快递存放点取没取到包裹,就会回去了,但是别忘了拆包裹对他来说也是很重要的一部分。

所以他来往快递存放点的频率非常高,快递还没有送达,他就来快递存放点好几个来回,这也就表示他空手而归成了将常便饭,你想每天都要去一个地方好几回,而且也都是做的无用功,但这个过程对购物狂的时间消耗是实实在在的。

像上面这种情况就可以被看做是非阻塞IO的处理方式,当你发起IO请求的时候&#x

相关文章:

如果任务过多,队列积压怎么处理?

如果任务过多,队列积压怎么处理? 1、内存队列满了应该怎么办2、问题要治本——发短信导致吞吐量降低的问题不能忽略!!3、多路复用IO模型的核心组件简介1、内存队列满了应该怎么办 如图: 大家可以看到,虽然现在发短信和广告投递,彼此之间的执行效率不受彼此影响,但是请…...

FTP协议——BFTPD基本操作(Ubuntu+Win)

1、描述 本机(Win10)与虚拟机(Ubuntu22.04.4)上的BFTPD服务器建立FTP连接,执行一些基本操作。BFTPD安装教程:FTP协议——BFTPD安装(Linux)-CSDN博客 2、 步骤 启动BFTPD。启动文件…...

为什么需要分布式 ID?

目录 为什么需要分布式 ID 分布式 ID 的生成方法 分布式 ID 的应用场景 小结 在现代软件架构中,分布式系统架构变得越来越流行。在这些系统中,由于组件分散在不同的服务器、数据中心甚至不同的地理位置,因此要构建高性能、可扩展的应用系…...

MIT6.828 Lab2-3 Sysinfo

目录 一、实验内容二、实验过程2.1 已有的代码2.2 需补充内容/kernel/kalloc.c修改(剩余内存计算的函数)/kernel/proc.c修改(统计进程数量的函数)/kernel/defs.h修改添加/kernel/sysinfo.c文件/kernel/syscall.h修改/kernel/sysca…...

形态学操作:腐蚀、膨胀、开闭运算、顶帽底帽变换、形态学梯度区别与联系

一、总述相关概念 二、相关问题 1.形态学操作中的腐蚀和膨胀对图像有哪些影响? 形态学操作中的腐蚀和膨胀是两种常见的图像处理技术,它们通过对图像进行局部区域的像素值替换来实现对图像形状的修改。 腐蚀操作通常用于去除图像中的噪声和细小的细节&a…...

StringBufferInputStream类,你学会了吗?

在Java编程中,处理字符串数据流是一项常见的任务。 为了更灵活地处理字符串数据流,Java提供了StringBufferInputStream类,它允许将字符串转换为输入流,从而可以像处理其他输入流一样对字符串进行操作。 本文将深入探讨StringBufferInputStream类的背景、用法、优缺点以及…...

06_Tomcat

文章目录 Tomcat1.概念2.Tomcat安装3.Tomcat项目结构4.标准web项目结构5.Tomcat部署项目方式6.IDEA关联Tomcat6.1 构建tomcat和idea关联6.2 使用idea创建一个Javaweb工程6.3 使用idea将工程**构建**成一个app6.4 使用idea将构建好的app**部署**到tomcat中 Tomcat 1.概念 Tomc…...

系统安全扫描扫出了:可能存在 CSRF 攻击怎么办

公司的H5在软件安全测试中被检查出可能存在 CSRF 攻击,网上找了一堆解决方法,最后用这种方式解决了。 1、问题描述 CSRF 是 Cross Site Request Forgery的缩写(也缩写为也就是在用户会话下对某个 CGI 做一些 GET/POST 的事,RIVTSTCNNARGO一这…...

Android ART 虚拟机简析

源码基于:Android U 1. prop 名称选项名称heap 变量名称功能 dalvik.vm.heapstartsize MemoryInitialSize initial_heap_size_ 虚拟机在启动时,向系统申请的起始内存 dalvik.vm.heapgrowthlimit HeapGrowthLimit growth_limit_ 应用可使用的 max…...

Android低代码开发 - MenuPanel的源码剖析和基本使用

看了我上篇文章Android低代码开发 - 像启蒙和乐高玩具一样的MenuPanel 之后,本篇开始讲解代码。 源代码剖析 首先从MenuPanelItemRoot讲起。 package dora.widget.panelinterface MenuPanelItemRoot {/*** 菜单的标题。** return*/var title: String?fun hasTit…...

Leetcode刷题笔记3

18. 四数之和 18. 四数之和 - 力扣(LeetCode) 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应&…...

初识C语言——第二十九天

数组 本章重点 1.一维数组的创建和初始化 数组的创建 注意事项: 1.一维由低数组在内存中是连续存放的! 2.随着数组下标的增长,地址是由低到高变化的 2.二维数组的创建和初始化 注意事项: 1.二维数组在内存中也是连续存放的&am…...

LeetCode27.移除元素

题目链接: 27. 移除元素 - 力扣(LeetCode) 思路分析:同样属于经典的双指针移动问题,要掌握固定的思路即可。 算法分析:这个题目可以这样处理,我们把所有非val 的元素都向前移动,把…...

DiffMap:首个利用LDM来增强高精地图构建的网络

论文标题: DiffMap: Enhancing Map Segmentation with Map Prior Using Diffusion Model 论文作者: Peijin Jia, Tuopu Wen, Ziang Luo, Mengmeng Yang, Kun Jiang, Zhiquan Lei, Xuewei Tang, Ziyuan Liu, Le Cui, Kehua Sheng, Bo Zhang, Diange Ya…...

ComfyUI简单介绍

🍓什么是ComfyUI ComfyUI是一个为Stable Diffusion专门设计的基于节点的图形用户界面,可以通过各种不同的节点快速搭建自己的绘图工作流程。 软件打开之后是长这个样子: 同时软件本身是github上的一个开源项目,开源地址为&#…...

【内存泄漏Bug】animation未释放

问题描述 一个页面做了动画特效,这个页面有可能跳转到其他页面,并长时间不返回,该页面此时已经不活跃了,该页面的对象为无用对象,存在内存泄漏风险 问题分析 这个activity的特性是 1. 有可能跳转到其他页面 2. 有可…...

《异常检测——从经典算法到深度学习》28 UNRAVEL ANOMALIES:基于周期与趋势分解的时间序列异常检测端到端方法

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …...

Python正则模块re方法介绍

Python 的 re 模块提供了多种方法来处理正则表达式。以下是一些常用的方法及其功能介绍: 1. re.match() 在字符串的开始位置进行匹配。 import repattern r\d string "123abc456"match re.match(pattern, string) if match:print(f"匹配的字符…...

pdf使用pdfbox切割pdf文件MultipartFile

引入依赖&#xff1a; <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.25</version></dependency>测试代码&#xff1a; import io.choerodon.core.iam.ResourceLevel; impo…...

力扣HOT100 - 31. 下一个排列

解题思路&#xff1a; 数字是逐步增大的 步骤如下&#xff1a; class Solution {public void nextPermutation(int[] nums) {int i nums.length - 2;while (i > 0 && nums[i] > nums[i 1]) i--;if (i > 0) {int j nums.length - 1;while (j > 0 &&…...

使用workbuddy 30分钟搭建微信小程序

前言 今天发现一个超好用的工具WorkBuddy可以非常快速地进行搭建小程序&#xff0c;还有进行一些代码的修改&#xff0c;简直是一个开发小程序的好帮手&#xff0c;今天用一节很小的短篇介绍一下整个创建部署和搭建过程。 第一步下载workbuddy 创建小程序 首先需要下载work…...

从零构建工业级垃圾邮件分类器:端到端实战指南

1. 项目概述&#xff1a;从零构建一个真正能用的垃圾邮件分类器你打开邮箱&#xff0c;每天收到几十封邮件&#xff0c;其中总混着几封标题耸动、内容空洞、发件人可疑的“优惠券”“中奖通知”“账户异常提醒”——它们不是广告&#xff0c;而是典型的垃圾邮件&#xff08;Spa…...

peerstream像素流多服务器部署(多流实现原理)

想要实现无限路并发&#xff0c;单个服务器显卡槽数是有限的不能仅通过增加显卡来增大并发路数&#xff0c;所以我们要学会如何多服务器部署才能实现无限制流送并发。 准备工作&#xff1a;最少两台服务器&#xff0c;其中一台作为主服务器&#xff0c;其他作为副服务器 相关重…...

高等数学 定理及习题

本文涉及知识点 数学 《高等数学》&#xff08;上册&#xff09; 第一章 函数与极限 第一节 映射与函数 第二节 数列的极限 第三节 函数的极限 第四节 无穷小与无穷大 第五节 极限运算法则 第六节 极限存在准则 两个重要极限 第七节 无穷小的比较 第八节 函数的连续性…...

大模型常识能力构建:从幻觉到可信赖推理的四层工程实践

1. 项目概述&#xff1a;当大模型开始“琢磨事儿”——我们离真正有常识的AI还有多远&#xff1f;你有没有试过让当前最火的大模型帮你解决一个看似简单、却需要生活经验的问题&#xff1f;比如&#xff1a;“如果我把一罐可乐放进冰箱冷冻室&#xff0c;两小时后拿出来&#x…...

UE5中用TypeScript替代蓝图:Puerts热重载实战指南

1. 为什么非得在UE5里塞进TypeScript——一个被蓝图卡住脖子的开发者的自白 我第一次在UE5项目里写完第10个“Get All Actors of Class”节点&#xff0c;拖出第7条执行引线&#xff0c;再连上第4个“Branch”判断分支&#xff0c;最后把结果塞进一个“Set Array Element”时&a…...

Windows 11终极优化指南:Win11Debloat一键提升51%系统性能

Windows 11终极优化指南&#xff1a;Win11Debloat一键提升51%系统性能 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter an…...

量子计算在DNA序列相似性比较中的应用与优化

1. 量子计算与DNA序列相似性比较的背景DNA序列相似性比较是生物信息学和比较基因组学中的基础性任务。想象一下&#xff0c;你手上有两串由A、T、G、C四个字母组成的长字符串&#xff0c;如何判断它们的相似程度&#xff1f;这个问题看似简单&#xff0c;但在实际应用中却极具挑…...

抖音图片怎么去水印文字?2026年实测工具推荐及方法完全指南

抖音图片的水印文字问题困扰着很多内容创作者和素材收集者。无论是想保存喜欢的图片、重新利用优质素材&#xff0c;还是为自己的创意项目寻找灵感&#xff0c;去除不必要的水印都是必要的技能。本文为你详细介绍抖音图片去水印文字的多种方法&#xff0c;从专业工具到手机应用…...

NotebookLM移动端体验全拆解(iOS/Android双端对比报告·仅限内测用户知晓的性能阈值)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;NotebookLM移动端体验全景概览 NotebookLM 作为 Google 推出的基于用户自有文档构建的 AI 助手&#xff0c;其移动端&#xff08;iOS/Android&#xff09;已正式开放下载。该应用并非简单将网页版界面缩放适配…...