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

news2024/9/8 10:41:58

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关文章

快速版-JS基础01书写位置

1.书写位置 2.标识符 3.变量 var:声明变量。 (1).变量的重新赋值 (2).变量的提升 打印结果:console.log(变量名) 第一个是你写在里面的。 第二个是实际运行的先后之分,变量名字在最前面。变量…

sql注入less8——布尔盲注

sql注入第八关卡是布尔盲注,我们将看不到一般的返回值,只能通过You are in......的消失与否来判断自己输入的字符是否与查询的数据的字符相同,相同则显示You are in......,相反则不显示,如下图所示: 查询语…

每天五分钟深度学习框架pytorch:tensor张量的维度转换大全

本文重点 在深度学习中比较让人头疼的一点就是矩阵的维度,我们必须构建出符合神经网络维度的矩阵,只有将符合要求的矩阵放到神经网络中才可以运行神经网络,本节课程我们将学习以下tensor中维度的变化。 view和shape View和shape,这两个方法可以完成维度的变换操作,而且使…

YOLOv10来了

B站:啥都会一点的研究生公众号:啥都会一点的研究生 前言 YOLOv10 由清华大学研究人员在 Ultralytics版基础上进行进一步开发,引入了一种新的实时目标检测方法,解决了以前版本 YOLO 在后处理和模型架构方面的不足。通过消除非最大…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第30课-门的移动动画

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第30课-门的移动动画 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎…

mysql中连接查询的成本

大家好。上篇文章我们讲了mysql中成本的含义以及单表查询如何计算成本。现在我们接着讲讲mysql中连接查询的成本。 在讲之前,我们先创建两张一样的表single_table和single_table2,并在表中插入10000条数据。在下面的讲解中,我们称single_tab…

Ubuntu22.04之解决:忘记登录密码(二百三十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

OpenHarmony 实战开发——ArkUI中的线程和看门狗机制

一、前言 本文主要分析ArkUI中涉及的线程和看门狗机制。 二、ArkUI中的线程 应用Ability首次创建界面的流程大致如下: 说明: • AceContainer是一个容器类,由前端、任务执行器、资源管理器、渲染管线、视图等聚合而成,提供了生…

Transformers集成SwanLab实现AI训练可视化监控

🤗HuggingFace Transformers Hugging Face 的 Transformers 是一个非常流行的开源库,它提供了大量预训练的模型,主要用于自然语言处理(NLP)任务。这个库的目标是使最新的模型能够易于使用,并支持多种框架&…

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

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

第16篇:JTAG UART IP应用<三>

Q:如何通过HAL API函数库访问JTAG UART? A:Quartus硬件工程以及Platform Designer系统也和第一个Nios II工程--Hello_World的Quartus硬件工程一样。 Nios II软件工程对应的C程序调用HAL API函数,如open用于打开和创建文件&#…

链表经典题目—相交链表和链表倒数第k个节点

🎉🎉🎉欢迎莅临我的博客空间,我是池央,一个对C和数据结构怀有无限热忱的探索者。🙌 🌸🌸🌸这里是我分享C/C编程、数据结构应用的乐园✨ 🎈🎈&…

网络编程基础(一)

目录 前言 一、网络体系架构 1.1 OSI 1.2 TCP/IP协议簇体系架构 二、TCP和UDP的不同 1.TCP 2.UDP 三、网络编程基础相关概念 1.字节序 1.在计算机中有关多字节整数的存储方式,根据主机CPU处理数据的方式不同,我们将主机分为大端存储和小端存储…

一招解决Redis缓存穿透,缓存雪崩,缓存击穿问题【超详细版】

文章目录 小故事一、为什么要使用缓存?二、什么是缓存穿透?怎么解决?2.1解决方案2.2代码实现 三、什么是缓存击穿?怎么解决?3.1解决方案3.2代码实现 四、什么是缓存雪崩?怎么解决?4.1解决方案 五、Redis缓…

气泡水位计的安装方法详解(二)

气泡水位计的安装方法详解(二) 产品简介 气泡式水位计ZL-BWL-013是一款适用于水文、水利信息化建设领域的新一代水位测量类设备,产品执行GB/T 11828.2-2022标准。ZL-BWL-013气泡水位计,具有安装方便、易于操作,高精度…

VM中Ubuntu16.04的下载以及ROS—kinetic的版本下载

一、Ubuntu镜像地址 转载备份一下; 官方下载地址(不推荐) https://www.ubuntu.com/downloadhttps://www.ubuntu.com/download 中科大源 Index of /ubuntu-releases/16.04/http://mirrors.ustc.edu.cn/ubuntu-releases/16.04/ 阿里云开…

音视频开发9 FFmpeg 解复用框架说明,重要知识点

一,播放器框架 二 常用音视频术语 容器/文件(Conainer/File): 即特定格式的多媒体文件, 比如mp4、flv、mkv等。 媒体流(Stream): 表示时间轴上的一段连续数据&#xff0…

JVM学习-javap解析Class文件

解析字节码的作用 通过反编译生成字节码文件,可以深入了解Java工作机制,但自己分析类文件结构太麻烦,除了第三方的jclasslib工具外,官方提供了javapjavap是jdk自带的反解析工具,它的作用是根据class字节码文件&#x…

【GateWay】自定义RoutePredicateFactory

需求:对于本次请求的cookie中,如果userType不是vip的身份,不予访问 思路:因为要按照cookie参数进行判断,所以根据官方自带的CookieRoutePredicateFactory进行改造 创建自己的断言类,命名必须符合 xxxRout…

在virtualbox中ubuntu如何利用mobaxterm来拖拽文件

首先得先利用ssh、ubuntu的ip 一、开启ssh 安装 openssh-server sudo apt-get install openssh-server 检查 ssh 服务是否启动成功 sudo ps -e | grep ssh 如果有 sshd 则说明 ssh 服务已启动,如果没有启动,输入下边命令启动 ssh 服务 sudo servi…