百万级QPS项目技术架构

5 阅读2分钟

一、百万 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 核心技术要点(必做)

  1. 全链路无状态,服务随便扩
  2. 读请求 99% 走缓存,DB 只扛写
  3. 异步化:能异步绝不同步
  4. 限流、熔断、降级三驾马车
  5. 分库分表 + 读写分离
  6. 机房多活 / 可用区多活
  7. 全链路压测,真实流量仿真

四、最简可落地技术栈(直接抄)

  • 接入:LVS + Nginx
  • 网关:APISIX
  • 业务:Go + Gin
  • 缓存:Redis Cluster + 本地 Caffeine
  • 数据库:MySQL + ShardingSphere
  • 消息:RocketMQ
  • 监控:Prometheus + Grafana + SkyWalking
  • 部署:K8s + Docker