高并发系统如何设计?¶
一、什么是高并发¶
同时大量请求进来,系统要扛住不挂、响应快。常见指标:QPS、RT、错误率。
二、设计思路:三层防线¶
第一层:减少请求到达后端¶
- CDN / 静态化:静态资源放 CDN,直接边缘节点返回。
- 缓存:Redis、本地缓存。热点数据不查 DB。
- 限流:Nginx / Gateway / Sentinel,挡住超额流量。
- 页面缓存:把整个 HTML 缓存。
第二层:让后端高效处理¶
- 异步:非核心流程走 MQ,主请求快速返回。
- 水平扩展:应用无状态,加机器。
- 连接池 / 线程池:复用资源。
- 无锁化:CAS、分段锁、串行化。
第三层:保护数据库¶
- 读写分离。
- 分库分表。
- SQL 优化。
- 熔断降级:DB 压力大时直接返回兜底。
三、典型架构图¶
四、秒杀场景实战¶
- 商品详情页静态化 + CDN。
- 按钮置灰,前端限流。
- 库存预热到 Redis。
- Redis 预减库存(Lua 原子)。
- 成功后发 MQ,异步创建订单。
- DB 最终落库。
- 限流 + 降级,超了直接拒绝。
五、非功能性¶
- 监控:日志、Metrics、链路追踪。
- 预案:熔断、限流、降级开关。
- 压测:上线前压测。
- 容量规划:按峰值预估机器数。
答题框架
按:前端(CDN/静态化) -> 接入层(限流) -> 应用层(缓存/异步/水平扩展) -> 数据层(读写分离/分库分表) -> 兜底(降级/熔断)。