面试官:如果某个业务量突然提升100倍QPS你会怎么做?
“假设你负责的系统,某个业务线的QPS突然暴增100倍,你会怎么应对?”
——这是上周朋友去面试,被问到一道题,他答了“加机器扩容”,结果面试官眉头一皱:“如果机器不够呢?如果数据库崩了呢?”朋友当场卡壳。其实这道题就像“高压水枪”,专冲知识漏洞。
作为开发者,如果只回答“加机器”“扩容”,可能直接暴露知识盲区。
真正的答案,需要从架构设计、资源调度、容灾兜底等多个维度拆解。
第一步:先问“为什么”,再想“怎么做”
面对突发流量,盲目优化=挖坑埋自己。
先理清关键问题:
QPS来源是否合理?
- 是正常业务爆发(如双十一促销),还是异常流量(如恶意攻击、代码BUG)?
- 若是异常,需优先拦截(风控、限流),而非盲目扩容。
流量暴增的范围和时间?
- 是全局流量激增,还是单个接口/功能?
- 是短期高峰(如秒杀),还是长期持续?
当前系统的瓶颈在哪里?
- CPU/内存/磁盘/网络?
- 数据库?缓存?第三方服务?
第二步:分层拆解,针对性优化
快速止血:限流降级,保住核心业务
- 限流:对非核心接口设置QPS阈值(如令牌桶算法),超限请求直接熔断。
- 降级:关闭次要功能(如评论、推荐),确保核心链路(如支付、下单)可用。
- 预案:提前配置好降级开关,通过配置中心实时生效。
横向扩展:无状态服务快速扩容
- 容器化+弹性伸缩:Kubernetes自动扩缩容,应对流量波动。
- 负载均衡:调整权重,将流量分流到压力较小的节点。
- 注意点:确保服务无状态,避免扩容后Session丢失等问题。
缓存为王:减少穿透击穿数据库
- 本地缓存:高频读数据(如商品信息)。
- 分布式缓存:Redis集群抗住大部分查询请求,设置多级缓存架构。
- 缓存预热:提前加载热点数据,避免冷启动雪崩。
数据库优化:分库分表+读写分离
- 读写分离:主库负责写,从库集群承担读请求。
- 分库分表:按业务拆分(用户库、订单库),或按Hash分片。
- 连接池优化:调整最大连接数、超时时间,避免线程阻塞。
异步化:削峰填谷,解耦系统
- 消息队列:Kafka/RocketMQ承接突发流量,后端异步消费。
- 批量处理:合并多次请求(如库存扣减),减少数据库压力。
第三步:长期防御,构建弹性架构
全链路压测
- 定期模拟极端流量,暴露系统瓶颈(如数据库连接池耗尽、慢SQL)。
- 阿里的“全链路压测”已成为大厂标配。
监控告警体系
- 关键指标实时监控:CPU、内存、QPS、RT、错误率。
- 设置多级阈值(预警、严重、致命),通过企业微信/钉钉通知。
容灾演练
- 定期演练机房断电、网络分区、缓存崩溃等极端场景。
- 确保故障发生时,能自动切换灾备节点。
总结:高并发的本质是“分治”
应对突发流量的核心逻辑:
横向拆分:用空间换时间(扩容、分库分表)。
纵向分层:每层专注单一问题(缓存、异步、限流)。
冗余设计:假设任何环节都会挂,做好兜底方案。
如果老板要求“零预算优化”,不能加机器,你会怎么做?
欢迎评论区讨论!

