我希望构建一个Web应用程序,它需要在R中按需运行资源密集型MCMC(Markov chain Monte Carlo)计算,以便为用户生成一些概率图。
约束:
显然,我不想在与Web应用程序前端相同的服务器上运行资源密集型计算,因此需要将这些任务交给工作者实例
这些计算需要运行大量的CPU,我希望尽可能保持延迟(希望是秒,而不是几分钟),所以我宁愿在更强大的硬件上运行计算
我不能以~66¢/ hr x 24小时/天运行强大的EC2实例,因此可能需要按需或点请求实例。
< / LI> 醇>以下是我提出的选项:
每天24小时运行廉价,实惠的工人实例
由Amazon SWF(或SQS)管理的一次任务
的缺点:
每个任务产生一个更强大的工人实例(每当一个工作时就会旋转
被添加到队列中)并在完成后终止实例
的缺点:
与#2类似,但EC2竞价要求较低
缺点:
我积极监控的某种混合解决方案
强大的硬件工作者实例及其负载和智能
在一小时内启动并终止实例以保持最佳状态
成本和可用性的平衡
的缺点:
我希望有一些服务,我可以在一分钟到一分钟而不是每小时支付高度可用的按需硬件。
所以我的问题如下:
您如何推荐解决此问题?
是否有一个好的EC2实例管理解决方案可以放在Amazon SWF上并帮助我实现负载平衡并终止闲置工作人员?
现货请求出价是否可以解决我的问题,还是更适合那些不一定需要立即完成的任务?
答案 0 :(得分:4)
还有一个你可能不知道的选择。我其实只是偶然发现它:http://multyvac.com
我没有使用它的经验(所以我不能担保它),但它看起来像我见过的第一个解决方案实际上提供了真正的“效用计算”。它始于Python,但现在支持任何语言。
答案 1 :(得分:4)
我希望有一些服务,我可以在一分钟到一分钟而不是每小时支付高可用性的按需硬件。
该服务为AWS Lambda,当您提出问题时,该服务无法使用:
Lambda在高可用性计算基础架构上运行您的代码,并执行计算资源的所有管理,包括服务器和操作系统维护,容量配置和自动扩展
根据您的功能请求数量以及代码执行时间
向您收取费用持续时间是从代码开始执行到返回或以其他方式终止的时间计算的,向上舍入到最接近的100毫秒。
Lambda免费套餐包括每月1M免费请求以及每月400,000 GB秒的计算时间。
您还可以使用HTTP endpoint包装Lambda函数,可能会从您的应用程序中删除此图层:
您可以通过使用Amazon API Gateway定义自定义RESTful API来通过HTTPS调用Lambda函数。这为您的函数提供了一个端点,可以响应GET,PUT和POST等REST调用。阅读有关将AWS Lambda与Amazon API Gateway配合使用的更多信息。
警告:Lambda目前仅支持JavaScript,Java和Python,因此我不确定如何让R工作。您可能需要在其中一个运行时中托管R.