IO密集型、CPU密集型、负载、负载均衡

 0、引入

从宏观上来讲,计算机可以抽象为【输入 > 计算 > 输出】这三部分

输入输出自然就是io,而计算部分自然归cpu管

不同的任务,对io和cpu的依赖程度不同,由此有了cpu密集型任务和io密集型任务

1、IO密集型

更依赖输入输出

比如说,我的逻辑是发送请求,然后等待别人计算后返回给我,那我几乎不用计算,就是输入,等待,接收返回值,输出。这样的业务对机器负载不高,几乎不占CPU的资源。但是时间上来说,会更耗时,至少是毫秒ms级别,如数据库10ms、远程缓存2ms、服务调用50ms

2、CPU密集型

更依赖CPU计算

参数收齐,开始调用本机CPU进行计算,耗时相比IO就很少了,通常是纳秒ns级别,比如压缩解压缩20ns、加减乘除5ns、循环判断2ns。这样的任务对机器的负载高一些,CPU在密集计算,占用较多CPU资源

3、负载

负载:指系统或设备在特定时间内处理的工作量。涵盖CPU使用率、内存占用、磁盘I/O操作、网络流量等多个维度

CPU负载:反映CPU工作强度,通常通过使用率指标来衡量

内存负载:表示系统当前内存的使用情况,过高会导致内存频繁交换

磁盘I/O负载:指磁盘读写频率,过高可能成为性能瓶颈

网络负载:衡量网络带宽利用率,过高会增加延迟

系统负载:通常用平均负载衡量,反映活动进程数量,过高会影响响应能力

4、负载均衡

4.1 概述

高负载会导致系统响应延迟、性能下降甚至崩溃

因此通过【负载均衡Load Balance】和容量规划来避免过载

负载均衡:是一种将工作负载(例如网络流量、数据请求、计算任务等)分配到多个计算资源(例如服务器、虚拟机、容器等)的技术

主要目的:优化性能、提高可靠性以及增加可扩展性

在工作环境中,负载均衡器通常为与应用程序的前端,接受并分配传入的请求,通过算法确定分配请求的最佳方式,从而防止任何一个资源过载或失效导致应用程序的性能下降或停止响应

4.2 硬件负载均衡

有专门为负载均衡任务而设计的物理设备,利用专用的硬件组件(如ASICs或FPGAs)来高效分发流量。其优点在于高性能和吞吐量,经过优化的任务处理,以及内置网络安全、监控和管理功能,能应对大量流量和多种协议。然而,硬件负载均衡器通常价格昂贵,配置和维护也需要专业知识,且可扩展性受限

4.3 软件负载均衡

目前我们常说的负载均衡,都是通过软件负载均衡器来实现的

软件负载均衡器,就是运行在通用服务器或虚拟机上的应用程序,使用软件算法将流量分发到多个服务器或资源。

其优点在于经济实惠、适应性强、易于扩展(可通过增加资源或升级硬件实现)以及灵活(可在各种平台和环境中部署)。但在高负载下,软件负载均衡器的性能可能较差,且可能影响主机系统资源,需要维护软件更新。

另外,负载均衡还可以根据分配策略的不同,分为普通负载均衡和动态负载均衡。普通负载均衡是指将用户请求均匀地分发到多个服务器,以实现服务器的负载均衡,通常采用静态的分发算法,如轮询、随机等。而动态负载均衡则是根据服务器的实时负载情况,动态地调整请求的分发策略,以保证服务器负载的均衡。每个服务器被分配一个权重值,权重越高,则分发到该服务器的请求越多。

此外,根据网络层次的不同,负载均衡还可以分为二层负载均衡(MAC)、三层负载均衡(IP)、四层负载均衡(TCP)和七层负载均衡(HTTP)。这些负载均衡类型的主要区别在于它们工作的网络层次和处理的请求类型。

负载均衡功能也可以放在云服务商的服务器上运行。这种方式可以根据实际需求动态调整资源,提高灵活性和可扩展性

4.4 负载均衡算法

4.4.1 轮询法

轮询法是最简单的一种负载均衡算法,它将请求按顺序轮流地分配到后端服务器上

这种算法对后端服务器的处理能力一视同仁,不考虑实际的连接数和系统负载

4.4.2 加权轮询法

加权轮询法给每个服务器都设置了权重,配置低、负载高的服务器权重低,配置高、负载低的服务器权重高。这样,高性能的服务器能够处理更多的请求。

