我编写了一个执行视频编码的应用程序。编码是一个流水线处理过程:首先获取视频,然后使用ffmpeg对其进行编码,然后将视频分成多个部分等。
在此过程中,1 GB的视频会显示为几GB的中间数据。编写此服务,以便不同的程序(通过RabbitMQ)可以处理每个管道。当然,这个过程不必以这种方式运行,这让我想到了我的问题。
我正在考虑使应用“实时”的存储要求。使用云提供商,您需要支付每GB存储空间和每GB传输费用。到目前为止一切都很好。
当我将这个1 GB视频blob从一个云虚拟机实例传输到另一个虚拟机实例,或从虚拟机传输到公共存储服务时,是否会计入我的带宽? (我意识到这个答案将根据主持人的服务条款而改变。)
让1个VM执行整个过程,然后启动多个实例会更有意义吗?而不是1个VM只在管道中执行单个任务?我在优化成本方面提出了这个问题(最低的存储成本,最低的虚拟机成本。因为编码将在批处理中进行,所以我不太关心快速推出请求)。
这种情况有点独特,因为我有大量的二进制数据,无法在数据库中高效存储。这提出了一个类似的问题:对于有经验的人,当您的数据库虚拟机将其结果发送回您的网络应用程序时,您是否需要为该中间转移付费?
我甚至会问正确的问题吗?有没有我应该阅读的指南,没有给托管服务提供商打电话,并询问他们自己定价?
答案 0 :(得分:1)
你的场景的独特性让我觉得它很有趣!
关于在云中的虚拟机之间传输数据,具体取决于提供商和位置。 EC2中的亚马逊 不对相同位置上的Web服务之间的转移收费数据。因此,您可以最大限度地降低转移成本,直至初始上传/下载“大量二进制数据”。
现在,您的任务可以有效并行化吗?如果是,会同时考虑启动大量虚拟机以更快地完成工作。如果时间=金钱,这是有成本效益的,但我不情愿你的情况,因为你提到你不太关心快速推动变化。您仍然可以拥有主VM处理请求和协调批处理,以及启动关闭其他将处理某些工作负载的VM。只要您的虚拟机正在运行,您就会付费,例如实用程序。
您的方案中的好处是,云计算的这些批处理任务理想,而且他们的定价模型非常简单。这些任务是资源密集型(CPU / RAM),因此云可以提供的几乎无限的资源可以满足他们的“贪婪”。