我正在寻找构建一个 Web 应用程序,该应用程序需要在 R 中按需运行资源密集型 MCMC(马尔可夫链蒙特卡罗)计算,以便为用户生成一些概率图。
约束:
显然我不想在与 Web 应用前端相同的服务器上运行资源密集型计算,因此需要将这些任务交给工作实例。
这些计算需要大量的 CPU 才能运行,我希望尽可能降低延迟(希望是几秒钟,而不是几分钟),所以我更愿意在更强大的硬件上运行计算。
我负担不起以约 66 美分/小时 x 24 小时/天的速度运行强大的 EC2 实例,因此可能需要按需或现场请求实例。
以下是我提出的选项:
每天 24 小时运行一个廉价且负担得起的工作实例,该实例一次执行一项任务,由 Amazon SWF(或 SQS)管理。
缺点:- 高延迟- 更便宜的硬件,更长的等待时间。
- 高延迟- 更便宜的硬件,更长的等待时间。
为每个任务生成一个更强大的工作实例(只要将作业添加到队列中就会启动)并在完成时终止实例。
缺点:- 昂贵/浪费- 我每次都要在服务器上支付一个小时,并且只用几秒钟来计算
- 启动开销——按需启动一个新的 EC2 实例会引入不可忽略的延迟(抵消使用更强大硬件的全部目的)吗?
- 昂贵/浪费- 我每次都要在服务器上支付一个小时,并且只用几秒钟来计算
与 #2 类似,但 EC2 现货请求出价低。
缺点:- 启动开销- 见 #2
- 不一致?- 我以前从未处理过现场请求,所以我不知道这样的解决方案会有多不稳定或动手操作......我是否必须不断调整我的出价以确保我仍然可以在高峰时间完成任务? 另外,我想我必须密切监视我的流程,以确保它们在计算过程中不会被中断。
- 启动开销- 见 #2
某种混合解决方案,我主动监控强大的硬件工作实例及其负载,并每小时智能地启动和终止实例,以保持成本和可用性的最佳平衡
。- 复杂且昂贵的设置——除非有一个很好的托管服务来处理这样的事情,否则我必须自己设置所有的基础设施......
- 复杂且昂贵的设置——除非有一个很好的托管服务来处理这样的事情,否则我必须自己设置所有的基础设施......
我希望有一些服务可以让我按分钟而不是按小时为高度可用的按需硬件付费。
所以我的问题如下:
你会如何建议解决这个问题?
是否有一个很好的 EC2 实例管理解决方案可以位于 Amazon SWF 之上并帮助我进行负载平衡和终止空闲工作人员?
现场请求投标会解决我的问题,还是更适合不一定需要立即完成的任务?