一个快速的问题。在视频服务器(视频流服务器)中保存了多少相同电影的副本?假设一个特定的视频在同一时刻最多被 1000 个用户请求,那么多少副本就足够了,以便可以为每个用户提供并行流?理想情况下,1 份副本可以解决问题,但考虑到带宽和同时访问的最佳数量是多少?
一个快速的问题。在视频服务器(视频流服务器)中保存了多少相同电影的副本?假设一个特定的视频在同一时刻最多被 1000 个用户请求,那么多少副本就足够了,以便可以为每个用户提供并行流?理想情况下,1 份副本可以解决问题,但考虑到带宽和同时访问的最佳数量是多少?
答案取决于流服务器的实现。如果它是线程化的,那么它应该为该文件维护一个内存缓冲区。但是,如果文件非常大(一个小时的视频可以使用超过 1 GB 的内存),那么服务器可能需要适当地管理内存中的文件部分。一种方法是对文件进行内存映射(但是,如果视频的总大小太大,这可能会失败)。许多视频文件类型提供了足够的信息来了解要加载视频的哪些部分以向客户端发送一组特定的帧。
如果您正在流式传输 1Mbps 视频;对于 1000 个客户端,您同时向客户端发送 1Gbps(不包括开销和可变峰值)。您需要来自服务器的 10Mbps 上行带宽才能正常工作。否则,您需要在服务器之间拆分它。
您不应该需要多个副本,就好像 1000 个同时用户正在请求该副本,它已经在 RAM 中。
通常,Web 服务器只有一个文件副本并根据请求将其加载到内存中 - 但我没有看到任何 Web 服务器写得如此糟糕,以至于将 1000 个文件副本加载到内存中。
顺便说一句,1000 个并发请求对于一台服务器来说有点多...
也许您想建立一个具有多台服务器的负载平衡方案?
在大多数情况下,更多的副本只会使问题变得更糟。如果您有多个驱动器,则在每个驱动器上都有一份非常受欢迎的电影副本可能会有所帮助。如果您同时在不同的地方读取相同的文件/流,这将减少搜索的需要。
但是,如果您一次从多个版本的文件中读取,则在单个驱动器上拥有多个副本只会使寻道的大小变大。如果电影存储在 RAM 或 SSD 中,则搜索不是问题,但空间是问题,因此您只需要一个副本即可最大限度地利用 RAM 或 SSD 空间。