QPS多少才算高并发经常被问到,下面我就详解什么是高并发以及QPS多少才算高并发@mikechen
什么是高并发
高并发,是指系统在单位时间内承受大量用户请求的能力,一般衡量高并发的指标包括:QPS(每秒查询率)等。
高并发的通常,取决于具体的应用场景、和业务需求,比如:最典型的就是阿里“双11”,峰值完成“58.3万/笔”订单,这就是典型的高并发。
QPS多少算高并发
通常根据每秒查询次数(QPS, Queries Per Second)来,判断并发量的高低。
一般,可以分为如下几类:
小规模并发
QPS在100以下的场景通常视为低并发,比如一些内部应用、工具类网站或小型应用。
中等并发
QPS在100到1000之间,这一范围内的系统通常需要一定的优化和分布式架构支持,如:中型电商网站、社交媒体应用..等。
高并发
QPS在1000到10,000之间的场景可以算是高并发,需要引入缓存、异步处理、数据库分片等技术,常见于大型电商、金融系统、在线直播平台…等。
超高并发
QPS超过10,000,甚至达到100,000+,这类系统通常是大流量的互联网平台。
阿里、淘宝、拼多多…等,比如:阿里“双11”,峰值完成“58.3万/笔”订单,这就是典型的朝高并发。
因此,在实际项目中,通常认为QPS超过”1000″即为高并发,而QPS超过”10,000″则可以称为超高并发。
超高并发需要更复杂的架构,如:多层缓存、分布式计算、微服务架构、消息队列和负载均衡…等等技术。
多级缓存
通过缓存减少对数据库的直接访问次数,加快请求响应速度。
例如:
本地缓存
在应用内存中缓存常用的数据,减少重复查询。
分布式缓存
Redis、Memcached…等分布式缓存系统,用于缓存跨应用、跨服务器的数据。
高并发场景下,频繁查询数据库会导致瓶颈,缓存可以拦截一部分请求,减少对数据库的读压力。
如下图所示:
Redis、Memcached…等等, 可以将数据库中频繁读取的数据放入缓存中,应用层首先访问缓存,只有在缓存未命中的情况下才去访问数据库。
CDN缓存
在全球分布的节点上缓存静态资源,加速资源分发,减轻源服务器压力。
负载均衡
载均衡将用户请求分配到多个服务器上,以减轻单个服务器的压力。
如下图所示:
常见的负载均衡方式有:
硬件负载均衡
硬件负载均衡设备,具有强大的处理能力、和专用芯片,可以处理复杂的负载均衡任务,适用于极高并发、和大规模流量的场景。
比如:F5、A10…等,这些设备自带高性能的处理器、和网络接口,能够以极低延迟、和高吞吐量处理网络请求。。
硬件设备什么都好,唯一的缺点就是“贵”,一般硬件设备的采购和维护成本高,通常只在企业级、或关键业务系统中使用。
软件负载均衡
相对于硬件负载均衡设备“贵”,所以后面出现了大量的免费的软件负载均衡。
比如:Nginx、HAProxy、Apache …等开源软件实现负载均衡。
Nginx:轻量级、高性能的 HTTP 、和反向代理服务器,适合 Web 服务的负载均衡;
HAProxy:专注于高可用性、负载均衡和代理的开源软件,支持四层(TCP)和七层(HTTP)负载均衡;
Apache:作为 Web 服务器也提供了负载均衡模块,适合与其他 Apache 服务集成。
其实很多业务需求,包括:阿里、字节等大厂,都是采用硬件和软件负载均衡,二者结合使用。
形成多层负载均衡体系,以保证系统的高可用性和高并发处理能力。
分库分表
分库分表是将数据分布在多个数据库或表中,减小单个数据库的负担。
常见方法包括:
垂直拆分:按业务模块分拆数据库,例如将用户数据和订单数据放在不同的库中。
水平拆分:按数据范围分拆表,例如按用户ID分库,或按订单ID分表。
消息中间件削峰
消息中间件(如:Kafka、RabbitMQ、RocketMQ…等),除了能够解耦服务间的依赖,还有就是:“流量削峰”。
如下图所示:
流量削峰,是一种应对突发性高流量的技术手段,旨在平滑系统请求量,避免系统在短时间内遭遇峰值流量的冲击,从而防止过载导致的性能下降、或系统崩溃。
这些架构和技术的方案,大部分情况都是结合使用,来解决高并发的场景。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!
后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》