什么是高并发?

news2024/10/6 21:32:28

目录

什么是高井发系统

1.1 什么是高井发

 1.2 高井发系统有哪些关键指标

1.2.1 响应时间

1.2.2 吞吐量

1.2.3 每秒请求数(QPS) 

1.2.4 每秒事务数 (TPS)

 1.2.5 访问量 (PV)

1.2.6 独立访客 (UV)

1.2.7 网络流量

1.3 为什么学习高并发系统

1.32在面试中脱颖而出

什么是高井发系统

在每年的京东618及淘宝的双十一活动中,平台商家会有很多促销商品,而且商品价格对于用户来说吸引力巨大。面对这么巨大的流量,技术上如何保证这些商品不被“超卖”,同时还能给用户一个良好的购物体验?
12306网站在刚开始对外在线售票时,经常出现系统瘫痪的现象,后来经过系统优化,现在已经可以支持上千万人同时抢票且不损害系统本身。
这些技术的背后都离不开高并发技术,需要利用高并发技术的方法论及设计原则,再结合业务本身进行架构设计,以应对系统面临的流量冲击。

1.1 什么是高井发


高并发(High Concurrency),通常是指通过设计保证系统能够同时处理很多请求。即在同一个时间点,有很多的请求同时访问同一个接口。
高并发意味着大流量,需要运用技术手段去抵抗这种大流量的冲击,以达到系统能平稳处理流量且系统自身依然运行良好的目的。现如今,高并发场景无处不在,例如京东618、淘宝双十一、热门车次车票的开售,以及各种电商秒杀抢购活动等。
高并发是一种系统在运行过程中“短时间内遭遇大流量冲击”的情况。如果没有处理好,则很有可能造成系统吞吐量下降,响应变慢,从而影响用户体验,甚至可能造成系统彻底不可对外服务的情况发生。所以,需要优化系统(包括硬件、网络、应用、数据库等)来达到高并发的要求。

 1.2 高井发系统有哪些关键指标


在设计一个系统或在对已有系统进行性能评估时,需要具备相应的参考指标,然后基于这些参考指标对系统进行针对性的优化,使得系统更健壮,以及具备更高的性能来看看高并发系统都需要关注哪些关键指标。

响应时间(Response Time)、吞吐量(Throughput)、每秒请求数(QPS)、每秒事务数(TPS)、访问量 (PV)、独立访客(UV) 、网络流量

1.2.1 响应时间


是指从第一次发出请求到收到系统完整响应数据所需的时间。响应时间是反映系统性能的重要指标,直接反映了系统响应的快慢。
从用户角度出发,响应时间决定着用户的体验感:应时间越长,用户体验感越差,就会造成用户的流失;呃应时间越短,用户体验感越好,有助于提高用户留存率。

从系统本身的角度出发,响应时间决定着系统的性能问题:响应时间越短,系统性能越高,即能更好地处理业务;响应时间越长,系统性能越差,甚至可能会丢失相关请求或者出现系统不可用,从而影响公司业务。

1.2.2 吞吐量


指单位时间内系统所处理的用户请求数。
从业务角度看,吞吐量可以用“请求数/秒”“人数天”或“处理业务数小时”等单位来衡量。
从网络角度看,吞吐量可以用“字节数/秒”来衡量对于互联网应用来说,吞吐量能够直接反映系统的负载能力。
采用不同方式表达的吞吐量,可以说明不同层次的问题,如:采用“请求数/秒”方式的吞吐量,则说明瓶颈主要来源于应用服务器和应用本身;采用“字节数/秒”方式的吞吐量,则可以说明瓶颈主要来源于网络基础设施、服务器架构和应用服务器约束等。
在没有遇到性能瓶颈时,吞吐量与虚拟用户数之间存在一定的联系,可以采用以下公式计算吞吐量:

F=VXR/T
其中,F表示吞吐量,VU 表示虚拟用户个数,R表示个虚拟用户发出的请求数T表示性能测试所用的时间

1.2.3 每秒请求数(QPS) 

OPS指服务器在一秒内共处理了多少个请求,主要用来表示“读”请求。
在系统上线前,一般怎么预估系统 OPS呢?绝大部分系统在白天的请求量都较大,所以,这里假设以白天来计算OPS。依据二八原则,80%的流量是在20%的时间段内产生的。
例如,现在每天有 5000000 个请求,预估 OPS=(5000000X0.8)/(12X60X60X0.2)=462。即当前系统每天平均 OPS 为 462。当然,为了保险起见,再预留个 20%左右也是可以的。一般还需要计算当天最高 OPS,这样对系统的掌控力度更强。
系统最高OPS可以通过系统平均 OPS的倍数计算出来。例如,分析业务得到最高 OPS 大概是平均 OPS的2倍,则当前系统峰值 OPS为924 左右。
在预估出OPS后,用“峰值 OPS/单台机器最高可承受的OPS”就能计算出需要部署多少台服务器。即:

机器数=峰值 QPS/单台机器最高可承受的QPS 

 单台最高可承受的QPS 可以通过压测来得出。假设单台机器压测得出最高可承受的OPS为100则所需要的机器数量为:924/10010台。

1.2.4 每秒事务数 (TPS)

TPS即服务器每秒处理的事务数。TPS包括以下3个过程:
(1)客户端请求服务端。
(2)在服务端内部进行业务逻辑处理
(3)服务端响应客户端。

一个事务包括“客户机向服务器发送请求+服务器响应的过程。在客户机发送请求时开始计时,在客户机收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

 TPS与OPS区别是什么呢?OPS类似于TPS但也有不同之处。例如:当用户访问完整页面时,请求+响应的整个过程就是一个 TPS;但是,这一次完整的页面请求可能产生多次服务器的请求,这些请求应计入 OPS。

假设访问一个页面时会请求服务器 3次这样的一次访问会产生1个TPS、3个QPS

 1.2.5 访问量 (PV)


PV(Page View)指页面浏览量。用户每对网站中的1个网页访问1次均被记录1次。用户对同一个页面的多次访问被累计记录。PV 是评价网站流量最常用的指标之。

1.2.6 独立访客 (UV)

UV(Unique Visitor)指访问某个站点或点击某个链接的不同IP地址数。

在同一天内,UV只记录第一次进入网站的具有独立P地址的访问者,在同一天内访问者再次访问该网站则不计数。独立IP 地址访问者相当于携带了“身份证”进入网站,它能反映在一定时间内有多少独立客户端进行了访问。
一个UV可以有很多个PV,一个PV也可以对应一个IP。例如,对网站访问一次,则网站的V就加 1;这一次访问了该网站的两个页面,则网站的 PV加2;对其中-个网页又刷新了一次,则PV再加 1

1.2.7 网络流量

因为受限于带宽,所以网络流量(也简称流量)是并发情况的一个重要指标,主要涉及以下两面。
流入流量:从外部访问服务器所消耗的流量。

流出流量:服务器对外响应的流量

1.3 为什么学习高并发系统

一般在企业中所搭建的系统并非天生就支持高并发而是随着业务的发展而逐渐地被优化和重慢慢地支持言并发的。

高并发系统设计有一个原则: 不能脱离业务。开发者平时需要多储备这方面的知识。

1.3.1 提升自身及企业核心竞争力
在谈及高并发场景的技术方案时,一般程序员会有两种想法:
一、觉得自己所在的公司规模并不大,业务也很清晰和单一,且没遇到过大流量的冲击,所以觉得没必要去学习高并发系统设计。
二、公司业务的确会遇到大流量的冲击,也会有很多高并发的场景,但总是依赖架构师或更高级的工程师,觉得这些由他们去解决就好,和自己关系不是太大,所以,学习高并发系统设计的兴趣也不高。
上面两种情况,归根究底是自身并没有意识到学习高并发系统设计的重要性,也是因为未接触过所以望而却步,最终无法掌握一套自己的高并发系统设计方法论。
对于大部分小型企业或初创型企业来说,其技术架构比较单一,程序员一般只需要关注业务逻辑本身即可。例如,在电商系统的下单流程中,一分钟只有几单或者十几单,这时的确只需要关注订单的业务本身即可:在下单时先查询数据库库存是否充足;如果充足,则直接创建订单成功后锁定库存,然后进入支付流程,如下所示。

 但是,如果公司需要在节日进行“秒杀”活动,每利的下单请求数达到10000个,这10000个请求同时对数据库查询库存,库存系统能不能承受住? 如果能承受住则需要同时生成10000个订单,数据库能不能承受住?如果都不能承受那需要我们怎么做才能解决这些问题?所以,一旦业务稍微复杂起来,我们之前的设计可能会遇到很大问题,如果我们事先没有足够的技术沉淀,则可能会给公司带来巨大损失。

1.32在面试中脱颖而出