面试官:如果某个业务量突然提升100倍QPS你会怎么做?的更多相关文章
- MySQL 5.7 优化SQL提升100倍执行效率的深度思考(GO)
系统环境:微软云Linux DS12系列.Centos6.5 .MySQL 5.7.10.生产环境,step1,step2是案例,精彩的剖析部分在step3,step4. 1.慢sql语句大概需要13 ...
- 阿里云maven仓库地址,速度提升100倍
参照:https://www.cnblogs.com/xxt19970908/p/6685777.html maven仓库用过的人都知道,国内有多么的悲催.还好有比较好用的镜像可以使用,尽快记录下来. ...
- 优化临时表使用,SQL语句性能提升100倍
[问题现象] 线上mysql数据库爆出一个慢查询,DBA观察发现,查询时服务器IO飙升,IO占用率达到100%, 执行时间长达7s左右.SQL语句如下:SELECT DISTINCT g.*, cp. ...
- 转--优化临时表使用,SQL语句性能提升100倍
转自:http://www.51testing.com/html/01/n-867201-2.html [问题现象] 线上mysql数据库爆出一个慢查询,DBA观察发现,查询时服务器IO飙升,IO占用 ...
- sql 字段先计算后再拿比对的字段进行比对 效率提升100倍
关于日期索引的使用,不要计算后再对比,否则使用不了索引例如:以下执行不了索引,耗时很大 dywl=# explain analyze SELECT car_bill.billno,car_bill.b ...
- Python通过Openpyxl包汇总表格,效率提升100倍
最近找了份小兼职,干的全是些无聊的工作,比如说给word调整一下排版啦.把从多方回收来的Excel汇总啦,这些极其催眠又耗时的事,怎么能接受手动去做呢!!(疯了嘛,谁知道以后还有多少类似的表格要汇总啊 ...
- 面试官之问:知道你的接口“QPS”是多少吗?
前言: 原作:孤独烟.因修改不当之处欢迎指出! 大家好,我是小架架. 今天一大早就起来水文章了.这篇文章我个人感觉虽然含金量不是特别大,估计大家大概5分钟左右就能看完!到底是因为什么呢,因为平时干货文 ...
- 一个资深java面试官的“面试心得”
在公司当技术面试官几年间,从应届生到工作十几年的应聘者都遇到过.先表达一下我自己对面试的观点: 1.笔试.面试去评价一个人肯定是不够准确的,了解一个人最准确的方式就是“路遥知马力,日久见人心”.通过一 ...
- 我以为我对Mysql索引很了解,直到我遇到了阿里的面试官
GitHub 4.8k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 4.8k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 4.8k Star 的 ...
- MySQL 三万字精华总结 + 面试100 问,吊打面试官绰绰有余(收藏系列)
写在之前:不建议那种上来就是各种面试题罗列,然后背书式的去记忆,对技术的提升帮助很小,对正经面试也没什么帮助,有点东西的面试官深挖下就懵逼了. 个人建议把面试题看作是费曼学习法中的回顾.简化的环节,准 ...
随机推荐
- Docker网络:Docker0、容器互联技术--link、自定义网络、实战部署Redis集群
一.Docker网络 ● --理解Docker0 在干净的Linux环境上安装docker(将docker 的所有镜像.容器先删除,干干净净!)实验: 1.查看本地网络信息 ip addr 可见有三个 ...
- 使用pict生成正交表
使用pict可以自动生成正交表 步骤: 1.安装 2.新建TXT文件,格式为: 因子1:水平项1,水平项2 因子2:水平项1,水平项2 多个水平项用英文逗号分割 3.生成,打开cmd,切换到要 ...
- Apex pg walkthrough Intermediate
nmap扫描 ┌──(root㉿kali)-[~] └─# nmap -p- -A 192.168.157.145 Starting Nmap 7.94SVN ( https://nmap.org ) ...
- 容器、容器云和容器化PaaS平台之间到底是什么关系?
本文分享自天翼云开发者社区<容器.容器云和容器化PaaS平台之间到底是什么关系?>,作者:s****n 一直都有很多人迷惑于容器应该属于 IaaS 或是 PaaS 层,也搞不清楚容器云到底 ...
- Mac启用或停用root用户
1.选取苹果菜单 () >"系统偏好设置",然后点按"用户与群组"(或"帐户"). 2.点按 ,然后输入管理员名称和密码. 3.点按 ...
- Luogu P4425 转盘 题解 [ 黑 ] [ 线段树 ] [ 贪心 ] [ 递归 ]
转盘:蒟蒻的第一道黑,这题是贪心和线段树递归合并的综合题. 贪心 破环成链的 trick 自然不用多说. 首先观察题目,很容易发现一个性质:只走一圈的方案一定最优.这个很容易证,因为再绕一圈回来标记前 ...
- AI-启动
前言 我们都知道AI可以帮助我们完成很多工作,同时也可以帮助我们快速生成一些繁琐的文档:本篇介绍接入一些开源的大预言模型: 准备 OpenAPI 首先需要了解下什么是OpenAPI,OpenAPI是一 ...
- win10安装MongoDB 5.0
1.首先去官网下载安装包:https://www.mongodb.com/try?tck=docs_navbar 2.安装过程一路下一步就行,选择complete安装,可以勾选安装Compass工具 ...
- Vulnhub-kioptix2014靶机getshell及提权
靶机搭建 点击扫描虚拟机 然后扫描文件夹即可 信息收集 扫描ip nmap扫描得到目标靶机ip nmap -sn 192.168.108.0/24 故 攻击机:192.168.108.130 目标靶机 ...
- Vue press 支持图片放大功能的代码分享
介绍 VuePress 由两部分组成:一个以 Vue 驱动的主题系统的简约静态网站生成工具,和一个为编写技术文档而优化的默认主题.它是为了支持 Vue 子项目的文档需求而创建的. 由 VuePress ...