字节一面:你负责的业务系统,流量突然提升100倍QPS,你怎么办?

字节一面经典场景题:业务系统QPS突然提升100倍,怎么办?

这道题在字节跳动(尤其是后端/架构方向)面试中超级高频,考察你对高并发系统设计、应急处理和架构演进的全面理解。别直接说“加机器扩容”,那只会得基本分——面试官想听的是系统性思维:从监控发现、原因分析,到短期应急、中期优化、长期预防的全链路方案。

标准回答框架(建议按这个结构说,逻辑清晰、加分多)

  1. 第一时间:监控报警 + 快速定位
  • 系统有完善监控(Prometheus + Grafana 或字节内部工具),QPS/CPU/延迟/错误率等指标实时报警。
  • 登录系统查看日志、链路追踪(Zipkin/Jaeger),定位是全局流量还是单个接口?是正常爆发(活动/热点)还是异常(攻击/爬虫/BUG)?
  1. 原因分析(区分场景)
  • 正常业务增长:如大促、热点事件、病毒传播。
  • 异常流量:DDoS/CC攻击、恶意刷接口、代码BUG导致重试风暴。
  • 如果是攻击,先上报安全团队,启用云WAF/CDN高防。
  1. 短期应急(保核心可用,分钟级响应)
  • 限流 + 熔断 + 降级:网关层(Nginx/Sentinel/Hystrix)限流,超阈值直接返回429或友好提示;非核心功能降级(如推荐降级为默认)。
  • 流量清洗:用CDN隐藏源站,拦截异常IP/User-Agent。
  • 快速扩容:云环境(阿里云/腾讯云/K8s)自动/手动弹性扩容实例、读从库。
  • 缓存应急:热点数据快速上Redis本地缓存,防DB崩。
  1. 中期优化(小时/天级,扛住高峰)
  • 缓存:热点数据上多级缓存(本地Heap + Redis),防雪崩(随机过期 + 降级)。
  • 异步化:非核心逻辑(如日志、通知、积分)投MQ(Kafka/RocketMQ)削峰。
  • 分库分表 + 读写分离:水平扩展DB,ShardingSphere/Canal同步。
  • 静态化/CDN:前端资源全静态,动静分离。
  1. 长期预防(架构演进)
  • 压测:定期全链路压测(JMeter/Gatling),模拟100倍流量,找瓶颈。
  • 分布式 + 无状态:微服务、集群部署,负载均衡(LVS/Nginx)。
  • 监控 + 演练:全链路监控 + 混沌工程(Chaos Monkey)演练故障。
  • 自动扩缩容:K8s HPA + 云监控规则。

高并发应对“9字真经”表格(字节爱考,背下来)

很多面经提到这个,面试甩出来超加分:

含义具体措施场景示例
压力测试JMeter全链路压测,找瓶颈上线前模拟高峰
分片/拆分分库分表、微服务拆分DB/单表瓶颈
缓存Redis + 本地缓存 + CDN热点读
异步MQ削峰、异步写非核心逻辑
限流Token Bucket/Leaky Bucket + Sentinel防刷/攻击
降级熔断、非核心关闭系统过载时保核心
扩容水平/垂直扩容 + 自动弹性短期扛流量
监控全链路指标 + 报警实时发现问题
演练混沌工程 + 故障演练提升系统韧性

面试Tips

  • 别只说扩容:那是最低级答案,面试官会追问“如果机器不够/扩容慢/DB扛不住呢?”
  • 结合字节业务:字节流量大(如抖音热点),可以说“类似抖音视频爆火,流量100倍,用缓存+异步+限流扛住”。
  • 数据化:说“原QPS 1k → 100k,目标RT<200ms,错误率<0.1%”。
  • 反问:如果面试官追问细节,可以说“取决于业务类型,是读重还是写重?”

这个答案结构化+全面,字节面试官爱听(面经反馈过率高)。如果你面过字节,分享下真实经历?下一个问题是“10万QPS怎么设计”😂 加油,冲!

文章已创建 3216

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部