流媒体解决方案的负载平衡和故障转移

流媒体解决方案的负载平衡和故障转移

我有一个内容分发系统,大部分时间都在提供视频点播和音频。不过,最近我们也开始涉足直播业务。然而,这引发了一些与负载平衡有关的问题。

到目前为止,我们已经使用 nginx 作为负载均衡器 (RR) 来传递内容,当应用服务器不可用时(负载/维护过多等),它会给出 503 错误。我们可以在一台服务器上处理这个问题,因此使用 nginx 代理只会导致额外的“内部”数据传输。

但是,现在我们需要转移到多个独立的物理服务器。因为我们将需要基于 10 秒视频文件块的 HLS(Http Live Streaming),所以使用代理服务器(我们目前所做的)将不再有效。我们需要能够处理大约 1000-1500 个连接,每个连接的最大速度为 1 Mb/s。如果我们使用代理服务器,则意味着代理服务器需要从文件服务器获取文件,这意味着服务器之间会产生巨大的额外开销。即使文件存储在代理服务器上,一台服务器也没有足够的带宽来处理 1000 个连接,并且可能没有足够的能力来处理每秒这么多的请求。

那么解决此类问题的正常方法是什么?

是否可以使用“代理”重定向到另一台服务器,这样流量就不再通过代理了?同时保持一个中心节点来监控负载并分发到终端节点?我想在请求中保留域名,因为它用于选择要服务器的内容。

答案1

解决此问题的常规方法是使用 CDN,例如 Level3 或 Akamai。它们都支持 HLS,并且可以从您的源站卸载相当一部分内容。

CDN 充当您来源的代理,您可以将内容推送(上传)到它,也可以将其设置为从您的来源拉取。对于您而言,您可能希望将服务器设置为在内容生成时将其推送到 CDN。

--ab1

相关内容