我正在计划设置流媒体服务器。
流媒体的实现方式与 YouTube 类似;将有大量音频内容,每个用户都可以在网站上直接收听。为了同时容纳大量用户,我将使用一个小型服务器集群。
由于我将使用 NGINX,它将负责在每台服务器上平等分配负载(公平负载平衡,因为每台服务器的规格相同)。每台服务器的连接速度为 1 Gbps。
但由于预算紧张,我不能拥有太多服务器,因此我计划使用动态节流阀(每首歌曲将具有已知的恒定比特率)。例如,如果 1 个用户连接,则整个带宽可供他使用。另一个用户连接,带宽被分成两半,依此类推。这样每个用户都会获得相等的带宽。(带宽是指用户将音乐流式传输到计算机的速度,例如 300kb/s)
限制应持续到达到最大阈值 (1. 此时 NGINX 应该将请求重定向到其他服务器,或者如果一切都已达到其上限,则返回 503 错误消息。
解决方案需要基于服务器,因为我将从数据中心租用专用设备,并且无法访问网络设备(防火墙也将通过服务器完成)。我研究了 NGINX、squidproxy 和 HAPROXY 提供的功能。
NGINX 和 HAPROXY 似乎只限制用户的请求数量,而不是下载速度。Squidproxy 似乎限制速度,但它是静态定义的,例如。我可以将每个用户限制为 640kb/s,但如果当前只有 1 个用户连接,则管道的其余部分将处于空闲状态。
我已经寻找解决方案 2 周了,但还是找不到我想要的。也许,我也不知道正确的术语。
答案1
解决方案是使用流量整形(特别是最低带宽保证)和有效的负载平衡 - 然而这超出了火箭科学的范围 - 我知道很多人作为网络专家拿着高薪却不了解流量整形。你不会通过阅读这里的一些答案和一些在线教程来学习如何做到这一点。
每台服务器的连接速度为 1 Gbps。但由于我的预算有限,
你可以负担得起几 GBps 的互联网连接,但你负担不起很多服务器?我想我们中有人对你在这里想说的话感到困惑。
我怀疑这里最大的问题是过早优化。
答案2
你好也许你应该尝试使用另一个名为 lighttpd 的优秀 Web 服务器
阅读此博客文章: 速率限制