
1) 【一句话结论】
通过分层网络架构(CDN边缘节点+核心机房)、多级负载均衡(全局+应用层)、WebRTC+QUIC实时通信、热点数据缓存(Redis+对象存储),协同实现低延迟(<200ms)和高并发(数百人实验互动)。
2) 【原理/概念讲解】
老师来解释关键概念:
3) 【对比与适用场景】
| 方案类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 全局负载均衡(如AWS ELB) | 负责跨地域请求分发 | 跨区域高可用,自动故障转移 | 多地域部署,用户分布广 | 需配置多个区域,成本较高 |
| 应用层负载均衡(如Nginx) | 在应用层分发请求,处理业务逻辑 | 支持HTTP/HTTPS,灵活配置 | 单地域内多服务器 | 需高可用配置(如主备模式) |
| WebRTC vs WebSockets | 实时通信协议 | WebRTC:P2P,延迟低;WebSockets:C/S,服务器推送 | 实时实验互动、音视频通信 | WebRTC适合低延迟场景,WebSockets适合需要服务器主动推送的场景 |
4) 【示例】
upstream live_server {
server 192.168.1.10:8080 weight=3; # 性能高,权重3
server 192.168.1.11:8080 weight=2; # 中等性能
server 192.168.1.12:8080 weight=1; # 性能低
# 动态调整权重(假设通过监控脚本更新)
# weight=load_module;
}
server {
listen 80;
server_name live.xueersi.com;
location / {
proxy_pass http://live_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
gzip on;
}
}
# 客户端A向STUN服务器请求本地信息
stun_response = send_request(stun_server, "stun.example.com")
local_ip, local_port = parse_stun_response(stun_response)
# 向客户端B发起P2P连接
try:
peer_connection = create_peer_connection(local_ip, local_port)
peer_connection.addIceCandidate(candidate)
peer_connection.setRemoteDescription(remote_description)
# P2P成功,传输实验数据
except:
# P2P失败,使用TURN中转
turn_server = "turn.example.com"
peer_connection = create_turn_connection(turn_server)
# 通过TURN传输实验数据
5) 【面试口播版答案】
面试官您好,针对直播课系统低延迟和高并发的问题,我的核心思路是通过分层网络架构、多级负载均衡、实时通信协议及缓存策略协同实现。首先,网络架构上采用CDN边缘节点靠近用户,缓存动态实验素材(如传感器配置),核心机房处理核心业务,减少传输延迟;然后,负载均衡分两层:全局负载均衡将请求分发到不同区域的服务器,应用层负载均衡(如Nginx)在单区域内根据服务器性能(CPU/内存负载)采用加权轮询,确保请求均匀分布;实时通信采用WebRTC协议,支持点对点通信,延迟低,同时QUIC协议优化传输,减少丢包;缓存策略上,热点数据(实验素材、用户状态)用Redis缓存,减少数据库压力,对象存储用于静态资源,提升响应速度。这样整体能保证<200ms延迟和数百人并发实验互动。
6) 【追问清单】
7) 【常见坑/雷区】