我真的很难理解我的问题。我已经决定了问题的中间和最终解决方案,但我似乎无法解决它的开头。
因此,作为一个项目,我正在构建一个 Youtube 风格的网站。到目前为止,我对上传视频问题的解决方案包括:
- 使用 S3 存储每个视频的 5 种不同编码
- 使用带有 MongoDB 驱动的排队系统的 EC2 标准实例,该排队系统根据该实例上的可用磁盘空间与队列中下一个视频的文件大小进行比较。因此,基本上,如果实例上有 5 倍的视频空间,它将开始编码该视频(可能有 5 个 CPU 密集型服务器从队列中挑选一次编码,易于扩展)。我已经决定我需要这个临时空间,因为编码本身无法在 S3 上执行(?)所以我必须将视频从 S3 存储桶带到编码服务器(EC2 实例),然后并行运行 4 个编码,然后将这些编码文件上传到 S3,然后删除 EC2 实例上的临时编码文件。
我遇到的问题是如何处理初始上传到服务器。因此,当用户进入上传页面时,如何初始获取该视频:
- 在存储有关该视频的信息的同时,转到 S3 而不会丢失我的应用服务器上的空间(甚至可能吗?我不这么认为)
- 将其放入队列
现在主要问题是空间。我正在尝试弄清楚如何上传文件,同时始终知道有足够的空间将其初始上传到 S3(这里考虑每分钟的上传次数)。我担心的是,我必须首先上传到超级存储服务器(如 S3,而不是 CDN),或者上传到应用服务器并希望获得最佳效果。从扩展和成本方面来看,两者似乎都不是超级可扩展的,所以我想知道最初如何最好地上传视频?
如果必须使用应用服务器,我应该如何设置它来处理这些上传?我是否应该只使用磁盘密集型应用服务器?
如果我在应用服务器之外以其他方式执行此操作,我该怎么做?
抱歉,我的问题可能有点模糊,这让我有点头疼。
谢谢,
EIDT:我决定将 zencoder 与 S3 结合使用。我认为这其实是个好主意,我不会尝试自己创建这个部分,因为我并不打算妥善托管这个网站,所以最终我只能花很多钱去做一些第三方可能做得更好的事情。
谢谢你们的帮助 :D
答案1
您可以允许用户直接上传到您的 S3 存储桶,请参阅浏览器使用 HTML POST 表单上传到 S3举个例子。