4.4.3 随机法

随机法通过系统的随机算法,根据后端服务器的列表大小值来随机选择其中一台服务器访问。这种方式能够随机地分配请求,但对于每台服务器的实际负载情况并无考虑。

4.4.4 加权随机法(Weighted Random):

加权随机法类似于加权轮询法,不过在处理请求分担时是一个随机选择的过程。它根据后端服务器的配置和负载情况分配不同的权重,然后按照权重随机选择服务器。

4.4.5 最小连接数法

该算法是一种动态调度算法,通过服务器中当前所活跃的连接数来估计服务器的负载情况,把新的连接请求分配到当前连接数最小的服务器。这种算法能更好地利用后端服务器的处理能力,但在服务器处理能力差异大的情况下可能并不理想。

4.4.6 加权最小连接数算法(Weighted Least-Connection Scheduling)

这种算法用相应的权值表示各个服务器的处理性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询服务器的负载情况,并动态地调整其权值。

4.4.7 其他

除此之外,还有源地址哈希法等负载均衡算法,通过对发送请求的客户端的IP地址进行哈希运算,然后选择结果对应的服务器来处理请求,这样可以保证来自同一客户端的请求总是被分配到同一台服务器上,有助于保持会话的持续性。

参考文献

https://zhuanlan.zhihu.com/p/454954647

并发编程的任务类型:CPU密集型任务与I/O密集型任务_为什么io密集型适合并发-CSDN博客

负载均衡(理解/解析)-阿里云开发者社区

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

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

相关文章

从甲方的角度看MOM项目成败的原因

关键词:MOM、数字化转型、成败数字化转型中流行这么一句话:SAP项目加班到晚上8点,MOM项目最少到晚上10点。由此可见,MOM项目实施的难度、复杂度。但,为什么MOM难度大?先引入1个故事:1个价值300万…

MySQL操作进阶

系列文章目录 MySQL的基础操作-CSDN博客 目录 系列文章目录 前言 一、数据库的约束 1. 约束类型:not null 2. 约束类型:unique 3. 约束类型:default 4. 约束类型:primary key 5. 约束条件:foreign key 二、表…

表征工程 中怎么 调整参数或比例

表征工程 中怎么 调整参数或比例 在表征工程(Representation Engineering)中,调整参数或比例的核心目标是平衡干预效果与模型基础能力,避免过度干预导致语义失真或能力退化。以下是几种常用的方法论及具体案例: 1. 系数缩放法(Scaling Coefficients):通过权重参数控制…

如何使用Anaconda(miniconda)和Pycharm

文章目录前言具体操作Pycharm连接配置 Anaconda(miniconda)创建的虚拟环境PipAnacondaPyCharm三者关系一图胜千言总结前言 本文介绍如何利用Anaconda和Pycharm这两个强大的工具,实现Python项目的高效开发。通过构建虚拟环境、安装依赖包及利…

【07】C#入门到精通——C# 生成dll库 C#添加现有DLL C#调用自己生成的dll库

文章目录0 多个.cs文件源码01 Hero.cs02 ShowInfo.cs03 Program.cs (相当于Main文件)04 运行效果1 生成dll库1.1 创建类库1.2 添加要生成 dll库 的代码文件1.2.1 添加 Hero类1.2.2 添加 ShowInfo类1.3 生成dll库 及 查看3 添加自己生成的dll库4 调用运行…

进程控制->进程替换(Linux)

