一个简单的问题。 video服务器(videostream服务器)中保存了多less份同一部电影? 假设一个特定的video在1000个用户的同一时间最多请求,多less副本就足够了,这样就可以为每个用户提供并行stream? 理想的情况下,一个副本可以解决这个目的,但是保持带宽和同时访问的最佳数目是多less?
答案取决于stream服务器的实现。 如果它是线程的,比它应该为该文件保留一个内存缓冲区。 如果文件非常大(一个小时的video可以使用多于1 GB的内存),那么服务器可能需要适当地pipe理内存中的部分文件。 一种方法是对文件进行内存映射(但是,如果video的总大小太大,则可能会失败)。 许多video文件types提供了足够的信息来知道加载的video的哪些部分将特定的一组帧发送到客户端。
如果您正在传输1Mbps的video, 1000个客户端同时向客户端发送1Gbps(不包括开销和可变尖峰)。 您需要从服务器获得10Mbps的上行带宽才能正常工作。 否则,您需要将其拆分到不同的服务器上。
您不应该需要多个副本,就好像该副本由1000个并发用户请求一样,它已经在RAM中。
通常情况下,一个Web服务器将只有一个文件副本,并根据请求将其加载到内存中,但是我没有看到任何Web服务器写得太差,无法将1000个文件拷贝到内存中。
顺便说一下,1000个同时请求是一个服务器有点多…
也许你想build立一个负载均衡scheme与多个服务器?
在大多数情况下,更多副本只会使问题变得更糟。 如果您有多个驱动器,则在每个驱动器上备份非常stream行的电影可能会获得一些好处。 如果您在同一时间在不同的地方读取相同的文件/stream,这将减lesssearch的需求。
但是,如果您一次从多个版本的文件中读取数据,则在一个驱动器上使用多个副本会使查找的大小更大。 如果电影存储在RAM或SSD中,则寻道不是问题,而是空间,因此您只需要一个拷贝即可最大限度地利用RAM或SSD空间。