如何在服务器集群发生故障时 WebRTC 架构仍能正常运行?

在过去的五年中,AWS 的北弗吉尼亚集群(即US-EAST-1)至少发生了三次引发重大互联网瘫痪的事件。

每项服务各不相同,而如今系统间存在如此多的依赖关系和耦合,很难不受此类事件的影响。不过,对于 WebRTC 平台而言,处理单个 AWS 区域宕机的情况应该相对简单。

WebRTC 基本架构

大多数 WebRTC 平台的基本架构包含四个组件:

  • 负载均衡服务:客户端应用程序的初始接触点,为会话选择合适的媒体服务器。
  • 数据库:存储服务器信息(状态、负载、位置)和会话到服务器的映射,通常使用像 Redis 这样的快速数据库。
  • 信令服务:管理会话状态并转发控制消息。本文假设它是媒体服务器的一部分,因此在以下图表中将其忽略。
  • 媒体转发服务:核心组件,负责在参与者之间路由音频和视频。它通常是无状态的,并会报告其状态。
webrtc基本架构

整个解决方案通常包含其他组件来管理诸如录制或防火墙穿越之类的事情,但为了本次讨论的目的,这些组件将被忽略。而且,无论如何,它们通常是无状态的,并且很容易使其在出现网络问题时保持健壮。

分布式 WebRTC 架构

当你想要提供最佳质量时,你会在多个区域部署媒体服务器,这时候的架构通常如下所示:

如何在服务器集群发生故障时 WebRTC 架构仍能正常运行?

根据我的经验,这是最常见的部署方式,但很明显,存在一个中心故障点,该故障点可能是数据库,也可能是负载均衡服务 + 数据库,具体取决于你的部署方式。

稳健的分布式架构

如果负载均衡服务和数据库在它们所在区域发生故障时出现问题,那么解决方案显而易见,我们只需复制它们即可。

复制负载均衡服务很简单,将其部署到所需的任意多个区域(理想情况下是所有区域),并使用以下方法之一在最近的区域发生故障时故障转移到其他负载均衡器:

  • 依靠健康检查和较短的 DNS 超时时间。这样,如果出现故障,DNS 服务器会将某些区域标记为不可用,并将客户端请求路由到其他区域。但如果 DNS 服务(例如 Route 53)出现故障,这可能会造成问题。
  • 将客户端配置为回退到不同的 URL(例如 api.domain.com 和 api-backup.domain.com)。

复制数据库稍微复杂一些,最常用的方法有以下几种:

  • 最简单的方法是采用主备模式,即维护多个数据库实例,但同一时间只使用其中一个,其他实例仅负责复制数据。一旦发生故障,我们会通过监控流程手动或自动将查询迁移到其中一个副本上。
  • 更先进的方法是采用分片的双活架构。这种方法更复杂,但可行,并且具有分散负载的额外优势。
  • 您可以使用像 Azure Spanner 这样的分布式数据库。但如果该分布式数据库包含一些中心组件,则可能会比较棘手,就像上次 AWS 服务中断时 DynamoDB 的情况一样。

最终架构图如下所示:

如何在服务器集群发生故障时 WebRTC 架构仍能正常运行?

通过以上提出的解决方案,你的 WebRTC 基础架构应该能够抵御影响云提供商单个区域的所有问题。

当然,还可以更进一步,例如部署在多个提供商(AWS、GCP、Azure 等)上,或者使用自己的基础设施,但除非是真正关键的软件,或者出于成本或合规性等其他原因需要这样做,否则我不建议这样做。

作者:Gustavo Garcia
来源:https://medium.com/@ggarciabernardo/webrtc-architecture-that-keeps-working-when-us-east-1-goes-down-25ae994dc781

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/webrtc/65561.html

(0)

相关推荐

  • 为何 WebRTC 是实时语音 AI 架构的最佳传输方案

    语音 AI 应用需要实时可靠的音频通信,才能实现与 AI 客服机器人、虚拟助手、交互式语音应答平台及其他语音系统之间的自然对话。选择合适的传输协议至关重要,错误的协议可能导致音频卡…

    2025年10月14日
  • P2P、SFU 和 MCU – WebRTC 架构解释

    在本文中,我们将研究WebRTC架构实际工作原理的细节,以便外行人也能理解它。 WebRTC是一个开源项目,它使用点对点交互式网络应用程序将设备连接在一起。如果您通过网络浏览器进行…

    2025年7月14日
  • WebRTC 架构格局正在发生变化

    现在有一种新型的 WebRTC 应用程序架构正在发展,称为 WebRTC Unbundling,尽管它可能不适用于所有应用程序场景,但至少在开发新的实时视频开发项目时应该考虑一下它。在过去,三种不同类型的 WebRTC 应用架构即符合标准的 WebRTC、开源媒体服务器和称为 CPaaS 的商业媒体服务器是基于 WebRTC 开发的选项,这三个仍然是有效的架构选择,WebRTC Unbundling 只是第四个选择,可以认为它是符合标准的 WebRTC选项的另一种形式。

    2022年4月28日