Mediasoup的SFU媒体服务转发中心详解(与传统SFU的区别)

前言

我们都知道音视频服务的架构方式一般就是3种,即Mesh(网状)、MCU(多点控制单元)和SFU(选择性转发单元)这三种,本文主要详解一下 Mediasoup的SFU媒体服务转发中心的思想,帮助大家更好的理解和使用。


简单说下Mesh、MCU 和 SFU 的定义与区别

架构类型 全称 核心思想 数据流方向 主要特点
Mesh Peer-to-Peer Mesh Network 每个客户端与其他客户端直接建立连接,互相发送/接收流 全连接(N×N) 简单无服务器,但扩展性极差
MCU Multipoint Control Unit 服务器负责接收、混流、转码、再下发 上行到 MCU,再下发混合流 中心处理强,延迟高,资源占用大
SFU Selective Forwarding Unit 服务器只转发数据,不转码、不混流 上行到 SFU,SFU 选择性转发 低延迟、高效率,当前主流架构(如 mediasoup)

再提供个截图的详细对比

  • Mesh 是客户端之间点对点连接,服务器不参与
  • MCU 会在服务器端解码、混流再编码所有音视频流
  • SFU只将接收到的音视频流转发给其他客户端,不进行编解码

拆解

Mediasoup 设计与传统 SFU 概念的"进化差异"------它确实是 SFU,但在跨 Worker 甚至跨 Server 的场景下,它的转发逻辑已经变成"分布式 SFU",不再是单个中心节点在做全部转发。下面分几层给你拆开:


1️⃣ 单 Router / 单 Worker 时:经典 SFU 模型

📊 经典 SFU 架构图

go 复制代码
   A  →\
   B  → >──  Router(中央转发)
   C  →/
         ↓
      统一调度转发到各 Consumer
  • 所有 Producer/Consumer 都在一个 Router 里;

  • Router 是"单点中心",所有 RTP 包都在它里头转发;

  • 完全符合传统 SFU 定义(Selective Forwarding Unit)。


2️⃣ 跨 Worker 时:SFU 被"切片"成多个 Router

假设会议太大,或者负载太重,需要把同一会议拆到多个 Worker。

📊 多 Router "切片" 架构图

go 复制代码
Worker1: Router1 --- 用户 A,B
Worker2: Router2 --- 用户 C,D
Worker3: Router3 --- 用户 E,F

这时每个 Router 仍然是 SFU (局部转发中心),但它们要彼此同步媒体流。

Mediasoup 通过 PipeTransport 在各 Router 之间搭桥,让它们形成"SFU 网格"。


3️⃣ 三 个 Router 互联的实际拓扑

如果三方都互相转发音视频流,最直接的方式是全互联

go 复制代码
Router1 ↔ Router2
Router1 ↔ Router3
Router2 ↔ Router3
  • 每条连线由一对 PipeTransport 组成:

    • Router1 → Router2:1 对 PipeTransport

    • Router2 → Router1:1 对 PipeTransport 这样三 Router 间就有 3 个连接方向 × 2 (双向)= 6 条"线"

  • 每条线都承担着在不同 Router 之间传递音视频流的职责。

3个Router 全互联下的通道数量

Router 组合 PipeTransport 数量(双向) 说明
Router1 ↔ Router2 2 条(1→2 和 2→1 各一对) 双向传流
Router1 ↔ Router3 2 条 双向传流
Router2 ↔ Router3 2 条 双向传流
总计 6 条 PipeTransport 通道 每条都是一对传输通路

📊 三 Router 全互联拓扑图

🔄 PipeTransport 数据流示意图


4️⃣ 为什么要"多 Router 互联",而不是一个中央 Router

传统 SFU 是"单核"模式;Mediasoup 支持多 Worker,是为了:

1、充分利用多核 CPU;

2、支持超大会议;

3、支持跨主机分布式部署;

4、避免单 Router 成为瓶颈或单点故障。

如果仍用"中央 Router"去汇聚所有流,那它又会成为新的瓶颈,所以 Mediasoup 选择了去中心化的 SFU 协作模型 ------每个 Router 既是 SFU 又通过 PipeTransport 构成整体的"SFU 集群"。


5️⃣ 逻辑上的"中心调度",不是"中心转发"

📊 控制面 vs 数据面架构图

  • 在应用层(Node.js 控制端)通常会有一个 Main Router Controller

  • 它不处理 RTP 数据,只负责:

    • 创建/登记各个 Router;

    • 判断跨 Router 通信;

    • 调用 pipeToRouter() 建立桥接;

    • 管理 Producer 与 Consumer 的映射关系。

所以:

  • 数据面(RTP):分布式多 Router 互联;

  • 控制面(信令):中心化协调。


6️⃣总结:SFU 在跨 Work 下的真实形态

层次 职责 是否集中
Router 内部 媒体包选择与转发 本地 SFU(集中)
Router 之间 PipeTransport 桥接 分布式互联
Node.js 层 信令调度与拓扑管理 逻辑中心化

📘 结论:

Mediasoup 在单 Router 内是"中心 SFU",

在多 Router 跨 Worker/Server 场景下演化为"分布式 SFU 网格"

彼此之间用 PipeTransport 全互联(确实会有 6 条线这种情况)。

相关推荐
pp-周子晗(努力赶上课程进度版)2 小时前
Node.js 模块系统选择-学习 CommonJS 和 ESM
node.js·webrtc
小影译片2 小时前
zmaiFy音频转录介绍
音视频
ACP广源盛139246256733 小时前
GSV6505F---1 In to 4 Out HDMI 2.1 Splitter with Embedded MCU
单片机·嵌入式硬件·音视频
EasyCVR7 小时前
视频融合平台EasyCVR:构建智慧化城市/乡镇污水处理厂综合安防与运营监管方案
音视频
菠萝加点糖8 小时前
Android 使用MediaMuxer+MediaCodec编码MP4视频异步方案
android·音视频·编码
EasyCVR12 小时前
视频汇聚平台EasyCVR:构建通信基站“可视、可管、可控”的智慧安防体系
服务器·数据库·音视频
赖small强1 天前
【ZeroRange WebRTC】NAT 与防火墙在 WebRTC 中的影响
webrtc·防火墙·nat·stun
赖small强1 天前
【ZeroRange WebRTC】OpenSSL 与 WebRTC:原理、集成与实践指南
webrtc·openssl·x.509·证书验证·tls/dtls
顾道长生'1 天前
(Arxiv-2025)BINDWEAVE:通过跨模态整合实现主体一致性的视频生成
音视频