在面试中,常遇到面试官问这样的问题:你们的系统并发量多大?有没有设计高并发系统的经验?对于大流量的冲击,你是怎么优化系统的?
如今在各大企业招聘时,用人部门并不是简单地考虑应聘者能否胜任公司的业务,而是看应聘者能否给公司带来更大的价值。所以,如果我们只懂得CURD 操作是远远不够的,很容易被淘汰。
如果我们事先通过大量的学习及实践,掌握了高并发系统设计,不仅能在面试中脱颖而出,而且在入职后也能给公司带来很高的价值。
针对缓存的使用,不愿学习高并发知识的求职者的回答可能只是缓存的简单使用,只知道缓存是用来缓存数据的。当被问到高并发场景中的缓存“穿透”、缓存“雪崩”及缓存一致性时,就不知道如何回答了,更别提多级缓存了。但是,如果你学习了高并发系统设计,就能很轻松地回答了。
再比如,针对消息中间件的使用,普通应聘者只知道它是用来削峰填谷或解耦的,但不知道消息中间件的原理,也不知道高并发场景下消息中间件的消息一致性、消息顺序性,以及如何解决消息不可达。
诸如此类的问题,都需要通过不断学习高并发系统设计,才能从面试中脱颗而出。后面会以实战的方式一一为大家讲解这方面的知识。

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

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

相关文章

Android:Selector + Layer-lists + Shape 实现 “缺右下角Button“

UI需求:实现"缺右下角的渐变Button"效果 实现方式有两种: 一.UI绘制.9背景图,Selector直接实现 二.使用Shape与Selector、Layer-lists实现 UI给的设计稿里没有Button背景图,我用Shape做完了他告诉我他有做背景图&…

字符串搜索算法:暴力搜索,KMP

目录 前言废话暴力搜索KMP算法 前言废话 最近脑子有点昏昏沉沉,喝点那种红枣泡的白酒居然神奇的好了一些,感觉很舒服。看来喝少量的酒可以让人更清醒,长期喝可能有养生的效果? 写道这里去百度了下,发现红枣还真有养生效…

js中this关键字的作用和如何改变其上下文

