
1) 【一句话结论】在360“安全日”活动期间,通过Nginx滑动窗口限流、Redis缓存优化及异步消息队列解耦,成功应对高并发,系统QPS提升50%,服务稳定性达99.9%。
2) 【原理/概念讲解】高并发场景下,核心问题是请求量超过系统处理能力导致服务崩溃。解决思路是“削峰填谷”:
3) 【对比与适用场景】
限流算法对比(滑动窗口 vs 固定窗口):
| 算法 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 固定窗口 | 每个时间窗口固定计数(如每秒1000请求) | 简单实现,但窗口末尾突发流量易超限 | 流量波动小 | 可能导致瞬时流量堆积,引发服务崩溃 |
| 滑动窗口 | 时间窗口动态滑动,计数累积(如每秒1000请求,窗口每0.1秒滑动) | 更精准,避免固定窗口的“堆积”问题 | 流量波动大(如活动期间) | 实现复杂,需精确时间同步(如Nginx的limit_req模块) |
4) 【示例】
项目:360“安全日”活动,用户请求量激增(QPS从2000→8000+)。解决方案伪代码:
请求到达 → Nginx(滑动窗口限流,每秒1000请求) → 转发后端
后端处理:
1. 检查Redis(key: user_ip, value: 访问次数)
2. 若缓存存在且次数<5 → 更新缓存(incr)→ 返回数据
3. 若缓存不存在/次数≥5 → 查询数据库(用户信息)→ 缓存结果(setex 60 1)→ 返回数据
5) 【面试口播版答案】
面试官您好,我分享一个在360“安全日”活动期间处理高并发项目的经历。当时活动期间用户请求量激增,系统QPS从平时的2000飙升至8000+,导致服务超时、数据库连接池耗尽。我的解决方案是:
6) 【追问清单】
7) 【常见坑/雷区】