
1) 【一句话结论】:针对千级用户直播课,直播系统核心架构为分布式微服务(含Nginx-RTMP集群、CDN、负载均衡、消息队列、缓存),通过资源隔离与解耦提升高并发稳定性;功能测试需设计音视频流高并发测试(延迟、卡顿率)、消息队列延迟测试(重试/熔断)、缓存雪崩测试(限流/熔断),验证系统在负载下的响应与容错能力。
2) 【原理/概念讲解】:高并发直播系统的核心是“分布式解耦与资源隔离”。流媒体服务(如Nginx-RTMP)负责实时音视频流传输,采用集群部署+负载均衡(如Nginx的RTMP模块轮询分发请求至多台服务器),支持多码率流(HLS/DASH),由CDN边缘节点缓存静态资源(如课程页面),减少服务器压力。后端服务通过负载均衡器(如Nginx)分发请求,消息队列(如Kafka)解耦服务间通信(如用户加入直播的异步通知),缓存(如Redis)缓存热点数据(如用户信息、课程状态)。类比:流媒体服务器像“直播的广播网”,CDN像“快递分拨中心”,负载均衡器像“交通指挥中心”,消息队列像“订单处理中转站”,缓存像“快速取货货架”,各组件分工协作,避免单点过载。
3) 【对比与适用场景】:
| 架构类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 单体架构 | 所有功能集成在一个应用中 | 代码耦合度高,扩展性差 | 小规模系统(用户数<1000) | 难以水平扩展 |
| 微服务架构 | 按业务拆分为独立服务 | 代码解耦,独立部署,水平扩展 | 大规模系统(千级用户以上) | 服务间通信复杂,需统一管理 |
| 流媒体处理方案 | 单台服务器 vs 集群+CDN | 单台:处理能力有限;集群+CDN:高并发、低延迟 | 千级用户直播 | 单台易崩溃,集群+CDN需负载均衡与多码率支持 |
4) 【示例】:
循环1000次:
发送HTTP请求:GET /api/v1/live/play?courseId=123&userId=1
检查响应状态码(200)和音视频质量指标(延迟<500ms,卡顿率<1%)
记录延迟、卡顿率、丢包率
发送1000条消息至Kafka主题:
消息内容:{"userId":1,"courseId":123,"action":"joined"}
等待5秒后检查消息处理状态:
验证重试机制:若消息延迟处理,是否触发重试(如延迟>2秒,重试3次)
验证熔断:若消息队列积压超过阈值(如1000条),是否触发熔断(停止发送新消息)
5) 【面试口播版答案】:面试官您好,针对千级用户直播课,系统核心架构采用分布式微服务,流媒体服务通过Nginx-RTMP集群+CDN实现高并发音视频传输,后端服务通过负载均衡和消息队列解耦。测试中,高并发稳定性验证需设计音视频流并发测试(模拟1000用户同时播放,监控延迟、卡顿率),以及消息队列延迟测试(模拟异步通知延迟,验证重试/熔断),同时测试缓存雪崩场景(模拟大量缓存键过期,检查限流/熔断效果)。用JMeter等工具监控响应时间、错误率,确保系统在负载下无崩溃或性能急剧下降。
6) 【追问清单】:
7) 【常见坑/雷区】: