一、高并发架构概述

1.1 什么是高并发

高并发,说白了就是系统在极短时间内要处理海量请求。

我经常跟团队里的小伙伴说:别把高并发想得太玄乎。你想想看,双十一零点那一刻,几亿人同时点下单按钮,这就是典型的高并发场景。再比如微博热搜爆了,瞬间几千万人刷新页面,这也是。

我个人习惯把高并发拆成两个维度来理解:

  • 并发量:同一时刻有多少请求打过来
  • 处理能力:系统能不能扛得住,还能正常响应

举个例子。你开了一家奶茶店,平时一分钟来3个客人,你一个人忙得过来。但突然来了100个客人,你就得加人手、加设备、优化流程。高并发架构,就是给系统「加人手、加设备、优化流程」的过程。

核心观点:高并发不是单纯地堆机器,而是让系统在高压下依然稳定、快速、不丢数据。

1.2 高并发的衡量指标

聊高并发,绕不开三个核心指标。我在面试架构师时,必问这三个概念。

QPS(每秒查询数)

QPS 全称 Queries Per Second,指系统每秒能处理的查询请求数量。

我遇到过不少刚入行的同学,把 QPS 和并发数搞混。其实很简单:

  • QPS:每秒能处理多少个请求
  • 并发数:同一时刻系统中有多少个请求正在处理

举个例子。一个系统同时有100个请求在处理(并发数=100),每个请求耗时50ms。那 QPS 就是 100 / 0.05 = 2000。嗯,这里要注意,并发数和 QPS 之间有个公式:

QPS = 并发数 / 平均响应时间(秒)

TPS(每秒事务数)

TPS 全称 Transactions Per Second。它和 QPS 的区别在哪?

我个人习惯这样区分:

  • QPS 侧重查询,比如一次页面加载、一次搜索
  • TPS 侧重事务,比如一次下单(包含扣库存、生成订单、支付等多个步骤)

说白了,一个事务可能包含多个查询。比如你在电商平台下单,后台可能要查库存、查用户信息、写订单表、扣减库存……这一整套才算一个事务。

避坑指南:我曾经在压测时只看 QPS,结果上线后数据库直接被打挂了。后来才发现,TPS 才是衡量写操作压力的关键指标。读多写少的场景看 QPS,写操作频繁的场景一定要盯 TPS。

响应时间

响应时间就是用户发出请求到收到完整响应的时间。

我一般把响应时间拆成三段:

  1. 网络传输时间:数据在网络上跑的时间
  2. 排队等待时间:请求在队列里等着被处理的时间
  3. 服务处理时间:服务器真正干活的时间

你想想看,为什么有时候系统负载不高,但响应却很慢?大概率是排队等待时间太长了。就像你去银行办业务,柜员明明闲着,但叫号系统卡住了,你只能干等。

指标 含义 典型场景
QPS 每秒查询数 搜索引擎、内容列表页
TPS 每秒事务数 下单、支付、转账
响应时间 请求到响应的总耗时 所有在线系统

1.3 高并发带来的挑战

高并发不是请客吃饭。我做了十几年架构,踩过的坑能写一本书。这里挑几个最典型的说说。

挑战一:系统崩溃

这是最直接的。流量突然暴涨,服务器扛不住,直接宕机。

我记得有一次,某电商平台搞秒杀活动,预估流量是平时的10倍,结果实际来了30倍。数据库连接池瞬间被打满,紧接着应用服务器也挂了,最后整个站点都打不开。那次事故直接导致几千万的损失。

注意:系统崩溃往往不是瞬间发生的。它会经历一个过程:响应变慢 → 请求堆积 → 资源耗尽 → 雪崩。如果你能在这个链条的早期介入,很多事故是可以避免的。

挑战二:数据不一致

高并发下,数据一致性问题特别容易暴露。

举个例子。两个人同时买最后一张机票。在低并发场景下,A先下单,库存扣减,B再下单,发现没库存了,一切正常。但在高并发下,A和B几乎同时发起请求,两个请求都读到库存为1,都执行了扣减操作。结果呢?一张票卖给了两个人。

我曾经在项目中遇到过类似的超卖问题。排查到最后,发现是缓存和数据库之间的数据同步没做好。嗯,这里要提醒大家:高并发下的数据一致性,一定要从架构层面去保证,不能指望代码层面打补丁

挑战三:响应变慢

系统没崩,但慢得像蜗牛。用户等得不耐烦,直接关页面走人。

响应变慢的原因很多:

  • 数据库查询没加索引,全表扫描
  • 缓存命中率低,大量请求穿透到数据库
  • 线程池配置不合理,任务排队时间过长
  • 网络带宽被打满,数据包丢包重传

我个人的排查习惯是:先看响应时间的分布。如果99%的请求都在100ms以内,但1%的请求要5秒,那大概率是慢查询或者垃圾回收(GC)导致的。如果整体都慢,那就要看系统资源是不是已经到瓶颈了。

挑战四:资源竞争

高并发下,多个请求同时争抢同一份资源,比如数据库连接、文件锁、内存空间。

你想想看,一个线程池只有100个线程,结果来了1000个请求。那900个请求只能排队等着。如果每个请求处理时间又长,那排队时间就会指数级增长。

我曾经优化过一个系统,它的数据库连接池只有20个,但业务高峰期有200个并发请求。结果呢?大部分请求都在等数据库连接,CPU利用率不到10%,但响应时间却超过10秒。说白了,资源没用好,全浪费在排队上了。

总结一下:高并发带来的四大挑战——系统崩溃、数据不一致、响应变慢、资源竞争。每一个挑战背后,都有对应的架构设计策略。后面的章节,我会逐一展开讲。

1.4 我的几点建议

课程刚开始,我想先分享几个做高并发架构的心得:

  1. 不要过早优化。先保证功能正确,再考虑性能。我见过太多项目,架构设计得花里胡哨,结果业务逻辑全是bug。
  2. 压测是必须的。不上压测,你永远不知道系统的真实水位在哪里。我曾经吃过这个亏,后来每个项目上线前,至少做三轮压测。
  3. 监控要到位。没有监控,高并发系统就像蒙着眼睛开车。QPS、响应时间、错误率、资源利用率,这些指标必须实时可见。
  4. 做好降级预案。高并发下,系统不可能永远100%可用。关键是要想清楚:当压力超过阈值时,哪些功能可以降级,哪些必须保住。

好了,第一章就到这里。下一章我会讲高并发架构的核心设计原则,包括无状态设计、缓存策略、异步处理这些实战内容。咱们下节课见。