3

我编写了一个进行视频编码的应用程序。编码是一个流水线过程:首先获取视频,然后使用 ffmpeg 对其进行编码,然后将视频分成多个部分,等等。

在此过程中,一个 1 GB 的视频会膨胀成几 GB 的中间数据。编写此服务是为了让不同的程序(通过 RabbitMQ)可以处理管道的每一部分。当然,该过程不必以这种方式运行,这让我想到了我的问题。

我正在研究使应用程序“运行”的存储要求。对于云提供商,您按每 GB 存储和每 GB 传输付费。到现在为止还挺好。

当我将此 1 GB 视频 blob 从一个云 VM 实例传输到另一个,或从 VM 传输到公共存储服务时,这是否会占用我的带宽?(我意识到这个答案会根据主人的服务条款而改变。)

让 1 个 VM 执行整个过程,然后启动多个实例是否更有意义?与 1 个 VM 仅在管道中执行单个任务相反?我在优化成本方面提出了这个问题(最低存储成本,启动 VM 的最低成本。因为编码将成批发生,所以我不太关心快速推出请求)。

这种情况有点独特,因为我有大量无法有效存储在数据库中的二进制数据。这引发了一个类似的问题:对于那些有经验的人,当您的 DB VM 将其结果发送回您的 Web 应用程序时,您是否需要为该中间传输付费?

我什至在问正确的问题吗?是否有我应该阅读的指南,而不是致电托管服务提供商并询问他们自己的定价?

4

1 回答 1

1

你的场景的独特性让我觉得它很有趣!

关于在云中的虚拟机之间传输数据,这取决于提供商和位置。例如,Amazon 在 EC2 中,不对同一位置的 Web 服务之间的数据传输收费。因此,您可以将传输成本降至最低,直至“大量二进制数据”的初始上传/下载。

现在,您的任务可以有效地并行化吗?如果是,请考虑同时启动大量虚拟机以更快地完成工作。如果时间 = 金钱,这肯定是具有成本效益的,但我不愿意你的情况,因为你提到你不太关心快速推动改变。您仍然可以让一个主 VM 处理请求和协调批处理,并启动-关闭将处理一些工作负载的其他 VM。只要您的虚拟机正在运行,您就需要付费,就像实用程序一样。

在您的场景中的好处是,这类批处理任务非常适合云计算,而且它们的定价模型非常简单。这些任务是资源密集型的(CPU / RAM),因此云可以提供的几乎无限的资源可以满足它们的“贪婪”。

于 2011-05-03T17:02:25.877 回答