一、什么是高流量、高并发
简单理解 :
高流量 :一段时间内,请求总量很大
高并发 :大量请求同一时刻 同时访问接口
个人项目、课程项目流量小,随便写代码都能跑。但放到实际业务中,流量一上来,就会出现:接口超时、页面转圈、CPU 爆满、数据库卡死、服务崩溃。
二、高流量场景下,系统为什么会变慢
1.Tomcat 线程数量有限
SpringBoot 默认内置 Tomcat 线程数很少,
请求多了之后线程被占满,新请求只能排队等待。
2.数据库是最大瓶颈
硬盘读写远慢于内存,频繁查询、连表查询、无索引查询,都会直接拖垮整个系统。
3.大量重复请求、重复计算
同一个分类、首页数据、配置信息,每次请求都查库、重新计算,浪费服务器资源。
同步逻辑太多
操作日志、消息推送、记录行为等次要逻辑,全部同步执行,拉长接口响应时间。
三、SpringBoot 高流量 四大基础优化(全面且基础)
1、Web 容器线程优化
SpringBoot 默认配置偏向保守,不适合并发场景。通过调整 Tomcat 线程数、连接数,让服务可以同时处理更多请求,避免排队阻塞。
核心作用:提高系统吞吐量,短时间承载更多用户访问。
2、引入缓存,降低数据库压力
这是性价比最高的优化方案。
不常变动的数据:分类列表、系统配置、首页热门数据
高频查询数据:频繁被访问、几乎不变
方案:查询优先走缓存,缓存没有再查数据库。常用:Redis 分布式缓存、本地缓存。核心思想:少查库、多读缓存 。
3、异步化处理非核心业务
使用 SpringBoot 提供的 @Async 异步注解,把不影响结果的操作放到后台线程执行:
1.操作日志记录
2.消息推送
3.数据统计
4.日志上报
主业务快速返回,提升接口速度。
4、数据库与 SQL 基础优化
1.高频查询字段建立索引
2.禁止 select *,只查询需要字段
3.减少复杂联表查询、子查询
4.大列表必须分页,防止一次性查出百万条数据
5.合理设计字段类型,能用 tinyint 就不用 int
四、高并发必备基础概念
QPS :每秒处理的请求数,衡量流量大小
吞吐量 :单位时间系统处理能力
瓶颈 :整个系统最慢的环节,一般都是数据库
缓存 :用内存换速度,抗并发核心手段
异步:剥离非核心任务,缩短响应时间
五、新手学习顺序(循序渐进)
1.先做好线程配置 + SQL 优化
2.再接入 Redis 缓存
3.次要业务改为异步执行
4.后期进阶:限流、熔断、集群、负载均衡
六、总结
想要 SpringBoot 扛住高流量,不用一开始就学复杂架构。把四大基础优化做好,就能解决 90% 普通项目并发问题:
1.调优容器线程,提高并发处理能力
2.缓存降级数据库压力
3.异步解耦,加快接口响应
4.规范 SQL、合理建索引
基础打好,再慢慢学习分布式、微服务、限流降级等高阶知识,后端提升会非常快。