
1) 【一句话结论】:活动期间流量激增时,采用L4(Nginx TCP)与L7(游戏服务器 HTTP)多级负载均衡,结合K8s HPA动态扩容。根据流量特征选择加权轮询(流量不均)或一致性哈希(会话粘性),通过健康检查过滤故障服务器,动态调整权重与实例数量,实现弹性负载分配。
2) 【原理/概念讲解】:老师口吻解释关键概念:
3) 【对比与适用场景】:
| 算法类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 轮询 | 按顺序分发请求 | 简单公平,请求次数均等 | 流量均匀的静态场景 | 可能导致热点(服务器性能差异) |
| 加权轮询 | 根据服务器权重分配请求 | 性能好的服务器分配更多请求 | 流量不均,需考虑服务器负载/性能 | 权重需动态调整(如实时负载) |
| 一致性哈希 | 请求哈希值与服务器哈希环位置匹配 | 会话粘性,减少会话迁移 | 需要会话粘性的应用(如游戏登录) | 节点增减时,受影响请求数量较少(如1/n) |
| 最少连接 | 选择当前连接数最少的服务器 | 优化连接数,减少响应时间 | 连接数敏感的场景(如长连接) | 新服务器冷启动时连接数少 |
4) 【示例】:
upstream game_servers {
server 192.168.1.1:8080 weight=3; # 性能好的服务器权重高(如CPU利用率低)
server 192.168.1.2:8080 weight=2;
server 192.168.1.3:8080 weight=1;
health_check interval=5 timeout=2; # 每5秒检查,超时2秒
# 动态权重更新(通过Prometheus监控CPU,脚本实时调整)
# 示例:当server1 CPU>60%时,weight减1
}
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: game-server-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: game-server-deployment
minReplicas: 3
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70 # CPU利用率>70%时扩容
updatePeriodSeconds: 5 # 调整为5秒,加快响应
5) 【面试口播版答案】:面试官您好,针对活动期间流量激增的负载均衡策略,核心是“多级负载均衡(L4+L7)+动态弹性扩容(K8s HPA)”。首先,选择算法时,若流量不均(如服务器性能差异),用加权轮询,让性能好的服务器承担更多请求;若需会话粘性(如游戏登录),用一致性哈希。然后,结合健康检查,定期检查服务器状态(如HTTP 200),过滤故障服务器。最后,通过K8s HPA,根据CPU利用率动态调整实例数量,比如设置70%的阈值,流量激增时自动扩容,回落时缩减。这样既能保证请求分发效率,又能应对流量波动,避免服务器过载或资源浪费。
6) 【追问清单】:
7) 【常见坑/雷区】: