首页 文章

用于短期任务的Amazon EC2按需工作者

提问于
浏览
18

我希望构建一个Web应用程序,它需要在R中按需运行资源密集型MCMC(Markov chain Monte Carlo)计算,以便为用户生成一些概率图 .

约束:

  • 显然,我不想在与Web应用程序前端相同的服务器上运行资源密集型计算,因此需要将这些任务交给 worker instance .

  • 这些计算需要运行大量的CPU,我希望尽可能保持延迟(希望是秒,而不是几分钟),所以我宁愿在 beefier hardware 上运行计算 .

  • 我不能以~66¢/ hr x 24小时/天运行一个强大的EC2实例,因此可能需要 on-demand 或点请求实例 .

以下是我提出的选项:

  • 每天24小时运行廉价,经济实惠的工作人员实例,在Amazon SWF(或SQS)管理的时间内执行一项任务 .

Cons:

  • 高延迟 - 硬件更便宜,等待时间更长 .

  • 为每个任务生成一个更强大的工作者实例(每当将作业添加到队列时旋转)并在完成时终止实例 .

Cons:

  • 昂贵/浪费 - 我每次都要在服务器上支付一个小时的费用,而且我的计算只需要几秒钟

  • 启动开销 - 按需启动新的EC2实例会引入不可忽略的延迟(抵消利用更强大的硬件的整个目的)?

  • 与#2类似但具有低出价EC2现货请求 .

Cons:

  • 启动开销 - 见#2

  • 不一致? - 我必须密切监视我的进程,以确保它们在计算中不会被中断 .

  • 某种混合解决方案,我主动监控强大的硬件工作者实例及其负载,并在一小时内智能地启动和终止实例,以保持成本和可用性的最佳 balancer

Cons:

  • 复杂而昂贵的设置 - 除非's a good managed service out there to handle stuff like this, I'必须自己设置所有的基础设施......

我希望有一些服务,我可以在一分钟到一分钟而不是每小时支付高度可用的按需硬件 .

所以我的问题如下:

  • 您如何建议解决此问题?

  • 是否有一个好的EC2实例管理解决方案可以放在Amazon SWF之上,帮助我实现负载 balancer 并终止闲置工作人员?

  • 现货请求出价是否可以解决我的问题,还是更适合那些不一定需要立即完成的任务?

2 回答

  • 4

    还有一个你可能不知道的选择 . 我实际上偶然发现了它:http://multyvac.com

    我没有使用它的经验(所以我不能担保它),但它看起来像我见过的第一个解决方案实际上提供了真正的“效用计算” . 它始于Python,但现在支持任何语言 .

  • 4

    我希望有一些服务,我可以在一分钟到一分钟而不是每小时支付高度可用的按需硬件 .

    该服务是AWS Lambda,当您提出问题时,该服务无法使用:

    Lambda在高可用性计算基础架构上运行您的代码,并执行计算资源的所有管理,包括服务器和操作系统维护,容量配置和自动扩展

    Pricing

    根据函数请求的数量和代码执行的时间收取费用持续时间从代码开始执行到返回或以其他方式终止的时间计算,向上舍入到最接近的100毫秒 . Lambda免费套餐包括每月1M次免费请求和每月400,000 GB秒的计算时间 .

    您还可以使用HTTP endpoint包装Lambda函数,可能会从您的应用程序中删除此图层:

    您可以通过使用Amazon API Gateway定义自定义RESTful API来通过HTTPS调用Lambda函数 . 这为您的函数提供了一个 endpoints ,可以响应GET,PUT和POST等REST调用 . 阅读有关将AWS Lambda与Amazon API Gateway配合使用的更多信息 .

    警告:Lambda目前仅支持JavaScript,Java和Python,因此我不确定如何让R工作 . 您可能需要在其中一个运行时中托管R.

相关问题