51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

好未来需要支持百万级用户同时在线上课的视频直播系统,请设计其核心架构,并说明如何处理高并发、低延迟、容灾等问题。

好未来后端难度:困难

答案

面试辅导答案(后端岗位 - 视频直播系统架构设计)

1) 【一句话结论】

采用“信令与媒体流分离+低延迟技术(前向纠错FEC、低延迟编码VP8)+边缘计算+多数据中心容灾”的分层架构,通过信令服务器管理连接、媒体服务器集群处理流媒体、边缘节点降低延迟、CDN加速分发,结合负载均衡和健康检查,解决百万级并发、低延迟、容灾问题。

2) 【原理/概念讲解】

老师口吻:设计百万级视频直播系统,核心是分层解耦+技术适配。

  • 信令与媒体流分离:信令层负责用户连接建立(如WebRTC的ICE/SCTP协议),类比“交通导航”,让用户A和B找到彼此;媒体层负责音视频流传输(如RTMP/RTP协议,H.264编码),类比“货物”,承载高带宽内容。
  • 低延迟技术:
    • 前向纠错(FEC):通过冗余数据包提升抗丢包能力,比如发送3个数据包,其中1个是冗余,丢包时用冗余包恢复,减少重传延迟;
    • 低延迟编码(VP8):采用帧内编码减少计算量,降低编码延迟(比H.264快约30%);
    • 优先级调度:对音视频流设置优先级,确保关键帧(如唇部动作)优先传输。
  • 边缘计算:部署靠近用户的服务器(如边缘计算平台),处理本地流媒体,减少跨域延迟(比如校园用户通过本地边缘节点接收,延迟从300ms降至50ms)。
  • CDN与容灾:CDN是分布式内容分发节点(如阿里云CDN),像“快递站”,将流媒体分发到全球节点;多数据中心(如华北、华东、华南)主备切换,通过健康检查(心跳)和预加载备份数据,确保故障时无中断。

3) 【对比与适用场景】

组件定义特性使用场景注意点
信令服务器处理用户连接建立、SDP交换、会话控制低延迟、高并发连接管理视频会议、直播的初始连接需高可用,避免单点故障
媒体服务器处理音视频流编码、转码、分发承载高带宽流媒体大规模直播、点播需弹性扩容,支持动态负载
CDN分布式内容分发节点跨地域加速、缓存动态/静态内容视频直播的流媒体分发需动态内容更新策略(如实时流更新)
边缘节点靠近用户的服务器(如边缘计算平台)低延迟、本地处理用户密集区域(如校园、写字楼)需动态资源调度(根据实时流量调整)
容灾系统多数据中心主备切换高可用、故障快速恢复全局服务需健康检查(如1秒心跳)和预加载备份数据

4) 【示例】

伪代码:信令服务器处理用户连接请求

function handleSignalRequest(user_id, request_type):
    if request_type == "connect":
        session_id = generateSessionId()
        storeSession(user_id, session_id)
        return { "session_id": session_id }
    else if request_type == "offer":
        target_session = getSession(target_user_id)
        exchangeSDP(user_id, target_session)
        return { "status": "success" }

(示例说明:用户A发起连接时,信令服务器生成session_id并存储,用户B收到后交换SDP,建立基础通道。)

5) 【面试口播版答案】

(约80秒,自然表达)
面试官您好,针对百万级用户视频直播系统,我设计的核心架构是分层解耦,核心思路是信令与媒体流分离,并融入低延迟技术(FEC、VP8)和容灾策略。首先,信令层用WebRTC协议,通过信令服务器管理用户连接(比如用户A和B建立连接时,信令服务器交换SDP,建立基础通道);然后媒体层部署媒体服务器集群,通过Nginx负载均衡分发请求,处理音视频流(H.264编码);接着,引入边缘节点(靠近用户的服务器),处理本地流媒体,减少跨域延迟;同时,CDN分发节点将流媒体分发到全球节点,加速访问。容灾方面,采用多数据中心(如华北、华东、华南)主备切换,通过健康检查(心跳)和预加载备份数据,确保故障时无中断。这样整体解决了百万级并发、低延迟、容灾问题。

6) 【追问清单】

  • 问题:低延迟具体技术有哪些?
    回答要点:前向纠错(FEC)提升抗丢包能力,低延迟编码(VP8)降低编码延迟,优先级调度确保关键帧优先传输。
  • 问题:容灾切换时如何保证无服务中断?
    回答要点:通过1秒频率的健康检查(心跳),预加载备份数据,结合快速故障检测算法(如ZooKeeper状态同步),实现秒级切换。
  • 问题:为什么选WebRTC而非自定义信令协议?
    回答要点:WebRTC是成熟标准,支持P2P降低服务器压力,且兼容性好,减少开发成本。
  • 问题:边缘节点与CDN的区别?
    回答要点:CDN侧重全局分发(如全球节点缓存),边缘节点侧重本地处理(如用户密集区域实时流处理),两者结合提升体验。
  • 问题:负载均衡选型为什么选Nginx?
    回答要点:Nginx高性能、轻量,支持加权轮询、最小连接数等算法,适合高并发流媒体请求。

7) 【常见坑/雷区】

  • 忽略低延迟技术细节(如FEC、VP8的作用),导致方案落地性不足;
  • 容灾方案不具体(只说多数据中心,未说明切换机制);
  • CDN与边缘节点混淆,导致部署错误(如用CDN替代边缘节点处理本地流);
  • 协议选择不当(如用WebRTC但未说明P2P场景);
  • 忽略用户地域分布(边缘节点未按密度部署,导致部分区域延迟高)。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1