
1) 【一句话结论】在招聘信息查询高并发场景下,推荐使用IP哈希(一致性哈希)算法,因为它能保证用户请求的会话一致性(避免登录状态、购物车等用户状态丢失),同时均衡分配请求,适合需要用户状态保持的场景。
2) 【原理/概念讲解】
轮询(Round Robin):像排队买票,服务器列表按顺序循环分配请求,简单易实现,但所有服务器权重相同,可能不匹配实际负载(比如性能弱的服务器被分配过多请求)。
加权轮询(Weighted Round Robin):给服务器设置权重,权重高的服务器分配更多请求,比如服务器A处理能力强(权重2),服务器B权重1,分配比例2:1,适合服务器性能差异大的场景。
IP哈希(IP Hash):通过用户IP的哈希值计算服务器索引,同一IP的请求总是分配到同一台服务器,保证会话一致性(比如用户登录后,每次访问都到同一台服务器,避免会话丢失)。
3) 【对比与适用场景】
| 算法类型 | 定义 | 核心特性 | 典型场景 | 注意点 |
|---|---|---|---|---|
| 轮询 | 按顺序循环分配请求 | 所有服务器权重相同,简单 | 请求无状态,负载均衡需求简单 | 可能导致服务器负载不均(如某台服务器处理能力弱但权重高) |
| 加权轮询 | 给服务器设置权重,权重高的分配更多请求 | 权重反映服务器处理能力 | 服务器性能差异大,需要差异化负载 | 权重设置需合理,避免权重过高导致单台过载 |
| IP哈希 | 通过用户IP哈希值计算服务器索引 | 同一IP请求固定到同一服务器,会话一致 | 需保持用户状态(如登录、购物车),高并发下会话管理 | 哈希冲突可能导致请求分配到错误服务器;IP变化(如切换网络)会切换服务器 |
4) 【示例】
假设有3台服务器:server1、server2、server3。
server1,请求2→server2,请求3→server3,请求4→server1(循环)。server1权重2,server2权重1):请求1→server1,请求2→server1,请求3→server2,请求4→server1(2:1比例)。192.168.1.1,哈希值对应server1):用户A的所有请求都分配到server1,保持会话。5) 【面试口播版答案】
(约80秒)
“面试官您好,针对Nginx的负载均衡算法,结合招聘信息查询的高并发场景,我总结如下:首先,轮询是最基础的算法,按顺序分配请求,但所有服务器权重相同,不适合服务器性能差异大的场景;加权轮询通过设置权重,让性能强的服务器处理更多请求,适合服务器性能不均的情况,但需要合理配置权重。而IP哈希算法通过用户IP的哈希值固定分配服务器,能保证用户请求的会话一致性,比如用户登录后,每次访问都到同一台服务器,避免会话丢失。对于招聘信息查询场景,用户可能需要保持登录状态(如收藏职位、查看简历),所以IP哈希更合适,因为它能维持用户会话,同时均衡负载。总结来说,推荐使用IP哈希算法,因为它在保持会话一致性的同时,还能实现负载均衡,适合需要用户状态的高并发查询场景。”
6) 【追问清单】
7) 【常见坑/雷区】