在之前的博客中,我们已经探讨了进程创建、终止和等待的相关知识。今天,我们将继续深入学习进程控制中的另一个重要概念——进程替换。回顾之前的代码示例,我们使用fork()创建子进程时,子进程会复制父进程的代码和数据(…

认识泛型、泛型类和泛型接口

目录泛型泛型类泛型接口泛型 定义类、接口、方法时&#xff0c;同时声明了一个或者多个类型变量&#xff08;如&#xff1a;<E>&#xff09;&#xff0c;称为泛型类、泛型接口、泛型方法、它们统称为泛型 作用&#xff1a;泛型提供了在编译阶段约束所能操作的数据类型&…

如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题

如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题 摘要 本文针对Java项目启动时出现的java.io.IOException: closed错误&#xff0c;提供系统性解决方案。该异常通常由流资源异常关闭或损坏引发&#xff0c;常见于Maven依…

Kafka——多线程开发消费者实例

引言在分布式系统领域&#xff0c;Kafka凭借高吞吐量、低延迟的特性成为消息队列的事实标准。随着硬件技术的飞速发展&#xff0c;服务器多核CPU已成常态——一台普通的云服务器动辄配备16核、32核甚至更多核心。然而&#xff0c;Kafka Java Consumer的设计却长期保持着"单…

PDF 转 HTML5 —— HTML5 填充图形不支持 Even-Odd 奇偶规则?(第二部分)

这是关于该主题的第二部分。如果你还没有阅读第一部分&#xff0c;请先阅读&#xff0c;以便理解“绕组规则”的问题。 快速回顾一下&#xff1a;HTML5 只支持 Non-Zero&#xff08;非零&#xff09;绕组规则&#xff0c;而 PDF 同时支持 Non-Zero 和 Even-Odd&#xff08;奇偶…

机器学习 KNN 算法,鸢尾花案例

目录 一.机器学习概述 二.人工智能的两大方向 三.KNN算法介绍 1.核心思想&#xff1a;“物以类聚&#xff0c;人以群分” 2.算法步骤 四.KNN算法实现 1.安装scikit-learn库 2.导入knn用于分类的类KNeighborsClassifier 3.设置KNeighborsClassifier的相关参数 4.训练模…

强化学习(第三课第三周)

文章目录强化学习&#xff08;第三课第三周&#xff09;一、以火星探测器为例说明强化学习的形式化表示二、强化学习中的回报三、强化学习算法的目标&#xff08;一&#xff09;马尔可夫决策过程&#xff08;二&#xff09;状态动作价值函数&#xff08;四&#xff09;使用Bell…

星痕共鸣数据分析2

今天实验内容是攻击力部分 1.思路 由于昨天数据分析出了一个函数 这个函数可以把奇怪的字节变成正常的数字 int parse_varint(unsigned const char* data, int count) {int value 0;int shift 0;for (int i 0; i < count; i) {unsigned char byte data[i];value | ((byt…

强化学习新发现:仅需更新5%参数的稀疏子网络可达到全模型更新效果

摘要&#xff1a;强化学习&#xff08;RL&#xff09;已成为大语言模型&#xff08;LLM&#xff09;在完成预训练后与复杂任务及人类偏好对齐的关键步骤。人们通常认为&#xff0c;要通过 RL 微调获得新的行为&#xff0c;就必须更新模型的大部分参数。本研究对这一假设提出了挑…

electron 使用记录

目录 代理设置以打包成功 参考文档 代理设置以打包成功 参考文档 使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用 |电子 --- Build cross-platform desktop apps with JavaScript, HTML, and CSS | Electron

Spring boot Grafana优秀的监控模板

JVM (Micrometer) | Grafana Labs 1 SLS JVM监控大盘 | Grafana Labs Spring Boot 2.1 Statistics | Grafana Labs springboot granfana 监控接口指定接口响应的 在Spring Boot应用中&#xff0c;使用Grafana进行监控通常涉及以下几个步骤&#xff1a; 设置Prometheus作…

LeetCode11~30题解

LeetCode11.盛水最多的容器&#xff1a; 题目描述&#xff1a; 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器…

计算机结构-逻辑门、存储器、内存、加法器、锁存器、程序计数器

逻辑门 逻辑门简单地理解即通过特定的条件实现与、或、非、异或等相关逻辑二极管 这些最基础的逻辑门都是通过电路元器件进行搭建的&#xff0c;即半导体材料搭建的二极管二极管有个特点&#xff0c;一定条件下才可以导通&#xff0c;即得接对正负极&#xff0c;具体的原理可以…

连锁店铺巡查二维码的应用

在连锁店铺的运营管理中&#xff0c;巡查工作是保障各门店规范运作、提升服务质量的关键环节。巡查二维码的出现&#xff0c;为这一环节带来了高效、便捷且规范的解决方案&#xff0c;其应用场景广泛&#xff0c;优势显著。在如今的繁杂且效果参差不齐电子二维码市场中&#xf…

各种前端框架界面

前端技术更新迭代很快&#xff0c;已经有不少新的前端框架问世&#xff0c;而且像geeker-admin风格的界面设计也挺不错的。 今天去面试了前端开发岗位&#xff0c;感觉希望不大。毕竟中间空了一段时间没接触&#xff0c;得赶紧把新的知识点补上&#xff0c;这样哪怕是居家办公也…