Skip to content

附录 A · 负载均衡面试题速查

按主题分类,每题含 考察点 / 标准答案 / 易错点。建议先自己做一遍,再对照答案。


一、基础概念

Q1. 什么是负载均衡?解决什么问题?

考察点:是否理解 SPOF 与水平扩展。

标准答案:在多个提供相同服务的服务器之间分配请求,解决单机性能瓶颈和单点故障,提升吞吐量、可用性和可扩展性。

易错点:只说「平均分」——负载均衡的核心是 调度策略故障转移,不只是平均。


Q2. 负载均衡和反向代理的区别?

考察点:概念辨析。

标准答案:反向代理隐藏后端,对外提供统一入口;负载均衡在多个后端间选择一台处理请求。Nginx 常同时承担两者。

易错点:认为是一回事。


Q3. 水平扩展和垂直扩展?

标准答案:水平扩展是加机器(Scale Out),垂直扩展是升级单机配置(Scale Up)。互联网主流是水平扩展 + LB。


二、L4 vs L7

Q4. 四层和七层负载均衡的区别?(超高频)

标准答案

  • L4:基于 IP、端口、TCP/UDP 转发,不解析应用协议,性能高,功能少
  • L7:解析 HTTP 等应用协议,可按 URL/Header 路由,支持鉴权限流,功能强
  • 生产常 L4 前置扛连接,L7 后置做业务路由

易错点:只说「L7 慢」不说 为什么慢、慢多少、换来什么


Q5. 为什么 Web 场景多用七层?

标准答案:需要路径分流、HTTPS 终结、基于 Cookie 的路由、灰度发布、API 级限流——必须看懂 HTTP。


Q6. LVS 是什么?用在哪?

标准答案:Linux Virtual Server,内核级 L4 负载均衡,性能极高,常用于超大流量入口,上层再挂 Nginx 做 L7。


三、调度算法

Q7. 常见负载均衡算法有哪些?

标准答案:轮询、加权轮询、随机、最少连接、加权最少连接、IP Hash、一致性哈希、最短响应时间。


Q8. 轮询和加权轮询区别?

标准答案:轮询均等分配;加权轮询按 weight 比例分配,适合异构机器混部。


Q9. 什么时候用 least_conn?

标准答案:请求处理时间差异大、长连接/WebSocket/gRPC 流式场景,避免慢请求导致某台连接堆积。


Q10. 一致性哈希解决什么问题?

标准答案:后端节点增减时,避免普通 hash % N 导致几乎全部 key 重映射;适合缓存路由。常配合虚拟节点解决分布不均。


Q11. ip_hash 有什么问题?

标准答案:NAT 导致分布不均;移动网络 IP 变化丢会话;扩缩容大量重映射。现代应用应 Session 外置 Redis 或 JWT,而非依赖 ip_hash。


四、健康检查与高可用

Q12. 主动和被动健康检查区别?

标准答案

  • 被动:真实请求失败时标记 down(Nginx max_fails)
  • 主动:定时探针(HTTP/TCP),无流量也能发现故障
  • 生产推荐主动检查

Q13. 怎么实现优雅下线?

标准答案:LB 将节点标为 draining,停止分配新请求,等待存量请求完成后再关闭进程;K8s 用 preStop + readiness。


Q14. LB 自身单点怎么解决?

标准答案:Keepalived VIP 主备、云 LB 多 AZ、DNS 多入口。


五、会话与状态

Q15. 如何保证 Session 不丢?

标准答案:① Cookie/IP 粘性(遗留方案);② Redis 集中 Session(推荐);③ JWT 无状态。


Q16. 有状态和无状态服务对 LB 的要求?

标准答案:无状态可用任意算法;有状态需粘性路由或集中状态存储。架构上应尽量无状态。


六、软件与云原生

Q17. Nginx 如何实现负载均衡?

标准答案upstream 定义后端池,proxy_pass 指向池名;可选 least_conn、ip_hash、weight、max_fails 等。


Q18. Nginx 上游长连接怎么开?

标准答案upstream { keepalive N; } + proxy_http_version 1.1 + proxy_set_header Connection ""


Q19. HAProxy 和 Nginx 选型?

标准答案:Nginx 适合 Web 反代 + 静态;HAProxy 更专业的 LB 统计和主动健康检查;API 网关场景 APISIX/Kong。


Q20. K8s Service 和 Ingress 区别?

标准答案:Service 提供集群内稳定入口和 Pod LB;Ingress 是 L7 HTTP 路由,按 Host/Path 分到不同 Service。


Q21. readiness 和 liveness 区别?

标准答案:readiness 决定能否接流量,失败从 Endpoints 摘除;liveness 判断进程存活,失败重启 Pod。


Q22. K8s Service 类型有哪些?

标准答案:ClusterIP、NodePort、LoadBalancer、ExternalName。


七、踩坑与治理

Q23. 为什么重试可能导致重复下单?

标准答案:LB/客户端超时重试,POST 非幂等会执行两次;需幂等键、唯一约束,谨慎开启 POST 重试。


Q24. 什么是雪崩?和 LB 的关系?

标准答案:慢节点 → 重试增多 → 更多堆积 → 全挂。需熔断、限流、超时、降级,不能无限重试。


Q25. proxy_next_upstream 要注意什么?

标准答案:可对错误/超时重试到其他后端;默认不重试 POST;非幂等接口要谨慎。


八、综合场景

Q26. 秒杀场景 LB 要注意什么?

标准答案:入口限流、least_conn 或轮询、禁止 POST 重试、幂等、HPA 扩容、发布预热、缓存扛读。


Q27. 如何排查「时快时慢」?

标准答案:查健康节点数、热点、长连接、重试风暴、后端依赖慢、发布预热。


Q28. 多机房负载均衡怎么做?

标准答案:DNS GSLB 地理解析 + 各机房 CLB + 数据层复制;故障时 DNS 或全局 LB 切换。


Q29. WebSocket 负载均衡注意点?

标准答案:支持协议升级;长 read timeout;连接级粘性;下线 draining。


Q30. 客户端负载均衡优缺点?

标准答案:少一跳、与注册中心联动;但每语言要实现,一致性难。常见于 gRPC/Dubbo。


九、进阶

Q31. 什么是虚拟节点?

标准答案:一致性哈希中每台物理机映射多个环上点位,使 key 分布更均匀。


Q32. Service Mesh 中的负载均衡?

标准答案:Sidecar(Envoy)做客户端 LB,支持加权、熔断、金丝雀,配合 xDS 动态配置。


Q33. 加权值怎么定?

标准答案:应基于压测(CPU、QPS、延迟),不是拍脑袋;可结合动态权重(部分产品支持)。


更多 Nginx 配置细节面试题见 front/nginx/qa.md 第 16~19 题。