
1) 【一句话结论】
采用微服务分层架构,结合CDN加速、流媒体服务器(如Nginx-RTMP)处理音视频流,通过负载均衡(Nginx/LVS)分发请求,消息队列(Kafka)异步处理用户行为,缓存(Redis)加速热点数据,并设计主从复制+多活容灾方案,确保低延迟、高可用、弹性扩展。
2) 【原理/概念讲解】
系统分为四层:前端(Web/APP)、应用层(用户管理、直播控制)、流媒体层(音视频编码传输)、存储层(视频存储、用户数据)。关键技术解析:
3) 【对比与适用场景】
以负载均衡为例(Nginx vs LVS):
| 组件 | Nginx | LVS |
|---|---|---|
| 类型 | L7(应用层) | L4/L7(四层/七层) |
| 优势 | 易配置,支持HTTP/HTTPS,健康检查 | 透明代理,性能高,适合高并发TCP连接 |
| 适用场景 | Web应用、API网关 | 大规模流媒体、高并发音视频传输 |
| 注意点 | 需配置健康检查,可能成为单点 | 配置复杂,需内核支持,需监控状态 |
4) 【示例】
用户请求直播的流程(伪代码):
POST /api/live/start
{
"userId": "user123",
"courseId": "course456",
"token": "auth_token"
}
200 OK
{
"streamUrl": "rtmp://cdn.example.com/live/course456",
"playUrl": "http://cdn.example.com/hls/course456/playlist.m3u8"
}
5) 【面试口播版答案】
设计千级用户直播系统,核心是构建分层架构。前端通过负载均衡(如Nginx)分发请求,应用层处理用户鉴权,流媒体层(如Nginx-RTMP)处理音视频编码传输,CDN加速内容分发。消息队列(如Kafka)用于异步处理用户观看记录,缓存(Redis)加速热点数据。数据一致性通过最终一致性保障,用户观看记录先写入队列,再更新数据库。容灾采用多数据中心部署,主从切换,确保高可用。整体架构兼顾低延迟(流媒体服务器直连CDN)、高可用(负载均衡+多活)、弹性扩展(微服务拆分+容器化)。
6) 【追问清单】
7) 【常见坑/雷区】