Bri*_*man 0 scalability video-streaming
我之前在服务器方面的经验通常仅限于家庭文件共享服务器、低流量网络服务器等。这给我留下了如何设置系统的技术知识,但在扩展所述系统方面的经验很少。
然而,我目前的项目让我担任技术负责人,负责建立一所在线音频和视频流学校。我遇到的困难是我没有足够的经验来猜测他们需要什么,他们也没有经验告诉我 - 所以我试图问尽可能多的相关问题他们希望做他们的服务器,这里是我发现了什么:
我已经做出的初步决定:
我不知道的是:
非常感谢您的帮助 - 如果您需要更多信息,请告诉我,我会尽我所能告诉您。
编辑1:
我期待在 OGG 或 MP3 中出去 - 可能是 MP3,因为它得到更广泛的支持(并且对小学生的父母更熟悉。
内容将包括实况/预录标准清晰度视频包(可能在 Quicktime 中,后者)。纯音频广播可能由 MP3 组成,转码为更易于管理的质量。DRM 不是问题,版权也不是问题(至少,版权不是我的问题)。每当学生想广播某事时就会生成内容,但这种媒体的存储应该不成问题。他们不是在这里生成原始电影片段——他们是制作小型电视节目包的孩子——我将在工作站上的 RAID 10 中放置 4 个 Terrabyte 硬盘驱动器并收工。
其余的大部分似乎并不完全适用。最相关的部分是网络的固有限制。当我试图询问这些可能是什么时,他们真的不知道 - 因为他们从未真正进行过压力测试。他们的互联网连接主要用于为学生和教师提供标准互联网服务,并为一个可能建于 90 年代的网站提供服务。我怀疑他们是否会对其 NAT 和前端系统进行昂贵的改装——孩子们将不得不忍受他们所拥有的一切。
我认为我的服务器不必担心大量缓存或大块数据存储 - 他们将简单地从内部工作站/源客户端接收准备好的流,并且必须复制和分发流给客户。我希望在我发现自己要求更多内存之前遇到带宽瓶颈。
关于多播 - 我认为整个互联网都不支持它 - 外部客户构成了我们潜在订阅者的大部分。我的大问题是更基本的 -对于此类应用程序来说,什么是“体面的服务器”/服务器系统?我很难想象我需要多少台机器,以及它们需要具备什么能力。有什么想法吗?提前致谢。
我构建了 IPTV 系统,您不会喜欢它,但您面临着一项非常艰巨的任务,尤其是考虑到您的预算。
让我们一步一步来(如果你不介意的话,我的目标是更广泛的受众,而不仅仅是你);
构建此类系统的任何人都必须做的第一件事是根据位置、操作系统、播放器定义其客户,并最好了解客户端和服务器之间的网络方面 - 您已经完成了很多这方面的工作。这很重要,因为它定义了服务器代码、编解码器、比特率以及您是否可以使用多播。
第二件事是理解你的内容;它来自哪里、以什么格式、多久一次、版权问题、DRM 要求、它需要多快可用以及需要保留多长时间。我认为您已经了解了其中的一些内容,但您可能可以沿着这些思路提出更多问题。
这远不是一项简单的任务,但根据上述两个问题块的结果,您可以再次从摄取的角度开始设计系统 - 您将如何重新编码(如果需要)您的内容,是吗?需要 QA'ing,它在哪里获得 DRM 标记,以及如果这很重要,您将如何处理暂时拥有未加密视频的风险。这个摄取/分期系统需要预先考虑,你根本不想“手动”这个过程,因为它会很快重复。
一旦你弄清楚了这个系统,你就需要知道什么在做你的内容编目以及摄取系统如何提供给这个系统,以及你将如何发布这个目录以及你如何删除“过时”的内容。该发布系统随后将启动客户端播放,并且可能需要某种形式的权限检查系统,这带来了我们可以下次解决的问题。
现在我们进入您直接感兴趣的部分,即流媒体服务器。
至此,您将了解您的用户基础数据(谁、什么、何地、何时、如何等),这将帮助您计算峰值带宽要求(通常类似于“峰值用户”x“最高比特率”) .
“最佳质量”有点用词不当,因为我确定您的意思不是“48 位 8k 高清 @60fps”,而是更像是标清质量左右,作为指导,我以 1.5Mbps 左右的速度进行标清,而以大约 1.5Mbps 的速度进行高清6Mbps 但这将由您的编解码器和要求定义。举个例子,1000 个用户播放 1.5Mbps 的单播流量显然等于 1.5Gbps,这就是难点所在。首先,您的网络、实际中继和交换机本身能否始终如一地提供这种性质的数据?你需要坐下来找出你的弱点在哪里。您能否对这些数据进行 QoS 处理,以防止有人下载大量下载并杀死整个网段的视频?还有一个事实是,如果你
然后我们进入我的专业领域,存储 - 现在您已经计算出内容在开始时需要多少存储空间,它的增长速度,它的最大大小以及它的“流失率”(如何内容存储在哪个时期出现和消失)。这将告诉您需要多少存储空间,但是如果您有 1,000 个用户都在查看一个大小合适的内容目录,那么您必须非常关注缓存和存储的随机读取功能。
如果您非常幸运并且您的服务器可以缓存 100% 的内容,那么您很幸运,您只需要一个不错的服务器、大量内存和 64 位操作系统。如果您希望用户能够访问比您可以缓存更大的内容存储,那么您需要确保您的存储系统能够始终如一地满足您的峰值流需求,例如上例中的 1.5Gbps。您如何做到这一点取决于内容存储的大小,以及您是否需要多个流媒体服务器(如果您需要,您必须弄清楚是否要分片或共享您的视频)。
例如,您可以查看 SSD,但不要查看诸如 500MBps 之类的“标题”数字,您需要的是 SSD 或可以进行 RAID 以确保峰值传输速度的磁盘。有很多 SSD 和磁盘非常适合工作站或低并发服务器,但是当您遇到它们时需要跟上 1,000 个用户的要求,所有用户都在文件的不同点提取大文件的小块 - 基本上它们不要跟上,大多数缓存算法也不跟上 - 您必须知道您的存储可以在必要时自行完成工作。
如果有任何安慰的话,实时流媒体位要容易得多,但可能值得拥有自己的机器来处理捕获/加密/流媒体,而不是基于主要内容存储的服务器。你很幸运,你可能对你的网络有更好的了解,因为它听起来是一个封闭的系统,如果可以的话,你想确保你可以多播这个,否则你会遇到我上面描述的相同带宽管理问题,但有更好的缓存命中机会。
我希望这会有所帮助,就像我说的,我针对的是更广泛的受众,而不仅仅是这个问题,我可能会回来添加/编辑(一旦我喝了当天的第一杯茶!)。