我打算建立一个 Web 应用程序,需要在 R 中按需运行资源密集型 MCMC (Markov chain Monte Carlo) 计算,以为用户生成一些概率图。
限制条件:
显然,我不希望在 Web 应用程序前端的同一服务器上运行资源密集型计算,因此这些任务需要交给工作实例处理。
这些计算需要很多 CPU 运行,我希望将延迟保持尽可能低(希望是秒而非分钟),因此我更愿意在 更强大的硬件 上运行计算。
我无法承担每天 ~66¢/hr x 24hrs 的强大 EC2 实例费用,因此可能需要使用按需或竞价实例。
以下是我提出的选项:
运行一个便宜、实惠的工作实例,全天候接受由Amazon SWF(或SQS)管理的一个任务。
缺点:- 高延迟 - 更便宜的硬件,等待时间更长。
- 高延迟 - 更便宜的硬件,等待时间更长。
每个任务都产生一个更强大的工作实例(当一个作业被添加到队列时启动),并在完成后终止该实例。
缺点:- 昂贵/浪费 - 每次我只使用几秒钟进行计算,但我需要支付服务器一小时的费用。
- 启动开销 - 在需求时旋转新的EC2实例是否会引入不可忽略的延迟(抵消使用更强大的硬件的整个目的)?
- 昂贵/浪费 - 每次我只使用几秒钟进行计算,但我需要支付服务器一小时的费用。
像#2一样,但使用低价EC2 spot请求。
缺点:- 启动开销 - 参见#2
- 不一致性? - 我以前没有使用过spot请求,所以我不知道这样的解决方案有多么易变或手动...我是否必须不断调整我的出价,以确保我仍然可以在高峰时段完成任务?此外,我想我必须密切监视我的进程,以确保它们不会在计算中间被中断。
- 启动开销 - 参见#2
某种混合解决方案,我积极监控强大的硬件工作实例及其负载,并智能地旋转和终止实例,以维护成本和可用性的最佳平衡。
缺点:- 复杂和昂贵的设置 - 除非有一个良好的托管服务来处理这些事情,否则我必须自己设置所有基础设施...
- 复杂和昂贵的设置 - 除非有一个良好的托管服务来处理这些事情,否则我必须自己设置所有基础设施...
所以我的问题如下:
您如何推荐解决这个问题?
是否有一个好的EC2实例管理解决方案,可以在Amazon SWF上运行,并帮助我负载均衡和终止空闲工作人员?
spot-request竞价是否能解决我的问题,还是更适用于不需要立即完成的任务?