跳转至

高并发系统如何设计?

一、什么是高并发

同时大量请求进来,系统要扛住不挂、响应快。常见指标:QPS、RT、错误率。

二、设计思路:三层防线

第一层:减少请求到达后端

  1. CDN / 静态化:静态资源放 CDN,直接边缘节点返回。
  2. 缓存:Redis、本地缓存。热点数据不查 DB。
  3. 限流:Nginx / Gateway / Sentinel,挡住超额流量。
  4. 页面缓存:把整个 HTML 缓存。

第二层:让后端高效处理

  1. 异步:非核心流程走 MQ,主请求快速返回。
  2. 水平扩展:应用无状态,加机器。
  3. 连接池 / 线程池:复用资源。
  4. 无锁化:CAS、分段锁、串行化。

第三层:保护数据库

  1. 读写分离
  2. 分库分表
  3. SQL 优化
  4. 熔断降级:DB 压力大时直接返回兜底。

三、典型架构图

客户端
CDN / Nginx 限流
网关(认证、限流、路由)
应用集群(无状态)
  ↓         ↓
  Redis     MQ
  ↓         ↓
DB        消费者

四、秒杀场景实战

  1. 商品详情页静态化 + CDN。
  2. 按钮置灰,前端限流。
  3. 库存预热到 Redis。
  4. Redis 预减库存(Lua 原子)。
  5. 成功后发 MQ,异步创建订单。
  6. DB 最终落库。
  7. 限流 + 降级,超了直接拒绝。

五、非功能性

  • 监控:日志、Metrics、链路追踪。
  • 预案:熔断、限流、降级开关。
  • 压测:上线前压测。
  • 容量规划:按峰值预估机器数。

答题框架

按:前端(CDN/静态化) -> 接入层(限流) -> 应用层(缓存/异步/水平扩展) -> 数据层(读写分离/分库分表) -> 兜底(降级/熔断)