网站首页 > 技术文章 正文
QPS多少才算高并发经常被问到,下面我就详解什么是高并发,以及QPS多少才算高并发@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
什么是高并发
高并发是指系统在短时间内同时处理大量请求的能力,比如:大家熟知的阿里双11,?一秒峰值完成58.3万笔订单,这就是典型的高并发场景。
这可能包括多个用户同时发送请求、多个客户端同时连接到服务器、或者同时进行大量的事务处理。
多大算高并发
"多大算高并发"是一个常见的问题,我们可以通过考虑一些关键指标来判断何时可以将一个系统视为高并发系统。
比如:通过QPS来计算具体的数据标志。
QPS是Query Per Second的缩写,即每秒查询率,是衡量系统、服务或数据库每秒能够处理的查询请求数量。
QPS 通常用于衡量数据库、Web 服务器、API 等系统的性能。
QPS 的计算方式很简单,就是统计系统在每秒内处理的查询请求数量。
通常情况下,QPS在几千到几万以上的范围内可以被认为是高并发。
比如:QPS 在 1000 到 10000 之间,通常属于较为繁忙的系统,就属于有一定的并发量了。
如果超过 10,000...QPS 甚至到数十万、上百万 QPS 的级别,也就是非常高的并发场景。
这类系统往往依赖于复杂的架构,如:多级缓存、负载均衡、数据库分库分表、消息队列...等来解决。
多级缓存
多级缓存,就会涉及到:
- 客户端缓存:例如:浏览器缓存,减少服务器压力...等等;
- CDN(内容分发网络):CDN也就缓存的一大利器,一般都会采用:把静态资源缓存到距离用户最近的边缘节点;
- 本地缓存:以及还会涉及到本地缓存,比如:将热点数据缓存到应用服务器内存,如:Guava、Ehcache...等等都是使用较多的本地缓存。
- 分布式缓存:通过 Redis、Memcached ...等技术实现多级缓存,支持水平扩展、和高可用。
负载均衡
负载均衡,也是高并发的常见手段。
常见的负载均衡,有硬件的负载均衡、以及软件的负载均衡。
比如:
硬件负载均衡器:如 F5、A10 ...等,硬件的效果最好,但是就是比较贵。
软件负载均衡:如 Nginx、LVS、HAProxy ...等,软件负载均衡相对硬件效果差一点,但是省钱啊。
分库分表
当数据量比较大的时候,都会考虑到“分库分表”,这里就会涉及到:垂直拆分、和水平拆分...等等拆分方式。
- 垂直分库:按业务模块拆分,例如将用户表、订单表分到不同的数据库。
- 水平分库:将同一张表的数据按一定规则(如用户 ID)分到不同的数据库实例上。
- 分表:将数据按一定规则分成多个表存储,减少单表的数据量和索引压力。
消息中间件
如果数据库压力大,你肯定想到缓存,除此之外,就会涉及到消息中间件,这也是一大利器。
通过消息队列进行异步处理,解耦系统组件,避免高峰期的请求压力直接传递到数据库、或后端系统。
比如:高并发最典型的场景,就是:异步处理、削峰填谷、...等等。
削峰填谷:是高并发系统中常用的一种架构设计模式,主要用于平衡系统在高并发场景下的负载压力。
它的核心思想:削峰、和填谷。
削峰
什么是削峰呢?削峰就是:在并发请求达到峰值时,系统无法在短时间内处理所有请求,可以通过一些手段将请求削减,或者暂时存储起来,这就是削峰。
当请求量过大时,生产者(发起请求的一方)会将请求写入消息队列,消费者(处理请求的一方)则以相对较慢的速度从队列中读取数据并处理,这样系统不至于在短时间内被大量请求压垮。
通过“削峰”的方式,可以避免系统在短时间内被巨量的请求压垮。
填谷
填谷就是:当系统处于较低负载时,可以从之前存储的请求中逐步取出,充分利用系统的剩余资源来处理这些积压的任务或请求。
比如:当请求量减少时,消费者继续从队列中获取消息处理,保证资源充分利用,不会因为请求量减少而让资源闲置。
最典型的场景:就是秒杀活动,通常会产生大量瞬时请求,系统往往无法在同一时间处理所有请求。
可以使用消息队列对请求进行缓冲,后台逐步处理订单,避免系统崩溃。
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
- 上一篇: 对高可用系统的一点理解
- 下一篇: 亲历需求及设计
猜你喜欢
- 2025-01-06 对高可用集群构建的思考
- 2025-01-06 微服务、集群、分布式的区别是什么?
- 2025-01-06 浅聊高可用技术在网络中的应用
- 2025-01-06 高可用、负载均衡 集群部署方案:Keepalived + Nginx + Tomcat
- 2025-01-06 负载均衡,他用一篇文章告诉你(万字分析)
- 2025-01-06 高并发之负载均衡
- 2025-01-06 有软件负载均衡,也有硬件负载均衡,选择哪个?
- 2025-01-06 使用MySQL Router实现高可用、负载均衡、读写分离
- 2025-01-06 四七层负载均衡的区别
- 2025-01-06 一次 Keepalived 高可用的事故,让我重学了一遍它
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)