一、百万 QPS 项目基本前提
- 单接口平均耗时: <20ms
- 单机极限 QPS:1k~5k(普通服务)
- 百万 QPS ≈ 200~500 台服务实例
- 必须:无状态、水平扩容、全链路缓存、异步化、削峰
二、整体架构选型(最稳、最通用)
1. 接入层 / 网关
-
七层负载:阿里云 SLB / 腾讯云 CLB / Nginx + LVS
-
API 网关:
- 企业级:Kong / APISIX / Spring Cloud Gateway
- 超高性能:Envoy
-
作用:限流、熔断、鉴权、灰度、监控
2. 业务服务层(百万 QPS 必选)
语言 & 框架
-
首选:Go
- 框架:Gin / Hertz / Kitex(字节)
- 优势:超高并发、低延迟、轻量、部署简单
-
备选:Java
- 框架:Spring Cloud Alibaba / Spring Boot
- 生态最成熟,适合复杂业务
百万 QPS 不建议:PHP、Python、Node.js 做核心链路(压不住)
服务治理
- 服务发现:Nacos / Consul / etcd
- 配置中心:Nacos / Apollo
- 限流熔断:Sentinel
- 链路追踪:SkyWalking / Jaeger
3. 缓存层(百万 QPS 的命)
-
主缓存:Redis Cluster(多分片、多副本)
-
必须做:
- 本地缓存:Caffeine / Guava(热点数据)
- 分布式锁:Redlock / Redisson
-
防击穿 / 雪崩:
- 互斥锁、逻辑过期、布隆过滤器
4. 数据库层(绝对不能硬扛)
-
读多写少(99% 互联网)
- 读:MySQL 一主多从 + 读写分离
- 写:分库分表
-
分库分表中间件:
- ShardingSphere
-
强一致业务:
- TiDB(分布式 NewSQL,可水平扩)
-
日志 / 行为 / 大数据:
- ClickHouse(统计、报表、大屏)
5. 消息队列(削峰、异步、解耦)
-
高可靠、高吞吐:
- RocketMQ / Kafka
-
作用:
- 异步下单、支付、通知、日志、数据同步
- 秒杀 / 活动流量削峰
6. 存储 & 对象
- 静态资源:OSS / COS / MinIO
- 搜索引擎:Elasticsearch
- 分布式文件:FastDFS / JuiceFS
三、百万 QPS 核心技术要点(必做)
- 全链路无状态,服务随便扩
- 读请求 99% 走缓存,DB 只扛写
- 异步化:能异步绝不同步
- 限流、熔断、降级三驾马车
- 分库分表 + 读写分离
- 机房多活 / 可用区多活
- 全链路压测,真实流量仿真
四、最简可落地技术栈(直接抄)
- 接入:LVS + Nginx
- 网关:APISIX
- 业务:Go + Gin
- 缓存:Redis Cluster + 本地 Caffeine
- 数据库:MySQL + ShardingSphere
- 消息:RocketMQ
- 监控:Prometheus + Grafana + SkyWalking
- 部署:K8s + Docker