一、this 关键字的作用 JavaScript 中的 this 关键字引用了所在函数正在被调用时的对象。在不同的上下文中,this 的指向会发生变化。 在全局上下文中,this 指向全局对象(在浏览器中是 window 对象,在 Node.js 中是 global 对象&…

CV | Emotionally Enhanced Talking Face Generation论文详解及代码实现

本博客主要讲解了Emotionally Enhanced Talking Face Generation(情感增强的谈话人脸生成)论文概括与项目实现,以及代码理解。 Emotionally Enhanced Talking Face Generation Paper :https://arxiv.org/pdf/2303.11548.pdf Code: GitHub - s…

ROS:服务数据(srv)的定义与使用

目录 一、服务模型二、创建功能包三、自定义服务数据3.1定义srv文件3.2在package.xml中添加功能包依赖3.3在CMakeLists.txt中添加编译选项3.4编译生成语言相关文件 四、创建代码并编译运行(C)4.1创建代码4.2编译4.3运行 一、服务模型 Client发布显示某个…

价值8800元SEO自动化养权重流量站课程分享(升级版)!

本来想做培训收8800,但是我怕大伙骂我(说我割韭菜),所以我决定免费把这套自动化批量养站的技术和流程详细给大家分享出来。有些朋友可能是手动养,我觉得这种思路是没错的,但是有点鸡肋,先说下缺…

电子科技大学计算机系统结构复习笔记(三):流水线技术

目录 前言 重点一览 流水线定义 基本概念 流水线分类 流水线特点 流水线时空图 流水线性能分析 流水线特点 经典5段流水线RISC处理器 流水线的三种冒险 冒险分类 停顿流水线 结构冒险 数据冒险 控制冒险 流水线处理机的指令系统 流水线指令系统与格式 流水…

nvm安装并配置环境变量使用nvm安装、切换nodejs

目录 第一章 准备工作 1.1 卸载nodejs 1.2 安装nvm 第二章 nvm环境配置 第三章 nodejs安装以及环境配置 3.1 会用nvm常用命令 3.2 nodejs安装 3.3 node环境配置 3.4 遇到的问题 第一章 准备工作 1.1 卸载nodejs 找到自己对应的nodejs文件所在路径 where node 通过控…

Python 异常类型捕获( try ... except 用法浅析)——Don‘t bare except (不要让 except 裸奔)

不要让 except 裸奔!裸奔很爽,但有隐忧。 (本笔记适合学完 Python 五大基本数据类型,有了些 Python 基础的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程…

大模型时代的来临:AI如何改变人类生活和经济?

大模型时代的来临:AI如何改变人类生活和经济? 第三次AI浪潮之下,人类面临着前所未有的机遇和挑战。随着人工智能的快速发展,我们开始高度重视其可能带来的负面影响。 最近,AI领域再次引起了全球范围内的关注&#xff0…

机器视觉_HALCON_图像采集接口编程手册_1.第一章节介绍

文章目录 一、前言二、图像采集接口编程第一章2.1 HALCON的通用图像采集接口2.2 图像采集基础2.3 同步抓取 vs. 异步抓取⭐2.4 缓冲策略⭐2.5 A/D转换和多路复用2.6 HALCON图像采集算子⭐2.6.1 open_framgrabber2.6.2 close_framegrabber2.6.3 info_framegrabber2.6.4 grab_ima…

chatgpt赋能python:Python均值函数介绍

Python均值函数介绍 Python是一种高级编程语言,非常适合数据处理和分析。在数据分析中,均值通常被用来代表一组数据的平均水平。Python提供了多种方式来计算均值,其中最常用的是使用均值函数来计算。 什么是均值函数? 均值函数…

高通 Camera HAL3:添加一个VendorTag

一.概述 MetadataTag在CamX中有两种体现,可以是预定义的AndroidTag或是自定义VendorTag VendorTag在HAL中定义,用来支持Camx和Chi所需的额外metadata VendorTag类型有三种: hwVendorTagInfocomponentvendortaginfocoreVendorTagInfo 根据不…

「HTML和CSS入门指南」img 标签详解

什么是 img 标签? 在 HTML 中,img 标签用于插入图像。它是一个独立的标签,没有结束标记,并且可以设置多种属性来改变图片的大小、位置、样式等。使用 img 标记可以帮助您更好地展示您的内容,并让浏览器更快地加载网页。 img 标签的基本语法 以下是 img 标签的基本语法: …

卡尔曼滤波与组合导航原理笔记(一)卡尔曼滤波方程的推导 第二部分

文章目录 三、卡尔曼滤波1、随机系统状态空间模型2、状态预测3、状态量测4、增益矩阵K与状态估计5、Kalman滤波公式汇总6、Kalman滤波流程图1.划分为左右两部分(一阶矩和二阶矩)2.划分为上下两部分(时间更新、量测更新) 7、Kalman…

ESP8266开发阶段无线WIFI本地烧录升级 -- FOTA

【本文发布于https://blog.csdn.net/Stack_/article/details/130448713,未经允许不得转载,转载须注明出处】 前言 因为正在DIY一个WiFi计量插座,采用非隔离的方案,烧录时要拔掉220V插头,测试时要拔掉USB线,…

php获取文件的权限信息(获取权限信息、返回字符串涵义、二进制的转换方式、权限修改)

php获取文件的权限信息 说明1.获取文件的权限信息2.返回文件权限字符的解读3.转为二进制权限4.修改权限 说明 (图片来源于网络) 文件权限是指文件或目录对用户和其他进程的访问许可。在 Unix 和 Linux 系统中,文件和目录都有三个权限&#x…

高通 Camera HAL3:CamX、Chi-CDK 详解

网上关于高通CameraHAL3的介绍文档不多,之前做高通CameraHAL3的一些收集、总结,杂乱了一点,将就着看吧。 一.初步认知 高通CameraHAL3的架构很庞大,代码量也很巨大。 先对CamX、Chi-CDK的关键术语、目录等有个初步认知 1.1 术…

Servlet与Mybatis-2

过滤器 过滤器是一种代码重用的技术,它可以改变 HTTP 请求的内容,响应,及 header 信息。过滤器通常不产生响应或像 servlet 那样对请求作出响应,而是修改或调整到资源的请求,修改或调整来自资源的响应。 作用&#x…

Linux基础篇 使用SSH远程Ubuntu-03

目录 1.安装ssh服务器 2.启用SSH服务器 3.查看SSH服务运行状态 4.在Windows的CMD下进行验证 在默认情况下,外部设备是无法通过SSH远程Ubuntu的,因为Ubuntu没有启用ssh服务。 说明:当前Ubuntu系统为20.04 1.安装ssh服务器 sudo apt-get …