关注△mikechen△,十余年BAT架构经验倾囊相授!
大家好,我是mikechen。
QPS多少才算高并发经常被问到,下面我就详解QPS多少才算高并发以及常用解决方案@mikechen
最新mikechen原创超30万字《阿里架构师进阶专题合集》和《大厂最全面试题及答案合集》,请关注本公众号【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...等),除了能够解耦服务间的依赖,还有就是:“流量削峰”。
如下图所示:
流量削峰,是一种应对突发性高流量的技术手段,旨在平滑系统请求量,避免系统在短时间内遭遇峰值流量的冲击,从而防止过载导致的性能下降、或系统崩溃。
这些架构和技术的方案,大部分情况都是结合使用,来解决高并发的场景。
以上
最后送大家一个福利:
送我原创超30万字阿里架构师进阶专题合集。
以及给大家整理最全大厂Java面试题及答案详解,包含:Java、多线程、JVM、Spring、MySQL、Redis、中间件...等必考题答案详解。
需要以上架构专题&面试答案的同学,加我微信即可领取!
添加时备注:资料