百万 QPS每秒百万次请求是互联网基础设施的顶级量级只有少数头部公司如 Google、Meta、阿里、腾讯核心链路在特定场景下能达到。对大多数团队来说更现实的目标是先设计可水平扩展的架构再按流量阶梯逐步演进。本文挑重点讲清楚原理、分层和落地路径。1. 百万 QPS 意味着什么在动手之前必须做容量建模指标估算100 万 QPS每秒 100 万次 HTTP 请求按平均 1KB 响应出站带宽约 8 Gbps仅响应体按 10ms 平均延迟任意时刻约 1 万个并发连接 在处理中单机极限普通 Web 服务器约 1–5 万 QPS静态/缓存命中场景结论不可能靠单机扛百万 QPS必须依赖 CDN 边缘缓存 多层负载均衡 大规模水平扩展 异步解耦。2. 整体架构百万 QPS 的核心思路是 「让请求尽量死在离用户最近的地方」每一层都有明确职责且都可独立扩容。3. CDN 与边缘计算第一道防线3.1 静态资源HTML、CSS、JS、图片、视频走 CDN命中率可达 95%若 100 万 QPS 中有 80 万是静态资源CDN 吸收后源站只剩 20 万 QPS3.2 动态内容边缘化Edge Side Includes (ESI)、边缘 SSRCloudflare Workers、AWS LambdaEdge 在边缘做鉴权、A/B、限流把「读多写少」的 API 做成 边缘缓存短 TTL 缓存键设计3.3 关键实践合理设置Cache-Control、ETag、Vary按地域部署 PoP减少回源源站保护CDN 回源限流、源站 IP 白名单4. 负载均衡两层结构4.1 四层 LBL4基于 IP 端口转发性能极高常用LVSDR/NAT 模式、F5、云厂商 NLB单台 LVS 可达 百万级连接QPS 取决于包大小多 LB 用 ECMP / Anycast / DNS 轮询 做横向扩展4.2 七层 LBL7基于 HTTP 路由、TLS 终止、限流、灰度常用Nginx、Envoy、HAProxy、云 ALB单实例约 5–10 万 QPS视配置而定需要 几十到上百实例4.3 选型建议DNS(GSLB) → Anycast VIP → L4 LB 集群 → L7 LB 集群 → 应用 PodTLS 在 L7 或专用 SSL 卸载层终止硬件或 Envoy长连接场景注意 连接数 而非只看 QPS5. 应用层无状态 水平扩展5.1 无状态设计Session 外置到 Redis 集群文件上传走 对象存储S3/OSS任意实例可随时扩缩容5.2 容器化与编排Kubernetes HPA按 CPU/QPS/自定义指标扩缩单集群可管理数千 Pod超大规模用 多集群 联邦服务网格Istio/Linkerd做流量治理但高 QPS 场景要评估 sidecar 开销5.3 语言与运行时场景推荐高 QPS 读接口Go、Rust、C复杂业务Java虚拟线程/GraalVM、Go计算密集独立 Worker 池连接池、对象池减少 GC 压力零拷贝、io_uringLinux优化 I/O避免同步阻塞调用链路过长5.4 容量估算示例假设单个 Go 实例稳态 2 万 QPS源站需扛 20 万 QPS → 约 10 台加 50% 冗余 → 15 台多可用区部署单区故障仍可用6. 缓存多层缓存体系缓存是扛高并发最核心的手段。6.1 浏览器缓存max-age、immutable减少重复请求6.2 CDN 缓存见上文吸收绝大部分流量6.3 应用本地缓存Caffeine、ristretto 等进程内缓存适合热点配置、字典数据延迟 微秒级注意多实例一致性短 TTL 发布时失效6.4 分布式缓存Redis单 Redis 约 10–20 万 QPSGET集群模式百万 QPS 读 → Redis Cluster 数十节点或 多级缓存本地 Redis热点 Key本地缓存 随机过期 防雪崩互斥锁/单飞singleflight 防击穿6.5 数据库查询缓存缓存穿透布隆过滤器缓存雪崩过期时间加随机抖动缓存与 DB 一致性延迟双删、订阅 binlog 失效缓存6.6 典型读路径请求 → 本地缓存命中? → Redis 命中? → DB最后手段目标打到 DB 的 QPS 控制在 数百数千。7. 数据库读写分离 分片DB 是典型瓶颈百万 QPS 下必须 少写多读、异步写、分片存储。7.1 读写分离主库写多个只读副本读注意主从延迟读己之写用 主库读 或 会话一致性7.2 分库分表水平分片按 user_id、order_id 等 hash中间件ShardingSphere、Vitess、CitusPG跨分片查询尽量避免或走 ES/OLAP 做分析7.3 数据库选型类型场景MySQL/PostgreSQL事务型核心业务TiDB/CockroachDB分布式 SQL自动分片Cassandra/ScyllaDB超高写入、宽表DynamoDB云原生 KV自动扩展7.4 连接池应用与 DB 之间用 PgBouncer、ProxySQL避免「每个 Pod 一个连接」导致连接数爆炸8. 异步化与消息队列同步链路越长能扛的 QPS 越低。8.1 写操作异步化用户下单 → API 快速返回「已受理」→ 消息队列 → 订单/库存/支付 Worker队列Kafka、Pulsar、RocketMQKafka 单集群可达 百万级消息/秒分区扩展8.2 削峰填谷秒杀、抢购请求先入队Worker 按 DB 能力消费配合 令牌桶/漏桶限流8.3 CQRS写模型与读模型分离写走 OLTP读走 Redis / ES / 物化视图最终一致性可接受时读性能可提升一个数量级9. 限流、熔断、降级高并发下保护系统比服务所有请求更重要。9.1 多级限流全局限流网关→ 服务级限流 → 接口级限流 → 用户级限流算法令牌桶、滑动窗口实现Envoy rate limit、Sentinel、自研 Redis Lua9.2 熔断下游故障时快速失败避免级联雪崩Hystrix / resilience4j / Envoy outlier detection9.3 降级非核心功能关闭推荐、评论返回兜底数据缓存快照、默认值静态化热点页面10. 网络与基础设施10.1 带宽百万 QPS × 1KB ≈ 8 Tbps 级别 的峰值带宽需求含请求响应实际靠 CDN 边缘消化源站带宽需求小得多10.2 多地域部署Active-Active 多活用户就近接入数据多活冲突用 CRDT、最后写入胜出、或业务层规避10.3 专线与 Anycast骨干网 Anycast 将流量导向最近数据中心跨地域数据同步延迟要纳入设计11. 可观测性没有监控等于盲飞百万 QPS 下1% 错误 每秒 1 万次失败。11.1 三大支柱MetricsPrometheus Thanos/MimirRED/USE 方法LogsELK/Loki采样 结构化TracesJaeger/Tempo分布式追踪找慢点11.2 关键指标QPS、P99 延迟、错误率、饱和度缓存命中率、队列积压、DB 连接池使用率告警按 SLO 设定如 99.9% 请求 200ms11.3 全链路压测生产级压测流量录制回放、影子流量逐步加压找到第一个瓶颈点12. 安全高并发下的 DDoS 防护CDN WAF 吸收恶意流量验证码、人机校验在边缘完成SYN Cookie、连接限速13. 演进路径不要一步到位大多数系统不需要第一天就百万 QPS。建议分阶段阶段QPS 量级典型架构1 1 万单机/小集群 MySQL Redis21–10 万多实例 读写分离 CDN310–50 万分库分表 消息队列 多级缓存450–100 万多地域 边缘计算 专用基础设施每一步用 压测验证瓶颈再针对性优化避免过度设计。14. 常见误区堆机器不堆架构无状态、缓存、异步没做好加机器收益递减忽视热点少数 Key 打爆 Redis 单分片需本地缓存 热点探测同步链路过长一个请求串 10 个微服务P99 必然爆炸过度微服务化百万 QPS 下服务间 RPC 开销可观合并热点路径没有压测上线后才发现 DB 连接池、某个 JSON 序列化是瓶颈15. 总结支撑百万 QPS 的本质是边缘消化CDN 边缘计算挡住绝大部分流量水平扩展每一层无状态、可独立扩容缓存为王多级缓存让 DB 几乎不被读流量打穿异步解耦写操作走队列读走缓存限流降级宁可拒绝不可雪崩可观测 压测用数据驱动扩容和优化没有银弹只有 分层、分片、缓存、异步 的组合拳。根据业务类型读多/写多、一致性要求调整权重按流量阶段演进比一开始就追求「百万 QPS 架构」更务实。
Java毕设选题推荐:基于 SpringBoot 的北部湾农产品电商助农平台的设计与实现 基于 SpringBoot+Vue 的地域性乡村助农服【附源码、mysql、文档、调试+代码讲解+全bao等】 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
【Springboot毕设全套源码+文档】基于springboot蔬菜超市系统的设计与实现(丰富项目+远程调试+讲解+定制) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
为什么说Notepad--是你跨平台文本编辑的最佳选择? 为什么说Notepad--是你跨平台文本编辑的最佳选择? 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- 你是否曾…
Python密码学实战:深入解析cryptography库中的密钥派生函数 1. 项目概述:为什么我们需要密钥派生函数?如果你在Python里搞过密码学相关的开发,比如用cryptography库处理用户密码、加密文件或者生成API密钥,那你大概率已经和密钥派生函数打过交道了。这东西听起来挺学术,但说白了…
写在开头:我为什么开这个专栏? 你好,欢迎来到《制造业数字化实战》专栏。 我是吴记数智工坊,在电子制造行业做了15年数字化系统,从一线开发到技术经理,经手84个系统项目——覆盖SMT生产、品质、仓储、成本、关务等全链条。 过去,我只是一个写代码的人…
B300 GPU维修实践:5类高频故障现象及Root Cause分析 随着B300开始进入大规模部署阶段,高端AI算力平台的硬件维修也进入了新的阶段。相比上一代产品,B300在算力、功耗、互连带宽以及系统集成度方面进一步提升。这些变化不仅带来了更高的AI计算性能,也使GPU故障分析和维修难度明显增加。从实际维修…
hot100 两数相加(2) 本题采用模拟按位加法算法(又称“全加器链表迭代法”)解决两个大整数的逆序链表求和问题。其核心本质是利用链表逆序排列与算术竖式加法低位对齐的物理一致性,通过单次线性循环与进位状态转移,动态构建一个新的和链表。当前提供的…
3步掌握WebODM:免费开源的无人机图像处理终极指南 3步掌握WebODM:免费开源的无人机图像处理终极指南 【免费下载链接】WebODM User-friendly, commercial-grade software for processing aerial imagery. ✈️ Download it for free! 项目地址: https://gitcode.com/gh_mirrors/we/WebODM 想要将无人机航拍图…
(十五)「JVS-Rules规则引擎 V2.5」— 赋值节点 核心概念赋值节点是规则引擎中用于在规则执行过程中将一个或多个变量赋予新值的操作节点。它由变量和赋值表达式组成,其核心作用是修改或更新变量的值,以便后续的规则条件和操作能利用这些更新后的值。支持的赋值方式系统目前支持三种赋值方式࿰…
免费文件夹加密软件全攻略:从VeraCrypt到7-Zip,构建个人数字保险柜 1. 项目概述:为什么我们需要文件夹加密? 在数字生活和工作场景中,我们每个人的电脑里都或多或少存放着一些“敏感”文件。这些文件可能是尚未公开的个人财务记录、工作项目的核心设计方案、私密的家庭照片,或者是一些重要的账号密…
WMIC命令失效排查:Windows 11 22H2后获取ProcessorID等信息的3种替代方案 Windows 11 22H2后获取硬件标识的现代方案:告别WMIC的全面指南当你在Windows 11 22H2或更新版本中尝试使用熟悉的WMIC命令获取ProcessorID或MachineGUID时,突然弹出的"不是内部或外部命令"错误提示是否让你措手不及?微软已正式将WM…
Oracle数据库安全漏洞修复与主动防范实战指南 1. 项目概述:为什么Oracle数据库安全是运维的“必修课” 最近在梳理团队内部的数据库运维规范,发现一个老生常谈但又极易被忽视的问题:Oracle数据库的安全漏洞修复。这话题听起来有点“硬核”,但只要你手头有Oracle数据库在跑&…
3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略 3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾为Windows右键菜单中那些…
GXDE OS下Wayland兼容性实战:从deepin-mutter原理到VMware Tools修复 如果你正在用 GXDE OS 或者任何基于 Deepin 的发行版,并且遇到了“检测到窗口系统采用 Wayland 协议,程序即将退出”这类弹窗,或者发现 VMware Tools 在 Ubuntu 24.04 这类默认 Wayland 的系统上启动失败,那这篇文章就是为你准备的…
企业AI落地困境与AgenticOps实践指南 1. 企业AI落地的现实困境与破局之道过去两年,大模型技术呈现爆发式增长,从GPT-3到GPT-4,从LLaMA到DeepSeek,模型参数规模从百亿级跃升至万亿级,多模态能力从单一文本扩展到图文音视频的综合处理。然而在企业应用层面&a…
[C++]内存管理:串顺序存储的内存回收 在串(字符串)的顺序存储中,内存回收的方式取决于字符串的存储方式以及所使用的编程语言和相关库。以下以 C 为例进行说明,因为 C 对内存管理有较为直接的控制。 1. 基于 char 数组的串顺序存储 如果使用普通的 char 数组来存储字…
移动端游戏功耗测试实战:电流、功率、亮度和场景对比 移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…
足球口袋教练 HarmonyOS 离线应用实战(03/20):ArkUI 首页仪表盘搭建 本文是“足球口袋教练 HarmonyOS 离线应用实战”系列第 3 篇。示例项目是一个 HarmonyOS / ArkTS / ArkUI 编写的离线足球训练助手,围绕真实页面、真实截图和可复现操作展开。 本篇要解决的问题 训练 App 的首页不能只展示欢迎语,它要解决“我现在该点哪…