虽然WebRTC的特点是PeerConnection,即点对点传输,只需要服务器做信令交换。但是随着场景增大,比如多人会议等,就会面临一个问题:客户端需要对N个客户端发送流数据且需要管理之间的状态。这对于客户端的消耗是十分巨大且后续无法扩展会议规模的。
这时候就需要引入流媒体服务器的概念,通过一个中转站帮助客户端转发流数据。客户端仅需要和服务器对接即可。通过这样的结构可以节省上行/下行带宽,成本由服务运营商承担。其中流媒体服务器也分为多种结构(MFU/SFU)。下图为上述三种形式的对比:
可以看到在没有中转服务的Mesh结构中,各个客户端的上下行都是4Mbps,而在MCU(Multipoint Conferencing Unit,多点会议单元)架构中,由于MCU具备合流、编码以及转发功能,可以将多个客户端的数据合并打包转发,虽然会带来CPU的消耗,但是带宽成本降低了。而在SFU(**Selective Forwarding Unit,**选择性转发单位)架构中,由于SFU不具备流处理的功能,仅单纯做转发,所以下行带宽维持不变。总结就是:
- Mesh结构适合简单场景,小型应用
- MCU结构-服务器计算成本巨大
- SFU结构-服务器带宽成本巨大
可根据自己的业务场景选择合适的链接结构。